Fix: Permissions.

This commit is contained in:
2025-08-08 12:50:21 +01:00
parent e87490c3de
commit d5e5e1a111
10 changed files with 681 additions and 450 deletions

View File

@@ -741,6 +741,7 @@ BEGIN
User_Access_Level AS (
SELECT
USER.id_user
, ROLE_PERMISSION_LINK.id_permission
, MIN(IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none)) AS priority_access_level
FROM fetchmetrics.DOG_User USER -- tmp_Calc_User_Access_Calc_User_Access t_CALC_USER_ACCESS
LEFT JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
@@ -752,28 +753,37 @@ BEGIN
LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
GROUP BY USER.id_user
GROUP BY
USER.id_user
, ROLE_PERMISSION_LINK.id_permission
)
, User_Role_And_Access_Level AS (
SELECT
USER_ACCESS_LEVEL.id_user
, USER_ACCESS_LEVEL.id_permission
, USER_ACCESS_LEVEL.priority_access_level
, ROLE_PERMISSION_LINK.id_role
, ROW_NUMBER() OVER (PARTITION BY USER_ACCESS_LEVEL.id_user, USER_ACCESS_LEVEL.priority_access_level) AS index_link_in_user_and_priority_access_level
, ROW_NUMBER() OVER (PARTITION BY USER_ACCESS_LEVEL.id_user, USER_ACCESS_LEVEL.id_permission ORDER BY USER_ACCESS_LEVEL.priority_access_level) AS index_link_in_user_and_permission
FROM User_Access_Level USER_ACCESS_LEVEL
LEFT JOIN fetchmetrics.DOG_User_Role_Link USER_ROLE_LINK
ON USER_ACCESS_LEVEL.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active = 1
/*
LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL
ON USER_ACCESS_LEVEL.priority_access_level = ACCESS_LEVEL.priority
AND ACCESS_LEVEL.active = 1
*/
LEFT JOIN fetchmetrics.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON ACCESS_LEVEL.id_access_level = ROLE_PERMISSION_LINK.id_access_level
AND USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
-- ON ACCESS_LEVEL.id_access_level = ROLE_PERMISSION_LINK.id_access_level
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND USER_ACCESS_LEVEL.id_permission = ROLE_PERMISSION_LINK.id_permission
AND ROLE_PERMISSION_LINK.active = 1
)
UPDATE tmp_Calc_User_Access_Calc_User_Access t_CALC_USER_ACCESS
INNER JOIN User_Role_And_Access_Level USER_ROLE_AND_ACCESS_LEVEL ON t_CALC_USER_ACCESS.id_user = USER_ROLE_AND_ACCESS_LEVEL.id_user
INNER JOIN User_Role_And_Access_Level USER_ROLE_AND_ACCESS_LEVEL
ON t_CALC_USER_ACCESS.id_user = USER_ROLE_AND_ACCESS_LEVEL.id_user
AND USER_ROLE_AND_ACCESS_LEVEL.id_permission = v_id_permission_required
AND USER_ROLE_AND_ACCESS_LEVEL.index_link_in_user_and_permission = 1
SET
t_CALC_USER_ACCESS.id_role = USER_ROLE_AND_ACCESS_LEVEL.id_role
, t_CALC_USER_ACCESS.priority_access_level_user = USER_ROLE_AND_ACCESS_LEVEL.priority_access_level