Пример #1
0
        public async Task <ActionResult> AddRolesToUser(Guid userId, [FromBody] UserRolesRequest userRoles)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var roles = await _userService.UpdateRoles(userId, userRoles.Roles);

            if (roles == null)
            {
                return(NotFound("User not found"));
            }
            return(Created("user/roles", roles));
        }
Пример #2
0
        public async Task <ResponseMessage> PulshUserRole(UserRolesRequest rolesRequest)
        {
            var users = DataBaseUser.TokenModel;

            _Logger.LogInformation($"用户{users?.UserName ?? ""},其ID:({users?.Id ?? ""}) 添加用户角色表:\r\n" + (rolesRequest != null ? JsonHelpers.ToJSON(rolesRequest) : ""));
            var response = new ResponseMessage();

            try
            {
                response = await _RolesManager.AddUserRoles(rolesRequest);
            }
            catch (Exception el)
            {
                _Logger.LogError($"用户{users?.UserName ?? ""}({users?.Id ?? ""})添加用户角色表报错:\r\n{el.ToString()}");
                response.Code    = ResponseCodeDefines.ArgumentNullError;
                response.Message = $"添加用户角色表报错:{el.Message}";
            }
            return(response);
        }
Пример #3
0
        /// <summary>
        /// 添加用户角色表
        /// </summary>
        /// <param name="userRolesRequest"></param>
        /// <returns></returns>
        public async Task <ResponseMessage> AddUserRoles(UserRolesRequest userRolesRequest)
        {
            var users    = DataBaseUser.TokenModel;
            var response = new ResponseMessage();

            if (userRolesRequest == null)
            {
                throw new Exception(nameof(userRolesRequest));
            }
            try
            {
                var scopeList = await _IRolesStore.BrowsingScope(users.Id, "Role_Add_Edit");

                if (scopeList == null)
                {
                    response.Message = "暂无权限,请联系管理";
                    response.Code    = ResponseCodeDefines.NotAllow;
                    return(response);
                }

                ////1.1: 找到所有的角色ID
                var oldRols = await _IRolesStore.GetUserRoleAsync().Where(u => u.UserId.Equals(userRolesRequest.UserId)).Select(p => p.RoleId).ToListAsync();

                //请求的权限个数大于原来的原有权限个数就是新增权限,小于的话就是要删除,
                if (oldRols.Count() > userRolesRequest.RoleId.Count())
                {
                    var deleteRoleId = oldRols.Except(userRolesRequest.RoleId).ToList(); //差集
                    //1.1. 删除用户角色表
                    await _IRolesStore.DeleteUserRoles(userRolesRequest.UserId, deleteRoleId);

                    //1.2.删除权限扩展表
                    var permissionList = await _IRolesStore.GetRolePermissionsAsync().Where(p => deleteRoleId.Contains(p.RoledId)).Select(u => u.PermissionsId).ToListAsync();

                    await _IRolesStore.DeletePermissionEx(userRolesRequest.UserId, permissionList);
                }
                //新增
                else
                {
                    var addRoleId = userRolesRequest.RoleId.Except(oldRols); //差集
                    var model     = new List <UserRole>();
                    foreach (var roleId in addRoleId)
                    {
                        model.Add(new UserRole {
                            RoleId = roleId, UserId = userRolesRequest.UserId
                        });
                    }

                    ////1.2: 找到所有的角色的权限
                    var permissionList = await _IRolesStore.GetRolePermissionsAsync().Where(p => addRoleId.Contains(p.RoledId)).ToListAsync();

                    if (permissionList.Count() == 0)
                    {
                        response.Message = "该角色的权限项未指定.请先完善";
                        response.Code    = ResponseCodeDefines.ArgumentNullError;
                        return(response);
                    }
                    ////1.3: 构建权限扩展表
                    List <PermissionExpansion> PermissionEx = new List <PermissionExpansion>();
                    foreach (var item in permissionList)
                    {
                        PermissionEx.Add(new PermissionExpansion
                        {
                            Id               = Guid.NewGuid().ToString(),
                            OrganizationId   = item.OrganizationScope,
                            OrganizationName = "",
                            PermissionId     = item.PermissionsId,
                            PermissionName   = "",
                            UserId           = userRolesRequest.UserId,
                            UserName         = userRolesRequest.UserName
                        });
                    }
                    await _IRolesStore.InsertUserRole(model);

                    await _IRolesStore.InsertRolePermissionEX(PermissionEx);
                }
            }
            catch (Exception el)
            {
                throw new Exception(el.Message);
            }
            return(response);
        }