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

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 

9 

10class AuthRequest(BaseModel): 

11 email: EmailStr 

12 password: str 

13 

14auth_controller = APIRouter() 

15 

16@auth_controller.post("/register") 

17def register(request: AuthRequest): 

18 response = register_user(request.email, request.password) 

19 return response 

20 

21 

22@auth_controller.post("/login") 

23def login(request: AuthRequest): 

24 response = login_user(request.email, request.password) 

25 return response 

26 

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 

33 

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"} 

39