from typing import Any from fastapi import APIRouter, Depends, HTTPException, Response from fastapi.encoders import jsonable_encoder from sqlalchemy.orm import Session from fuware.db.db_setup import generate_session from fuware.schemas import ReturnValue, PrivateUser, UserRequest from fuware.schemas.user.user import UserCreate from fuware.services import UserService public_router = APIRouter(tags=["Users: Authentication"]) user_service = UserService() @public_router.put('/register') def register_user(user: UserCreate, db: Session = Depends(generate_session)) -> ReturnValue[Any]: db_user = user_service.get_by_username(username=user.username) if db_user: raise HTTPException(status_code=400, detail="Username already registered!") user_return = user_service.create(db=db, user=user) return ReturnValue(status=200, data=jsonable_encoder(user_return)) # @public_router.post('/login', response_model=ReturnValue[PrivateUser]) # def user_login(user: UserRequest, response: Response) -> ReturnValue[Any]: # db_user = UserService.get_by_username(user.username) # if not db_user: # raise HTTPException(status_code=401, detail="Your username or password input is wrong!") # if not verify_password(user.password, db_user.password): # raise HTTPException(status_code=401, detail="Your username or password input is wrong!") # if db_user.is_lock is True: # raise HTTPException(status_code=401, detail="Your Account is banned") # cookieEncode = encryptString(user.username + ',' + user.password) # response.set_cookie(key=COOKIE_KEY, value=cookieEncode.decode('utf-8')) # return ReturnValue(status=200, data=jsonable_encoder(db_user))