Skip to content

Commit b043ee9

Browse files
authored
Merge pull request #231 from ecmwf-projects/COPDS-2284-user-email
Add user email to request metadata
2 parents df302d9 + 4b4435e commit b043ee9

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

cads_processing_api_service/auth.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def get_auth_header(pat: str | None = None, jwt: str | None = None) -> tuple[str
7575
)
7676
def authenticate_user(
7777
auth_header: tuple[str, str], portal_header: str | None = None
78-
) -> tuple[str, str | None]:
78+
) -> tuple[str, str | None, str | None]:
7979
"""Verify user authentication.
8080
8181
Verify if the provided authentication header corresponds to a registered user.
@@ -88,7 +88,7 @@ def authenticate_user(
8888
8989
Returns
9090
-------
91-
tuple[str, str | None]
91+
tuple[str, str | None, str | None]
9292
User identifier and role.
9393
9494
Raises
@@ -119,7 +119,8 @@ def authenticate_user(
119119
user: dict[str, str] = response.json()
120120
user_uid: str = user["sub"]
121121
user_role: str | None = user.get("role", None)
122-
return user_uid, user_role
122+
email: str | None = user.get("email", None)
123+
return user_uid, user_role, email
123124

124125

125126
def get_auth_info(
@@ -153,11 +154,12 @@ def get_auth_info(
153154
Raised if none of the expected authentication headers is provided.
154155
"""
155156
auth_header = get_auth_header(pat, jwt)
156-
user_uid, user_role = authenticate_user(auth_header, portal_header)
157+
user_uid, user_role, email = authenticate_user(auth_header, portal_header)
157158
request_origin = REQUEST_ORIGIN[auth_header[0]]
158159
auth_info = models.AuthInfo(
159160
user_uid=user_uid,
160161
user_role=user_role,
162+
email=email,
161163
request_origin=request_origin,
162164
auth_header=auth_header,
163165
portal_header=portal_header,

cads_processing_api_service/clients.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,10 @@ def post_process_execution(
292292
process_id=process_id,
293293
portal=dataset.portal,
294294
qos_tags=dataset.qos_tags,
295-
metadata={"costs": costs},
295+
metadata={
296+
"costs": costs,
297+
"user_data": {"email": auth_info.email},
298+
},
296299
**job_kwargs,
297300
)
298301
dataset_messages = [

cads_processing_api_service/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
class AuthInfo(pydantic.BaseModel):
2626
user_uid: str
2727
user_role: str | None = None
28+
email: str | None = None
2829
request_origin: str
2930
auth_header: tuple[str, str]
3031
portal_header: str | None = None

0 commit comments

Comments
 (0)