Skip to content

Commit 5b0a63e

Browse files
committed
✨ users: Add account request status fields and update user approval/rejection endpoints
1 parent 99e97b5 commit 5b0a63e

File tree

4 files changed

+47
-58
lines changed

4 files changed

+47
-58
lines changed

api/specs/web-server/_users.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ async def approve_user_account(_body: UserApprove): ...
170170
"/admin/users:reject",
171171
status_code=status.HTTP_204_NO_CONTENT,
172172
tags=_extra_tags,
173+
include_in_schema=False, # UNDER DEVELOPMENT
173174
)
174175
async def reject_user_account(_body: UserReject): ...
175176

@@ -178,6 +179,7 @@ async def reject_user_account(_body: UserReject): ...
178179
"/admin/users:resendConfirmationEmail",
179180
status_code=status.HTTP_204_NO_CONTENT,
180181
tags=_extra_tags,
182+
include_in_schema=False, # UNDER DEVELOPMENT
181183
)
182184
async def resend_user_confirmation_email(_body: UserApprove): ...
183185

packages/models-library/src/models_library/api_schemas_webserver/users.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import re
2-
from datetime import date
2+
from datetime import date, datetime
33
from enum import Enum
44
from typing import Annotated, Any, Literal, Self
55

66
import annotated_types
77
from common_library.basic_types import DEFAULT_FACTORY
88
from common_library.dict_tools import remap_keys
9-
from common_library.users_enums import UserStatus
9+
from common_library.users_enums import AccountRequestStatus, UserStatus
1010
from models_library.groups import AccessRightsDict
1111
from models_library.rest_filters import Filters
1212
from models_library.rest_pagination import PageQueryParameters
@@ -303,8 +303,11 @@ class UserForAdminGet(OutputSchema):
303303
),
304304
] = DEFAULT_FACTORY
305305

306-
# authorization
306+
# pre-registration
307307
invited_by: str | None = None
308+
account_request_status: AccountRequestStatus | None
309+
account_request_reviewed_by: UserID | None = None
310+
account_request_reviewed_at: datetime | None = None
308311

309312
# user status
310313
registered: bool

services/web/server/src/simcore_service_webserver/api/v0/openapi.yaml

Lines changed: 35 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,15 +1373,6 @@ paths:
13731373
summary: List Users For Admin
13741374
operationId: list_users_for_admin
13751375
parameters:
1376-
- name: status
1377-
in: query
1378-
required: false
1379-
schema:
1380-
anyOf:
1381-
- const: PENDING
1382-
type: string
1383-
- type: 'null'
1384-
title: Status
13851376
- name: limit
13861377
in: query
13871378
required: false
@@ -1396,6 +1387,15 @@ paths:
13961387
type: integer
13971388
default: 0
13981389
title: Offset
1390+
- name: status
1391+
in: query
1392+
required: false
1393+
schema:
1394+
anyOf:
1395+
- const: PENDING
1396+
type: string
1397+
- type: 'null'
1398+
title: Status
13991399
responses:
14001400
'200':
14011401
description: Successful Response
@@ -1410,42 +1410,6 @@ paths:
14101410
- admin
14111411
summary: Approve User Account
14121412
operationId: approve_user_account
1413-
requestBody:
1414-
content:
1415-
application/json:
1416-
schema:
1417-
$ref: '#/components/schemas/UserApprove'
1418-
required: true
1419-
responses:
1420-
'200':
1421-
description: Successful Response
1422-
content:
1423-
application/json:
1424-
schema:
1425-
$ref: '#/components/schemas/Envelope_Page_UserForAdminGet__'
1426-
/v0/admin/users:reject:
1427-
post:
1428-
tags:
1429-
- users
1430-
- admin
1431-
summary: Reject User Account
1432-
operationId: reject_user_account
1433-
requestBody:
1434-
content:
1435-
application/json:
1436-
schema:
1437-
$ref: '#/components/schemas/UserReject'
1438-
required: true
1439-
responses:
1440-
'204':
1441-
description: Successful Response
1442-
/v0/admin/users:resendConfirmationEmail:
1443-
post:
1444-
tags:
1445-
- users
1446-
- admin
1447-
summary: Resend User Confirmation Email
1448-
operationId: resend_user_confirmation_email
14491413
requestBody:
14501414
content:
14511415
application/json:
@@ -8405,6 +8369,14 @@ components:
84058369
phone: +1 123456789
84068370
postalCode: '98001'
84078371
privacyPolicy: true
8372+
AccountRequestStatus:
8373+
type: string
8374+
enum:
8375+
- PENDING
8376+
- APPROVED
8377+
- REJECTED
8378+
title: AccountRequestStatus
8379+
description: Status of the request for an account
84088380
Activity:
84098381
properties:
84108382
stats:
@@ -17076,6 +17048,23 @@ components:
1707617048
- type: string
1707717049
- type: 'null'
1707817050
title: Invitedby
17051+
accountRequestStatus:
17052+
anyOf:
17053+
- $ref: '#/components/schemas/AccountRequestStatus'
17054+
- type: 'null'
17055+
accountRequestReviewedBy:
17056+
anyOf:
17057+
- type: integer
17058+
exclusiveMinimum: true
17059+
minimum: 0
17060+
- type: 'null'
17061+
title: Accountrequestreviewedby
17062+
accountRequestReviewedAt:
17063+
anyOf:
17064+
- type: string
17065+
format: date-time
17066+
- type: 'null'
17067+
title: Accountrequestreviewedat
1707917068
registered:
1708017069
type: boolean
1708117070
title: Registered
@@ -17104,6 +17093,7 @@ components:
1710417093
- state
1710517094
- postalCode
1710617095
- country
17096+
- accountRequestStatus
1710717097
- registered
1710817098
- status
1710917099
title: UserForAdminGet
@@ -17268,16 +17258,6 @@ components:
1726817258
required:
1726917259
- read
1727017260
title: UserNotificationPatch
17271-
UserReject:
17272-
properties:
17273-
email:
17274-
type: string
17275-
format: email
17276-
title: Email
17277-
type: object
17278-
required:
17279-
- email
17280-
title: UserReject
1728117261
UserStatus:
1728217262
type: string
1728317263
enum:

services/web/server/src/simcore_service_webserver/users/_users_repository.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -840,6 +840,8 @@ async def list_merged_pre_and_registered_users(
840840
users_pre_registration_details.c.extras,
841841
users_pre_registration_details.c.created,
842842
users_pre_registration_details.c.account_request_status,
843+
users_pre_registration_details.c.account_request_reviewed_by,
844+
users_pre_registration_details.c.account_request_reviewed_at,
843845
users.c.id.label("user_id"),
844846
users.c.name.label("user_name"),
845847
users.c.status,
@@ -872,6 +874,8 @@ async def list_merged_pre_and_registered_users(
872874
sa.literal(None).label("extras"),
873875
users.c.created_at.label("created"),
874876
sa.literal(None).label("account_request_status"),
877+
sa.literal(None).label("account_request_reviewed_by"),
878+
sa.literal(None).label("account_request_reviewed_at"),
875879
users.c.id.label("user_id"),
876880
users.c.name.label("user_name"),
877881
users.c.status,

0 commit comments

Comments
 (0)