Spaces:
Paused
Paused
| 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() | |
| 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"} | |
| 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} | |