public async Task <IActionResult> EditPolicy(CancellationToken cancellationToken, Guid id)
        {
            var policy = await _service.FetchPolicy(id, cancellationToken);

            if (policy == null)
            {
                _log.LogError($"policy not found with id {id}, so redirecting to index");
                return(RedirectToAction("Index"));
            }

            var model = new PolicyEditViewModel();

            model.Id       = policy.Id;
            model.TenantId = policy.TenantId;

            model.AllowedRolesCsv          = string.Join(",", policy.AllowedRoles);
            model.AuthenticationSchemesCsv = string.Join(",", policy.AuthenticationSchemes);
            model.Name = policy.Name;
            model.RequireAuthenticatedUser = policy.RequireAuthenticatedUser;
            model.RequiredUserName         = policy.RequiredUserName;
            model.Notes = policy.Notes;
            foreach (var claim in policy.RequiredClaims)
            {
                var claimModel = new ClaimRequirementViewModel(policy.Id);
                claimModel.ClaimName        = claim.ClaimName;
                claimModel.AllowedValuesCsv = string.Join(",", claim.AllowedValues);
                model.RequiredClaims.Add(claimModel);
            }


            return(View(model));
        }
        public async Task <IActionResult> EditClaimRequirement(ClaimRequirementViewModel model)
        {
            if (ModelState.IsValid)
            {
                var result = await _service.UpdateClaimRequirement(model.PolicyId, model.ClaimName, model.AllowedValuesCsv);

                if (result.Succeeded)
                {
                    var successFormat = _sr["The claim requirement {0} was successfully updated."];
                    this.AlertSuccess(string.Format(successFormat, model.ClaimName), true);
                }
                else
                {
                    this.AlertDanger(_sr[result.Message], true);
                }
            }

            return(RedirectToAction("EditPolicy", new { id = model.PolicyId }));
        }