aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-server/src/handlers
diff options
context:
space:
mode:
authorYannick Ulrich <yannick.ulrich@durham.ac.uk>2023-05-16 22:00:59 +0100
committerGitHub <noreply@github.com>2023-05-16 22:00:59 +0100
commit7b9dea72e3d2435f75825e8e66a04285332d5aa5 (patch)
treee2b9ae2f8df86105b09547a55dc7ac455a55c0c8 /atuin-server/src/handlers
parentInclude bash preexec warning (#983) (diff)
downloadatuin-7b9dea72e3d2435f75825e8e66a04285332d5aa5.zip
feat: add delete account option (attempt 2) (#980)
* Added DELETE register endpoint * Added remove function to database * Added unregister to client * Updated docs * Renamed functions * Reformatting * Used execute instead of fetch in delete_user
Diffstat (limited to 'atuin-server/src/handlers')
-rw-r--r--atuin-server/src/handlers/user.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/atuin-server/src/handlers/user.rs b/atuin-server/src/handlers/user.rs
index 89aa0601..ec2131e1 100644
--- a/atuin-server/src/handlers/user.rs
+++ b/atuin-server/src/handlers/user.rs
@@ -18,7 +18,7 @@ use uuid::Uuid;
use super::{ErrorResponse, ErrorResponseStatus, RespExt};
use crate::{
database::Database,
- models::{NewSession, NewUser},
+ models::{NewSession, NewUser, User},
router::AppState,
};
@@ -138,6 +138,23 @@ pub async fn register<DB: Database>(
}
}
+#[instrument(skip_all, fields(user.id = user.id))]
+pub async fn delete<DB: Database>(
+ user: User,
+ state: State<AppState<DB>>,
+) -> Result<Json<DeleteUserResponse>, ErrorResponseStatus<'static>> {
+ debug!("request to delete user {}", user.id);
+
+ let db = &state.0.database;
+ if let Err(e) = db.delete_user(&user).await {
+ error!("failed to delete user: {}", e);
+
+ return Err(ErrorResponse::reply("failed to delete user")
+ .with_status(StatusCode::INTERNAL_SERVER_ERROR));
+ };
+ Ok(Json(DeleteUserResponse {}))
+}
+
#[instrument(skip_all, fields(user.username = login.username.as_str()))]
pub async fn login<DB: Database>(
state: State<AppState<DB>>,