2022-11-16 15:41:24 +08:00

55 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
# @version : 1.0
# @Creaet Time : 2021/10/24 16:44
# @File : current.py
# @IDE : PyCharm
# @desc : 获取认证后的信息工具
from sqlalchemy.ext.asyncio import AsyncSession
from apps.vadmin.auth import crud, models
from .validation import AuthValidation, Auth
async def get_user_permissions(user: models.VadminUser, db: AsyncSession):
"""
获取跟进系统用户所有权限列表
"""
roles = []
for i in user.roles:
if i.is_admin:
return ["*:*:*"]
roles.append(i.id)
permissions = set()
for data_id in roles:
role_obj = await crud.RoleDal(db).get_data(data_id, options=[models.VadminUser])
for menu in role_obj.menus:
if menu.perms and menu.status:
permissions.add(menu.perms)
return list(permissions)
@AuthValidation
async def login_auth(telephone: str, db: AsyncSession):
"""
更新 login_auth 以接收 JWT 令牌。
解码接收到的令牌,对其进行校验,然后返回当前用户。
如果令牌无效,立即返回一个 HTTP 错误。
"""
return await crud.UserDal(db).get_data(telephone=telephone, return_none=True)
@AuthValidation
async def full_admin(telephone: str, db: AsyncSession):
"""
更新 full_user 以接收 JWT 令牌。
解码接收到的令牌,对其进行校验,然后返回当前用户。
如果令牌无效,立即返回一个 HTTP 错误。
"""
options = [models.VadminUser.roles, "roles.menus"]
return await crud.UserDal(db).get_data(telephone=telephone, return_none=True, options=options)