@@ -62,18 +62,11 @@ def read_clients(
6262 )
6363
6464 count_statement = (
65- select (func .count ())
66- .select_from (User )
67- .where (User .user_type == "client" )
65+ select (func .count ()).select_from (User ).where (User .user_type == "client" )
6866 )
6967 count = session .exec (count_statement ).one ()
7068
71- statement = (
72- select (User )
73- .where (User .user_type == "client" )
74- .offset (skip )
75- .limit (limit )
76- )
69+ statement = select (User ).where (User .user_type == "client" ).offset (skip ).limit (limit )
7770 users = session .exec (statement ).all ()
7871
7972 return UsersPublic (data = users , count = count )
@@ -207,6 +200,48 @@ def register_user(session: SessionDep, user_in: UserRegister) -> Any:
207200 return user
208201
209202
203+ @router .get ("/organization-members" , response_model = UsersPublic )
204+ def get_organization_members (
205+ session : SessionDep ,
206+ current_user : CurrentUser ,
207+ skip : int = 0 ,
208+ limit : int = 100 ,
209+ ) -> Any :
210+ """
211+ Get all members of the current user's organization.
212+ Accessible by team members to see their organization members.
213+ """
214+ if getattr (current_user , "user_type" , None ) != "team_member" :
215+ raise HTTPException (
216+ status_code = 403 , detail = "Only team members can view organization members"
217+ )
218+
219+ if not current_user .organization_id :
220+ raise HTTPException (
221+ status_code = 400 ,
222+ detail = "You must be part of an organization to view members" ,
223+ )
224+
225+ count_statement = (
226+ select (func .count ())
227+ .select_from (User )
228+ .where (User .organization_id == current_user .organization_id )
229+ .where (User .user_type == "team_member" )
230+ )
231+ count = session .exec (count_statement ).one ()
232+
233+ statement = (
234+ select (User )
235+ .where (User .organization_id == current_user .organization_id )
236+ .where (User .user_type == "team_member" )
237+ .offset (skip )
238+ .limit (limit )
239+ )
240+ users = session .exec (statement ).all ()
241+
242+ return UsersPublic (data = users , count = count )
243+
244+
210245@router .get ("/pending" , response_model = UsersPublic )
211246def get_pending_users (
212247 session : SessionDep ,
@@ -219,7 +254,9 @@ def get_pending_users(
219254 Accessible by team members to invite people to their organization.
220255 """
221256 if getattr (current_user , "user_type" , None ) != "team_member" :
222- raise HTTPException (status_code = 403 , detail = "Only team members can invite users" )
257+ raise HTTPException (
258+ status_code = 403 , detail = "Only team members can invite users"
259+ )
223260
224261 from sqlmodel import select
225262
@@ -255,7 +292,10 @@ def assign_user_to_organization(
255292 Team members can assign users to their own organization.
256293 Superusers can assign to any organization.
257294 """
258- if getattr (current_user , "user_type" , None ) != "team_member" and not current_user .is_superuser :
295+ if (
296+ getattr (current_user , "user_type" , None ) != "team_member"
297+ and not current_user .is_superuser
298+ ):
259299 raise HTTPException (status_code = 403 , detail = "Not enough permissions" )
260300
261301 user = session .get (User , user_id )
@@ -269,11 +309,15 @@ def assign_user_to_organization(
269309 else :
270310 # Team members assign to their own organization
271311 if not current_user .organization_id :
272- raise HTTPException (status_code = 400 , detail = "You must be part of an organization to invite others" )
312+ raise HTTPException (
313+ status_code = 400 ,
314+ detail = "You must be part of an organization to invite others" ,
315+ )
273316 target_org_id = current_user .organization_id
274317
275318 # Verify organization exists
276319 from app .models import Organization
320+
277321 org = session .get (Organization , target_org_id )
278322 if not org :
279323 raise HTTPException (status_code = 404 , detail = "Organization not found" )
0 commit comments