Ejemplo n.º 1
0
        public AutenticarUsuarioResponse AutenticarUsuario(AutenticarUsuarioRequest pRequest)
        {
            IServicoSeguranca         lServicoSeguranca;
            AutenticarUsuarioResponse lResposta = new AutenticarUsuarioResponse();

            //ReceberSessaoRequest lRequestSessao;
            //ReceberSessaoResponse lResponseSessao;

            try
            {
                Gradual.OMS.Seguranca.Lib.AutenticarUsuarioRequest  lRequest = new Gradual.OMS.Seguranca.Lib.AutenticarUsuarioRequest();
                Gradual.OMS.Seguranca.Lib.AutenticarUsuarioResponse lResponse;

                ServicoHostColecao.Default.CarregarConfig("Desenvolvimento");

                lServicoSeguranca = Ativador.Get <IServicoSeguranca>();

                lRequest.Email = pRequest.CodigoOuEmailDoUsuario;
                lRequest.Senha = Gradual.OMS.Seguranca.Lib.Criptografia.CalculateMD5Hash(pRequest.Senha);
                lRequest.IP    = HttpContext.Current.Request.UserHostAddress;

                lResponse = lServicoSeguranca.AutenticarUsuario(lRequest);

                if (lResponse.StatusResposta == Library.MensagemResponseStatusEnum.OK)
                {
                    lResposta.StatusResposta    = lResponse.StatusResposta.ToString();
                    lResposta.DescricaoResposta = lResponse.DescricaoResposta;

                    lResposta.CodigoDaSessao          = lResponse.Sessao.CodigoSessao;
                    lResposta.CodigoDeAcessoDoUsuario = Convert.ToString(lResponse.CodigoAcessoSistema);
                    lResposta.IdLogin = Convert.ToString(lResponse.Sessao.CodigoUsuario);

                    this.CodigosDeSessao.Add(lResposta.CodigoDaSessao, DateTime.Now);

                    if (!string.IsNullOrEmpty(pRequest.Token))
                    {
                        // o token é o nome da máquina com três números randômicos no final; vamos guardar somente o nome da máquina, então:

                        string lTokenDecript = Criptografia.Descriptografar(pRequest.Token, true);

                        lTokenDecript = lTokenDecript.Substring(0, lTokenDecript.Length - 3);

                        if (!this.TokensDeSessao.ContainsKey(lTokenDecript))
                        {
                            this.TokensDeSessao.Add(lTokenDecript, DateTime.Now);
                        }
                        else
                        {
                            this.TokensDeSessao[lTokenDecript] = DateTime.Now;
                        }
                    }

                    Logger.InfoFormat("Resposta OK para login de Código de Acesso [{0}] Sessão [{1}] ", lResposta.CodigoDeAcessoDoUsuario, lResposta.CodigoDaSessao);

                    /*
                     * lRequestSessao = new ReceberSessaoRequest();
                     *
                     * lRequestSessao.CodigoSessao = lResponse.Sessao.CodigoSessao;
                     * lRequestSessao.CodigoSessaoARetornar = lResponse.Sessao.CodigoSessao;
                     *
                     * lServicoSeguranca = Ativador.Get<IServicoSeguranca>();
                     *
                     * lResponseSessao = lServicoSeguranca.ReceberSessao(lRequestSessao);
                     *
                     * if (lResponseSessao.StatusResposta == Library.MensagemResponseStatusEnum.OK)
                     * {
                     *  lResposta.CodigoCblcDoUsuario = lResponseSessao.Usuario.Complementos.ReceberItem<ContextoOMSInfo>().CodigoCBLC;
                     *  lResposta.CodigoBmfDoUsuario  = lResponseSessao.Usuario.Complementos.ReceberItem<ContextoOMSInfo>().CodigoBMF;
                     *
                     *  Logger.InfoFormat("Resposta OK para login de CBLC [{0}] BMF [{1}] Sessão [{2}]", lResposta.CodigoCblcDoUsuario, lResposta.CodigoBmfDoUsuario, lResposta.CodigoDaSessao);
                     * }
                     * else
                     * {
                     *  lResposta.StatusResposta = "Erro CBLC";
                     *  lResposta.DescricaoResposta = "Erro ao receber código CBLC: " + lResponseSessao.DescricaoResposta;
                     *
                     *  Logger.Error(lResposta.DescricaoResposta);
                     * }*/
                }
                else
                {
                    lResposta.StatusResposta    = "Erro Segurança";
                    lResposta.DescricaoResposta = "Erro ao autenticar usuário: " + lResponse.DescricaoResposta;

                    Logger.Error(lResposta.DescricaoResposta);
                }
            }
            catch (Exception ex)
            {
                lResposta.DescricaoResposta = string.Format("{0}\r\n{1}", ex.Message, ex.StackTrace);

                lResposta.StatusResposta = "Erro";

                Logger.Error(lResposta.DescricaoResposta);
            }

            return(lResposta);
        }