Exemple #1
0
        public async Task <IActionResult> Index(ConfirmConsentsViewModel confirmConsentsViewModel, CancellationToken token)
        {
            try
            {
                var unprotectedUrl = _dataProtector.Unprotect(confirmConsentsViewModel.ReturnUrl);
                var query          = unprotectedUrl.GetQueries().ToJObj();
                var nameIdentifier = GetNameIdentifier();
                var user           = await _oauthUserRepository.FindOAuthUserByLogin(nameIdentifier, token);

                var consent = _userConsentFetcher.FetchFromAuthorizationRequest(user, query);
                if (consent == null)
                {
                    consent = _userConsentFetcher.BuildFromAuthorizationRequest(query);
                    var scopes = await _oauthScopeRepository.FindOAuthScopesByNames(consent.Scopes.Select(s => s.Name), token);

                    consent.Scopes = scopes;
                    user.Consents.Add(consent);
                    await _oauthUserRepository.Update(user, token);

                    await _oauthUserRepository.SaveChanges(token);
                }

                return(Redirect(unprotectedUrl));
            }
            catch (CryptographicException)
            {
                ModelState.AddModelError("invalid_request", "invalid_request");
                return(View(confirmConsentsViewModel));
            }
        }
Exemple #2
0
        public async Task <IActionResult> Index(ConfirmConsentsViewModel confirmConsentsViewModel, CancellationToken token)
        {
            try
            {
                var unprotectedUrl = _dataProtector.Unprotect(confirmConsentsViewModel.ReturnUrl);
                var query          = unprotectedUrl.GetQueries().ToJObj();
                var claimName      = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier);
                var user           = await _oauthUserRepository.FindOAuthUserByLogin(claimName.Value, token);

                var consent = _userConsentFetcher.FetchFromAuthorizationRequest(user, query);
                if (consent == null)
                {
                    consent = _userConsentFetcher.BuildFromAuthorizationRequest(query);
                    user.Consents.Add(consent);
                    await _oAuthUserCommandRepository.Update(user, token);

                    await _oAuthUserCommandRepository.SaveChanges(token);
                }

                return(Redirect(unprotectedUrl));
            }
            catch (CryptographicException)
            {
                ModelState.AddModelError("invalid_request", "invalid_request");
                return(View(confirmConsentsViewModel));
            }
        }