4a79c5cacb
- Added `is_admin` field to User model for role management. - Updated user context middleware to include current user in templates. - Enhanced session management with improved debug middleware. - Refactored dashboard view to fetch user-specific data and recent events. - Improved login and registration templates for better user experience. - Added admin routes with access control for admin users. - Updated Docker configuration for better error logging and dependency management. - Updated requirements to include new dependencies and specify versions.
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from fastapi import Depends, HTTPException, status, Request
|
|
from fastapi.security import OAuth2PasswordBearer
|
|
from sqlalchemy.orm import Session
|
|
from .db import get_db
|
|
from . import models
|
|
from .auth import get_current_user, require_login, require_admin
|
|
|
|
# Reuse functions from auth.py
|
|
# This is just for backward compatibility with any code that imported these from dependencies
|
|
|
|
# Function to get a db session
|
|
def get_session_db():
|
|
return next(get_db())
|
|
|
|
# Function to get current authenticated user
|
|
def get_authenticated_user(request: Request):
|
|
return get_current_user(request)
|
|
|
|
# These are kept for API backward compatibility
|
|
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="auth/token")
|
|
|
|
def get_current_active_user(request: Request):
|
|
user = get_current_user(request)
|
|
if not user:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
|
detail="Not authenticated",
|
|
headers={"WWW-Authenticate": "Bearer"},
|
|
)
|
|
return user
|
|
|
|
def get_current_admin_user(request: Request):
|
|
user = get_current_user(request)
|
|
if not user or not user.get("is_admin"):
|
|
raise HTTPException(
|
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
detail="Not enough permissions",
|
|
)
|
|
return user
|