Пример #1
0
        /// <summary>
        /// Remove o usuário da lista de usuários logados
        /// </summary>
        public static void ClearActivity()
        {
            if (HttpContext.Current == null || HttpContext.Current.Request.Url == null)
            {
                return;
            }

            LoginUsuario loginUsuario = GetUserInfo;

            if (loginUsuario == null)
            {
                FormsAuthentication.RedirectToLoginPage();
                HttpContext.Current.Response.End();
                return;
            }

            // Indica que o usuário saiu do sistema, se necessário
            LoginSistemaDAO.Instance.Sair(loginUsuario.CodUser, loginUsuario.UsuarioSync, true);

            // Remove o usuário da lista de usuários
            for (int i = 0; i < _usuario.Count; i++)
            {
                if (_usuario[i].CodUser == loginUsuario.CodUser)
                {
                    _usuario.RemoveAt(i);
                    return;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Captura as informações do usuário atualmente logado no sistema.
        /// </summary>
        internal static LoginUsuario FindUserInfo(GDA.GDASession sessao, uint codUser, bool adicionarNaoEncontrado)
        {
            try
            {
                System.Security.Principal.IPrincipal principal = HttpContext.Current?.User ?? System.Threading.Thread.CurrentPrincipal;

                if (principal == null || String.IsNullOrEmpty(principal.Identity?.Name))
                {
                    return(null);
                }

                if (_usuario == null)
                {
                    _usuario = new List <LoginUsuario>();
                }

                bool         adicionar = false;
                LoginUsuario retorno   = null;

                // Chamado 12793. Invertemos as condições para que, dessa forma, seja recuperado o login
                // do cliente somente se for preciso, caso não seja, recupera o login do funcionário. Suspeitamos que o
                // erro do chamado tenha ocorrido porque foi recuperado o login do cliente e por isso o funcionário ficou trocado.
                // Se for login de cliente, retorna classe de login com dados do cliente
                if (principal.Identity.Name.Contains("|cliente"))
                {
                    retorno = GetByIdCliente(codUser);

                    if (retorno == null && adicionarNaoEncontrado)
                    {
                        adicionar = true;
                        retorno   = ClienteDAO.Instance.GetLogin(sessao, codUser);
                    }
                }
                else
                {
                    retorno = GetByIdFunc(codUser);

                    if (retorno == null && adicionarNaoEncontrado)
                    {
                        adicionar = true;
                        retorno   = FuncionarioDAO.Instance.GetLogin(sessao, (int)codUser);
                    }
                }

                if (adicionar && retorno != null)
                {
                    _usuario.Add(retorno);
                }

                return(retorno);
            }
            catch (Exception ex)
            {
                // Chamado 12793. Inserimos este log caso ocorra erro ao recuperar o login do usuário, para tentar resolver o
                // problema de usuário trocado na produção, ao voltar o setor da peça, ao marcar a peça em um novo setor etc.
                ErroDAO.Instance.InserirFromException("Falha ao recuperar login (FindUserInfo).", ex, codUser);
                return(null);
            }
        }
Пример #3
0
        /// <summary>
        /// Inclui o usuário logado na lista de usuários logados ou caso o mesmo já esteja logado,
        /// atualiza a data de última atividade
        /// </summary>
        public static void SetActivity()
        {
            if (HttpContext.Current == null || HttpContext.Current.Request.Url == null)
            {
                return;
            }

            LoginUsuario loginUsuario = GetUserInfo;

            if (loginUsuario == null)
            {
                FormsAuthentication.RedirectToLoginPage();
                HttpContext.Current.Response.End();
                return;
            }

            // Indica que o usuário fez o login, se necessário
            if (HttpContext.Current.Session != null)
            {
                HttpContext.Current.Session["idUsuario"] = loginUsuario.CodUser;
            }

            LoginSistemaDAO.Instance.Entrar(loginUsuario.CodUser, loginUsuario.UsuarioSync);

            // Se o usuário já estiver na lista de usuários, apenas atualiza a data de última atividade
            foreach (LoginUsuario login in _usuario)
            {
                if ((!loginUsuario.IsCliente && login.CodUser == loginUsuario.CodUser) || (loginUsuario.IsCliente && login.IdCliente == loginUsuario.IdCliente))
                {
                    login.UltimaAtividade = DateTime.Now;
                    return;
                }
            }

            // Se o usuário corrente não etiver na lista, atualiza a data da última atividade e inclui na lista
            loginUsuario.UltimaAtividade = DateTime.Now;
            _usuario.Add(loginUsuario);
        }
Пример #4
0
        /// <summary>
        /// Verifica se o usuário com o identificador informado é um administrador.
        /// </summary>
        /// <param name="idFunc"></param>
        /// <returns></returns>
        public static bool IsAdministrador(uint idFunc)
        {
            LoginUsuario l = FindUserInfo(idFunc, true);

            return(l.IsAdministrador);
        }