72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
import pymongo
|
|
from fastapi import APIRouter, Depends, Request
|
|
from fastapi.encoders import jsonable_encoder
|
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
|
import crud, schemas
|
|
from core.config import settings
|
|
from core.security import get_password_hash
|
|
|
|
from db import get_database
|
|
from api import deps
|
|
from db.ckdb import CKDrive, get_ck_db
|
|
from utils import casbin_enforcer
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post('/add_data_auth')
|
|
async def add_data_auth(request: Request,
|
|
data_id: schemas.DataAuthCreate,
|
|
game: str = Depends(deps.get_game_project),
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""创建数据权限"""
|
|
await crud.data_auth.create(db, data_id, game)
|
|
return schemas.Msg(code=0, msg='ok', data=data_id)
|
|
|
|
|
|
@router.post('/edit_data_auth')
|
|
async def edit_data_auth(request: Request,
|
|
data_id: schemas.DataAuthEdit,
|
|
game: str = Depends(deps.get_game_project),
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""修改数据权限"""
|
|
await crud.data_auth.edit_data_auth(db, data_id)
|
|
return schemas.Msg(code=0, msg='ok', data=data_id)
|
|
|
|
|
|
@router.get('/all_event')
|
|
async def all_event(request: Request,
|
|
game: str = Depends(deps.get_game_project),
|
|
ck: CKDrive = Depends(get_ck_db),
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""获取所有事件"""
|
|
values = await ck.distinct(game, 'event', '#event_name')
|
|
values.sort()
|
|
return schemas.Msg(code=0, msg='ok', data=values)
|
|
|
|
|
|
@router.get("/list")
|
|
async def data_authority(request: Request,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
game: str = Depends(deps.get_game_project),
|
|
ck: CKDrive = Depends(get_ck_db),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""获取前项目数据权限"""
|
|
total_event = await ck.distinct_count(game, 'event', '#event_name')
|
|
data = await crud.data_auth.get_game_data_auth(db, game)
|
|
for item in data:
|
|
item['id'] = str(item['_id'])
|
|
del item['_id']
|
|
item['data_range'] = f'{len(item["data"])}/{total_event}'
|
|
|
|
|
|
data = jsonable_encoder(data)
|
|
return schemas.Msg(code=0, msg='ok', data=data)
|