diff --git a/src/db/user_state.py b/src/db/user_state.py index 0091398..06077ce 100644 --- a/src/db/user_state.py +++ b/src/db/user_state.py @@ -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 diff --git a/src/endpoints/default.py b/src/endpoints/default.py index ceef172..80921ce 100644 --- a/src/endpoints/default.py +++ b/src/endpoints/default.py @@ -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.") diff --git a/src/shared/user_groups.py b/src/shared/user_groups.py index d36ab4b..7c04c89 100644 --- a/src/shared/user_groups.py +++ b/src/shared/user_groups.py @@ -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] = [] \ No newline at end of file