Skip to content

Commit

Permalink
fix(backend): 业务单据协作设置权限 TencentBlueKing#8427
Browse files Browse the repository at this point in the history
  • Loading branch information
ygcyao committed Dec 5, 2024
1 parent 83ada3e commit 2c919bf
Show file tree
Hide file tree
Showing 4 changed files with 1,593 additions and 1,154 deletions.
5 changes: 4 additions & 1 deletion dbm-ui/backend/configuration/views/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from backend.flow.utils.cc_manage import CcManage
from backend.iam_app.dataclass.actions import ActionEnum
from backend.iam_app.handlers.drf_perm.base import DBManagePermission, RejectPermission, ResourceActionPermission
from backend.iam_app.handlers.drf_perm.dbconfig import BizAssistancePermission

tags = [_("系统设置")]

Expand Down Expand Up @@ -131,7 +132,9 @@ class BizSettingsViewSet(viewsets.AuditedModelViewSet):
serializer_class = BizSettingsSerializer
queryset = BizSettings.objects.all()

action_permission_map = {}
action_permission_map = {
("update_settings",): [BizAssistancePermission()],
}
default_permission_class = [DBManagePermission()]

@common_swagger_auto_schema(
Expand Down
10 changes: 10 additions & 0 deletions dbm-ui/backend/iam_app/dataclass/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,16 @@ class ActionEnum:
group=_("业务配置"),
)

BIZ_ASSISTANCE_VARS_CONFIG = ActionMeta(
id="biz_assistance_vars_config",
name=_("单据协助设置"),
name_en="ticket_assist_config_set",
type="edit",
related_actions=[DB_MANAGE.id],
related_resource_types=[ResourceEnum.BUSINESS],
group=_("业务配置"),
)

RESOURCE_MANAGE = ActionMeta(
id="resource_manage",
name=_("资源管理访问"),
Expand Down
21 changes: 20 additions & 1 deletion dbm-ui/backend/iam_app/handlers/drf_perm/dbconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

from backend.db_meta.enums import ClusterType
from backend.iam_app.dataclass import ResourceEnum
from backend.iam_app.dataclass.actions import ActionMeta
from backend.iam_app.dataclass.actions import ActionEnum, ActionMeta
from backend.iam_app.handlers.drf_perm.base import (
BizDBTypeResourceActionPermission,
ResourceActionPermission,
Expand Down Expand Up @@ -54,3 +54,22 @@ def __init__(self, actions: List[ActionMeta] = None):
@staticmethod
def instance_dbtype_getter(request, view):
return BizDBConfigPermission.instance_dbtype_getter(request, view)


class BizAssistancePermission(ResourceActionPermission):
"""
业务单据协作相关鉴权
"""

def inst_ids_getter(self, request, view):
data = request.data
try:
self.actions = [getattr(ActionEnum, f"{data['key']}_config".upper())]
self.resource_meta = ResourceEnum.BUSINESS
except AttributeError:
raise NotImplementedError

return [data["bk_biz_id"]]

def __init__(self):
super().__init__(actions=None, resource_meta=None, instance_ids_getter=self.inst_ids_getter)
Loading

0 comments on commit 2c919bf

Please sign in to comment.