feat: admin frontend delete account button

This commit is contained in:
Zack Fu Zi Xiang 2024-09-03 02:24:38 +08:00
parent 95460924f8
commit de8f992377
No known key found for this signature in database
5 changed files with 34 additions and 15 deletions

View File

@ -278,3 +278,18 @@ pub async fn verify_token_cloud(
let _: SignInTokenResponse = from_json_response(resp).await?;
Ok(())
}
pub async fn delete_current_user(
access_token: &str,
appflowy_cloud_base_url: &str,
) -> Result<(), Error> {
let http_client = reqwest::Client::new();
let url = format!("{}/api/user", appflowy_cloud_base_url);
let resp = http_client
.delete(url)
.header("Authorization", format!("Bearer {}", access_token))
.send()
.await?;
check_response(resp).await?;
Ok(())
}

View File

@ -27,13 +27,6 @@ pub struct WorkspaceMember {
pub role: String,
}
#[derive(Deserialize)]
pub struct WorkspaceUsageLimit {
pub total_blob_size: i64,
pub single_blob_size: i64,
pub member_count: i64,
}
#[derive(Deserialize, Serialize)]
pub struct WorkspaceBlobUsage {
pub consumed_capacity: u64,

View File

@ -1,13 +1,6 @@
use axum::response::{IntoResponse, Response};
use serde::Deserialize;
use shared_entity::response::AppResponseError;
#[derive(Deserialize, Debug)]
pub struct AppFlowyCloudError {
pub code: String,
pub message: String,
}
#[derive(Debug)]
pub enum Error {
NotOk(u16, String), // HTTP status code, payload

View File

@ -1,6 +1,7 @@
use crate::error::WebApiError;
use crate::ext::api::{
accept_workspace_invitation, invite_user_to_workspace, leave_workspace, verify_token_cloud,
accept_workspace_invitation, delete_current_user, invite_user_to_workspace, leave_workspace,
verify_token_cloud,
};
use crate::models::{
WebApiAdminCreateUserRequest, WebApiChangePasswordRequest, WebApiCreateSSOProviderRequest,
@ -39,6 +40,7 @@ pub fn router() -> Router<AppState> {
.route("/workspace/:workspace_id/leave", post(leave_workspace_handler))
.route("/invite/:invite_id/accept", post(invite_accept_handler))
.route("/open_app", post(open_app_handler))
.route("/delete-account", delete(delete_account_handler))
// admin
.route("/admin/user", post(admin_add_user_handler))
@ -115,6 +117,15 @@ async fn open_app_handler(session: UserSession) -> Result<HeaderMap, WebApiError
Ok(htmx_redirect(&app_sign_in_url))
}
/// Delete the user account and all associated data.
async fn delete_account_handler(
state: State<AppState>,
session: UserSession,
) -> Result<HeaderMap, WebApiError<'static>> {
delete_current_user(&session.token.access_token, &state.appflowy_cloud_url).await?;
Ok(htmx_redirect("/web/login"))
}
// Invite another user, this will trigger email sending
// to the target user
async fn invite_handler(

View File

@ -10,6 +10,13 @@
>
{{ user.email|escape }}
</div>
<div
hx-delete="/web-api/delete-account"
hx-confirm="This will erase all data associated with this account. Are you sure?"
class="button red"
>
Delete Account
</div>
</div>
<div id="top-menu-bar-right">