File size: 2,179 Bytes
e66bcc7
f5cf708
daa9d8a
 
f5cf708
 
f807217
 
daa9d8a
f5cf708
daa9d8a
f5cf708
daa9d8a
f5cf708
f807217
f5cf708
 
 
 
f807217
 
 
 
 
 
 
 
e66bcc7
 
 
 
 
 
 
f807217
 
 
daa9d8a
 
f807217
f5cf708
 
 
 
daa9d8a
 
f5cf708
daa9d8a
f5cf708
 
f807217
 
f5cf708
daa9d8a
 
f807217
e66bcc7
 
 
 
 
 
f5cf708
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from fastapi import APIRouter, Depends, HTTPException, status
from pydantic import BaseModel
import uuid

from global_state import get
from db.tbs_db import TbsDb
from auth import get_current_user
from db_model.user import UserModel

router = APIRouter()

db_module_filename = f"{get('project_root')}/db/cloudflare.py"

class User(BaseModel):
    id: int = 0
    username: str
    password: str
    email: str
    nikename: str = None
    is_admin: int = 0

@router.get("/users")
# async def read_users(current_user_id: int = Depends(get_current_user_id)):
#     query = "SELECT * FROM users"
#     response = TbsDb(db_module_filename, "Cloudflare").get_list(query)
#     return response
async def read_user(current_user: UserModel = Depends(get_current_user)):
    if current_user.is_admin == 0:
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail="Have no permission",
            headers={"WWW-Authenticate": "Bearer"},
        )

    query = "SELECT * FROM users"
    response = TbsDb(db_module_filename, "Cloudflare").get_list(query)
    return response

@router.post("/users")
async def create_user(user: UserModel): 
    username = user.username
    password = user.password
    email = user.email
    nikename = user.nikename
    if nikename==None:
        nikename = ''

    api_key = f'airs-{uuid.uuid4()}'
    query = f"INSERT INTO users (username, password, email, nikename, api_key) VALUES ('{username}', '{password}', '{email}', '{nikename}', '{api_key}')"
    response = TbsDb(db_module_filename, "Cloudflare").add_item(query)
    if response['success']==True:
        response['api_key'] = api_key
    return response

@router.get("/users/{id}")
async def read_user(id:int, current_user: UserModel = Depends(get_current_user)):
    if (current_user.is_admin == 0) and (current_user.id != id):
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail="Have no permission",
            headers={"WWW-Authenticate": "Bearer"},
        )
    query = f"SELECT * FROM users where id={id}"
    response = TbsDb(db_module_filename, "Cloudflare").get_item(query)
    return response