118 lines
3.2 KiB
SQL
118 lines
3.2 KiB
SQL
-- 数据权限管理 — RBAC 菜单与权限码种子
|
|
-- 前端路由:/system/dataPerm/users、/system/dataPerm/templates、/system/dataPerm/audit
|
|
-- PermissionCode 须在 PermissionDefinitionProvider 注册后方能分配
|
|
|
|
SET @ADMIN_USER_ID = (
|
|
SELECT `Id` FROM `user`
|
|
WHERE `Account` = 'admin' AND (`IsDeleted` = 0 OR `IsDeleted` IS NULL)
|
|
LIMIT 1
|
|
);
|
|
SET @ADMIN_USER_ID = IFNULL(@ADMIN_USER_ID, '08de4226-3fd4-4a5c-83e5-70e164b15f2f');
|
|
SET @ROOT_PID = '00000000-0000-0000-0000-000000000000';
|
|
|
|
-- 查找「系统管理」父菜单(若无则挂根)
|
|
SET @SYSTEM_PID = (
|
|
SELECT `Id` FROM `menu`
|
|
WHERE (`Route` = '/system' OR `Name` = '系统管理')
|
|
AND (`IsDeleted` = 0 OR `IsDeleted` IS NULL)
|
|
ORDER BY `Order`
|
|
LIMIT 1
|
|
);
|
|
SET @SYSTEM_PID = IFNULL(@SYSTEM_PID, @ROOT_PID);
|
|
|
|
INSERT INTO `menu` (
|
|
`Id`, `PId`, `Name`, `PermissionCode`, `Type`, `Icon`, `Route`, `Component`, `Order`,
|
|
`IsHidden`, `IsCached`, `Description`, `IsDeleted`,
|
|
`ConcurrencyStamp`, `CreateUserId`, `CreateTime`, `UpdateUserId`, `UpdateTime`
|
|
) VALUES
|
|
(
|
|
'da100001-0000-4000-8000-000000000001',
|
|
@SYSTEM_PID,
|
|
'数据权限',
|
|
'Rbac.DataPerm',
|
|
1,
|
|
'icon-safe',
|
|
'/system/dataPerm',
|
|
NULL,
|
|
90,
|
|
0, 1, '多维数据权限配置', 0,
|
|
UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW()
|
|
),
|
|
(
|
|
'da100001-0000-4000-8000-000000000002',
|
|
'da100001-0000-4000-8000-000000000001',
|
|
'用户数据权限',
|
|
'Rbac.DataPerm.Query',
|
|
1,
|
|
NULL,
|
|
'/system/dataPerm/users',
|
|
'views/system/dataPerm/users/index',
|
|
1,
|
|
0, 1, NULL, 0,
|
|
UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW()
|
|
),
|
|
(
|
|
'da100001-0000-4000-8000-000000000003',
|
|
'da100001-0000-4000-8000-000000000001',
|
|
'权限模板',
|
|
'Rbac.DataPerm.Template',
|
|
1,
|
|
NULL,
|
|
'/system/dataPerm/templates',
|
|
'views/system/dataPerm/templates/index',
|
|
2,
|
|
0, 1, NULL, 0,
|
|
UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW()
|
|
),
|
|
(
|
|
'da100001-0000-4000-8000-000000000004',
|
|
'da100001-0000-4000-8000-000000000001',
|
|
'访问审计',
|
|
'Rbac.DataPerm.Audit',
|
|
1,
|
|
NULL,
|
|
'/system/dataPerm/audit',
|
|
'views/system/dataPerm/audit/index',
|
|
3,
|
|
0, 0, NULL, 0,
|
|
UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW()
|
|
),
|
|
(
|
|
'da100001-0000-4000-8000-000000000005',
|
|
'da100001-0000-4000-8000-000000000002',
|
|
'保存用户权限',
|
|
'Rbac.DataPerm.Update',
|
|
2,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
0, 0, NULL, 0,
|
|
UUID(), @ADMIN_USER_ID, NOW(), @ADMIN_USER_ID, NOW()
|
|
)
|
|
ON DUPLICATE KEY UPDATE
|
|
`Name` = VALUES(`Name`),
|
|
`PId` = VALUES(`PId`),
|
|
`PermissionCode` = VALUES(`PermissionCode`),
|
|
`Route` = VALUES(`Route`),
|
|
`Component` = VALUES(`Component`),
|
|
`Order` = VALUES(`Order`);
|
|
|
|
-- 超管角色分配数据权限(若存在 Admin 角色)
|
|
INSERT INTO `role_permission` (`Id`, `RoleId`, `PermissionCode`, `CreateUserId`, `CreateTime`)
|
|
SELECT UUID(), r.`Id`, p.`Code`, @ADMIN_USER_ID, NOW()
|
|
FROM `role` r
|
|
CROSS JOIN (
|
|
SELECT 'Rbac.DataPerm' AS Code UNION ALL
|
|
SELECT 'Rbac.DataPerm.Query' UNION ALL
|
|
SELECT 'Rbac.DataPerm.Update' UNION ALL
|
|
SELECT 'Rbac.DataPerm.Template' UNION ALL
|
|
SELECT 'Rbac.DataPerm.Audit'
|
|
) p
|
|
WHERE r.`Code` = 'Admin'
|
|
AND (r.`IsDeleted` = 0 OR r.`IsDeleted` IS NULL)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM `role_permission` rp
|
|
WHERE rp.`RoleId` = r.`Id` AND rp.`PermissionCode` = p.`Code`
|
|
);
|