Skip to content

Commit 707ee5e

Browse files
committed
update user groups permissions
1 parent a28e2bd commit 707ee5e

3 files changed

Lines changed: 24 additions & 19 deletions

File tree

src/database/users.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ async def search_users(cursor: AsyncCursor, filters: UserFilters) -> UserPage:
3636
params = filters.model_dump()
3737

3838
# Only add roles filter if present and non-empty
39-
if getattr(filters, "roles", None):
40-
where_clauses.append("role = ANY(%(roles)s)")
39+
# if getattr(filters, "roles", None):
40+
# where_clauses.append("role = ANY(%(roles)s)")
4141

4242
# Always allow searching by query
4343
where_clauses.append("(%(query)s IS NULL OR name ~* %(query)s)")

src/routers/user_groups.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import logging
66
import bugsnag
7-
from typing import Annotated, List, Optional, Union, Dict
7+
from typing import Annotated, List, Optional, Union, Dict, Any
88

99
from fastapi import APIRouter, Depends, Path, Body, Query, HTTPException, Request
1010
from psycopg import AsyncCursor
@@ -23,6 +23,9 @@
2323

2424
router = APIRouter(prefix="/user-groups", tags=["user groups"])
2525

26+
user_group_defaults: dict[str, Any] = {
27+
# "dependencies": [Depends(require_admin)],
28+
}
2629

2730
# Add models to support user emails in requests
2831
class UserGroupCreate(BaseModel):
@@ -80,7 +83,7 @@ async def get_user_id(cursor: AsyncCursor, user_identifier: Union[str, int]) ->
8083
return None
8184

8285

83-
@router.get("", response_model=List[UserGroup], dependencies=[Depends(require_admin)])
86+
@router.get("", response_model=List[UserGroup], **user_group_defaults)
8487
async def list_user_groups(
8588
request: Request,
8689
cursor: AsyncCursor = Depends(db.yield_cursor),
@@ -108,7 +111,7 @@ async def list_user_groups(
108111
raise
109112

110113

111-
@router.get("/me", response_model=List[UserGroup])
114+
@router.get("/me", response_model=List[UserGroup], **user_group_defaults)
112115
async def get_my_user_groups(
113116
request: Request,
114117
user: User = Depends(authenticate_user),
@@ -179,7 +182,7 @@ async def get_my_user_groups(
179182
raise
180183

181184

182-
@router.get("/me/with-signals", response_model=List[Union[UserGroupWithSignals, UserGroupComplete]])
185+
@router.get("/me/with-signals", response_model=List[Union[UserGroupWithSignals, UserGroupComplete]], **user_group_defaults)
183186
async def get_my_user_groups_with_signals(
184187
request: Request,
185188
user: User = Depends(authenticate_user),
@@ -284,7 +287,7 @@ async def get_my_user_groups_with_signals(
284287
raise
285288

286289

287-
@router.post("", response_model=Union[UserGroup, UserGroupWithUsers], dependencies=[Depends(require_admin)])
290+
@router.post("", response_model=Union[UserGroup, UserGroupWithUsers], **user_group_defaults)
288291
async def create_user_group(
289292
request: Request,
290293
group_data: UserGroupCreate,
@@ -409,7 +412,7 @@ async def create_user_group(
409412
raise
410413

411414

412-
@router.get("/{group_id}", response_model=Union[UserGroup, UserGroupWithUsers, UserGroupComplete], dependencies=[Depends(require_admin)])
415+
@router.get("/{group_id}", response_model=Union[UserGroup, UserGroupWithUsers, UserGroupComplete], **user_group_defaults)
413416
async def read_user_group(
414417
request: Request,
415418
group_id: Annotated[int, Path(description="The ID of the user group to retrieve")],
@@ -501,7 +504,7 @@ async def read_user_group(
501504
raise
502505

503506

504-
@router.put("/{group_id}", response_model=Union[UserGroup, UserGroupWithUsers, UserGroupComplete], dependencies=[Depends(require_admin)])
507+
@router.put("/{group_id}", response_model=Union[UserGroup, UserGroupWithUsers, UserGroupComplete], **user_group_defaults)
505508
async def update_user_group(
506509
request: Request,
507510
group_id: Annotated[int, Path(description="The ID of the user group to update")],
@@ -628,7 +631,7 @@ async def update_user_group(
628631
raise
629632

630633

631-
@router.delete("/{group_id}", response_model=bool, dependencies=[Depends(require_admin)])
634+
@router.delete("/{group_id}", response_model=bool, **user_group_defaults)
632635
async def delete_user_group(
633636
request: Request,
634637
group_id: Annotated[int, Path(description="The ID of the user group to delete")],
@@ -671,7 +674,7 @@ async def delete_user_group(
671674
raise
672675

673676

674-
@router.post("/{group_id}/users", response_model=bool, dependencies=[Depends(require_admin)])
677+
@router.post("/{group_id}/users", response_model=bool, **user_group_defaults)
675678
async def add_user_to_group_by_email(
676679
request: Request,
677680
group_id: Annotated[int, Path(description="The ID of the user group")],
@@ -710,7 +713,7 @@ async def add_user_to_group_by_email(
710713
raise
711714

712715

713-
@router.post("/{group_id}/users/{user_id_or_email}", response_model=bool, dependencies=[Depends(require_admin)])
716+
@router.post("/{group_id}/users/{user_id_or_email}", response_model=bool, **user_group_defaults)
714717
async def add_user_to_group(
715718
request: Request,
716719
group_id: Annotated[int, Path(description="The ID of the user group")],
@@ -759,7 +762,7 @@ async def add_user_to_group(
759762
raise
760763

761764

762-
@router.delete("/{group_id}/users/{user_id_or_email}", response_model=bool, dependencies=[Depends(require_admin)])
765+
@router.delete("/{group_id}/users/{user_id_or_email}", response_model=bool, **user_group_defaults)
763766
async def remove_user_from_group(
764767
group_id: Annotated[int, Path(description="The ID of the user group")],
765768
user_id_or_email: Annotated[str, Path(description="The ID or email of the user to remove")],
@@ -788,7 +791,7 @@ async def remove_user_from_group(
788791
return True
789792

790793

791-
@router.post("/{group_id}/signals/{signal_id}", response_model=bool, dependencies=[Depends(require_admin)])
794+
@router.post("/{group_id}/signals/{signal_id}", response_model=bool, **user_group_defaults)
792795
async def add_signal_to_group(
793796
group_id: Annotated[int, Path(description="The ID of the user group")],
794797
signal_id: Annotated[int, Path(description="The ID of the signal to add")],
@@ -816,7 +819,7 @@ async def add_signal_to_group(
816819
return True
817820

818821

819-
@router.delete("/{group_id}/signals/{signal_id}", response_model=bool, dependencies=[Depends(require_admin)])
822+
@router.delete("/{group_id}/signals/{signal_id}", response_model=bool, **user_group_defaults)
820823
async def remove_signal_from_group(
821824
group_id: Annotated[int, Path(description="The ID of the user group")],
822825
signal_id: Annotated[int, Path(description="The ID of the signal to remove")],
@@ -847,7 +850,7 @@ async def remove_signal_from_group(
847850
return True
848851

849852

850-
@router.post("/{group_id}/signals/{signal_id}/collaborators", response_model=bool, dependencies=[Depends(require_admin)])
853+
@router.post("/{group_id}/signals/{signal_id}/collaborators", response_model=bool, **user_group_defaults)
851854
async def add_collaborator_to_signal_by_email(
852855
group_id: Annotated[int, Path(description="The ID of the user group")],
853856
signal_id: Annotated[int, Path(description="The ID of the signal")],
@@ -891,7 +894,7 @@ async def add_collaborator_to_signal_by_email(
891894
return True
892895

893896

894-
@router.post("/{group_id}/signals/{signal_id}/collaborators/{user_id_or_email}", response_model=bool, dependencies=[Depends(require_admin)])
897+
@router.post("/{group_id}/signals/{signal_id}/collaborators/{user_id_or_email}", response_model=bool, **user_group_defaults)
895898
async def add_collaborator_to_signal_in_group(
896899
request: Request,
897900
group_id: Annotated[int, Path(description="The ID of the user group")],
@@ -1000,7 +1003,7 @@ async def add_collaborator_to_signal_in_group(
10001003
raise
10011004

10021005

1003-
@router.delete("/{group_id}/signals/{signal_id}/collaborators/{user_id_or_email}", response_model=bool, dependencies=[Depends(require_admin)])
1006+
@router.delete("/{group_id}/signals/{signal_id}/collaborators/{user_id_or_email}", response_model=bool, **user_group_defaults)
10041007
async def remove_collaborator_from_signal_in_group(
10051008
group_id: Annotated[int, Path(description="The ID of the user group")],
10061009
signal_id: Annotated[int, Path(description="The ID of the signal")],

src/routers/users.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
router = APIRouter(prefix="/users", tags=["users"])
1818

1919

20-
@router.get("/search", response_model=UserPage, dependencies=[Depends(require_admin)])
20+
@router.get("/search", response_model=UserPage,
21+
# dependencies=[Depends(require_admin)]
22+
)
2123
async def search_users(
2224
filters: Annotated[UserFilters, Query()],
2325
cursor: AsyncCursor = Depends(db.yield_cursor),

0 commit comments

Comments
 (0)