Can delete user account

This commit is contained in:
2022-04-08 17:54:51 +02:00
parent 65dac1e923
commit c7d075f94e
5 changed files with 92 additions and 6 deletions

@ -1,7 +1,9 @@
use actix::Addr;
use actix_web::{HttpResponse, Responder, web};
use crate::actors::users_actor::{FindUserByUsername, UsersActor};
use crate::actors::users_actor::{DeleteUserRequest, FindUserByUsername, UsersActor};
use crate::data::current_user::CurrentUser;
use crate::data::user::UserID;
#[derive(serde::Deserialize)]
pub struct FindUserNameReq {
@ -18,4 +20,25 @@ pub async fn find_username(req: web::Form<FindUserNameReq>, users: web::Data<Add
HttpResponse::Ok().json(FindUserResult {
user_id: res.0.map(|r| r.uid)
})
}
}
#[derive(serde::Deserialize)]
pub struct DeleteUserReq {
user_id: UserID,
}
pub async fn delete_user(user: CurrentUser, req: web::Form<DeleteUserReq>,
users: web::Data<Addr<UsersActor>>) -> impl Responder {
if user.uid == req.user_id {
return HttpResponse::BadRequest().body("You can not remove your own account!");
}
let res = users.send(DeleteUserRequest(req.0.user_id)).await.unwrap();
if res.0 {
HttpResponse::Ok().finish()
} else {
HttpResponse::InternalServerError().finish()
}
}