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); }
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" })); } }
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(); }