mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-12 13:38:33 +03:00
deprecates user.active in favor of user.permissions
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
|
||||
from typing import Dict
|
||||
from fastapi import APIRouter, Depends, Request, HTTPException
|
||||
from fastapi.responses import FileResponse, JSONResponse
|
||||
from sqlalchemy.orm import Session
|
||||
@@ -8,7 +9,8 @@ from core.logging import log_error
|
||||
from db import crud, schemas
|
||||
from db.database import get_db_dependency
|
||||
from db.user_state import UserState
|
||||
from web.security import get_user_auth, bearer_security, get_active_user_state
|
||||
from web.security import get_user_auth, bearer_security, get_user_state
|
||||
from shared.user_groups import GroupPermissions
|
||||
|
||||
default_router = APIRouter()
|
||||
|
||||
@@ -32,27 +34,22 @@ async def health():
|
||||
|
||||
@default_router.get("/user/active", summary="Check if the user is active and can use the tool.")
|
||||
# TODO: reorder db dependencies to after auth
|
||||
async def active(db: Session = Depends(get_db_dependency), email=Depends(get_user_auth)) -> schemas.ActiveUser:
|
||||
return {"active": crud.is_active_user(db, email)}
|
||||
async def active(
|
||||
user: UserState = Depends(get_user_state),
|
||||
) -> schemas.ActiveUser:
|
||||
return {"active": user.active}
|
||||
|
||||
|
||||
@default_router.get("/groups")
|
||||
@default_router.get("/groups", deprecated=True) # DEPRECATED, only used by extension
|
||||
def get_user_groups(email=Depends(get_user_auth)) -> list[str]:
|
||||
return crud.get_user_groups(email)
|
||||
|
||||
|
||||
@default_router.get("/permissions")
|
||||
def get_user_groups(
|
||||
user: UserState = Depends(get_active_user_state),
|
||||
) -> list[str]:
|
||||
return JSONResponse({
|
||||
"groups": user.user_groups_names,
|
||||
"allowedFrequencies": list(user.allowed_frequencies),
|
||||
"sheet_quota": user.sheet_quota,
|
||||
"max_monthly_urls": user.max_monthly_urls, #TODO
|
||||
"max_monthly_mbs": user.max_monthly_mbs, # TODO
|
||||
#TODO: should this return
|
||||
})
|
||||
user: UserState = Depends(get_user_state),
|
||||
) -> Dict[str, GroupPermissions]:
|
||||
return user.permissions
|
||||
|
||||
|
||||
@default_router.get('/favicon.ico', include_in_schema=False)
|
||||
|
||||
@@ -6,7 +6,7 @@ from sqlalchemy import exc
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from db.user_state import UserState
|
||||
from web.security import token_api_key_auth, get_active_user_auth, get_active_user_state
|
||||
from web.security import token_api_key_auth, get_user_auth, get_user_state
|
||||
from db import schemas, crud
|
||||
from db.database import get_db_dependency
|
||||
from worker.main import create_sheet_task
|
||||
@@ -17,7 +17,7 @@ sheet_router = APIRouter(prefix="/sheet", tags=["Google Spreadsheet operations"]
|
||||
@sheet_router.post("/create", status_code=201, summary="Store a new Google Sheet for regular archiving.")
|
||||
def create_sheet(
|
||||
sheet: schemas.SheetAdd,
|
||||
user: UserState = Depends(get_active_user_state),
|
||||
user: UserState = Depends(get_user_state),
|
||||
db: Session = Depends(get_db_dependency),
|
||||
) -> schemas.SheetResponse:
|
||||
|
||||
@@ -28,7 +28,7 @@ def create_sheet(
|
||||
raise HTTPException(status_code=429, detail="User has reached their sheet quota.")
|
||||
|
||||
if not user.is_sheet_frequency_allowed(sheet.frequency):
|
||||
raise HTTPException(status_code=422, detail=f"Invalid frequency: {sheet.frequency}. Must be one of {user.allowed_frequencies}")
|
||||
raise HTTPException(status_code=422, detail=f"Invalid frequency: {sheet.frequency}. Must be one of {user.sheet_frequency}")
|
||||
|
||||
try:
|
||||
return crud.create_sheet(db, sheet.id, sheet.name, user.email, sheet.group_id, sheet.frequency)
|
||||
@@ -38,7 +38,7 @@ def create_sheet(
|
||||
|
||||
@sheet_router.get("/mine", status_code=200, summary="Get the authenticated user's Google Sheets.")
|
||||
def get_user_sheets(
|
||||
email=Depends(get_active_user_auth),
|
||||
email=Depends(get_user_auth),
|
||||
db: Session = Depends(get_db_dependency)
|
||||
) -> list[schemas.SheetResponse]:
|
||||
return crud.get_user_sheets(db, email)
|
||||
@@ -47,7 +47,7 @@ def get_user_sheets(
|
||||
@sheet_router.delete("/{id}", summary="Delete a Google Sheet by ID.")
|
||||
def delete_sheet(
|
||||
id: str,
|
||||
email=Depends(get_active_user_auth),
|
||||
email=Depends(get_user_auth),
|
||||
db: Session = Depends(get_db_dependency),
|
||||
) -> schemas.TaskDelete:
|
||||
return JSONResponse({
|
||||
@@ -59,7 +59,7 @@ def delete_sheet(
|
||||
@sheet_router.post("/{id}/archive", status_code=201, summary="Trigger an archiving task for a GSheet you own.", response_description="task_id for the archiving task.")
|
||||
def archive_user_sheet(
|
||||
id: str,
|
||||
user: UserState = Depends(get_active_user_state),
|
||||
user: UserState = Depends(get_user_state),
|
||||
db: Session = Depends(get_db_dependency),
|
||||
) -> schemas.Task:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user