|
|
@ -3,8 +3,17 @@ from fastapi.security import OAuth2PasswordRequestForm |
|
|
|
from fastapi import Depends, FastAPI, HTTPException, status |
|
|
|
from dependencies import * |
|
|
|
from internal.models import Token |
|
|
|
from fastapi.middleware.cors import CORSMiddleware |
|
|
|
app=FastAPI() |
|
|
|
|
|
|
|
app.add_middleware( |
|
|
|
CORSMiddleware, |
|
|
|
allow_origins=['http://localhost:5173'], # 允许的源 |
|
|
|
allow_credentials=True, |
|
|
|
allow_methods=['GET', 'POST'], # 允许的请求方法 |
|
|
|
allow_headers=['Authorization', 'Content-Type'], # 允许的请求头 |
|
|
|
) |
|
|
|
|
|
|
|
# 用户登录 |
|
|
|
@app.post("/token", response_model=Token) |
|
|
|
async def login_for_access_token( |
|
|
@ -24,21 +33,22 @@ async def login_for_access_token( |
|
|
|
return {"access_token": access_token, "token_type": "bearer"} |
|
|
|
|
|
|
|
# 注册新用户 |
|
|
|
@app.post("/register/", response_model=UserInDB) |
|
|
|
async def register_user(user: UserInDB): |
|
|
|
@app.post("/register/") |
|
|
|
async def register_user(user: UserInDB, _: User = Depends(get_current_active_user)): |
|
|
|
# 检查用户名是否已经存在 |
|
|
|
existing_user = get_user(user.username) |
|
|
|
if existing_user: |
|
|
|
raise HTTPException(status_code=400, detail="Username already registered") |
|
|
|
if not user.hashed_password: |
|
|
|
raise HTTPException(status_code=400,detail="password cannot be empty") |
|
|
|
|
|
|
|
# 创建新用户并保存到数据库 |
|
|
|
hashed_password = get_password_hash(user.hashed_password) |
|
|
|
insert_query = "INSERT INTO users (username, email, full_name, hashed_password) VALUES (%s, %s, %s, %s)" |
|
|
|
user_data = (user.username, user.email, user.full_name, hashed_password) |
|
|
|
insert_query = "INSERT INTO users (username, email, full_name, hashed_password, disabled) VALUES (%s, %s, %s, %s, %s)" |
|
|
|
user_data = (user.username, user.email, user.full_name, hashed_password, user.disabled) |
|
|
|
execute_query(insert_query, user_data) |
|
|
|
|
|
|
|
# 返回创建的用户信息 |
|
|
|
return user |
|
|
|
return {"status":status.HTTP_200_OK,"message":"users create successfully!"} |
|
|
|
|
|
|
|
@app.get("/users/me/", response_model=User) |
|
|
|
async def read_users_me(current_user: User = Depends(get_current_active_user)): |
|
|
|