mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-08 03:28:35 +03:00
adds group permissions
This commit is contained in:
@@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
|
||||
from sqlalchemy import func
|
||||
from db import crud, models
|
||||
from datetime import datetime
|
||||
from shared.user_groups import GroupPermissions
|
||||
from shared.user_groups import GroupInfo, GroupPermissions
|
||||
from db.schemas import Usage, UsageResponse
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@ class UserState:
|
||||
self.email = email.lower()
|
||||
|
||||
@property
|
||||
def permissions(self) -> Dict[str, GroupPermissions]:
|
||||
def permissions(self) -> Dict[str, GroupInfo]:
|
||||
"""
|
||||
Returns a dict of all group permissions and a special {"all": read/archive_url/archive_sheet} key
|
||||
"""
|
||||
if not hasattr(self, '_permissions'):
|
||||
self._permissions = {}
|
||||
self._permissions["all"] = GroupPermissions(
|
||||
self._permissions["all"] = GroupInfo(
|
||||
read=self.read,
|
||||
read_public=self.read_public,
|
||||
archive_url=self.archive_url,
|
||||
@@ -38,7 +38,7 @@ class UserState:
|
||||
)
|
||||
for group in self.user_groups:
|
||||
if not group.permissions: continue
|
||||
self._permissions[group.id] = GroupPermissions(**group.permissions)
|
||||
self._permissions[group.id] = GroupInfo(**group.permissions, description=group.description)
|
||||
return self._permissions
|
||||
|
||||
@property
|
||||
|
||||
@@ -10,7 +10,7 @@ from db import crud
|
||||
from db.schemas import ActiveUser, UsageResponse
|
||||
from db.user_state import UserState
|
||||
from web.security import get_user_auth, bearer_security, get_user_state
|
||||
from shared.user_groups import GroupPermissions
|
||||
from shared.user_groups import GroupInfo
|
||||
|
||||
default_router = APIRouter()
|
||||
|
||||
@@ -42,7 +42,7 @@ async def active(
|
||||
@default_router.get("/user/permissions", summary="Get the user's global 'all' permissions and the permissions for each group they belong to.")
|
||||
def get_user_permissions(
|
||||
user: UserState = Depends(get_user_state),
|
||||
) -> Dict[str, GroupPermissions]:
|
||||
) -> Dict[str, GroupInfo]:
|
||||
return user.permissions
|
||||
|
||||
@default_router.get("/user/usage", summary="Get the user's monthly URLs/MBs usage along with the total active sheets, breakdown by group.")
|
||||
|
||||
@@ -123,3 +123,8 @@ class UserGroupModel(BaseModel):
|
||||
logger.warning(f"These groups are associated to USERS but not defined in the GROUPS section, the users settings may not work as expected: {groups_in_users - configured_groups}")
|
||||
|
||||
return self
|
||||
|
||||
# for the API return values
|
||||
class GroupInfo(GroupPermissions):
|
||||
description: str = ""
|
||||
service_account_emails: list[str] = []
|
||||
Reference in New Issue
Block a user