| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from fastapi import FastAPI, Depends, HTTPException, status
- from sqlalchemy.orm import Session
- from fastapi.security import OAuth2PasswordRequestForm
- from .oauth_token import create_access_token
- from .schemas import User, Token
- from .auth2 import get_current_user
- from .users import UserModel, get_password_hash, authenticate_user
- from .db import get_session
- app = FastAPI()
- @app.post("/token", response_model=Token)
- def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_session)):
- user = authenticate_user(db, form_data.username, form_data.password)
- print(user)
- if not user:
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail="Incorrect username or password",
- headers={"WWW-Authenticate": "Bearer"},
- )
- access_token = create_access_token(data={"sub": user.username})
- return {"access_token": access_token, "token_type": "bearer"}
- @app.get("/users/me")
- def read_users_me(current_user: User = Depends(get_current_user)):
- return current_user
- @app.post("/users/createUsers")
- def create_user(user: User, db: Session = Depends(get_session), current_user: User = Depends(get_current_user)):
- # Check if the username already exists
- existing_user = db.query(UserModel).filter(UserModel.username == user.username).first()
- if existing_user:
- raise HTTPException(
- status_code=status.HTTP_400_BAD_REQUEST,
- detail="Username already exists",
- )
- hashed_password = get_password_hash(user.hashed_password)
- # Create a new user object
- new_user = UserModel(username=user.username, email=user.email, hashed_password=hashed_password)
- # Add the new user to the database
- db.add(new_user)
- db.commit()
- db.refresh(new_user)
- return {"message": "User created successfully", "user_id": new_user.id}
|