For impersonating access tokens, store impersonatee in the new column

This way, we don't need an index on both columns
This commit is contained in:
Max Brunsfeld 2024-01-17 17:58:59 -08:00
parent 69bff7bb77
commit 9f04fd9019
8 changed files with 38 additions and 45 deletions

View file

@ -156,13 +156,11 @@ async fn create_access_token(
.await?
.ok_or_else(|| anyhow!("user not found"))?;
let mut user_id = user.id;
let mut impersonator_id = None;
let mut impersonated_user_id = None;
if let Some(impersonate) = params.impersonate {
if user.admin {
if let Some(impersonated_user) = app.db.get_user_by_github_login(&impersonate).await? {
impersonator_id = Some(user_id);
user_id = impersonated_user.id;
impersonated_user_id = Some(impersonated_user.id);
} else {
return Err(Error::Http(
StatusCode::UNPROCESSABLE_ENTITY,
@ -177,12 +175,13 @@ async fn create_access_token(
}
}
let access_token = auth::create_access_token(app.db.as_ref(), user_id, impersonator_id).await?;
let access_token =
auth::create_access_token(app.db.as_ref(), user_id, impersonated_user_id).await?;
let encrypted_access_token =
auth::encrypt_access_token(&access_token, params.public_key.clone())?;
Ok(Json(CreateAccessTokenResponse {
user_id,
user_id: impersonated_user_id.unwrap_or(user_id),
encrypted_access_token,
}))
}