public async Task <List <RoleClaimsViewModel> > ListRoleClaimsAsync(CBARole role)
        {
            var permissions = new List <RoleClaimsViewModel>();

            MemberInfo[] permissionEnum = typeof(Permission).GetMembers(BindingFlags.Public | BindingFlags.Static);
            foreach (var permission in permissionEnum)
            {
                var name = ((DisplayAttribute)permission.GetCustomAttributes(typeof(DisplayAttribute), false)[0]).Name;
                permissions.Add(new RoleClaimsViewModel {
                    Value = name, Type = permission.Name
                });
            }
            var claims = await _roleManager.GetClaimsAsync(role);

            var claimValues      = permissions.Select(permission => permission.Type).ToList();
            var roleClaimValues  = claims.Select(claim => claim.Type).ToList();
            var authorizedClaims = claimValues.Intersect(roleClaimValues).ToList();

            foreach (var permission in permissions)
            {
                if (authorizedClaims.Any(a => a == permission.Type))
                {
                    permission.IsSelected = true;
                }
            }
            return(permissions);
        }
Beispiel #2
0
        public async Task EditUserRoleAsync(UserRoleViewModel userRoleViewModel)
        {
            CBAUser user = await _userManager.FindByIdAsync(userRoleViewModel.User.Id);

            CBARole role = await _roleManager.FindByIdAsync(userRoleViewModel.RoleId);

            await _userManager.RemoveFromRolesAsync(user, await _userManager.GetRolesAsync(user));

            await _userManager.AddToRoleAsync(user, role.Name);

            user.CBARole = role;
            _context.Update(user);
            await _context.SaveChangesAsync();
        }
        public async Task EditRoleClaimsAsync(CBARole role, IEnumerable <RoleClaimsViewModel> roleClaims, CBAUser user)
        {
            var claims = await _roleManager.GetClaimsAsync(role);

            foreach (var claim in claims)
            {
                await _roleManager.RemoveClaimAsync(role, claim);
            }
            var selectedClaims = roleClaims.Where(a => a.IsSelected).ToList();

            foreach (var claim in selectedClaims)
            {
                MemberInfo member = typeof(Permission).GetMember(claim.Type)[0];
                var        name   = ((DisplayAttribute)member.GetCustomAttributes(typeof(DisplayAttribute), false)[0]).Name;
                await _roleManager.AddClaimAsync(role, new Claim(claim.Type, name));

                await _signInManager.RefreshSignInAsync(user);
            }
        }