feat(user): 添加删除数据权限功能#672
Conversation
- 在用户管理表单中添加删除数据权限开关 - 实现用户数据权限的删除逻辑- 更新相关语言文件,添加删除数据权限相关翻译
📝 WalkthroughWalkthrough本次变更为用户权限管理增加了“删除数据权限”功能。后端增加了对 Changes
Sequence Diagram(s)sequenceDiagram
participant 前端
participant 后端API
participant UserService
participant 数据库
前端->>后端API: 提交包含 delete_policy 字段的表单
后端API->>UserService: 传递数据(含 delete_policy)
UserService-->>数据库: 查询用户现有 policy
alt delete_policy 为 true
UserService-->>数据库: 删除 policy
else
alt 存在 policy
UserService-->>数据库: 更新 policy
else
UserService-->>数据库: 创建新 policy
end
end
UserService-->>后端API: 返回处理结果
后端API-->>前端: 返回响应
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Suggested labels
Suggested reviewers
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
related #633 |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (3)
app/Http/Admin/Request/Permission/UserRequest.php (1)
100-116: 建议在 attributes 方法中添加字段翻译为了提供更好的错误消息,建议在
attributes()方法中为delete_policy字段添加翻译。在
attributes()方法中添加以下行:public function attributes(): array { return [ 'username' => trans('user.username'), 'user_type' => trans('user.user_type'), 'nickname' => trans('user.nickname'), 'phone' => trans('user.phone'), 'email' => trans('user.email'), 'avatar' => trans('user.avatar'), 'signed' => trans('user.signed'), 'status' => trans('user.status'), 'backend_setting' => trans('user.backend_setting'), 'created_by' => trans('user.created_by'), 'remark' => trans('user.remark'), 'department' => trans('user.department'), + 'delete_policy' => trans('user.delete_policy'), ]; }web/src/modules/base/views/permission/user/data/getFormItems.tsx (1)
119-129: 表单项实现正确,但考虑优化布局和一致性表单项实现正确,使用
<el-switch />组件处理布尔值是合适的。建议考虑以下优化:
- 位置调整:将此字段移到数据权限相关按钮附近,以提高逻辑分组的一致性
- 标签宽度一致性:检查其他表单项的 labelWidth 设置,保持一致的视觉效果
- 默认值:考虑为该字段设置默认值(通常为
false)if (formType === 'add') { model.password = '123456' model.status = 1 model.user_type = 100 model.department = [] model.position = [] + model.delete_policy = false }app/Service/Permission/UserService.php (1)
114-114: 考虑添加删除操作的返回值检查删除操作可能失败,建议添加适当的错误处理或日志记录。
- $entity->policy()->delete(); + $deleteResult = $entity->policy()->delete(); + // 可选:添加日志记录删除结果 + if (!$deleteResult) { + // 处理删除失败的情况 + }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
app/Http/Admin/Request/Permission/UserRequest.php(1 hunks)app/Service/Permission/UserService.php(1 hunks)web/src/modules/base/locales/en[English].yaml(1 hunks)web/src/modules/base/locales/zh_CN[简体中文].yaml(1 hunks)web/src/modules/base/locales/zh_TW[繁體中文].yaml(1 hunks)web/src/modules/base/views/permission/user/data/getFormItems.tsx(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
- GitHub Check: Test on PHP8.2 Swoole-v5.0.3
- GitHub Check: Test on PHP8.1 Swow-develop
- GitHub Check: Test on PHP8.1 Swoole-master
- GitHub Check: Test on PHP8.3 Swoole-v5.1.5
- GitHub Check: Test on PHP8.2 Swow-develop
- GitHub Check: Test on PHP8.2 Swoole-v5.1.5
- GitHub Check: Test on PHP8.3 Swow-develop
- GitHub Check: build Code coverage report (ubuntu-latest, 8.1, v5.1.3)
- GitHub Check: Test on PHP8.1 Swoole-master
- GitHub Check: Test on PHP8.3 Swoole-master
- GitHub Check: Test on PHP8.2 Swoole-v5.0.3
- GitHub Check: Test on PHP8.2 Swoole-master
- GitHub Check: Test on PHP8.1 Swoole-v5.1.5
- GitHub Check: Test on PHP8.1 Swoole-v5.0.3
- GitHub Check: Test on PHP8.3 Swoole-v5.1.5
- GitHub Check: Test on PHP8.2 Swoole-v5.1.5
- GitHub Check: Test on PHP8.3 Swow-develop
- GitHub Check: Test on PHP8.1 Swow-develop
- GitHub Check: Test on PHP8.2 Swow-develop
- GitHub Check: build Code coverage report (ubuntu-latest, 8.1, v5.1.3)
🔇 Additional comments (3)
web/src/modules/base/locales/en[English].yaml (1)
20-20: LGTM!英文本地化字符串添加正确,命名规范且翻译准确。
web/src/modules/base/locales/zh_CN[简体中文].yaml (1)
22-22: LGTM!简体中文本地化字符串添加正确,翻译准确且符合中文表达习惯。
app/Http/Admin/Request/Permission/UserRequest.php (1)
69-69: LGTM!验证规则添加正确,使用了合适的
sometimes|bool规则来处理可选的布尔值字段。
* feat(migration): create department, position, and user association tables * feat(database): enhance department and position tables with comments and defaults; add PolicyType enum for data permission policies * feat(model): update DataPermissionPolicy to use PolicyType enum for policy_type property * feat: refactor DataPermissionPolicy and PolicyType to improve namespace structure and enhance role/user associations * feat: enhance role and policy management with new schema and properties * feat: enhance user management with policy handling in requests and services * feat: ensure policy deletion on role and user removal * feat: add Department management functionality with controller, service, repository, request, and schema * fix:(data seeder) 修复填充部门菜单数据bug * feat: 部门管理前端页面. * fix * feat: enhance Department management with transaction handling and validation improvements * feat: update operation IDs in DepartmentController for clarity and consistency * feat: 部门管理前端页面. - 2 * feat: implement cascading delete for related models on Department deletion * styles: remove el-tag border (#557) (#558) * 补充岗位模块文件 (#559) * fix: 修正部门错别字 * feat: 补充岗位模块五大金刚文件 * feat: enhance User and Department models with relationships and validation rules * 部门 * feat: implement data permission management with DataScope and related aspects * feat: implement data permission rules and context management with caching support * 部门 * 用户管理适配部门、数据权限功能 - 未完成 * 用户管理适配部门、数据权限功能 - 未完成 * feat: add endpoint to retrieve positions by department ID with permission check * feat: remove super admin check from getPositionsByDepartmentId method * feat: add positions relationship to department query and remove unused endpoint * feat: 完善用户管理模块,新增数据权限设置功能并优化部门管理 * feat: 部门下的岗位管理 * feat: update role to position relationship and add batch data permission request * feat: add positions and users relationships to Policy model * 更新 * 部门岗位 * 部门岗位 * 部门领导接口 * ma-select-table * ma-select-table * 部门负责人 * up * fix: 修复部门负责人设置页面显示问题及配置调试模式 1. 修复部门负责人设置页面显示列,移除不必要的信息展示 2. 调整部门负责人创建逻辑,避免重复数据 3. 修改配置文件中调试模式默认值为true 4. 优化用户管理页面暗黑模式背景色 * feat: 重构部门领导删除逻辑,支持按部门ID和用户ID批量删除 * feat: 移除未使用的下载工具函数 downloadFile * feat: 部门查看用户列表 * fix: 优化用户权限策略验证结构并移除冗余菜单权限项 * feat: 部门功能分支完成 * fix: UserRequest * fix: README.md * chore(deps): 升级 @mineadmin/form 和 @mineadmin/pro-table 依赖版本更新 * chore(deps): 升级 @mineadmin/form 和 @mineadmin/pro-table 依赖版本更新 * chore(deps): 升级 @mineadmin/form 依赖版本至 ^1.0.33 * refactor(ma-dict-select): 重构字典选择组件模板结构并升级element-plus至2.9.9 * feat: 升级依赖 * fix: 修复 ma-form 支持 children 配置项后,造成组件默认插槽参数丢失以及 render 函数里 jsx 语法的子组件不渲染问题,同时修复 ma-search 兼容 ma-form 的一些问题 * fix: 还原 ma-dict-select 组件 * chore(deps): 升级 @mineadmin/form 依赖版本至 ^1.0.51 * fix: 还原mineadmin/search下的style.css。 * fix: 更新用户信息时,数据权限值非数组问题 * feat: - 新增远程SFC加载组件并优化字典选择器禁用状态支持 - 修复用户编辑时,打开数据权限弹窗不显示用户名的问题 * fix: 修复子部门未获取岗位数据 * refactor(permission): 重构权限管理模块 - 移除了 BatchGrantDataPermissionForPositionRequest 中的 is_default 字段 - 优化了 Leader 模型和相关控制器、仓库的代码结构 -调整了 Position 模型的 policy 关系,从 belongsTo改为 hasOne - 重构了 UserService 中的用户创建和更新逻辑,优化了策略数据的处理 - 删除了不必要的异常捕获和冗余代码 - 统一了代码格式和命名规范 * feat(data-permission): 优化数据权限处理逻辑 - 新增仅限特定表的数据权限功能 - 重构数据权限处理流程,提高灵活性和可维护性 -优化数据权限查询条件,提升查询性能 - 调整用户权限获取逻辑,支持多岗位权限 * feat(DataPermission): 添加数据权限全局作用域 - 新增 DataScope 类实现 Hyperf\Database\Model\Scope 接口 - 创建 DataScopes trait 用于在模型中应用数据权限作用域 * feat(data-permission): 添加自定义数据权限功能 - 新增自定义数据权限配置文件 custom.php- 实现自定义数据权限加载逻辑 - 添加测试用自定义数据权限规则 - 优化数据权限工厂类,支持自定义规则 * fix(department):修复部门管理问题 (#612) * refactor(Permission): 优化部门和服务用户权限处理逻辑 -将空值检查从 !empty() 改为 isset(),提高代码的可读性和性能 - 在 DepartmentService 和 UserService 中统一处理关联数据的同步 * refactor(user): 优化用户策略数据同步逻辑 - 将 isset 判断改为 !empty 判断,提高数据有效性验证 - 优化了用户策略数据的同步流程,确保只有在策略数据存在时才进行更新操作 * refactor(user): 优化用户部门下拉清除和单点删除选择事件对数据的同步清空逻辑 * fix(icons): 修复生成图标命令报缺少`inquirer`库 * style(UserService): 优化空值判断逻辑 - 在 User 实体更新权限策略时,将 !empty() 替换为 ! empty(),增加代码可读性 * refactor(data-permission): 优化数据权限相关代码 - 添加 phpstan 注释忽略特定代码行的类型检查 - 修复 DataScopeAspect 中的空值判断 - 优化 Department 模型中的 children 关系定义 - 改进 DataScopes trait 的代码结构- 优化数据权限执行规则中的部门和用户查询逻辑 * feat(user): 点击搜索重置按钮,也清空部门筛选 * fix(login): 修复用户登录后未设置语言标记,造成默认为英文的bug * fix(permission): 修复用户模型与策略关联的错误,并优化数据权限全局作用域的实现 * refactor(data-permission): simplify Factory usage in DataScope and remove unnecessary constructor * refactor(data-permission): use Arr::get for safer attribute retrieval in DataScopeAspect * fix(CreatedByIdsExecute): replace whereIn with where for department ID queries * fix(CreatedByIdsExecute): ensure unique user IDs are returned in execute method * fix(CreatedByIdsExecute): remove unnecessary department list processing in execute method * feat(CreatedByIdsExecute): add user ID retrieval for department and department tree policies * refactor: remove final keyword from classes in DataPermission module * fix(User): 修复 policy 关系方向错误,改为 hasOne 正确体现一对一关系 (#620) * fix(User): 修复 policy 关系方向错误,改为 hasOne 正确体现一对一关系 * chore(User): 移除未使用的 BelongsTo 导入 * fix(DeptExecute): ensure department list is correctly updated after merging * Update package.json * fix(department): 岗位更新后页面未刷新问题 (#630) * chore: 更新依赖包版本,包括 @mineadmin/pro-table、@mineadmin/search、element-plus 并新增 inquirer 依赖 * chore(user): 创建用户返回实体model * update: 升级 vue-i18n 依赖版本至 11.1.6 * 还原 * fix * fix: correct formatting in CreatedByIdsExecute and add createdByColumn in UserService * Sync (#639) * fix(icons): 修复生成图标命令报缺少`inquirer`库 * fix(login): 修复用户登录后未设置语言标记,造成默认为英文的bug * feat(plugin): 前端插件添加 loginBefore Hook,用于登录请求前处理提交的登录数据,可修改提交的登录数据到后端 * Update package.json (#625) * docs(README): Updated contributors graphs link (#626) * fix: 修复引用了Swow包的bug * fix: 还原 * Fix/menu btn permissions (#627) * fix: 修复引用了Swow包的bug * fix: 还原 * fix(menu-form): 修复菜单按钮权限删除,没有删除对应索引行问题 * fix(permission): 修复菜单保存,未更新删除btnPermission 数据项的问题 --------- Co-authored-by: X.Mo <root@imoi.cn> * fix: 适配最新ele版本的 el-link api * fix: 适配最新ele版本的 el-link api * fix: 适配最新ele版本的 el-link api * update: 升级 @mineadmin/pro-table 至 1.0.73 和 @mineadmin/search 至 1.0.53,同时更新 element-plus 到 2.10.2 * Revert pull request (#638) * Update Server.php 文档地址无法打开了,更换最新文档地址 * Update docker-compose.yml MineAdmin不符合docker-compose up的命名规范,改成小写字母。 * fix(package): 降低vue-i18n版本号 --------- Co-authored-by: 留恋风 <2581047041@qq.com> Co-authored-by: west_ng <457395070@qq.com> * fix: update upload method parameter type hint to support Swow (#640) --------- Co-authored-by: X.Mo <root@imoi.cn> Co-authored-by: 暮秋人 <hatch.muqiuren@gmail.com> Co-authored-by: 留恋风 <2581047041@qq.com> Co-authored-by: west_ng <457395070@qq.com> * fix: 添加 department_users 查询中的 email 、phone 字段 (#644) * fix: 修正 DataScopeAspectTest 的命名空间 (#645) * feat(user): 添加删除数据权限功能 (#672) - 在用户管理表单中添加删除数据权限开关 - 实现用户数据权限的删除逻辑- 更新相关语言文件,添加删除数据权限相关翻译 * optimize(User Policy): 优化删除用户数据权限UI 和 后端代码(整体形式改变) (#673) * optimize(User Policy): 优化删除用户数据权限UI 和 后端代码(整体形式改变) * refactor(getFormItems): 移除删除策略字段的表单项 * fix(UserService): 修正更新用户策略时的代码缩进 * 更新 UserService.php * 更新 UserService.php * fix(UserService): 添加空值检查以防止创建空政策 * fix(UserService): 修正创建策略时的空值检查逻辑 * fix(DataScope): 添加清除功能以重置模型值 --------- Co-authored-by: zds <49744633+zds-s@users.noreply.github.com> Co-authored-by: 1kb <1@1kb.ren> Co-authored-by: westng <57742335+westng@users.noreply.github.com> Co-authored-by: cjx <jujijigo@qq.com> Co-authored-by: lyan <2771717608@qq.com> Co-authored-by: 暮秋人 <hatch.muqiuren@gmail.com> Co-authored-by: 留恋风 <2581047041@qq.com> Co-authored-by: west_ng <457395070@qq.com> Co-authored-by: WenRenHai <PeopleSea@outlook.com> Co-authored-by: lyan <death-satan@qq.com> Co-authored-by: WenRenHai <70972819+People-Sea@users.noreply.github.com>
Summary by CodeRabbit
新功能
其他