diff --git a/src/servala/core/models/user.py b/src/servala/core/models/user.py index c95fddf..558390f 100644 --- a/src/servala/core/models/user.py +++ b/src/servala/core/models/user.py @@ -61,3 +61,31 @@ class User(AbstractBaseUser): def normalize_username(self, username): return super().normalize_username(username).strip().lower() + + def has_perm(self, perm, obj=None): + """ + Return True if the user has the specified permission. + Superusers automatically have all permissions. + """ + return self.is_superuser + + def has_module_perms(self, app_label): + """ + Return True if the user has any permissions in the given app label. + Superusers automatically have all permissions. + """ + return self.is_superuser + + def get_all_permissions(self, obj=None): + """ + Return a set of permission strings that the user has. + Superusers have all permissions. + """ + if self.is_superuser: + from django.contrib.auth.models import Permission + + return { + f"{perm.content_type.app_label}.{perm.codename}" + for perm in Permission.objects.all() + } + return set()