public IResponse Handler(LoginUsuarioRequest request)
        {
            Email   email   = new Email(request.Email);
            Senha   senha   = new Senha(request.Senha);
            Usuario usuario = new Usuario(email, senha);
            LoginUsuarioResponse loginUsuarioRequest = new LoginUsuarioResponse()
            {
                Autenticado = false
            };

            if (!usuario.IsValid())
            {
                return(loginUsuarioRequest);
            }

            LoginUsuarioResult loginUsuario = usuarioRepositorio.LoginUsuario(usuario);

            if (loginUsuario == null)
            {
                return(loginUsuarioRequest);
            }
            if (((Status)loginUsuario.Status != Status.Ativo))
            {
                return(loginUsuarioRequest);
            }

            loginUsuarioRequest.Autenticado   = true;
            loginUsuarioRequest.DataInicio    = DateTime.Now;
            loginUsuarioRequest.DataExpiracao = loginUsuarioRequest.DataInicio.AddMinutes(15);
            loginUsuarioRequest.ID            = loginUsuario.ID;
            loginUsuarioRequest.Email         = loginUsuario.Email;
            loginUsuarioRequest.Nome          = loginUsuario.Nome;

            return(loginUsuarioRequest);
        }
Пример #2
0
        public IActionResult Post([FromServices] SigningConfigurations signingConfigurations,
                                  [FromServices] TokenConfigurations tokenConfigurations, [FromBody] LoginUsuarioRequest login)
        {
            LoginUsuarioResponse loginResponse = (LoginUsuarioResponse)UsuarioCommand.Handler(login);


            bool credenciaisValidas = (loginResponse != null && loginResponse.Autenticado);

            if (credenciaisValidas)
            {
                ClaimsIdentity identity = new ClaimsIdentity(
                    new GenericIdentity(loginResponse.ID.ToString()),
                    new[] {
                    new Claim(JwtRegisteredClaimNames.UniqueName, loginResponse.Nome),
                    new Claim(JwtRegisteredClaimNames.Email, loginResponse.Email),
                }
                    );

                DateTime dataCriacao   = loginResponse.DataInicio;
                DateTime dataExpiracao = loginResponse.DataExpiracao;

                var handler       = new JwtSecurityTokenHandler();
                var securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = tokenConfigurations.Issuer,
                    Audience           = tokenConfigurations.Audience,
                    SigningCredentials = signingConfigurations.SigningCredentials,
                    Subject            = identity,
                    NotBefore          = dataCriacao,
                    Expires            = dataExpiracao
                });
                var token = handler.WriteToken(securityToken);

                return(Ok
                       (
                           new
                {
                    authenticated = true,
                    created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"),
                    expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                    accessToken = token,
                    message = "OK"
                }
                       ));
            }
            else
            {
                return(BadRequest(new
                {
                    autenticacao = false,
                    messagem = "Falha ao autenticar"
                }));
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            Container container = new Container();

            container.Register <IDB, MSSqlServer>(Lifestyle.Singleton);
            container.Register <IUsuarioRepositorio, UsuarioRepositorio>();

            var conexao = container.GetInstance <IUsuarioRepositorio>();

            LoginUsuarioRequest loginUsuarioRequest = new LoginUsuarioRequest();

            loginUsuarioRequest.Email = "*****@*****.**";
            loginUsuarioRequest.Senha = "123456";

            UsuarioCommandHandler usuarioCommand = new UsuarioCommandHandler(conexao);
            LoginUsuarioResponse  response       = (LoginUsuarioResponse)usuarioCommand.Handler(loginUsuarioRequest);

            Console.ReadKey();
        }