public async Task <String> AuthenticateAsync(string email, string password) { _logger?.Info("Obtendo o usuário."); User user = await _userManager.FindByEmailAsync(email); if (user == null) { _logger?.Warn("Usuário não encontrado na base de dados."); return(null); } _logger?.Info("Usuário foi encontrado."); _logger?.Info("validando a senha."); if (await _userManager.CheckPasswordAsync(user, password)) { _logger?.Info("Senha é válida."); _logger?.Info("Gerando Jwt Token."); IList <string> roles = await _userManager.GetRolesAsync(user); IList <Claim> claims = await _userManager.GetClaimsAsync(user); claims.Add(new Claim(ClaimTypes.Role, roles.Join(", "))); user.AddClaims(claims); Token token = await _tokenService.GenerateToken(user); if (token != null) { _logger?.Info("Token gerado com sucesso."); _logger?.Info("Retornando token."); return(token.AccessToken); } _logger?.Info("Falha ao gerar token."); return(null); } _logger?.Warn("Senha não é válida para esse usuário."); return(null); }
/// <summary> /// The invoke. /// </summary> /// <param name="httpContext">The context</param> /// <returns></returns> public async Task InvokeAsync(HttpContext httpContext) { try { await next(httpContext); } catch (Exception ex) { if (httpContext.Response.HasStarted) { logger.Warn( "The response has already started, the http status code middleware will not be executed."); throw; } await HandleExceptionAsync(httpContext, ex); } }
public async Task <ICommandResult> Handler(AuthenticateUserCommand command) { try { _logger?.Info("Autenticando usuário."); string token = await _service.AuthenticateAsync(command.Email, command.Password); if (token == null) { _logger?.Warn("Usuário não autenticado."); return(new CommandResult(false, Messages.USER_AUTHENTICATE_FAILED, null)); } _logger?.Info("Usuário autenticado com sucesso."); return(new CommandResult(true, Messages.USER_AUTHENTICATE_SUCCESS, token)); } catch (Exception ex) { _logger?.Error(ex.Message.ToLower()); // return new CommandResult(false, "Internal Server Error", null); throw ex; } }