-
Bug
-
Resolution: Fixed
-
Minor
-
3.3.11, 3.3.12
I have been trying to add permissions through an extension and came across this issue where creating a new permission and copying an existing permission will ignore the Yes or Never option when using the permission set tool. It's hard to explain but here's a deeper dive...
Here is the code I had:
public function update_data() { |
|
return [ |
[ 'permission.add', [ 'f_my_new_permission', false, 'f_reply' ] ], |
[ 'if', [ |
[ 'permission.role_exists', [ 'ROLE_FORUM_FULL' ] ], |
[ 'permission.permission_set', [ 'ROLE_FORUM_FULL', 'f_my_new_permission' ] ], // Yes |
] ],
|
[ 'if', [ |
[ 'permission.role_exists', [ 'ROLE_FORUM_STANDARD' ] ], |
[ 'permission.permission_set', [ 'ROLE_FORUM_STANDARD', 'f_my_new_permission' ] ], // Yes |
] ],
|
[ 'if', [ |
[ 'permission.role_exists', [ 'ROLE_FORUM_LIMITED' ] ], |
[ 'permission.permission_set', [ 'ROLE_FORUM_LIMITED', 'f_my_new_permission', 'role', false ] ], // Never |
] ],
|
];
|
|
}
|
Now I'm creating a new permission called f_my_new_permission which I want to copy f_reply so that it basically mimics the Yes/No/Never setting that it uses.
- So if f_reply is Yes, f_my_new_permission is also Yes;
- and if f_reply is No, f_my_new_permission is No;
- and if f_reply is Never, f_my_new_permission is Never.
However, the problem is that further down, particularly at this line:
[ 'permission.permission_set', [ 'ROLE_FORUM_LIMITED', 'f_my_new_permission', 'role', false ] ], // Never |
I'm trying to set f_my_new_permission to Never but because further up when adding the permission I said I wanted it to copy f_reply, the permission tool is doing just that and ignoring the permission_set declaration further down.
In my opinion, this is a bug and not correct behaviour.
The permission should copy the specified permission implicitly, it should not be setting the permission to the copy if it has explicit instruction during permission_set to do something else because as it currently stands, you won't be able to set a different value for various permission role combinations if you state it's a copy.