copied the code from the working repo
This commit is contained in:
51
mtucijobsbackend/app/routers/auth.py
Normal file
51
mtucijobsbackend/app/routers/auth.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from fastapi import APIRouter, Depends, status, HTTPException, Response
|
||||
from fastapi.security.oauth2 import OAuth2PasswordRequestForm
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .. import database, schemas, models, security, utils
|
||||
|
||||
router = APIRouter(tags=['Authentication'])
|
||||
|
||||
|
||||
@router.post('/login', response_model=schemas.Token)
|
||||
def login(user_credentials: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(database.get_db)):
|
||||
|
||||
user = db.query(models.Users).filter(
|
||||
models.Users.Email == user_credentials.username).first()
|
||||
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials")
|
||||
|
||||
if not utils.verify(user_credentials.password, user.Hashed_password):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials")
|
||||
|
||||
access_token = security.create_access_token(data={
|
||||
"UserID": user.UserID,
|
||||
"Email": user.Email
|
||||
})
|
||||
|
||||
refresh_token = security.create_refresh_token(data={
|
||||
"UserID": user.UserID,
|
||||
})
|
||||
|
||||
return {"access_token": access_token, "refresh_token": refresh_token}
|
||||
|
||||
@router.post('/refresh', response_model=schemas.Token, response_model_exclude_none=True )
|
||||
def refresh_access_token(refresh_token: str, db: Session = Depends(database.get_db)):
|
||||
user_id = security.verify_refresh_token(refresh_token)
|
||||
|
||||
user = db.query(models.Users).filter(
|
||||
models.Users.UserID == user_id).first()
|
||||
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail="User not found")
|
||||
|
||||
access_token = security.create_access_token(data={
|
||||
"UserID": user.UserID,
|
||||
"Email": user.Email
|
||||
})
|
||||
|
||||
return {"access_token": access_token}
|
||||
Reference in New Issue
Block a user