public async Task <ResponseResult> Handle(RefreshTokenCommand request, CancellationToken cancellationToken) { request.Validate(); if (request.Notifications.Any()) { _response.AddNotifications(request.Notifications); return(_response); } var usuario = await _unitOfWork.Usuarios.ObterPorEmailAsync(request.Email); if (usuario == null || usuario.RefreshToken != request.RefreshToken || usuario.RefreshTokenExpiracao < DateTime.UtcNow) { _response.AddNotification(new Notification("usuario", Erros.ErroCliente_RefreshTokenNaoAutorizado)); return(_response); } var jwt = _geradorToken.GerarToken(usuario); usuario.AdicionarRefreshToken(jwt.RefreshToken.Token, jwt.RefreshToken.DataExpiracao); await _unitOfWork.SaveAsync(); _response.AddValue(new { email = usuario.Email, jwt }); return(_response); }
public async Task <ResponseResult> Handle(LoginUsuarioCommand request, CancellationToken cancellationToken) { request.Validate(); if (request.Notifications.Any()) { _response.AddNotifications(request.Notifications); return(_response); } // Recupera o usuário var usuario = await _unitOfWork.Usuarios.ObterPorEmailAsync(request.Email); if (usuario == null) { _response.AddNotification(new Notification("usuario", Erros.ErroCliente_UsuarioOuSenhaInvalido)); return(_response); } var passwordResult = _passwordHasher.VerifyHashedPassword(usuario, usuario.PasswordHash, request.Password); if (passwordResult == PasswordVerificationResult.Failed) { _response.AddNotification(new Notification("usuario", Erros.ErroCliente_UsuarioOuSenhaInvalido)); return(_response); } var jwt = _geradorToken.GerarToken(usuario); usuario.AdicionarRefreshToken(jwt.RefreshToken.Token, jwt.RefreshToken.DataExpiracao); await _unitOfWork.SaveAsync(); _response.AddValue(new { email = usuario.Email, jwt }); return(_response); }
public async Task <IActionResult> RealizarLogin( [FromBody] VisaoModeloUsuarioLogin loginUsuario, [FromServices] IGeradorToken geradorToken) { if (loginUsuario is null || !ModelState.IsValid) { return(BadRequest(ModelState)); } var objRetorno = new ModeloVisaoRetorno <ModeloVisaoToken>(); var usuario = _mapper.Map <Usuario>(loginUsuario); var usuarioAutenticado = await _servicoAplicacaoUsuario.RealizarLoginUsuario(usuario); objRetorno.ObjetoDeRetorno = new ModeloVisaoToken() { Token = geradorToken.GerarToken(usuarioAutenticado), Nome = usuarioAutenticado.Nome, UsuarioId = usuarioAutenticado.UsuarioId }; return(Ok(objRetorno)); }