From 29bd670a576a8eced107fddd5f59076d199bfaf2 Mon Sep 17 00:00:00 2001 From: reidlab Date: Wed, 6 Sep 2023 17:10:46 -0700 Subject: [PATCH] update account settings is real! --- readme.md | 2 +- src/endpoints/accounts.rs | 3 +- .../accounts/update_account_settings.rs | 63 +++++++++++++++++++ src/endpoints/levels/upload_level.rs | 4 +- src/main.rs | 1 + 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 src/endpoints/accounts/update_account_settings.rs diff --git a/readme.md b/readme.md index bf88c5a..901b43d 100644 --- a/readme.md +++ b/readme.md @@ -39,4 +39,4 @@ _these features are implemented_ - in our level parsing, check for dual portals rather than just starting dual - green name users... - add more old endpoints -- add events, weekly, daily \ No newline at end of file +- better support for older versions \ No newline at end of file diff --git a/src/endpoints/accounts.rs b/src/endpoints/accounts.rs index fca82a6..0ec14fd 100644 --- a/src/endpoints/accounts.rs +++ b/src/endpoints/accounts.rs @@ -1,2 +1,3 @@ pub mod login_account; -pub mod register_account; \ No newline at end of file +pub mod register_account; +pub mod update_account_settings; \ No newline at end of file diff --git a/src/endpoints/accounts/update_account_settings.rs b/src/endpoints/accounts/update_account_settings.rs new file mode 100644 index 0000000..23b3fff --- /dev/null +++ b/src/endpoints/accounts/update_account_settings.rs @@ -0,0 +1,63 @@ +use rocket::form::Form; +use rocket::http::Status; +use rocket::response::status; + +use diesel::prelude::*; + +use crate::helpers; +use crate::db; + +#[derive(FromForm)] +pub struct FormUpdateAccountSettings { + accountID: i32, + + mS: i32, + frS: i32, + cS: i32, + + yt: String, + twitter: String, + twitch: String, + + password: Option, + gjp: Option, + gjp2: Option, +} + +#[post("/updateGJAccSettings20.php", data = "")] +pub fn update_account_settings(input: Form) -> status::Custom<&'static str> { + let connection = &mut db::establish_connection_pg(); + + // account verification + let (_user_id_val, account_id_val): (i32, i32); + + // password argument is used for the level, so + match helpers::accounts::auth(input.accountID.clone(), input.password.clone(), input.gjp.clone(), input.gjp2.clone()) { + Ok((user_id, account_id)) => { + _user_id_val = user_id; + account_id_val = account_id; + }, + Err(_) => return status::Custom(Status::Ok, "-1") + }; + + use crate::models::Account; + + { + use crate::schema::accounts::dsl::*; + + diesel::update(accounts) + .filter(id.eq(account_id_val)) + .set(( + messages_enabled.eq(input.mS.clamp(0, 2)), + friend_requests_enabled.eq(input.frS.clamp(0, 1)), + comments_enabled.eq(input.cS.clamp(0, 2)), + youtube_url.eq(input.yt.chars().take(20).collect::()), + twitch_url.eq(input.twitch.chars().take(25).collect::()), + twitter_url.eq(input.twitter.chars().take(15).collect::()) + )) + .get_result::(connection) + .expect("failed to update account"); + } + + return status::Custom(Status::Ok, "1") +} \ No newline at end of file diff --git a/src/endpoints/levels/upload_level.rs b/src/endpoints/levels/upload_level.rs index 347d6c7..5544124 100644 --- a/src/endpoints/levels/upload_level.rs +++ b/src/endpoints/levels/upload_level.rs @@ -164,7 +164,7 @@ pub fn upload_level(input: Form) -> status::Custom<&'static str Some(requested_stars_val) => requested_stars_val.clamp(0, 10), None => 0 }, - unlisted: input.unlisted.unwrap_or(0), + unlisted: input.unlisted.unwrap_or(0).clamp(0, 1), version: input.levelVersion, extra_data: extra_string.as_bytes().to_owned(), level_info: input.levelInfo.clone().into_bytes(), @@ -175,7 +175,7 @@ pub fn upload_level(input: Form) -> status::Custom<&'static str length_real: level_length_secs, objects: objects_val as i32, coins: coins_val as i32, - has_ldm: input.ldm.unwrap_or(0), + has_ldm: input.ldm.unwrap_or(0).clamp(0, 1), two_player: two_player_val }; diff --git a/src/main.rs b/src/main.rs index d9dfe45..d46c0dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,6 +35,7 @@ fn rocket() -> _ { .mount(CONFIG.general.append_path.as_str(), routes![ endpoints::accounts::login_account::login_account, endpoints::accounts::register_account::register_account, + endpoints::accounts::update_account_settings::update_account_settings, endpoints::users::get_users::get_users,