|
| 1 | +# coding=utf-8 |
| 2 | +""" |
| 3 | + @project: MaxKB |
| 4 | + @Author:虎虎 |
| 5 | + @file: workspace_permission.py |
| 6 | + @date:2025/4/16 18:25 |
| 7 | + @desc: |
| 8 | +""" |
| 9 | + |
| 10 | +import uuid_utils.compat as uuid |
| 11 | +from django.contrib.postgres.fields import ArrayField |
| 12 | +from django.db import models |
| 13 | + |
| 14 | +from common.constants.permission_constants import ResourceAuthType, ResourcePermissionRole, ResourcePermission |
| 15 | +from users.models.user_group import SystemUserGroup |
| 16 | + |
| 17 | +from .workspace_user_permission import AuthTargetType |
| 18 | + |
| 19 | + |
| 20 | +class WorkspaceUserGroupResourcePermission(models.Model): |
| 21 | + """ |
| 22 | + 工作空间用户组资源权限表 |
| 23 | + 用于管理当前工作空间下用户组对某一个应用或者知识库的操作权限 |
| 24 | + """ |
| 25 | + id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") |
| 26 | + |
| 27 | + workspace_id = models.CharField(max_length=128, verbose_name="工作空间id", default="default", db_index=True) |
| 28 | + |
| 29 | + user_group = models.ForeignKey(SystemUserGroup, on_delete=models.CASCADE, verbose_name="用户组id", db_index=True) |
| 30 | + |
| 31 | + auth_target_type = models.CharField(verbose_name='授权目标', max_length=128, choices=AuthTargetType.choices, |
| 32 | + default=AuthTargetType.KNOWLEDGE, db_index=True) |
| 33 | + # 授权的知识库或者应用的id |
| 34 | + target = models.CharField(max_length=128, verbose_name="知识库/应用id", db_index=True) |
| 35 | + |
| 36 | + # 授权类型 如果是Role那么就是角色的权限 如果是PERMISSION |
| 37 | + auth_type = models.CharField(default=False, verbose_name="授权类型", choices=ResourceAuthType.choices, |
| 38 | + db_default=ResourceAuthType.ROLE, db_index=True) |
| 39 | + # 资源权限列表 |
| 40 | + permission_list = ArrayField(verbose_name="权限列表", |
| 41 | + default=list, |
| 42 | + base_field=models.CharField(max_length=256, |
| 43 | + blank=True, |
| 44 | + choices=ResourcePermission.choices + ResourcePermissionRole.choices, |
| 45 | + default=ResourcePermission.VIEW)) |
| 46 | + |
| 47 | + create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True, db_index=True) |
| 48 | + |
| 49 | + update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True, db_index=True) |
| 50 | + |
| 51 | + class Meta: |
| 52 | + db_table = "workspace_user_group_resource_permission" |
| 53 | + unique_together = ('workspace_id', 'user_group', 'auth_target_type', 'target') |
0 commit comments