public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context) { try { var user = await _uniApiClient.FindUserByLoginAndPasswordAsync( context.UserName, context.Password ); var subjectId = user.Id.ToString(CultureInfo.InvariantCulture); _logger.LogInformation($"Учётные данные подтверждены для пользователя: {context.UserName}"); await _events.RaiseAsync( new UserLoginSuccessEvent( context.UserName, subjectId, context.UserName, false ) ); context.Result = new GrantValidationResult(subjectId, OidcConstants.AuthenticationMethods.Password); } catch { _logger.LogInformation($"Не удалось найти пользователя с указанным именем: {context.UserName}"); await _events.RaiseAsync(new UserLoginFailureEvent(context.UserName, "invalid username", false)); context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant); } }
public async Task <(UserDetailsResponseModel, ErrorResponseModel)> FindUserAsync(string login, string password) { try { var user = await _uniApiClient.FindUserByLoginAndPasswordAsync(login, password); return(user, null); } catch (ApiException apiException) { var error = apiException.GetContentAs <ErrorResponseModel>(); return(null, error); } }