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); }
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); } }