kofdai's picture
Upload folder using huggingface_hub
594ed40 verified
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm import Session
from backend.app.database.session import get_db
from backend.app.schemas.auth import UserCreate, UserInDB, Token
from backend.app.services.auth_service import AuthService, get_auth_service
from backend.app.utils.jwt_utils import create_access_token
router = APIRouter()
@router.post("/signup", response_model=UserInDB)
def create_user(user: UserCreate, db: Session = Depends(get_db), auth_service: AuthService = Depends(get_auth_service)):
"""
新規ユーザー登録
"""
db_user = auth_service.get_user_by_email(db, email=user.email)
if db_user:
raise HTTPException(status_code=400, detail="Email already registered")
created_user = auth_service.create_user(db=db, user=user)
return UserInDB.from_orm(created_user)
@router.post("/token", response_model=Token)
def login_for_access_token(
form_data: OAuth2PasswordRequestForm = Depends(),
db: Session = Depends(get_db),
auth_service: AuthService = Depends(get_auth_service)
):
"""
ログインしてアクセストークンを取得
"""
user = auth_service.authenticate_user(db, email=form_data.username, password=form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect email or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token = create_access_token(data={"sub": user.id, "role": user.role})
return {"access_token": access_token, "token_type": "bearer"}