26 lines
765 B
Python
26 lines
765 B
Python
from typing import Callable
|
|
|
|
from core.database import get_core_db
|
|
from core.security import get_current_user, validate_access_to_resource
|
|
from fastapi import Depends, Query
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
def require_ref_view(permission_code: str) -> Callable:
|
|
"""
|
|
Dependency factory to enforce reference-data view permissions per company.
|
|
|
|
Endpoints using this dependency must receive `company_id` in query params.
|
|
"""
|
|
|
|
async def _dep(
|
|
company_id: int = Query(..., description="Company ID"),
|
|
db: Session = Depends(get_core_db),
|
|
current_user: dict = Depends(get_current_user),
|
|
) -> bool:
|
|
validate_access_to_resource(db, company_id, current_user, [permission_code])
|
|
return True
|
|
|
|
return _dep
|
|
|