feat: user api
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
from core.resp import Response
|
||||
from core.router import Router
|
||||
from core import Response
|
||||
from core.security import generate_token, verify_password
|
||||
from dbhelper.user import get_user
|
||||
from schemas.common import LoginForm, LoginResult
|
||||
|
||||
common = Router(tags=["公共接口"])
|
||||
|
||||
|
||||
@common.post("/login", summary="登录")
|
||||
async def login(auth_data: LoginForm) -> Response[LoginResult]:
|
||||
user_obj = await get_user({"username": auth_data.username})
|
||||
if user_obj:
|
||||
if verify_password(auth_data.password, user_obj.password):
|
||||
return Response(data=LoginResult(id=user_obj.id, token=generate_token(auth_data.username)))
|
||||
return Response(
|
||||
data=LoginResult(
|
||||
id=user_obj.id, token=generate_token(auth_data.username)
|
||||
)
|
||||
)
|
||||
return Response(msg="账号或密码错误")
|
||||
|
@@ -1,31 +1,7 @@
|
||||
from core.resp import Response
|
||||
from core.router import Router
|
||||
from schemas.common import QueryData
|
||||
from core import Response
|
||||
from dbhelper.menu import insert_menu
|
||||
from schemas.menu import MenuIn, MenuRead
|
||||
|
||||
menu = Router(prefix="/menu", tags=["菜单管理"])
|
||||
|
||||
|
||||
@menu.post("", summary="菜单添加")
|
||||
async def menu_add(data: MenuIn) -> Response[MenuRead]:
|
||||
pass
|
||||
|
||||
|
||||
@menu.get("/{pk}", summary="菜单详情")
|
||||
async def menu_info(pk: int) -> Response[MenuRead]:
|
||||
pass
|
||||
|
||||
|
||||
@menu.delete("/{pk}", summary="删除菜单")
|
||||
async def menu_del(pk: int) -> Response:
|
||||
pass
|
||||
|
||||
|
||||
@menu.put("/{pk}", summary="编辑菜单")
|
||||
async def menu_put(pk: int, data: MenuIn) -> Response[MenuRead]:
|
||||
pass
|
||||
|
||||
|
||||
@menu.post("/list", summary="查询菜单列表")
|
||||
async def menu_list(data: QueryData) -> Response[list[MenuRead]]:
|
||||
pass
|
||||
return Response(data=await insert_menu(data))
|
||||
|
@@ -1,53 +1,20 @@
|
||||
import json
|
||||
|
||||
from core.resp import Response
|
||||
from core.router import Router
|
||||
from core import Response
|
||||
from core.utils import list_to_tree
|
||||
from dbhelper.role import get_role_menus
|
||||
from schemas.common import QueryData
|
||||
from schemas.role import RoleAdd, RoleInfo
|
||||
|
||||
role = Router(prefix="/role", tags=["角色管理"])
|
||||
from dbhelper.role import get_role_menus, new_role
|
||||
from schemas.role import RoleIn, RoleInfo
|
||||
|
||||
|
||||
@role.post("", summary="角色添加")
|
||||
async def role_add(data: RoleAdd) -> Response[RoleInfo]:
|
||||
pass
|
||||
async def role_add(data: RoleIn) -> Response[RoleInfo]:
|
||||
return Response(data=await new_role(data))
|
||||
|
||||
|
||||
@role.get("/{pk}", summary="角色详情")
|
||||
async def role_info(pk: int) -> Response[RoleInfo]:
|
||||
pass
|
||||
|
||||
|
||||
@role.delete("/{pk}", summary="删除角色")
|
||||
async def role_del(pk: int) -> Response:
|
||||
pass
|
||||
|
||||
|
||||
@role.put("/{pk}", summary="编辑角色")
|
||||
async def role_put(pk: int, data: RoleAdd) -> Response[RoleInfo]:
|
||||
pass
|
||||
|
||||
|
||||
@role.post("/list", summary="查询角色列表")
|
||||
async def role_list(data: QueryData) -> Response[list[RoleInfo]]:
|
||||
pass
|
||||
|
||||
|
||||
@role.get("/{pk}/menu", summary="查询角色菜单权限")
|
||||
async def role_menu(pk: int):
|
||||
menus = await get_role_menus(pk)
|
||||
async def role_has_menu(rid: int):
|
||||
"""
|
||||
rid: 角色ID
|
||||
"""
|
||||
menus = await get_role_menus(rid)
|
||||
for obj in menus:
|
||||
obj["meta"] = json.loads(obj["meta"]) if obj["meta"] is not None else None
|
||||
return Response(data=list_to_tree(menus))
|
||||
|
||||
|
||||
@role.get("/{pk}/menuIds", summary="查询角色菜单ids")
|
||||
async def role_menus_id():
|
||||
pass
|
||||
|
||||
|
||||
@role.get("/assign", summary="分配权限")
|
||||
async def role_assign():
|
||||
pass
|
||||
|
@@ -1,22 +1,29 @@
|
||||
from core.resp import Response
|
||||
from core.router import Router
|
||||
from fastapi import Query
|
||||
|
||||
from core import Response
|
||||
from core.security import get_password_hash
|
||||
from dbhelper.user import get_user_info, get_users, insert_user
|
||||
from dbhelper.user import get_user, get_user_info, get_users, insert_user, new_user
|
||||
from schemas.common import ListAll
|
||||
from schemas.user import UserAdd, UserInfo, UserList, UserQuery
|
||||
|
||||
user = Router(prefix="/user", tags=["用户管理"])
|
||||
from schemas.user import UserAdd, UserIn, UserInfo, UserList, UserQuery, UserRead
|
||||
|
||||
|
||||
@user.post("", summary="用户添加")
|
||||
async def user_add(data: UserAdd) -> Response[UserInfo]:
|
||||
"""新增用户并分配角色 一步到位"""
|
||||
roles = data.rids
|
||||
del data.rids
|
||||
user.password = get_password_hash(user.password)
|
||||
data.password = get_password_hash(data.password)
|
||||
return await insert_user(data, roles)
|
||||
|
||||
|
||||
@user.get("/{pk}", summary="用户详情")
|
||||
async def create_user(data: UserIn) -> Response[UserRead]:
|
||||
"""新增用户"""
|
||||
result = await get_user({"username": data.username})
|
||||
if result is None:
|
||||
data.password = get_password_hash(data.password)
|
||||
return Response(data=await new_user(data))
|
||||
return Response(msg="用户名已存在")
|
||||
|
||||
|
||||
async def user_info(pk: int) -> Response[UserInfo]:
|
||||
try:
|
||||
return Response(data=await get_user_info(pk))
|
||||
@@ -24,18 +31,17 @@ async def user_info(pk: int) -> Response[UserInfo]:
|
||||
return Response(msg=f"用户不存在 {e}")
|
||||
|
||||
|
||||
@user.delete("/{pk}", summary="删除用户")
|
||||
async def user_del(pk: int) -> Response:
|
||||
pass
|
||||
async def user_arr(
|
||||
offset: int = Query(default=1, description="偏移量-页码"),
|
||||
limit: int = Query(default=10, description="数据量"),
|
||||
) -> Response[ListAll[UserList]]:
|
||||
skip = (offset - 1) * limit
|
||||
users, count = await get_users(skip, limit)
|
||||
return Response(data=ListAll(total=count, items=users))
|
||||
|
||||
|
||||
@user.put("/{pk}", summary="编辑用户")
|
||||
async def user_put(pk: int, data: UserAdd) -> Response[UserInfo]:
|
||||
pass
|
||||
|
||||
|
||||
@user.post("/list", summary="查询用户列表")
|
||||
async def user_list(query: UserQuery) -> Response[ListAll[UserList]]:
|
||||
"""post查询用户列表"""
|
||||
limit = query.size
|
||||
skip = (query.offset - 1) * limit
|
||||
del query.offset, query.size
|
||||
|
Reference in New Issue
Block a user