Can delete account
This commit is contained in:
parent
85e5be0328
commit
2f3f61b159
@ -115,7 +115,7 @@ pub async fn request_delete_account(remote_ip: RemoteIP, token: LoginToken) -> H
|
||||
}
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
pub struct DeleteTokenBody {
|
||||
pub struct DeleteAccountTokenBody {
|
||||
token: String,
|
||||
}
|
||||
|
||||
@ -125,8 +125,17 @@ struct CheckDeleteTokenResponse {
|
||||
}
|
||||
|
||||
/// Check delete account token
|
||||
pub async fn check_delete_token(req: Json<DeleteTokenBody>) -> HttpResult {
|
||||
let token = users_service::get_by_account_delete_token(&req.token).await?;
|
||||
pub async fn check_delete_token(req: Json<DeleteAccountTokenBody>) -> HttpResult {
|
||||
let user = users_service::get_by_account_delete_token(&req.token).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().json(CheckDeleteTokenResponse { email: token.email }))
|
||||
Ok(HttpResponse::Ok().json(CheckDeleteTokenResponse { email: user.email }))
|
||||
}
|
||||
|
||||
/// Delete account
|
||||
pub async fn delete_account(req: Json<DeleteAccountTokenBody>) -> HttpResult {
|
||||
let user = users_service::get_by_account_delete_token(&req.token).await?;
|
||||
|
||||
users_service::delete_account(&user).await?;
|
||||
|
||||
Ok(HttpResponse::Accepted().finish())
|
||||
}
|
||||
|
@ -70,6 +70,10 @@ async fn main() -> std::io::Result<()> {
|
||||
"/user/check_delete_token",
|
||||
web::post().to(user_controller::check_delete_token),
|
||||
)
|
||||
.route(
|
||||
"/user/delete_account",
|
||||
web::post().to(user_controller::delete_account),
|
||||
)
|
||||
})
|
||||
.bind(AppConfig::get().listen_address.as_str())?
|
||||
.run()
|
||||
|
@ -171,6 +171,18 @@ pub async fn delete_not_validated_accounts() -> anyhow::Result<()> {
|
||||
})
|
||||
}
|
||||
|
||||
/// Delete account
|
||||
pub async fn delete_account(user: &User) -> anyhow::Result<()> {
|
||||
log::info!("Delete account #{:?}", user.id());
|
||||
|
||||
// TODO : remove families memberships
|
||||
|
||||
db_connection::execute(|conn| {
|
||||
diesel::delete(users::dsl::users.filter(users::dsl::id.eq(user.id))).execute(conn)?;
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
||||
/// Mark account as validated
|
||||
pub async fn validate_account(user: &mut User) -> anyhow::Result<()> {
|
||||
if user.time_activate > 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user