@@ -526,36 +526,41 @@ struct
526
526
guardianDecodeUuid(roles.target_uuid)
527
527
FROM
528
528
guardian_actor_role_targets AS roles
529
- JOIN guardian_role_permissions AS role_permissions ON role_permissions.role = roles.role
530
- AND role_permissions.mark_as_deleted IS NULL
529
+ LEFT JOIN guardian_role_permissions AS role_permissions
530
+ ON role_permissions.role = roles.role
531
+ AND role_permissions.mark_as_deleted IS NULL
531
532
WHERE
532
533
roles.mark_as_deleted IS NULL
533
534
AND roles.actor_uuid = guardianEncodeUuid($ 1 )
535
+ AND `permission ` IS NOT null
534
536
UNION
535
537
SELECT
536
538
role_permissions.permission,
537
539
role_permissions.target_model,
538
540
NULL
539
541
FROM
540
542
guardian_actor_roles AS roles
541
- JOIN guardian_role_permissions AS role_permissions ON role_permissions.role = roles.role
542
- AND role_permissions.mark_as_deleted IS NULL
543
+ LEFT JOIN guardian_role_permissions AS role_permissions
544
+ ON role_permissions.role = roles.role
545
+ AND role_permissions.mark_as_deleted IS NULL
543
546
WHERE
544
547
roles.mark_as_deleted IS NULL
545
548
AND roles.actor_uuid = guardianEncodeUuid($ 1 )
549
+ AND `permission ` IS NOT null
546
550
UNION
547
551
SELECT
548
552
actor_permissions.permission,
549
553
COALESCE (actor_permissions.target_model, targets.model),
550
554
guardianDecodeUuid(actor_permissions.target_uuid)
551
555
FROM
552
556
guardian_actor_permissions AS actor_permissions
553
- JOIN guardian_targets AS targets
557
+ LEFT JOIN guardian_targets AS targets
554
558
ON targets.uuid = actor_permissions.target_uuid
555
559
AND targets.mark_as_deleted IS NULL
556
560
WHERE
557
561
actor_permissions.actor_uuid = guardianEncodeUuid($ 1 )
558
562
AND actor_permissions.mark_as_deleted IS NULL
563
+ AND `permission ` IS NOT null
559
564
| sql}
560
565
|> Uuid.Actor. t ->* PermissionOnTarget. t
561
566
;;
@@ -987,7 +992,7 @@ struct
987
992
SELECT (
988
993
SELECT TRUE
989
994
FROM guardian_actor_roles AS roles
990
- JOIN guardian_role_permissions AS role_permissions
995
+ LEFT JOIN guardian_role_permissions AS role_permissions
991
996
ON roles.role = role_permissions.role
992
997
AND role_permissions.mark_as_deleted IS NULL
993
998
WHERE roles.mark_as_deleted IS NULL
@@ -1046,7 +1051,7 @@ struct
1046
1051
) OR (
1047
1052
SELECT TRUE
1048
1053
FROM guardian_actor_role_targets AS role_targets
1049
- JOIN guardian_role_permissions AS role_permissions
1054
+ LEFT JOIN guardian_role_permissions AS role_permissions
1050
1055
ON role_targets.role = role_permissions.role
1051
1056
AND role_permissions.mark_as_deleted IS NULL
1052
1057
WHERE role_targets.mark_as_deleted IS NULL
@@ -1109,7 +1114,7 @@ struct
1109
1114
{sql|
1110
1115
SELECT TRUE
1111
1116
FROM guardian_actor_roles AS roles
1112
- JOIN guardian_role_permissions AS role_permissions
1117
+ LEFT JOIN guardian_role_permissions AS role_permissions
1113
1118
ON roles.role = role_permissions.role
1114
1119
AND role_permissions.mark_as_deleted IS NULL
1115
1120
WHERE roles.mark_as_deleted IS NULL
@@ -1124,7 +1129,7 @@ struct
1124
1129
{sql|
1125
1130
SELECT TRUE
1126
1131
FROM guardian_actor_role_targets AS role_targets
1127
- JOIN guardian_role_permissions AS role_permissions
1132
+ LEFT JOIN guardian_role_permissions AS role_permissions
1128
1133
ON role_targets.role = role_permissions.role
1129
1134
AND role_permissions.mark_as_deleted IS NULL
1130
1135
WHERE role_targets.mark_as_deleted IS NULL
@@ -1139,10 +1144,13 @@ struct
1139
1144
{sql|
1140
1145
SELECT TRUE
1141
1146
FROM guardian_actor_permissions AS actor_permissions
1142
- JOIN guardian_targets AS targets ON actor_permissions.target_uuid = targets.uuid
1143
- WHERE actor_permissions.actor_uuid = guardianEncodeUuid($ 1 )
1147
+ LEFT JOIN guardian_targets AS targets
1148
+ ON actor_permissions.target_uuid = targets.uuid
1149
+ AND targets.mark_as_deleted IS NULL
1150
+ WHERE actor_permissions.mark_as_deleted IS NULL
1151
+ AND actor_permissions.actor_uuid = guardianEncodeUuid($ 1 )
1144
1152
AND (actor_permissions.permission = $ 2 OR actor_permissions.permission = 'manage')
1145
- AND targets.model = $ 3
1153
+ AND ( targets.model = $ 3 OR actor_permissions.target_model = $ 3 )
1146
1154
LIMIT 1
1147
1155
| sql}
1148
1156
|> to_req
0 commit comments