From 6c6de08eaaab3c49cb4fb270c69ab9eb024e3a02 Mon Sep 17 00:00:00 2001 From: khorshuheng Date: Thu, 26 Sep 2024 18:00:44 +0800 Subject: [PATCH] fix: access not granted after approval --- ...128f28e239a30fab8891497a28d6b079141f7bf.json} | 4 ++-- libs/database/src/access_request.rs | 2 +- src/biz/access_request/ops.rs | 16 +++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) rename .sqlx/{query-6317de690a65f0cb63e2f9d4889fc929f05df7ccfc0b7cb955787d0f88f91c45.json => query-222344980faea1b159256d6d5128f28e239a30fab8891497a28d6b079141f7bf.json} (92%) diff --git a/.sqlx/query-6317de690a65f0cb63e2f9d4889fc929f05df7ccfc0b7cb955787d0f88f91c45.json b/.sqlx/query-222344980faea1b159256d6d5128f28e239a30fab8891497a28d6b079141f7bf.json similarity index 92% rename from .sqlx/query-6317de690a65f0cb63e2f9d4889fc929f05df7ccfc0b7cb955787d0f88f91c45.json rename to .sqlx/query-222344980faea1b159256d6d5128f28e239a30fab8891497a28d6b079141f7bf.json index ec5bcaf1..e063855e 100644 --- a/.sqlx/query-6317de690a65f0cb63e2f9d4889fc929f05df7ccfc0b7cb955787d0f88f91c45.json +++ b/.sqlx/query-222344980faea1b159256d6d5128f28e239a30fab8891497a28d6b079141f7bf.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n request_id,\n view_id,\n (\n workspace_id,\n af_workspace.database_storage_id,\n af_workspace.owner_uid,\n owner_profile.name,\n af_workspace.created_at,\n af_workspace.workspace_type,\n af_workspace.deleted_at,\n af_workspace.workspace_name,\n af_workspace.icon\n ) AS \"workspace!: AFWorkspaceRow\",\n (\n af_user.uuid,\n af_user.email,\n af_user.name,\n af_user.metadata ->> 'avatar'\n ) AS \"requester!: AFAccessRequesterColumn\",\n status AS \"status: AFAccessRequestStatusColumn\",\n af_access_request.created_at AS created_at\n FROM af_access_request\n JOIN af_user USING (uid)\n JOIN af_workspace USING (workspace_id)\n JOIN af_user AS owner_profile ON af_workspace.owner_uid = owner_profile.uid\n WHERE request_id = $1\n ", + "query": "\n SELECT\n request_id,\n view_id,\n (\n workspace_id,\n af_workspace.database_storage_id,\n af_workspace.owner_uid,\n owner_profile.name,\n af_workspace.created_at,\n af_workspace.workspace_type,\n af_workspace.deleted_at,\n af_workspace.workspace_name,\n af_workspace.icon\n ) AS \"workspace!: AFWorkspaceRow\",\n (\n af_user.uuid,\n af_user.name,\n af_user.email,\n af_user.metadata ->> 'avatar'\n ) AS \"requester!: AFAccessRequesterColumn\",\n status AS \"status: AFAccessRequestStatusColumn\",\n af_access_request.created_at AS created_at\n FROM af_access_request\n JOIN af_user USING (uid)\n JOIN af_workspace USING (workspace_id)\n JOIN af_user AS owner_profile ON af_workspace.owner_uid = owner_profile.uid\n WHERE request_id = $1\n ", "describe": { "columns": [ { @@ -48,5 +48,5 @@ false ] }, - "hash": "6317de690a65f0cb63e2f9d4889fc929f05df7ccfc0b7cb955787d0f88f91c45" + "hash": "222344980faea1b159256d6d5128f28e239a30fab8891497a28d6b079141f7bf" } diff --git a/libs/database/src/access_request.rs b/libs/database/src/access_request.rs index 79e447d8..f5d69702 100644 --- a/libs/database/src/access_request.rs +++ b/libs/database/src/access_request.rs @@ -70,8 +70,8 @@ pub async fn select_access_request_by_request_id<'a, E: Executor<'a, Database = ) AS "workspace!: AFWorkspaceRow", ( af_user.uuid, - af_user.email, af_user.name, + af_user.email, af_user.metadata ->> 'avatar' ) AS "requester!: AFAccessRequesterColumn", status AS "status: AFAccessRequestStatusColumn", diff --git a/src/biz/access_request/ops.rs b/src/biz/access_request/ops.rs index 5f5f60e4..723e7a18 100644 --- a/src/biz/access_request/ops.rs +++ b/src/biz/access_request/ops.rs @@ -87,13 +87,15 @@ pub async fn approve_or_reject_access_request( let mut txn = pg_pool.begin().await.context("approving request")?; let role = AFRole::Member; - upsert_workspace_member_with_txn( - &mut txn, - &access_request.workspace.workspace_id, - &access_request.requester.email, - role, - ) - .await?; + if is_approved { + upsert_workspace_member_with_txn( + &mut txn, + &access_request.workspace.workspace_id, + &access_request.requester.email, + role, + ) + .await?; + } let status = if is_approved { AFAccessRequestStatusColumn::Approved } else {