From 1664e9409cbc217ac5d691f55c377103aa448b95 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Sun, 16 Mar 2025 09:29:34 +0100 Subject: [PATCH] Add basic superuser permission checks for admin --- src/servala/core/models/user.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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()