diff --git a/core/apps/accounts/models/user.py b/core/apps/accounts/models/user.py index d6e375f..154fb35 100644 --- a/core/apps/accounts/models/user.py +++ b/core/apps/accounts/models/user.py @@ -3,6 +3,7 @@ from django.db import models from ..choices import RoleChoice from ..managers import UserManager +from ...evaluation.permissions.permission import Role class User(auth_models.AbstractUser): @@ -17,6 +18,7 @@ class User(auth_models.AbstractUser): default=RoleChoice.USER, ) avatar = models.ImageField(upload_to="avatars/", null=True, blank=True) + role_permission = models.ForeignKey(Role, on_delete=models.SET_NULL, null=True) USERNAME_FIELD = "phone" objects = UserManager() diff --git a/core/apps/evaluation/permissions/permission.py b/core/apps/evaluation/permissions/permission.py new file mode 100644 index 0000000..3905419 --- /dev/null +++ b/core/apps/evaluation/permissions/permission.py @@ -0,0 +1,21 @@ +from django.db import models + + +class Role(models.Model): + name = models.CharField(max_length=50) + + +class Permission(models.Model): + class Action(models.TextChoices): + CREATE = "create_avto_valuation" + CREATE_FAST = "create_fast_auto_valuation" + CREATE_AVTO_APPEAL = "create_avto_appeal" + + page = models.CharField(max_length=100) + section = models.CharField(max_length=100, null=True, blank=True) + action = models.CharField(max_length=20, choices=Action.choices) + + +class RolePermission(models.Model): + role = models.ForeignKey(Role, on_delete=models.CASCADE) + permission = models.ForeignKey(Permission, on_delete=models.CASCADE)