fix(hrm): 补齐薪酬模块缺失的 7 个权限项,修复非超管角色 403
问题:非超级管理员角色即使被授予「薪酬管理」菜单,点进去也报
「没有该操作权限」。
根因:菜单表里的权限码是 hrm:salary-calculation:* / hrm:salary-payment:*,
而后端 Controller 校验的是 hrm:salary:query / :calculate / :confirm /
:delete / :export / :generate / :pay,两套编码完全对不上。
菜单表里根本没有后端要的权限项,所以在「角色管理」里无论怎么勾选,
角色都拿不到对应权限码。超级管理员因框架直接放行所以只有 admin 能用。
修复:补 7 个权限项(type=3),挂到「薪酬核算」(6021) 与「薪资发放」(6022):
hrm:salary:query 薪酬查看
hrm:salary:calculate 核算执行
hrm:salary:confirm 核算确认
hrm:salary:delete 核算删除
hrm:salary:export 核算导出
hrm:salary:generate 生成发放台账
hrm:salary:pay 薪资发放
已授权超管;其他角色需在「角色管理」里勾选对应项后生效。
注:原有的 hrm:salary-calculation:* / hrm:salary-payment:* 权限项保留不动,
不影响现有配置,只是它们不会被后端校验,属于历史遗留冗余项。
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | -- ===================================================================== |
| | | -- ä¿®å¤èªé
¬æ¨¡åãæéç ä¸å¹é
ãé®é¢ |
| | | -- |
| | | -- é®é¢ç°è±¡ï¼ |
| | | -- éè¶
级管çåè§è²ï¼å³ä½¿è¢«æäºãèªé
¬ç®¡çãèåï¼ç¹è¿å»ä¹æ¥ |
| | | -- ãæ²¡æè¯¥æä½æéãï¼HTTP 403ï¼ã |
| | | -- |
| | | -- æ ¹å ï¼ |
| | | -- èå表éçæéç æ¯ hrm:salary-calculation:* / hrm:salary-payment:*ï¼ |
| | | -- ä½å端 Controller æ ¡éªçæ¯ hrm:salary:query / :calculate / :pay çï¼ |
| | | -- 两å¥ç¼ç å®å
¨å¯¹ä¸ä¸ãèåéæ ¹æ¬æ²¡æå端è¦çé£äºæéé¡¹ï¼ |
| | | -- æä»¥å¨ãè§è²ç®¡çãéæ è®ºæä¹å¾éï¼è§è²é½æ¿ä¸å°å¯¹åºæéç ã |
| | | -- è¶
级管çåå ä¸ºæ¡æ¶ç´æ¥æ¾è¡ï¼æä»¥åªæ admin è½ç¨ã |
| | | -- |
| | | -- ä¿®å¤æ¹å¼ï¼ |
| | | -- æå端å®é
æ ¡éªç 7 个æéç è¡¥æèåæé项ï¼type=3ï¼ï¼ |
| | | -- æå¨ãèªé
¬æ ¸ç®ã(6021) ä¸ãèªèµåæ¾ã(6022) ä¸ï¼ |
| | | -- ä¹åå¨ãè§è²ç®¡çãéå°±è½æ£å¸¸å¾éã |
| | | -- |
| | | -- ç¹æ§ï¼å¯é夿§è¡ |
| | | -- ===================================================================== |
| | | |
| | | -- æ¸
çæ§çè¡¥ä¸é¡¹ï¼æ id æ®µï¼ |
| | | DELETE FROM system_role_menu WHERE menu_id BETWEEN 60215 AND 60225; |
| | | DELETE FROM system_menu WHERE id BETWEEN 60215 AND 60225; |
| | | |
| | | -- --------------------------------------------------------------------- |
| | | -- èªé
¬æ ¸ç®ï¼6021ï¼ä¸è¡¥ï¼æ¥ç / æ ¸ç® / 确认 / å é¤ / å¯¼åº |
| | | -- --------------------------------------------------------------------- |
| | | INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, |
| | | component, component_name, status, visible, keep_alive, always_show, |
| | | creator, create_time, updater, update_time, deleted) |
| | | VALUES |
| | | (60215, 'èªé
¬æ¥ç', 'hrm:salary:query', 3, 10, 6021, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (60216, 'èªé
¬æ ¸ç®æ§è¡', 'hrm:salary:calculate', 3, 11, 6021, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (60217, 'èªé
¬æ ¸ç®ç¡®è®¤', 'hrm:salary:confirm', 3, 12, 6021, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (60218, 'èªé
¬æ ¸ç®å é¤', 'hrm:salary:delete', 3, 13, 6021, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (60219, 'èªé
¬æ ¸ç®å¯¼åº', 'hrm:salary:export', 3, 14, 6021, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); |
| | | |
| | | -- --------------------------------------------------------------------- |
| | | -- èªèµåæ¾ï¼6022ï¼ä¸è¡¥ï¼çæ / åæ¾ |
| | | -- --------------------------------------------------------------------- |
| | | INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, |
| | | component, component_name, status, visible, keep_alive, always_show, |
| | | creator, create_time, updater, update_time, deleted) |
| | | VALUES |
| | | (60220, 'çæåæ¾å°è´¦', 'hrm:salary:generate', 3, 10, 6022, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'), |
| | | (60221, 'èªèµåæ¾', 'hrm:salary:pay', 3, 11, 6022, '', '', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'); |
| | | |
| | | -- --------------------------------------------------------------------- |
| | | -- è¶
级管çåææï¼å
¶ä»è§è²è¯·å¨ãè§è²ç®¡çãéèªè¡å¾éï¼ |
| | | -- --------------------------------------------------------------------- |
| | | INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted) |
| | | SELECT 1, m.id, '1', NOW(), '1', NOW(), b'0' |
| | | FROM system_menu m |
| | | WHERE m.id BETWEEN 60215 AND 60225; |
| | | |
| | | -- --------------------------------------------------------------------- |
| | | -- éªè¯ï¼èªé
¬æ¨¡åä¸çå
¨é¨æé项 |
| | | -- --------------------------------------------------------------------- |
| | | SELECT m.id, m.parent_id, m.name, m.permission, m.type |
| | | FROM system_menu m |
| | | WHERE m.id IN (6021, 6022) OR m.parent_id IN (6021, 6022) |
| | | ORDER BY m.parent_id, m.sort, m.id; |