Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }