aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/controllers/users_controller.rs16
-rw-r--r--src/models/user.rs5
-rw-r--r--templates/users.html6
3 files changed, 26 insertions, 1 deletions
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<rocket::request::FlashMessage>, conn: utils::DbConn) -> u
}
}
+#[get("/<id>/delete")]
+fn delete(id: i32, route: &rocket::Route, conn: utils::DbConn) -> Flash<Redirect> {
+ 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<RegisterUserForm>, route: &rocket::Route, conn: utils::DbCo
}
pub fn routes() -> Vec<rocket::Route> {
- 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<User> {
+ use ::schema::users::dsl::*;
+ diesel::delete(users.filter(id.eq(user_id))).get_result::<User>(&*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 @@
<th>username</th>
<th>real name</th>
<th>email</th>
+ <th>action</th>
</tr>
{{# users }}
<tr>
@@ -11,6 +12,11 @@
<td>{{ .username }}</td>
<td>{{ .realname() }}</td>
<td>{{ .email() }}</td>
+ <td><a href="/users/{{ .id }}/delete" id="delete_user">Delete</a></td>
</tr>
{{/ users }}
</table>
+
+<div class="actions">
+ <a href="/users/new" id="new_user">Create new user</a>
+</div>