Skip to content

Commit 277c4cf

Browse files
committed
feat: Home page permission
1 parent d2e9ea4 commit 277c4cf

2 files changed

Lines changed: 49 additions & 0 deletions

File tree

apps/common/constants/permission_constants.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class Group(Enum):
9797
CHAT_USER_AUTH = "CHAT_USER_AUTH"
9898
OTHER = "OTHER"
9999
OVERVIEW = "OVERVIEW"
100+
HOMEPAGE = "HOMEPAGE"
100101
OPERATION_LOG = "OPERATION_LOG"
101102

102103
APPLICATION_FOLDER = "APPLICATION_FOLDER"
@@ -128,6 +129,7 @@ class SystemGroup(Enum):
128129

129130
class WorkspaceGroup(Enum):
130131
SYSTEM_MANAGEMENT = "SYSTEM_MANAGEMENT"
132+
HOMEPAGE = "HOMEPAGE"
131133
APPLICATION = "APPLICATION"
132134
KNOWLEDGE = "KNOWLEDGE"
133135
MODEL = "MODEL"
@@ -138,6 +140,7 @@ class WorkspaceGroup(Enum):
138140

139141

140142
class UserGroup(Enum):
143+
HOMEPAGE = "HOMEPAGE"
141144
APPLICATION = "APPLICATION"
142145
KNOWLEDGE = "KNOWLEDGE"
143146
MODEL = "MODEL"
@@ -403,6 +406,7 @@ def get_workspace_role(self):
403406
Group.USER_GROUP.value: _("User Group"),
404407
Group.CHAT_USER_AUTH.value: _("Chat User Auth"),
405408
Group.OVERVIEW.value: _("Overview"),
409+
Group.HOMEPAGE.value: _("Home page"),
406410
Group.SYSTEM_TOOL.value: _("Tool"),
407411
Group.SYSTEM_MODEL.value: _("Model"),
408412
Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"),
@@ -489,6 +493,10 @@ class PermissionConstants(Enum):
489493
"""
490494
权限枚举
491495
"""
496+
HOMEPAGE_READ = Permission(
497+
group=Group.HOMEPAGE, operate=Operate.READ, role_list=[RoleConstants.ADMIN, RoleConstants.USER],
498+
parent_group=[WorkspaceGroup.HOMEPAGE, UserGroup.HOMEPAGE],
499+
)
492500
KNOWLEDGE = Permission(
493501
group=Group.KNOWLEDGE, operate=Operate.SELF, role_list=[RoleConstants.ADMIN, RoleConstants.USER]
494502
)

apps/homepage/views/homepage.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from application.api.application_stats import ApplicationStatsAPI
1414
from common import result
1515
from common.auth import TokenAuth
16+
from common.auth.authentication import has_permissions
17+
from common.constants.permission_constants import PermissionConstants, RoleConstants
1618
from homepage.api.home_page_api import ApplicationTokensRankingAPI, ApplicationQuestionRankingAPI, UserTokensRankingAPI, \
1719
ApplicationAggregationAPI, KnowledgeAggregationAPI, ToolAggregationAPI, ModelAggregationAPI, \
1820
ApplicationMonitoringAPI, RankingBaseAPI, TokensAggregationAPI, RankingBaseExportAPI
@@ -35,6 +37,9 @@ class ChatRecordAggregation(APIView):
3537
responses=TokensAggregationAPI.get_response(),
3638
tags=[_("Home page")],
3739
)
40+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
41+
RoleConstants.USER.get_workspace_role(),
42+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
3843
def get(self, request: Request, workspace_id: str):
3944
return result.success(
4045
HomePageSerializer.ChatRecordAggregation(
@@ -57,6 +62,9 @@ class TokensAggregation(APIView):
5762
responses=TokensAggregationAPI.get_response(),
5863
tags=[_("Home page")],
5964
)
65+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
66+
RoleConstants.USER.get_workspace_role(),
67+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
6068
def get(self, request: Request, workspace_id: str):
6169
return result.success(
6270
HomePageSerializer.TokensAggregation(
@@ -79,6 +87,9 @@ class ApplicationTokensRankingExport(APIView):
7987
responses=RankingBaseExportAPI.get_response(),
8088
tags=[_("Home page")],
8189
)
90+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
91+
RoleConstants.USER.get_workspace_role(),
92+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
8293
def get(self, request: Request, workspace_id: str):
8394
return HomePageSerializer.ApplicationTokensRanking(
8495
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -101,6 +112,9 @@ class ApplicationTokensRanking(APIView):
101112
responses=ApplicationTokensRankingAPI.get_response(),
102113
tags=[_("Home page")],
103114
)
115+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
116+
RoleConstants.USER.get_workspace_role(),
117+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
104118
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
105119
return result.success(HomePageSerializer.ApplicationTokensRanking(
106120
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -123,6 +137,9 @@ class ApplicationQuestionRankingExport(APIView):
123137
responses=RankingBaseExportAPI.get_response(),
124138
tags=[_("Home page")],
125139
)
140+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
141+
RoleConstants.USER.get_workspace_role(),
142+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
126143
def get(self, request: Request, workspace_id: str):
127144
return HomePageSerializer.ApplicationQuestionRanking(
128145
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -145,6 +162,9 @@ class ApplicationQuestionRanking(APIView):
145162
responses=ApplicationQuestionRankingAPI.get_response(),
146163
tags=[_("Home page")],
147164
)
165+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
166+
RoleConstants.USER.get_workspace_role(),
167+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
148168
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
149169
return result.success(HomePageSerializer.ApplicationQuestionRanking(
150170
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -167,6 +187,9 @@ class UserTokensRankingExport(APIView):
167187
responses=RankingBaseExportAPI.get_response(),
168188
tags=[_("Home page")],
169189
)
190+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
191+
RoleConstants.USER.get_workspace_role(),
192+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
170193
def get(self, request: Request, workspace_id: str):
171194
return HomePageSerializer.ApplicationUserTokenRanking(
172195
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -188,6 +211,9 @@ class UserTokensRanking(APIView):
188211
responses=UserTokensRankingAPI.get_response(),
189212
tags=[_("Home page")],
190213
)
214+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
215+
RoleConstants.USER.get_workspace_role(),
216+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
191217
def get(self, request: Request, workspace_id: str, current_page: int, page_size: int):
192218
return result.success(HomePageSerializer.ApplicationUserTokenRanking(
193219
data={'user_id': request.user.id, 'workspace_id': workspace_id,
@@ -210,6 +236,9 @@ class ApplicationMonitoring(APIView):
210236
responses=ApplicationMonitoringAPI.get_response(),
211237
tags=[_('Home page')] # type: ignore
212238
)
239+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
240+
RoleConstants.USER.get_workspace_role(),
241+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
213242
def get(self, request: Request, workspace_id: str):
214243
return result.success(
215244
HomePageSerializer.ApplicationMonitoring(
@@ -234,6 +263,9 @@ class ApplicationAggregation(APIView):
234263
responses=ApplicationAggregationAPI.get_response(),
235264
tags=[_("Home page")],
236265
)
266+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
267+
RoleConstants.USER.get_workspace_role(),
268+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
237269
def get(self, request: Request, workspace_id: str):
238270
return result.success(
239271
HomePageSerializer.Application(
@@ -252,6 +284,9 @@ class KnowledgeAggregation(APIView):
252284
responses=KnowledgeAggregationAPI.get_response(),
253285
tags=[_("Home page")],
254286
)
287+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
288+
RoleConstants.USER.get_workspace_role(),
289+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
255290
def get(self, request: Request, workspace_id: str):
256291
return result.success(
257292
HomePageSerializer.Knowledge(
@@ -270,6 +305,9 @@ class ToolAggregation(APIView):
270305
responses=ToolAggregationAPI.get_response(),
271306
tags=[_("Home page")],
272307
)
308+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
309+
RoleConstants.USER.get_workspace_role(),
310+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
273311
def get(self, request: Request, workspace_id: str):
274312
return result.success(
275313
HomePageSerializer.Tool(
@@ -288,6 +326,9 @@ class ModelAggregation(APIView):
288326
responses=ModelAggregationAPI.get_response(),
289327
tags=[_("Home page")],
290328
)
329+
@has_permissions(PermissionConstants.HOMEPAGE_READ.get_workspace_permission(),
330+
RoleConstants.USER.get_workspace_role(),
331+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
291332
def get(self, request: Request, workspace_id: str):
292333
return result.success(
293334
HomePageSerializer.Model(

0 commit comments

Comments
 (0)