diff options
| author | Yannick Ulrich <yannick.ulrich@durham.ac.uk> | 2023-05-16 22:00:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-16 22:00:59 +0100 |
| commit | 7b9dea72e3d2435f75825e8e66a04285332d5aa5 (patch) | |
| tree | e2b9ae2f8df86105b09547a55dc7ac455a55c0c8 /atuin-server/src/handlers | |
| parent | Include bash preexec warning (#983) (diff) | |
| download | atuin-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.rs | 19 |
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>>, |
