Beispiel #1
0
        public async Task <ConsentViewModel> BuildConsentViewModel(string returnUrl, InputConstentViewModel model = null)
        {
            var request = await _identityServerInteractionService.GetAuthorizationContextAsync(returnUrl);

            if (request == null)
            {
                return(null);
            }
            var client = await _icelientStore.FindEnabledClientByIdAsync(request.ClientId);

            var resources = await _resourceStore.FindEnabledResourcesByScopeAsync(request.ScopesRequested);

            var vm = CreateViewModel(request, client, resources, model);

            vm.ReturnUrl = returnUrl;
            return(vm);
        }
        public async Task <IActionResult> Index(InputConstentViewModel viewModel)
        {
            var result = await _service.ProcessConsent(viewModel);

            if (result.IsRedirect)
            {
                return(Redirect(result.RedirectUrl));
            }
            else
            {
                if (!string.IsNullOrEmpty(result.ValidationError))
                {
                    ModelState.AddModelError("", result.ValidationError);
                }
                return(View(result.ConsentViewModel));
            }
        }
Beispiel #3
0
        public async Task <ProcessConsentResult> ProcessConsent(InputConstentViewModel viewModel)
        {
            ConsentResponse consentResponse = null;

            var result = new ProcessConsentResult();

            if (viewModel.Button == "no")
            {
                consentResponse = ConsentResponse.Denied;
            }
            else if (viewModel.Button == "yes")
            {
                if (viewModel.ScopesConsented != null && viewModel.ScopesConsented.Any())
                {
                    consentResponse = new ConsentResponse
                    {
                        ScopesConsented = viewModel.ScopesConsented,
                        RememberConsent = viewModel.RememberConsent
                    };
                }
                result.ValidationError = "请至少选择一个权限";
            }

            if (consentResponse != null)
            {
                var request = await _identityServerInteractionService.GetAuthorizationContextAsync(viewModel.ReturnUrl);

                await _identityServerInteractionService.GrantConsentAsync(request, consentResponse);

                result.RedirectUrl = viewModel.ReturnUrl;
            }
            else
            {
                var consentModel = await  BuildConsentViewModel(viewModel.ReturnUrl);

                result.ConsentViewModel = consentModel;
            }
            return(result);
        }
Beispiel #4
0
        private ConsentViewModel CreateViewModel(AuthorizationRequest request, Client client, Resources resource, InputConstentViewModel model)
        {
            var selectedScopes = model?.ScopesConsented ?? Enumerable.Empty <string>();
            var vm             = new ConsentViewModel();

            vm.ClientLogoUrl  = client.LogoUri;
            vm.ClientName     = client.ClientName;
            vm.ClientUrl      = client.ClientUri;
            vm.RemeberConsent = model?.RememberConsent ?? true;


            vm.IdentityScopes = resource.IdentityResources.Select(i => CreateScopeViewModel(i, selectedScopes.Contains(i.Name) || model == null));
            vm.ResourceScopes = resource.ApiResources.SelectMany(r => r.Scopes).Select(x => CreateScopeViewModel(x, selectedScopes.Contains(x.Name) || model == null));
            return(vm);
        }