aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 7edc01c..6b0ecec 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -183,6 +183,23 @@ async fn delete(data: Json<LogoutForm>, db: &State<Mutex<DB>>) -> (Status, Resul
}
}
+#[derive(Deserialize)]
+struct UpdateForm {
+ id: UID,
+ session: String,
+ name: String,
+ old_password: String,
+ new_password: String,
+}
+#[post("/update/info", data="<data>", format="json")]
+async fn update_user(data: Json<UpdateForm>, db: &State<Mutex<DB>>) -> (Status, Result<(), Json<String>>) {
+ let mut db = db.lock().await;
+ match db.update_user(data.id, &data.session, data.name.clone(), data.old_password.clone(), data.new_password.clone()).await {
+ Ok(_) => (Status::Ok, Ok(())),
+ Err(n) => (Status::InternalServerError, Err(n.into()))
+ }
+}
+
#[derive(Deserialize, Debug)]
struct TransferForm {
id: UID,
@@ -217,7 +234,7 @@ fn rocket() -> _ {
rocket::build().manage(Mutex::new(DB::load(Config::new())))
.mount("/", routes![index])
- .mount("/user", routes![login, get_users_by_name, get_user_authenticated, get_user, new_user, get_all_users, logout, logout_all, get_sessions, delete])
+ .mount("/user", routes![login, get_users_by_name, get_user_authenticated, get_user, new_user, get_all_users, logout, logout_all, get_sessions, delete, update_user])
.mount("/transfer", routes![transfer_out])
.attach(cors)
} \ No newline at end of file