mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-28 20:33:00 +02:00
Implements permission masks
This commit is contained in:
@ -3,7 +3,15 @@
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import Permission
|
||||
from .models import Permission, PermissionMask
|
||||
|
||||
|
||||
@admin.register(PermissionMask)
|
||||
class PermissionMaskAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
Admin customisation for Permission
|
||||
"""
|
||||
list_display = ('rank', 'description')
|
||||
|
||||
|
||||
@admin.register(Permission)
|
||||
|
@ -50,6 +50,20 @@ class InstancedPermission:
|
||||
return self.__repr__()
|
||||
|
||||
|
||||
class PermissionMask(models.Model):
|
||||
rank = models.PositiveSmallIntegerField(
|
||||
verbose_name=_('rank'),
|
||||
)
|
||||
|
||||
description = models.CharField(
|
||||
max_length=255,
|
||||
verbose_name=_('description'),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.description
|
||||
|
||||
|
||||
class Permission(models.Model):
|
||||
|
||||
PERMISSION_TYPES = [
|
||||
@ -85,6 +99,11 @@ class Permission(models.Model):
|
||||
|
||||
type = models.CharField(max_length=15, choices=PERMISSION_TYPES)
|
||||
|
||||
mask = models.ForeignKey(
|
||||
PermissionMask,
|
||||
on_delete=models.PROTECT,
|
||||
)
|
||||
|
||||
field = models.CharField(max_length=255, blank=True)
|
||||
|
||||
description = models.CharField(max_length=255, blank=True)
|
||||
|
@ -2,7 +2,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from logs.middlewares import get_current_authenticated_user
|
||||
from note_kfet.middlewares import get_current_authenticated_user
|
||||
|
||||
|
||||
EXCLUDED = [
|
||||
|
@ -4,7 +4,7 @@
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.template.defaultfilters import stringfilter
|
||||
|
||||
from logs.middlewares import get_current_authenticated_user
|
||||
from note_kfet.middlewares import get_current_authenticated_user, get_current_session
|
||||
from django import template
|
||||
|
||||
from member.backends import PermissionBackend
|
||||
@ -19,7 +19,7 @@ def not_empty_model_list(model_name):
|
||||
user = get_current_authenticated_user()
|
||||
if user is None:
|
||||
return False
|
||||
elif user.is_superuser:
|
||||
elif user.is_superuser and get_current_session().get("permission_mask", 0) >= 42:
|
||||
return True
|
||||
spl = model_name.split(".")
|
||||
ct = ContentType.objects.get(app_label=spl[0], model=spl[1])
|
||||
@ -32,7 +32,7 @@ def not_empty_model_change_list(model_name):
|
||||
user = get_current_authenticated_user()
|
||||
if user is None:
|
||||
return False
|
||||
elif user.is_superuser:
|
||||
elif user.is_superuser and get_current_session().get("permission_mask", 0) >= 42:
|
||||
return True
|
||||
spl = model_name.split(".")
|
||||
ct = ContentType.objects.get(app_label=spl[0], model=spl[1])
|
||||
|
Reference in New Issue
Block a user