feat: admin frontend delete account button
This commit is contained in:
parent
95460924f8
commit
de8f992377
|
|
@ -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(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
Loading…
Reference in New Issue