SNAPZION-TESTING / auth.py
Niansuh's picture
Create auth.py
4c9df9c verified
raw
history blame
1.14 kB
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from passlib.context import CryptContext
from app.database import SessionLocal
from app.models import User
import jwt
import os
router = APIRouter()
SECRET_KEY = "your_secret_key"
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@router.post("/register")
def register(username: str, password: str, db: Session = Depends(get_db)):
hashed_password = pwd_context.hash(password)
user = User(username=username, password=hashed_password)
db.add(user)
db.commit()
return {"message": "User registered"}
@router.post("/login")
def login(username: str, password: str, db: Session = Depends(get_db)):
user = db.query(User).filter(User.username == username).first()
if not user or not pwd_context.verify(password, user.password):
raise HTTPException(status_code=401, detail="Invalid credentials")
token = jwt.encode({"user_id": user.id}, SECRET_KEY, algorithm="HS256")
return {"token": token}