From 528dd6ae5b8b640900ac7d10a4901dd59a5450dc Mon Sep 17 00:00:00 2001 From: Zack Fu Zi Xiang Date: Thu, 21 Mar 2024 14:01:48 +0800 Subject: [PATCH] feat: email redirect to invite page --- 2 | 0 admin_frontend/src/web_api.rs | 4 +-- admin_frontend/templates/pages/login.html | 10 ++++--- src/api/workspace.rs | 1 - src/biz/workspace/ops.rs | 33 +++++------------------ 5 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 2 diff --git a/2 b/2 deleted file mode 100644 index e69de29b..00000000 diff --git a/admin_frontend/src/web_api.rs b/admin_frontend/src/web_api.rs index 3eed0e94..e128b9bc 100644 --- a/admin_frontend/src/web_api.rs +++ b/admin_frontend/src/web_api.rs @@ -28,11 +28,11 @@ pub fn router() -> Router { Router::new() .route("/signin", post(sign_in_handler)) .route("/signup", post(sign_up_handler)) - .route("/login_refresh/:refresh_token", post(login_refresh_handler)) + .route("/login-refresh/:refresh_token", post(login_refresh_handler)) .route("/logout", post(logout_handler)) // user - .route("/change_password", post(change_password_handler)) + .route("/change-password", post(change_password_handler)) .route("/oauth_login/:provider", post(post_oauth_login_handler)) .route("/invite", post(invite_handler)) .route("/workspace/:workspace_id/invite", post(workspace_invite_handler)) diff --git a/admin_frontend/templates/pages/login.html b/admin_frontend/templates/pages/login.html index 4722299e..b52e011d 100644 --- a/admin_frontend/templates/pages/login.html +++ b/admin_frontend/templates/pages/login.html @@ -107,13 +107,14 @@ {% endblock %} diff --git a/src/api/workspace.rs b/src/api/workspace.rs index 17dd51f9..6a4d43fe 100644 --- a/src/api/workspace.rs +++ b/src/api/workspace.rs @@ -250,7 +250,6 @@ async fn post_workspace_invite_handler( let invited_members = payload.into_inner(); workspace::ops::invite_workspace_members( &state.pg_pool, - &state.gotrue_admin, &state.gotrue_client, &user_uuid, &workspace_id, diff --git a/src/biz/workspace/ops.rs b/src/biz/workspace/ops.rs index 2b9b6d2b..cf83346c 100644 --- a/src/biz/workspace/ops.rs +++ b/src/biz/workspace/ops.rs @@ -21,7 +21,7 @@ use database_entity::dto::{ WorkspaceUsage, }; -use gotrue::params::InviteUserParams; +use gotrue::params::{InviteUserParams, MagicLinkParams}; use shared_entity::dto::workspace_dto::{ CreateWorkspaceMember, WorkspaceMemberChangeset, WorkspaceMemberInvitation, }; @@ -164,7 +164,6 @@ pub async fn accept_workspace_invite( #[instrument(level = "debug", skip_all, err)] pub async fn invite_workspace_members( pg_pool: &PgPool, - gotrue_admin: &GoTrueAdmin, gotrue_client: &gotrue::api::Client, inviter: &Uuid, workspace_id: &Uuid, @@ -175,36 +174,16 @@ pub async fn invite_workspace_members( .await .context("Begin transaction to invite workspace members")?; - let admin_token = gotrue_admin.token(gotrue_client).await?; for invitation in invitations { - match gotrue_client - .admin_invite_user( - &admin_token, - &InviteUserParams { + gotrue_client + .magic_link( + &MagicLinkParams { email: invitation.email.clone(), ..Default::default() }, + Some("/web/home#invite".to_owned()), ) - .await - { - Ok(new_user) => { - info!( - "Invited new user: {:?} to workspace: {:?}", - new_user, workspace_id - ); - }, - Err(err) => match err { - app_error::gotrue::GoTrueError::Internal(ref err_serde) => { - match (err_serde.code, err_serde.msg.as_str()) { - (422, "A user with this email address has already been registered") => { - info!("User already exists, skipping invite"); - }, - _ => return Err(AppError::Internal(err.into())), - } - }, - _ => return Err(err.into()), - }, - } + .await?; // Generate a link such that when clicked, the user is added to the workspace. insert_workspace_invitation(