コード例 #1
0
        public void AddRoleToGroup(int groupId, string roleName)
        {
            Group           group = db.Groups.Find(groupId);
            IdentityRole    irole = _db.Roles.FirstOrDefault(r => r.Name == roleName);
            ApplicationRole role  = db.ApplicationRoles.First(r => r.Name == roleName);

            var newgroupRole = new ApplicationRoleGroup
            {
                GroupId = group.Id,
                Group   = group,
                RoleId  = role.Id,
                Role    = role
            };

            // make sure the groupRole is not already present
            //if (!group.Roles.Contains(newgroupRole))
            if (!group.Roles.Any(x => x.GroupId == newgroupRole.GroupId && x.RoleId == role.Id))
            {
                group.Roles.Add(newgroupRole);
                db.SaveChanges();
            }

            // Add all of the users in this group to the new role:
            // IQueryable<ApplicationUser> groupUsers = _db.Users.Where(u => u.Groups.Any(g => g.GroupId == group.Id));
            IQueryable <Employee> groupUsers = db.Employees.Where(u => u.Groups.Any(g => g.GroupId == group.Id));

            foreach (Employee user in groupUsers)
            {
                if (!(_userManager.IsInRole(user.UserId, roleName)))
                {
                    AddUserToRole(user.UserId, role.Name);
                }
            }
        }
コード例 #2
0
        public async Task RemoveRoleFromGroup(int groupId, string roleName)
        {
            var group = await _context.Groups.Include(x => x.Roles).Where(x => x.Id == groupId).FirstOrDefaultAsync();

            var             newgroupRole = new ApplicationRoleGroup();
            ApplicationRole role         = new ApplicationRole();

            if (group != null)
            {
                role = await _context.Roles.FirstAsync(r => r.Name == roleName);

                newgroupRole.GroupId = group.Id;
                newgroupRole.Group   = group;
                newgroupRole.RoleId  = role.Id;
                newgroupRole.Role    = role;
            }

            if (group.Roles.Where(x => x.RoleId == role.Id && x.GroupId == groupId).FirstOrDefault() == null)
            {
                group.Roles.Remove(newgroupRole);
                _context.SaveChanges();
            }

            // Add all of the users in this group to the new role:
            IList <ApplicationUser> groupUsers = await _context.Users.Where(u => u.Groups.Any(g => g.GroupId == group.Id)).ToListAsync();

            if (groupUsers != null)
            {
                foreach (ApplicationUser user in groupUsers)
                {
                    if (await _userManager.IsInRoleAsync(user, roleName))
                    {
                        await _userManager.RemoveFromRoleAsync(user, role.Name);
                    }
                }
            }
        }
コード例 #3
0
        public void AddRoleToGroup(int groupId, string roleName)
        {
            Group           group = _db.Groups.Find(groupId);
            ApplicationRole role  = _db.Roles.First(r => r.Name == roleName);

            var newgroupRole = new ApplicationRoleGroup
            {
                //GroupId = group.Id,
                //Group = group,
                //RoleId = role.Id,
                //Role = role

                GroupId = groupId,
                Group   = group,
                RoleId  = role.Id,
                Role    = role
            };

            // make sure the groupRole is not already present
            if (!group.Roles.Contains(newgroupRole))
            {
                group.Roles.Add(newgroupRole);
                _db.SaveChanges();
            }

            // Add all of the users in this group to the new role:
            IQueryable <ApplicationUser> groupUsers = _db.Users.Where(u => u.Groups.Any(g => g.GroupId == group.Id));

            foreach (ApplicationUser user in groupUsers)
            {
                if (!(_userManager.IsInRoleAsync(user, roleName).Result))
                {
                    AddUserToRole(user.Id, role.Name);
                }
            }
        }