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);
 }
Esempio n. 2
0
        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));
        }