Account deletion

Fixes #182
This commit is contained in:
Bat
2018-09-09 20:49:24 +01:00
parent a3b7d5557b
commit de3707983a
4 changed files with 36 additions and 2 deletions
+1
View File
@@ -123,6 +123,7 @@ fn main() {
routes::user::edit,
routes::user::edit_auth,
routes::user::update,
routes::user::delete,
routes::user::follow,
routes::user::follow_auth,
routes::user::activity_details,
+16 -1
View File
@@ -7,7 +7,7 @@ use atom_syndication::{Entry, FeedBuilder};
use rocket::{
request::LenientForm,
response::{Redirect, Flash, Content},
http::ContentType
http::{ContentType, Cookies}
};
use rocket_contrib::Template;
use serde_json;
@@ -224,6 +224,21 @@ fn update(_name: String, conn: DbConn, user: User, data: LenientForm<UpdateUserF
Redirect::to(uri!(me))
}
#[get("/@/<name>/delete")]
fn delete(name: String, conn: DbConn, user: User, mut cookies: Cookies) -> Redirect {
let account = User::find_by_fqn(&*conn, name.clone()).unwrap();
if user.id == account.id {
account.delete(&*conn);
let cookie = cookies.get_private(AUTH_COOKIE).unwrap();
cookies.remove_private(cookie);
Redirect::to(uri!(super::instance::index))
} else {
Redirect::to(uri!(edit: name = name))
}
}
#[derive(FromForm, Serialize, Validate)]
#[validate(schema(function = "passwords_match", skip_on_field_errors = "false", message = "Passwords are not matching"))]
struct NewUserForm {