Coverage for app/controllers/auth_controller.py: 89%
27 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-02 23:27 +0000
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-02 23:27 +0000
1from fastapi import APIRouter, Depends
2from sqlalchemy.orm import Session
3from app.services.register import register_user
4from app.services.login import login_user
5from pydantic import BaseModel, EmailStr
6from app.db.supabaseDB import get_db
7from app.db.models import World
8from app.core.security import require_role
10class AuthRequest(BaseModel):
11 email: EmailStr
12 password: str
14auth_controller = APIRouter()
16@auth_controller.post("/register")
17def register(request: AuthRequest):
18 response = register_user(request.email, request.password)
19 return response
22@auth_controller.post("/login")
23def login(request: AuthRequest):
24 response = login_user(request.email, request.password)
25 return response
27# This demonstrates how to get database connectivity from the bd object using the ORM
28# REMOVE THIS... DEV ONLY
29@auth_controller.get("/test")
30def test(db: Session = Depends(get_db)):
31 data = db.query(World).all()
32 return data
34# This demonstrates how to implement RBAC. Note you must list all permitted roles (DM, Spectator, Player)
35# REMOVE THIS... DEV ONLY
36@auth_controller.get("/testing/{campaign_id}")
37def testing(auth = Depends(require_role("campaign_id", ["DM"]))):
38 return {"message": "Access granted"}