adds group permissions

This commit is contained in:
msramalho
2025-02-09 12:48:33 +00:00
parent a374c0e662
commit a1b730bad4
3 changed files with 11 additions and 6 deletions

View File

@@ -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

View File

@@ -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.")

View File

@@ -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] = []