Skip to content

Commit 8127289

Browse files
committed
upload_tokens: Fix another detached database session issue
1 parent 05b2fea commit 8127289

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

backend/app/routes/upload_tokens.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ def create_upload_token(
173173
issued_to = login.user
174174
expires_at = issued_at + datetime.timedelta(days=180)
175175

176-
# Create the row in the database
177176
token = models.UploadToken(
178177
comment=request.comment,
179178
app_id=app_id,
@@ -183,18 +182,37 @@ def create_upload_token(
183182
issued_to=issued_to.id,
184183
expires_at=expires_at,
185184
)
185+
186186
with get_db("writer") as db:
187187
db.session.add(token)
188188
db.session.commit()
189-
token_id = token.id
189+
token_details = _token_response(token, issued_to.display_name)
190+
191+
encoded = jwt.encode(
192+
{
193+
"jti": f"backend_{token_details.id}",
194+
"sub": "build",
195+
"scope": request.scopes,
196+
"repos": request.repos,
197+
"prefixes": [app_id],
198+
"iat": issued_at,
199+
"exp": expires_at,
200+
"token_type": "app",
201+
},
202+
base64.b64decode(config.settings.flat_manager_build_secret),
203+
algorithm="HS256",
204+
)
205+
206+
if config.settings.flat_manager_build_token_prefix is not None:
207+
encoded = config.settings.flat_manager_build_token_prefix + encoded
190208

191209
if app_metadata := get_json_key(f"apps:{app_id}"):
192210
app_name = app_metadata["name"]
193211
else:
194212
app_name = None
195213

196214
payload = {
197-
"messageId": f"{app_id}/{token_id}/issued",
215+
"messageId": f"{app_id}/{token_details.id}/issued",
198216
"creation_timestamp": datetime.datetime.now().timestamp(),
199217
"subject": "New upload token issued",
200218
"previewText": "New upload token issued",
@@ -212,28 +230,9 @@ def create_upload_token(
212230

213231
worker.send_email_new.send(payload)
214232

215-
# Create the JWT
216-
encoded = jwt.encode(
217-
{
218-
"jti": jti(token),
219-
"sub": "build",
220-
"scope": request.scopes,
221-
"repos": request.repos,
222-
"prefixes": [app_id],
223-
"iat": issued_at,
224-
"exp": expires_at,
225-
"token_type": "app",
226-
},
227-
base64.b64decode(config.settings.flat_manager_build_secret),
228-
algorithm="HS256",
229-
)
230-
231-
if config.settings.flat_manager_build_token_prefix is not None:
232-
encoded = config.settings.flat_manager_build_token_prefix + encoded
233-
234233
return NewTokenResponse(
235234
token=encoded,
236-
details=_token_response(token, issued_to.display_name),
235+
details=token_details,
237236
)
238237

239238

0 commit comments

Comments
 (0)