public async Task <IResult <IAccessTokenOutput> > Handle(UserCredentialsInput userInput, CancellationToken cancellationToken) { var validationResult = Validator.Validate(userInput); if (validationResult.Errors.Count > 0) { return(new Result <IAccessTokenOutput>(validationResult.Errors)); } var user = await UserService.FindByNameAsync(userInput.UserName, cancellationToken); if (user == null) { validationResult.Errors.Add( new ValidationError() { PropertyName = nameof(IUserCredentialsInput.UserName), Errors = new [] { "User does not exist." } } ); } if (user != null && !(await UserService.CheckPasswordAsync(user, userInput.Password, cancellationToken))) { validationResult.Errors.Add( new ValidationError() { PropertyName = nameof(IUserCredentialsInput.Password), Errors = new [] { "Invalid password." } } ); } if (validationResult.Errors.Count > 0) { return(new Result <IAccessTokenOutput>(validationResult.Errors)); } var roleName = (await UserService.GetRolesAsync(user, cancellationToken)).FirstOrDefault(); var tokenString = await JwtAuthManager.GenerateJwtAsync(userInput, roleName, cancellationToken); return(new Result <IAccessTokenOutput>(new AccessTokenOutput(tokenString))); }
public async Task <IActionResult> Login([FromBody] UserCredentialsInput loginCredentials) { var result = await LoginCommand.Value.LoginAsync(loginCredentials); return(PresentResult(result)); }
public async Task <IActionResult> Login([FromBody] UserCredentialsInput loginCredentials, CancellationToken cancellationToken) { var result = await Mediator.Value.Send(loginCredentials, cancellationToken); return(PresentResult(result)); }