feat: 切换角色
This commit is contained in:
@@ -28,4 +28,3 @@ async def menu_put(pk: int, data: MenuIn) -> Response:
|
||||
if await put_menu(pk, data) == 0:
|
||||
return Response(code=400, msg="菜单不存在")
|
||||
return Response()
|
||||
|
||||
|
@@ -4,10 +4,15 @@ from fastapi import Query
|
||||
|
||||
from core.utils import list_to_tree
|
||||
from dbhelper.relation import role_assigned_menu
|
||||
from dbhelper.role import (del_role, get_role, get_role_menus, get_roles,
|
||||
new_role, put_role)
|
||||
from schemas import (ListAll, Response, RoleIn, RoleInfo, RoleMenuIn,
|
||||
RoleQuery, RoleRead)
|
||||
from dbhelper.role import (
|
||||
del_role,
|
||||
get_role,
|
||||
get_role_menus,
|
||||
get_roles,
|
||||
new_role,
|
||||
put_role,
|
||||
)
|
||||
from schemas import ListAll, Response, RoleIn, RoleInfo, RoleMenuIn, RoleQuery, RoleRead
|
||||
|
||||
|
||||
async def role_add(data: RoleIn) -> Response[RoleInfo]:
|
||||
|
@@ -1,8 +1,16 @@
|
||||
from fastapi import Query
|
||||
from fastapi import Depends, Query
|
||||
from starlette.requests import Request
|
||||
|
||||
from core.security import get_password_hash
|
||||
from dbhelper.user import (del_user, get_user, get_user_info, get_users,
|
||||
insert_user, put_user)
|
||||
from core.security import check_token, get_password_hash
|
||||
from dbhelper.user import (
|
||||
del_user,
|
||||
get_user,
|
||||
get_user_info,
|
||||
get_users,
|
||||
insert_user,
|
||||
put_user,
|
||||
select_role,
|
||||
)
|
||||
from schemas import Response, UserAdd, UserInfo, UserPut, UserQuery, UserRead
|
||||
from schemas.common import ListAll
|
||||
|
||||
@@ -63,3 +71,11 @@ async def user_put(pk: int, data: UserPut) -> Response:
|
||||
if isinstance(result, int):
|
||||
return Response(code=400, msg=f"角色不存在{result}")
|
||||
return Response()
|
||||
|
||||
|
||||
async def user_select_role(rid: int, user=Depends(check_token)):
|
||||
"""用户切换角色"""
|
||||
res = await select_role(user.id, rid)
|
||||
if res == 0:
|
||||
return Response(code=400, msg=f"角色不存在{res}")
|
||||
return Response()
|
||||
|
@@ -74,7 +74,7 @@ async def check_permissions(request: Request, user: UserModel = Depends(check_to
|
||||
whitelist = [f"/user/{user.id}", f"/role/{active_rid}/menu"]
|
||||
flag = request.url.path in whitelist and request.method == "GET"
|
||||
if flag:
|
||||
return
|
||||
return user
|
||||
|
||||
api = request.url.path
|
||||
for k, v in request.path_params.items():
|
||||
|
@@ -71,4 +71,4 @@ async def get_apis(pk: int):
|
||||
|
||||
async def put_menu(pk: int, data):
|
||||
"""更新菜单"""
|
||||
return await MenuModel.filter(id=pk).update(**data.dict())
|
||||
return await MenuModel.filter(id=pk).update(**data.dict())
|
||||
|
@@ -104,3 +104,9 @@ async def put_user(uid: int, data: UserPut):
|
||||
await UserRoleModel.bulk_create(
|
||||
[UserRoleModel(uid=uid, **role.dict()) for role in roles]
|
||||
)
|
||||
|
||||
|
||||
async def select_role(uid: int, rid: int):
|
||||
"""用户切换角色"""
|
||||
await UserRoleModel.filter(uid=uid, rid__not=rid).update(status=1)
|
||||
return await UserRoleModel.filter(uid=uid, rid=rid).update(status=5)
|
||||
|
Binary file not shown.
Binary file not shown.
@@ -4,10 +4,24 @@ from fastapi import Depends, routing
|
||||
|
||||
from controller.common import about, login
|
||||
from controller.menu import menu_add, menu_arr, menu_del, menu_put
|
||||
from controller.role import (assigned_menu, role_add, role_arr, role_del,
|
||||
role_has_menu, role_put, role_query)
|
||||
from controller.user import (user_add, user_arr, user_del, user_info,
|
||||
user_list, user_put)
|
||||
from controller.role import (
|
||||
assigned_menu,
|
||||
role_add,
|
||||
role_arr,
|
||||
role_del,
|
||||
role_has_menu,
|
||||
role_put,
|
||||
role_query,
|
||||
)
|
||||
from controller.user import (
|
||||
user_add,
|
||||
user_arr,
|
||||
user_del,
|
||||
user_info,
|
||||
user_list,
|
||||
user_put,
|
||||
user_select_role,
|
||||
)
|
||||
from core.security import check_permissions
|
||||
|
||||
|
||||
@@ -107,9 +121,7 @@ class Route(routing.APIRoute):
|
||||
)
|
||||
|
||||
|
||||
has_perm = {
|
||||
# "dependencies": [Depends(check_permissions)]
|
||||
}
|
||||
has_perm = {"dependencies": [Depends(check_permissions)]}
|
||||
|
||||
routes = [
|
||||
Route.post("/login", endpoint=login, tags=["公共"], summary="登录"),
|
||||
@@ -129,6 +141,9 @@ routes = [
|
||||
Route.post(
|
||||
"/user/query", endpoint=user_list, tags=["用户管理"], summary="用户列表查询", **has_perm
|
||||
),
|
||||
Route.put(
|
||||
"/user/role/{rid}", endpoint=user_select_role, tags=["用户管理"], summary="用户切换角色"
|
||||
),
|
||||
# 角色管理,
|
||||
Route.get("/role", endpoint=role_arr, tags=["角色管理"], summary="角色列表", **has_perm),
|
||||
Route.post("/role", endpoint=role_add, tags=["角色管理"], summary="角色新增", **has_perm),
|
||||
|
@@ -309,20 +309,6 @@ params = [
|
||||
method="DELETE",
|
||||
).dict(),
|
||||
),
|
||||
(
|
||||
"/menu",
|
||||
MenuIn(
|
||||
name="修改菜单",
|
||||
meta={"icon": "Update"},
|
||||
path=None,
|
||||
type=2,
|
||||
component=None,
|
||||
pid=5,
|
||||
identifier="menu:update",
|
||||
api="/menu/{pk}",
|
||||
method="PUT",
|
||||
).dict(),
|
||||
),
|
||||
# 分配权限
|
||||
(
|
||||
"/role/assigned/menu",
|
||||
|
Reference in New Issue
Block a user