From 1653f2ae37e456550955c7c3ce4e568999446029 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Mon, 25 Mar 2019 10:20:45 +0100 Subject: [PATCH 01/13] django_rbac: add auth level to Role and Permission classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dans les faits on aura sûrement besoin d'un nouveau model qui représente le niveau plutôt qu'un int, pour configurer les choses plus finement. --- .../migrations/0006_auto_20190404_1527.py | 26 +++++++++++++++++++ src/django_rbac/models.py | 9 +++++++ 2 files changed, 35 insertions(+) create mode 100644 src/django_rbac/migrations/0006_auto_20190404_1527.py diff --git a/src/django_rbac/migrations/0006_auto_20190404_1527.py b/src/django_rbac/migrations/0006_auto_20190404_1527.py new file mode 100644 index 00000000..265dd939 --- /dev/null +++ b/src/django_rbac/migrations/0006_auto_20190404_1527.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-04-04 13:27 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_rbac', '0005_auto_20171209_1106'), + ] + + operations = [ + migrations.AddField( + model_name='permission', + name='auth_level', + field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)], verbose_name='required authentication level'), + ), + migrations.AddField( + model_name='role', + name='auth_level', + field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)], verbose_name='required authentication level'), + ), + ] diff --git a/src/django_rbac/models.py b/src/django_rbac/models.py index 2a0e40d3..9d7ad588 100644 --- a/src/django_rbac/models.py +++ b/src/django_rbac/models.py @@ -19,6 +19,7 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group, _user_get_all_permissions, \ _user_has_perm, _user_has_module_perms, Permission as AuthPermission from django.contrib import auth +from django.core.validators import MinValueValidator from . import utils, constants, managers, backends @@ -140,6 +141,10 @@ class PermissionAbstractBase(models.Model): target = GenericForeignKey( 'target_ct', 'target_id') + auth_level = models.PositiveSmallIntegerField( + verbose_name=_('required authentication level'), + default=1, + validators=(MinValueValidator(1),)) objects = managers.PermissionManager() @@ -195,6 +200,10 @@ class RoleAbstractBase(AbstractOrganizationalUnitScopedBase, AbstractBase): to=utils.get_permission_model_name(), related_name='roles', blank=True) + auth_level = models.PositiveSmallIntegerField( + verbose_name=_('required authentication level'), + default=1, + validators=(MinValueValidator(1),)) objects = managers.RoleQuerySet.as_manager() -- 2.20.1