protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity <Usuario>().HasData( new Usuario { Id = 1, Nome = "Evandro", Email = "*****@*****.**", Senha = HashService.GerarHash("abc123"), DataExpiracao = null, RefreshToken = null }, new Usuario { Id = 2, Nome = "José", Email = "*****@*****.**", Senha = HashService.GerarHash("abc456"), DataExpiracao = null, RefreshToken = null }, new Usuario { Id = 3, Nome = "Carlos", Email = "*****@*****.**", Senha = HashService.GerarHash("abc789"), DataExpiracao = null, RefreshToken = null } ); base.OnModelCreating(modelBuilder); }
public async Task <IActionResult> Autenticar(AuthDTO auth) { // Criptografa a senha do DTO var hashSenha = HashService.GerarHash(auth.Senha); // Autentica o usuário var usuario = await _context .Usuarios .FirstOrDefaultAsync(u => u.Email == auth.Email && u.Senha == hashSenha); if (usuario == null) { return(NotFound()); } // Gera as claims, token de autenticação e refresh token var claims = GerarClaims(usuario); var token = _geradorDeToken.GerarToken(claims); var refresh = _geradorDeToken.GerarRefreshToken(); // Atualiza a tabela de usuários com o novo refresh token + data de expiração await AtualizarUsuario( usuario, refresh, DateTime.Now.AddDays(_config.DaysToRefresh)); // Determina a data de criação e expiração do token e ... var dataCriacao = DateTime.Now; var dataExpiracao = dataCriacao.AddMinutes(_config.MinutesToExpire); // ... retorna o DTO com tudo OK var resultado = GerarTokenDTO( token, refresh, dataCriacao, dataExpiracao); return(Ok(resultado)); }