2
2
# -*- coding: utf-8 -*-
3
3
from typing import Annotated
4
4
5
- from fastapi import APIRouter , Path , Query
5
+ from fastapi import APIRouter , Depends , Path , Query
6
6
7
7
from backend .app .common .jwt import DependsJwtAuth
8
- from backend .app .common .pagination import PageDepends , paging_data
8
+ from backend .app .common .pagination import DependsPagination , paging_data
9
+ from backend .app .common .permission import RequestPermission
9
10
from backend .app .common .rbac import DependsRBAC
10
11
from backend .app .common .response .response_schema import response_base
11
12
from backend .app .database .db_mysql import CurrentSession
12
13
from backend .app .schemas .casbin_rule import (
13
14
CreatePolicy ,
14
15
CreateUserRole ,
15
16
DeleteAllPolicies ,
16
- DeleteAllUserRoles ,
17
17
DeletePolicy ,
18
18
DeleteUserRole ,
19
19
GetAllPolicy ,
24
24
router = APIRouter ()
25
25
26
26
27
- @router .get ('' , summary = '(模糊条件)分页获取所有权限规则' , dependencies = [DependsJwtAuth , PageDepends ])
27
+ @router .get (
28
+ '' ,
29
+ summary = '(模糊条件)分页获取所有权限规则' ,
30
+ dependencies = [
31
+ DependsJwtAuth ,
32
+ DependsPagination ,
33
+ ],
34
+ )
28
35
async def get_all_casbin (
29
36
db : CurrentSession ,
30
- ptype : Annotated [str | None , Query ()] = None ,
31
- sub : Annotated [str | None , Query ()] = None ,
37
+ ptype : Annotated [str | None , Query (description = '规则类型, p / g' )] = None ,
38
+ sub : Annotated [str | None , Query (description = '用户 uuid / 角色' )] = None ,
32
39
):
33
40
casbin_select = await CasbinService .get_casbin_list (ptype = ptype , sub = sub )
34
41
page_data = await paging_data (db , casbin_select , GetAllPolicy )
@@ -47,7 +54,14 @@ async def get_role_policies(role: Annotated[str, Path(description='角色ID')]):
47
54
return await response_base .success (data = policies )
48
55
49
56
50
- @router .post ('/policy' , summary = '添加P权限规则' , dependencies = [DependsRBAC ])
57
+ @router .post (
58
+ '/policy' ,
59
+ summary = '添加P权限规则' ,
60
+ dependencies = [
61
+ Depends (RequestPermission ('casbin:p:add' )),
62
+ DependsRBAC ,
63
+ ],
64
+ )
51
65
async def create_policy (p : CreatePolicy ):
52
66
"""
53
67
p 规则:
@@ -62,37 +76,79 @@ async def create_policy(p: CreatePolicy):
62
76
return await response_base .success (data = data )
63
77
64
78
65
- @router .post ('/policies' , summary = '添加多组P权限规则' , dependencies = [DependsRBAC ])
79
+ @router .post (
80
+ '/policies' ,
81
+ summary = '添加多组P权限规则' ,
82
+ dependencies = [
83
+ Depends (RequestPermission ('casbin:p:group:add' )),
84
+ DependsRBAC ,
85
+ ],
86
+ )
66
87
async def create_policies (ps : list [CreatePolicy ]):
67
88
data = await CasbinService .create_policies (ps = ps )
68
89
return await response_base .success (data = data )
69
90
70
91
71
- @router .put ('/policy' , summary = '更新P权限规则' , dependencies = [DependsRBAC ])
92
+ @router .put (
93
+ '/policy' ,
94
+ summary = '更新P权限规则' ,
95
+ dependencies = [
96
+ Depends (RequestPermission ('casbin:p:edit' )),
97
+ DependsRBAC ,
98
+ ],
99
+ )
72
100
async def update_policy (old : UpdatePolicy , new : UpdatePolicy ):
73
101
data = await CasbinService .update_policy (old = old , new = new )
74
102
return await response_base .success (data = data )
75
103
76
104
77
- @router .put ('/policies' , summary = '更新多组P权限规则' , dependencies = [DependsRBAC ])
105
+ @router .put (
106
+ '/policies' ,
107
+ summary = '更新多组P权限规则' ,
108
+ dependencies = [
109
+ Depends (RequestPermission ('casbin:p:group:edit' )),
110
+ DependsRBAC ,
111
+ ],
112
+ )
78
113
async def update_policies (old : list [UpdatePolicy ], new : list [UpdatePolicy ]):
79
114
data = await CasbinService .update_policies (old = old , new = new )
80
115
return await response_base .success (data = data )
81
116
82
117
83
- @router .delete ('/policy' , summary = '删除P权限规则' , dependencies = [DependsRBAC ])
118
+ @router .delete (
119
+ '/policy' ,
120
+ summary = '删除P权限规则' ,
121
+ dependencies = [
122
+ Depends (RequestPermission ('casbin:p:del' )),
123
+ DependsRBAC ,
124
+ ],
125
+ )
84
126
async def delete_policy (p : DeletePolicy ):
85
127
data = await CasbinService .delete_policy (p = p )
86
128
return await response_base .success (data = data )
87
129
88
130
89
- @router .delete ('/policies' , summary = '删除多组P权限规则' , dependencies = [DependsRBAC ])
131
+ @router .delete (
132
+ '/policies' ,
133
+ summary = '删除多组P权限规则' ,
134
+ dependencies = [
135
+ Depends (RequestPermission ('casbin:p:group:del' )),
136
+ DependsRBAC ,
137
+ ],
138
+ )
90
139
async def delete_policies (ps : list [DeletePolicy ]):
91
140
data = await CasbinService .delete_policies (ps = ps )
92
141
return await response_base .success (data = data )
93
142
94
143
95
- @router .delete ('/policies/all' , summary = '删除所有P权限规则' , dependencies = [DependsRBAC ])
144
+ @router .delete (
145
+ '/policies/all' ,
146
+ summary = '删除所有P权限规则' ,
147
+ dependencies = [
148
+ Depends (RequestPermission ('casbin:p:empty' )),
149
+ DependsRBAC ,
150
+ ],
151
+ )
96
152
async def delete_all_policies (sub : DeleteAllPolicies ):
97
153
count = await CasbinService .delete_all_policies (sub = sub )
98
154
if count > 0 :
@@ -106,7 +162,14 @@ async def get_all_groups():
106
162
return await response_base .success (data = data )
107
163
108
164
109
- @router .post ('/group' , summary = '添加G权限规则' , dependencies = [DependsRBAC ])
165
+ @router .post (
166
+ '/group' ,
167
+ summary = '添加G权限规则' ,
168
+ dependencies = [
169
+ Depends (RequestPermission ('casbin:g:add' )),
170
+ DependsRBAC ,
171
+ ],
172
+ )
110
173
async def create_group (g : CreateUserRole ):
111
174
"""
112
175
g 规则 (**依赖 p 规则**):
@@ -121,26 +184,54 @@ async def create_group(g: CreateUserRole):
121
184
return await response_base .success (data = data )
122
185
123
186
124
- @router .post ('/groups' , summary = '添加多组G权限规则' , dependencies = [DependsRBAC ])
187
+ @router .post (
188
+ '/groups' ,
189
+ summary = '添加多组G权限规则' ,
190
+ dependencies = [
191
+ Depends (RequestPermission ('casbin:g:group:add' )),
192
+ DependsRBAC ,
193
+ ],
194
+ )
125
195
async def create_groups (gs : list [CreateUserRole ]):
126
196
data = await CasbinService .create_groups (gs = gs )
127
197
return await response_base .success (data = data )
128
198
129
199
130
- @router .delete ('/group' , summary = '删除G权限规则' , dependencies = [DependsRBAC ])
200
+ @router .delete (
201
+ '/group' ,
202
+ summary = '删除G权限规则' ,
203
+ dependencies = [
204
+ Depends (RequestPermission ('casbin:g:del' )),
205
+ DependsRBAC ,
206
+ ],
207
+ )
131
208
async def delete_group (g : DeleteUserRole ):
132
209
data = await CasbinService .delete_group (g = g )
133
210
return await response_base .success (data = data )
134
211
135
212
136
- @router .delete ('/groups' , summary = '删除多组G权限规则' , dependencies = [DependsRBAC ])
213
+ @router .delete (
214
+ '/groups' ,
215
+ summary = '删除多组G权限规则' ,
216
+ dependencies = [
217
+ Depends (RequestPermission ('casbin:g:group:del' )),
218
+ DependsRBAC ,
219
+ ],
220
+ )
137
221
async def delete_groups (gs : list [DeleteUserRole ]):
138
222
data = await CasbinService .delete_groups (gs = gs )
139
223
return await response_base .success (data = data )
140
224
141
225
142
- @router .delete ('/groups/all' , summary = '删除所有G权限规则' , dependencies = [DependsRBAC ])
143
- async def delete_all_groups (uuid : DeleteAllUserRoles ):
226
+ @router .delete (
227
+ '/groups/all' ,
228
+ summary = '删除所有G权限规则' ,
229
+ dependencies = [
230
+ Depends (RequestPermission ('casbin:g:empty' )),
231
+ DependsRBAC ,
232
+ ],
233
+ )
234
+ async def delete_all_groups (uuid : str ):
144
235
count = await CasbinService .delete_all_groups (uuid = uuid )
145
236
if count > 0 :
146
237
return await response_base .success ()
0 commit comments