Exemplo n.º 1
0
        public AutenticacaoDoLogin FazerLogin(LoginDto loginDto)
        {
            bool       credenciaisValidas = false;
            UsuarioDto usuarioBase        = new UsuarioDto();

            if (loginDto != null && !string.IsNullOrWhiteSpace(loginDto.Login))
            {
                usuarioBase        = _usuarioServices.GetByEmail(loginDto.Login);
                credenciaisValidas = usuarioBase.Id != Guid.Empty && !usuarioBase.Excluido && loginDto.Login == usuarioBase.Email && EncryptProvider.Md5(loginDto.Senha).ToUpper() == usuarioBase.Senha.ToUpper();
            }

            if (credenciaisValidas)
            {
                var dataDeExpiracao = DateTime.Now.AddDays(1);
                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Name, usuarioBase.Id.ToString())
                    }),
                    Expires            = dataDeExpiracao,
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var tokenObj = tokenHandler.CreateToken(tokenDescriptor);
                var token    = tokenHandler.WriteToken(tokenObj);

                _context.SaveChanges();
                return(new AutenticacaoDoLogin
                {
                    Autenticado = true,
                    DataDeCriacao = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    DataDeExpiracao = dataDeExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                    TokenDeAcesso = token,
                    Mensagem = "OK",
                    UsuarioId = usuarioBase.Id,
                    Usuario = usuarioBase.Apelido,
                });
            }
            else
            {
                return(new AutenticacaoDoLogin
                {
                    Autenticado = false,
                    Mensagem = "Falha ao autenticar"
                });
            }
        }