PermissionResultΒΆ
If you want to add the reason for permission denial, you can use
PermissionResult class, which acts like a bool, but also stores
a message:
from permission_manager import PermissionResult
class Manager(BasePermissionManager):
def has_create_permission(self) -> bool:
return PermissionResult('Creation is prohibited.')
Manager().has_permission('create')
> PermissionResult(value=False, message=['Creation is prohibited.'])
You can pass multiple messages:
PermissionResult(['Creation is prohibited.', 'Try later.'])
> PermissionResult(value=False, message=['Creation is prohibited.', 'Try later.'])
Of course, you can change the value:
PermissionResult(
message='Test message',
value=True,
)
> PermissionResult(value=True, message=['Test message'])
By default, the .resolve() method of a permission manager only returns
message if the value is False. However, you can change this behavior,
for example, to provide some hints.:
PermissionResult(
message='Test message',
value=True,
message_if_true=True,
)