Beispiel #1
0
        public async Task OnGetAsync(string id)
        {
            Input = new EditInputMdl {
                Id = id
            };

            var role = await _roleManager.FindByIdAsync(id);

            Input.Name = role.Name;
            var claimsTypes = (await _roleManager.GetClaimsAsync(role)).Select(c => c.Type.Replace('.', '_')).ToArray();
            var permitItems = string.Join(';', claimsTypes);

            Input.LoadPermitList(permitItems);
        }
Beispiel #2
0
        public async Task <IActionResult> Edit(string id)
        {
            var model = new EditInputMdl {
                Id = id
            };

            var role = await _roleManager.FindByIdAsync(id);

            model.Name = role.Name;
            var claimsTypes = (await _roleManager.GetClaimsAsync(role)).Select(c => c.Type.Replace('.', '_')).ToArray();
            var permitItems = string.Join(';', claimsTypes);

            model.LoadPermitList(permitItems);

            return(View(model));
        }
Beispiel #3
0
        public async Task <IActionResult> Edit(EditInputMdl model)
        {
            var selectedPermits = model.SelectedPermits.Split(new char[] { ';' }).Select(p => p.Replace('_', '.'));
            var role            = await _roleManager.FindByIdAsync(model.Id);

            var currentClaims = await _roleManager.GetClaimsAsync(role);

            var removeClaims = currentClaims.Where(c => !selectedPermits.Contains(c.Type));

            foreach (var claim in removeClaims)
            {
                var result = await _roleManager.RemoveClaimAsync(role, claim);

                if (!result.Succeeded)
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                }
            }

            var currentPermits = currentClaims.Select(c => c.Type);
            var addPermits     = selectedPermits.Except(currentPermits);

            foreach (var permit in addPermits)
            {
                var result = await _roleManager.AddClaimAsync(role, new Claim( permit, "" ));

                if (!result.Succeeded)
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                }
            }

            if (!ModelState.IsValid)
            {
                return(View());
            }

            return(RedirectToAction("Index"));
        }