# 07 — 权限控制与权限码种子化 **What to build:** 所有字典接口受 `@PreAuthorize("hasAuthority('dict:...')")` 保护;10 个权限码(`dict:group:list/save/delete/status` + `dict:item:list/save/delete/force-delete/status/default`)由 crm-dict 幂等初始化器种子化到权限资源树(sys_menu 物理表,不 import crm-auth 任何类)并绑定内置管理员角色,参考 role-management 做法(数据字典菜单挂"系统管理"下)。无权限访问返回无权限错误。 **Blocked by:** 02, 04, 05(所有端点存在后) **Status:** completed - [x] 全部端点带 `@PreAuthorize`,权限码与前端文档 §8 一致 - [x] 初始化器幂等:菜单/按钮按权限码查重,存在即跳过;ROLE_ADMIN 缺失时跳过绑定并 warn - [x] 初始化器与 crm-auth DataInitializer 无耦合(顺序无关:系统管理目录缺失则自建) - [x] 集成测试:无权限码用户访问返回无权限;种子化后可查出 10 个权限点且已绑定管理员