From a1bba63fae68e7e6a680b14b674d9c47dfcf4862 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 31 Jul 2018 20:12:07 +0200 Subject: Implement deleting users. --- src/controllers/users_controller.rs | 16 +++++++++++++++- src/models/user.rs | 5 +++++ templates/users.html | 6 ++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/controllers/users_controller.rs b/src/controllers/users_controller.rs index b2ba308..87a0b16 100644 --- a/src/controllers/users_controller.rs +++ b/src/controllers/users_controller.rs @@ -22,6 +22,20 @@ fn index(flash: Option, conn: utils::DbConn) -> u } } +#[get("//delete")] +fn delete(id: i32, route: &rocket::Route, conn: utils::DbConn) -> Flash { + match ::models::User::delete(id, conn) { + Ok(user) => Flash::success( + Redirect::to(route.base.path()), + format!("User {} was successfully deleted.", user.username) + ), + Err(msg) => Flash::error( + Redirect::to(route.base.path()), + format!("Error deleting user: {}", msg) + ) + } +} + #[derive(BartDisplay)] #[template = "templates/new_user.html"] pub struct NewUserTemplate { @@ -80,5 +94,5 @@ fn create(user: Form, route: &rocket::Route, conn: utils::DbCo } pub fn routes() -> Vec { - routes![index, new, create] + routes![index, new, create, delete] } diff --git a/src/models/user.rs b/src/models/user.rs index 0345e92..9587fd3 100644 --- a/src/models/user.rs +++ b/src/models/user.rs @@ -38,6 +38,11 @@ impl User { .get_result(&*conn) } + pub fn delete(user_id: i32, conn: utils::DbConn) -> QueryResult { + use ::schema::users::dsl::*; + diesel::delete(users.filter(id.eq(user_id))).get_result::(&*conn) + } + pub fn realname(&self) -> String { self.realname.as_ref().unwrap_or(&String::new()).clone() } diff --git a/templates/users.html b/templates/users.html index 8490311..4656e88 100644 --- a/templates/users.html +++ b/templates/users.html @@ -4,6 +4,7 @@ username real name email + action {{# users }} @@ -11,6 +12,11 @@ {{ .username }} {{ .realname() }} {{ .email() }} + Delete {{/ users }} + + -- cgit v1.2.3