Ejemplo n.º 1
0
        public async Task RemoveFromRole([FromBody] RoleMembersModel model, string id)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                throw this.Exception("找不到角色");
            }

            var dbSet = _dbContext.Set <UserRole>();

            var usersToRemove = dbSet.Where(e => e.RoleId == int.Parse(id) && model.Members.Contains(e.UserId)).ToList();

            if (role.Rolename == "Administrator")
            {
                // 用户本身是管理员则不能移除本身管理员角色
                var my = await _userManager.FindByNameAsync(User.Identity.Name);

                usersToRemove = usersToRemove.Where(e => e.UserId != ((User)my).Id).ToList();
            }

            dbSet.RemoveRange(usersToRemove);

            _dbContext.SaveChanges();
        }
Ejemplo n.º 2
0
        public async Task AddToRole([FromBody] RoleMembersModel model, string id)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                throw this.Exception("找不到角色");
            }

            var newUsers = _dbContext.Set <User>().Where(e => model.Members.Contains(e.Id) && !e.Roles.Select(r => r.RoleId).Contains(int.Parse(id))).ToList();

            newUsers.ForEach(e => e.Roles.Add(new UserRole()
            {
                RoleId = int.Parse(id),
                UserId = e.Id
            }));

            _dbContext.SaveChanges();
        }