예제 #1
0
        public async Task <bool> Assign(int roleId, List <int> permissionIds)
        {
            var roleModulePermissions = await _roleModulePermissionRepository.Query(t => t.RoleId == roleId);

            var removeIdList = roleModulePermissions.Where(t => !permissionIds.Contains(t.PermissionId.ObjToInt())).Select(c => (object)c.Id);
            await _roleModulePermissionRepository.DeleteByIds(removeIdList.ToArray());

            foreach (var item in permissionIds)
            {
                int pid     = item.ObjToInt();
                var rmpitem = roleModulePermissions.Where(t => t.PermissionId == pid);
                if (!rmpitem.Any())
                {
                    var moduleId = (await repository.Query(t => t.Id == pid)).FirstOrDefault()?.ModuleId;
                    RoleModulePermission roleModulePermission = new RoleModulePermission()
                    {
                        IsDeleted    = false,
                        RoleId       = roleId,
                        ModuleId     = moduleId.ObjToInt(),
                        PermissionId = pid,
                    };

                    await _roleModulePermissionRepository.Add(roleModulePermission);
                }
            }

            return(true);
        }
예제 #2
0
        public async Task <MessageModel <string> > Assign([FromBody] AssignView assignView)
        {
            var data = new MessageModel <string>();


            if (assignView.rid > 0)
            {
                data.success = true;

                var roleModulePermissions = await _roleModulePermissionServices.Query(d => d.RoleId == assignView.rid);

                var remove = roleModulePermissions.Where(d => !assignView.pids.Contains(d.PermissionId.ObjToInt())).Select(c => (object)c.Id);
                data.success &= remove.Any() ? await _roleModulePermissionServices.DeleteByIds(remove.ToArray()) : true;

                foreach (var item in assignView.pids)
                {
                    var rmpitem  = roleModulePermissions.Where(d => d.PermissionId == item);
                    var moduleid = (await _permissionServices.Query(p => p.Id == item)).FirstOrDefault()?.Mid;
                    if (!rmpitem.Any())
                    {
                        RoleModulePermission roleModulePermission = new RoleModulePermission()
                        {
                            IsDeleted    = false,
                            RoleId       = assignView.rid,
                            ModuleId     = moduleid.ObjToInt(),
                            PermissionId = item,
                        };


                        roleModulePermission.CreateId = _user.ID;
                        roleModulePermission.CreateBy = _user.Name;

                        data.success &= (await _roleModulePermissionServices.Add(roleModulePermission)) > 0;
                    }
                    else
                    {
                        foreach (var role in rmpitem)
                        {
                            if (!role.ModuleId.Equals(moduleid))
                            {
                                role.ModuleId = moduleid.Value;
                                await _roleModulePermissionServices.Update(role, new List <string> {
                                    "ModuleId"
                                });
                            }
                        }
                    }
                }

                if (data.success)
                {
                    _requirement.Permissions.Clear();
                    data.response = "";
                    data.msg      = "保存成功";
                }
            }


            return(data);
        }
예제 #3
0
 public void Add(RoleModulePermission entity)
 {
     Execute(
         sql: @"
            INSERT INTO [dbo].[RoleModulePermission] ([id],[roleid],[moduleid],[canadd],[canedit],
             [candelete],[canview],[isDeleted],[createdate],[updatedate],[createdby],[updatedby])
             VALUES(@Id, @RoleId,@ModuleId ,@CanAdd ,@CanEdit ,@CanDelete,@CanView,
             @IsDeleted, @CreateDate , @UpdateDate,@CreatedBy,@UpdatedBy)",
         param: entity
         );
 }
        private void btnCopy_Click(object sender, EventArgs e)
        {
            RoleModulePermission rolePermission = new RoleModulePermission();

            // 模块访问权限复制到剪切板
            string[] grantModuleIds = this.GetGrantModuleIds();
            rolePermission.GrantModuleIds = grantModuleIds;

            Clipboard.SetData("roleModulePermission", rolePermission);
            this.btnPaste.Enabled = true;
        }
        private void btnPaste_Click(object sender, EventArgs e)
        {
            object clipboardData = Clipboard.GetData("roleModulePermission");

            if (clipboardData != null)
            {
                RoleModulePermission rolePermission = (RoleModulePermission)clipboardData;
                string[]             grantModuleIds = rolePermission.GrantModuleIds;
                DotNetService.Instance.PermissionService.GrantRoleModuleScopes(UserInfo, this.TargetRoleId, "Resource.AccessPermission", grantModuleIds);
                this.GetCurrentPermission();
            }
        }
예제 #6
0
        public async Task <MessageModel <string> > Assign([FromBody] AssignView assignView)
        {
            var data = new MessageModel <string>();

            try
            {
                if (assignView.rid > 0)
                {
                    data.success = true;

                    var roleModulePermissions = await _roleModulePermissionServices.Query(d => d.RoleId == assignView.rid);

                    var remove = roleModulePermissions.Where(d => !assignView.pids.Contains(d.PermissionId.ObjToInt())).Select(c => (object)c.Id);
                    data.success |= await _roleModulePermissionServices.DeleteByIds(remove.ToArray());

                    foreach (var item in assignView.pids)
                    {
                        var rmpitem = roleModulePermissions.Where(d => d.PermissionId == item);
                        if (!rmpitem.Any())
                        {
                            var moduleid = (await _permissionServices.Query(p => p.Id == item)).FirstOrDefault()?.Mid;
                            RoleModulePermission roleModulePermission = new RoleModulePermission()
                            {
                                IsDeleted    = false,
                                RoleId       = assignView.rid,
                                ModuleId     = moduleid.ObjToInt(),
                                PermissionId = item,
                            };


                            roleModulePermission.CreateId = _user.ID;
                            roleModulePermission.CreateBy = _user.Name;

                            data.success |= (await _roleModulePermissionServices.Add(roleModulePermission)) > 0;
                        }
                    }

                    if (data.success)
                    {
                        data.response = "";
                        data.msg      = "保存成功";
                    }
                }
            }
            catch (Exception)
            {
                data.success = false;
            }

            return(data);
        }
예제 #7
0
        public async Task <MessageModel <string> > Post([FromBody] RoleModulePermission request)
        {
            var data = new MessageModel <string>();

            var id = await _roleModulePermissionServices.Add(request);

            data.success = id > 0;

            if (data.success)
            {
                data.response = id.ObjToString();
                data.msg      = "添加成功";
            }

            return(data);
        }
예제 #8
0
        public async Task <MessageModel <string> > Put([FromBody] RoleModulePermission request)
        {
            var data = new MessageModel <string>();

            if (request.Id > 0)
            {
                data.success = await _roleModulePermissionServices.Update(request);

                if (data.success)
                {
                    data.msg      = "更新成功";
                    data.response = request?.Id.ObjToString();
                }
            }

            return(data);
        }
        public async Task <MessageModel <string> > Post(int roleId, string array)
        {
            var data = new MessageModel <string>();

            if (roleId > 0 && !string.IsNullOrWhiteSpace(array))
            {
                var roleModulePermissions = await _roleModulePermissionService.Query(a => a.RoleId == roleId.ObjToInt()).ConfigureAwait(false);

                var arr    = array.Split(",").ToList();
                var remove = roleModulePermissions.Where(d => !arr.Contains(d.PermissionId.ObjToString())).Select(c => (object)c.Id);
                // 保存之前删除已存在的权限
                data.Success |= await _roleModulePermissionService.DeleteByIds(remove.ToArray()).ConfigureAwait(false);

                var list = new List <RoleModulePermission>();
                foreach (var item in arr)
                {
                    var rmpItem = roleModulePermissions.Where(d => d.PermissionId == item.ObjToInt());
                    if (!rmpItem.Any())
                    {
                        var moduleId             = (await _permissionService.Query(p => p.Id == item.ObjToInt()).ConfigureAwait(false)).FirstOrDefault()?.Mid;
                        var roleModulePermission = new RoleModulePermission
                        {
                            RoleId       = roleId.ObjToInt(),
                            CreateTime   = DateTime.Now.Date,
                            IsDelete     = false,
                            ModifyTime   = DateTime.Now.Date,
                            ModuleId     = moduleId,
                            PermissionId = item.ObjToInt()
                        };
                        list.Add(roleModulePermission);
                    }
                }
                ;
                var result = await _roleModulePermissionService.Add(list).ConfigureAwait(false);

                data.Success = result > 0;
                if (data.Success)
                {
                    data.Response = result.ObjToString();
                    data.Msg      = "添加成功";
                }
            }

            // TODO:添加日志到数据库
            return(data);
        }
예제 #10
0
        public async Task <BaseResponse <string> > Assign([FromBody] AssignView assignView)
        {
            var data = new BaseResponse <string>();

            try
            {
                if (assignView.rid > 0)
                {
                    var roleModulePermissions = await _roleModuleServive.Query(d => d.RoleId == assignView.rid);

                    var remove = roleModulePermissions.Where(d => !assignView.pids.Contains(d.MenuId)).Select(c => (object)c.Id);
                    await _roleModuleServive.DeleteByIds(remove.ToArray());//删除

                    foreach (var item in assignView.pids)
                    {
                        var rmpitem = roleModulePermissions.Where(d => d.MenuId == item);
                        if (!rmpitem.Any())
                        {
                            RoleModulePermission roleModulePermission = new RoleModulePermission()
                            {
                                IsDrop = false,
                                RoleId = assignView.rid,
                                MenuId = item,
                            };
                            roleModulePermission.CreatedId   = _user.ID;
                            roleModulePermission.CreatedName = _user.Name;
                            roleModulePermission.UpdateId    = _user.ID;
                            roleModulePermission.UpdateName  = _user.Name;

                            var res = (await _roleModuleServive.Add(roleModulePermission)) > 0;
                        }
                    }
                    data.Msg = "保存成功";
                }
            }
            catch (Exception ex)
            {
                data.Code = 301;
                data.Msg  = ex.ToString();
            }

            return(data);
        }
예제 #11
0
        public OperationResult SetRoleModulePermission(int roleId, IEnumerable <RoleModulePermissionModel> addModulePermissionList, IEnumerable <RoleModulePermissionModel> removeModulePermissionList)
        {
            //逻辑删除->物理删除0321
            if (removeModulePermissionList.Count() > 0)
            {
                foreach (var rmp in removeModulePermissionList)
                {
                    //var updateEntity = RoleModulePermissions.FirstOrDefault(t => t.RoleId == roleId && t.ModuleId == rmp.ModuleId && t.PermissionId == rmp.PermissionId && t.IsDeleted == false);
                    //if (updateEntity != null)
                    //{
                    //    updateEntity.IsDeleted = true;
                    //    RoleModulePermissionRepository.Update(updateEntity);
                    //}
                    RoleModulePermissionRepository.Delete(t => t.RoleId == roleId && t.ModuleId == rmp.ModuleId && t.PermissionId == rmp.PermissionId && t.IsDeleted == false);
                }
            }
            //插入 & 更新
            if (addModulePermissionList.Count() > 0)
            {
                foreach (var amp in addModulePermissionList)
                {
                    var updateEntity = RoleModulePermissions.FirstOrDefault(t => t.RoleId == roleId && t.ModuleId == amp.ModuleId && t.PermissionId == amp.PermissionId && t.IsDeleted == true);
                    if (updateEntity != null)
                    {
                        updateEntity.IsDeleted = false;
                        RoleModulePermissionRepository.Update(updateEntity);
                    }
                    else
                    {
                        var addEntity = new RoleModulePermission
                        {
                            RoleId       = roleId,
                            ModuleId     = amp.ModuleId,
                            PermissionId = amp.PermissionId
                        };
                        RoleModulePermissionRepository.Insert(addEntity);
                    }
                }
            }

            return(new OperationResult(OperationResultType.Success, "授权成功"));
        }
예제 #12
0
 public void Update(RoleModulePermission entity)
 {
     Execute(
         sql: @"
             UPDATE [dbo].[RoleModulePermission]
                SET 
               ,[roleid] = @RoleId
               ,[moduleid] = @ModuleId
               ,[canadd] = @CanAdd
               ,[canedit] = @CanEdit
               ,[candelete] = @CanDelete
               ,[canview] = @CanView
               ,[isDeleted] = @IsDeleted
               ,[createdate] = @CreateDate
               ,[updatedate] = @UpdateDate
               ,[createdby] = @CreatedBy
               ,[updatedby] = @UpdatedBy
             WHERE Id = @Id",
         param: entity
         );
 }
예제 #13
0
 public void SetRoleModulePermission(int roleId, IEnumerable <RoleModulePermissionModel> addModulePermissionList, IEnumerable <RoleModulePermissionModel> removeModulePermissionList)
 {
     //逻辑删除
     if (removeModulePermissionList.Count() > 0)
     {
         foreach (var rmp in removeModulePermissionList)
         {
             var updateEntity = _roleModulePermissionRepository.GetAll().FirstOrDefault(t => t.RoleId == roleId && t.ModuleId == rmp.ModuleId && t.PermissionId == rmp.PermissionId && t.IsDeleted == false);
             if (updateEntity != null)
             {
                 updateEntity.IsDeleted = true;
                 _roleModulePermissionRepository.Update(updateEntity);
             }
         }
     }
     //插入 & 更新
     if (addModulePermissionList.Count() > 0)
     {
         foreach (var amp in addModulePermissionList)
         {
             var updateEntity = _roleModulePermissionRepository.GetAll().FirstOrDefault(t => t.RoleId == roleId && t.ModuleId == amp.ModuleId && t.PermissionId == amp.PermissionId && t.IsDeleted == true);
             if (updateEntity != null)
             {
                 updateEntity.IsDeleted = false;
                 _roleModulePermissionRepository.Update(updateEntity);
             }
             else
             {
                 var addEntity = new RoleModulePermission
                 {
                     RoleId       = roleId,
                     ModuleId     = amp.ModuleId,
                     PermissionId = amp.PermissionId
                 };
                 _roleModulePermissionRepository.Insert(addEntity);
             }
         }
     }
 }
예제 #14
0
        public async Task <ServiceResponse> SaveUpdateRoleModulePermission(RoleModulePermissionDto model)
        {
            ServiceResponse response = new ServiceResponse();

            try
            {
                RoleModulePermission data = new RoleModulePermission
                {
                    Id         = string.IsNullOrEmpty(model.Id) ? Guid.NewGuid().ToString() : model.Id,
                    CreateDate = DateTime.Now,
                    CreatedBy  = model.CreatedBy,
                    CanAdd     = model.CanAdd,
                    CanDelete  = model.CanDelete,
                    CanEdit    = model.CanEdit,
                    CanView    = model.CanView,
                    ModuleId   = model.ModuleId,
                    RoleId     = model.RoleId,
                    IsDeleted  = false,
                };
                if (string.IsNullOrEmpty(model.Id))
                {
                    unitOfWork.RoleModulePermissionRepository.Add(data);
                }
                else
                {
                    unitOfWork.RoleModulePermissionRepository.Update(data);
                }
                unitOfWork.Commit();
                response.Data      = data;
                response.IsSuccess = true;
            }
            catch (Exception e)
            {
                response.IsSuccess = false;
                response.Message   = e.ToString();
            }
            return(response);
        }
예제 #15
0
        public ActionResult GetPermission(string roleId, string selectedModules)
        {
            //选中模块
            List <string> selectedModuleId = new List <string>();

            string[] strSelectedModules = selectedModules.Split(',');
            foreach (var Id in strSelectedModules)
            {
                selectedModuleId.Add(Id);
            }
            //权限模块列表
            var model = new RoleSelectedPermissionModel();
            //权限下的模块
            var role = RoleService.Roles.Where(t => t._ID == roleId && t.IsDeleted == false).FirstOrDefault();

            if (role != null)
            {
                var permissions = PermissionService.Permissions.Where(t => t.IsDeleted == false && t.Enabled == true)
                                  .OrderBy(t => t.OrderSort).ToList()
                                  .Select(t => new PermissionModel
                {
                    Enabled        = t.Enabled,
                    PermissionId   = t._ID,
                    PermissionName = t.Name,
                    OrderSort      = t.OrderSort
                }).ToList();
                model.HeaderPermissionList = permissions;
                var module = ModuleService.Modules.Where(t => selectedModuleId.Contains(t._ID)).ToList();

                foreach (var m in module)
                {
                    var modulePermissionModel = new ModulePermissionModel
                    {
                        ModuleId   = m._ID,
                        ParentId   = m.ParentId,
                        ModuleName = m.Name,
                        Code       = m.Code
                    };
                    var rmodule = new RoleModulePermission();
                    if (role.RoleModulePermissions != null)
                    {
                        rmodule = role.RoleModulePermissions.FirstOrDefault(x => x.ModuleId == m._ID);
                    }

                    if (rmodule == null)
                    {
                        rmodule = new RoleModulePermission();
                    }
                    rmodule.PermissionIds = rmodule.PermissionIds ?? new List <string>();
                    foreach (var p in permissions)
                    {
                        var selected = rmodule.PermissionIds.FirstOrDefault(x => x == p.PermissionId) != null;
                        if (selected && !modulePermissionModel.Selected)
                        {
                            modulePermissionModel.Selected = true;
                            var pa = model.ModulePermissionDataList.FirstOrDefault(x => x.ModuleId == modulePermissionModel.ParentId);
                            if (pa != null && !pa.Selected)
                            {
                                pa.Selected = true;
                            }
                        }
                        modulePermissionModel.PermissionDataList.Add(new PermissionModel
                        {
                            PermissionId   = p.PermissionId,
                            PermissionName = p.PermissionName,
                            OrderSort      = p.OrderSort,
                            Enabled        = m.PermissionIds.FirstOrDefault(x => x == p.PermissionId) != null,
                            Selected       = selected
                        });
                    }
                    model.ModulePermissionDataList.Add(modulePermissionModel);
                }

                //权限按照Code排序
                model.ModulePermissionDataList = model.ModulePermissionDataList.OrderBy(t => t.Code).ToList();
            }

            return(PartialView("Permission", model));
        }
        private void btnCopy_Click(object sender, EventArgs e)
        {
            RoleModulePermission rolePermission = new RoleModulePermission();
            // 模块访问权限复制到剪切板
            string[] grantModuleIds = this.GetGrantModuleIds();
            rolePermission.GrantModuleIds = grantModuleIds;

            Clipboard.SetData("roleModulePermission", rolePermission);
            this.btnPaste.Enabled = true;
        }