From c9544e7c9cbbe2767d21aacad7049217a0fdc344 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Tue, 19 Jan 2021 17:27:54 +0100 Subject: [PATCH] Can get security settings --- src/api_data/mod.rs | 3 ++- src/api_data/security_settings_api.rs | 29 ++++++++++++++++++++++++++ src/controllers/routes.rs | 1 + src/controllers/settings_controller.rs | 10 +++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/api_data/security_settings_api.rs diff --git a/src/api_data/mod.rs b/src/api_data/mod.rs index 9d723e9..490dca5 100644 --- a/src/api_data/mod.rs +++ b/src/api_data/mod.rs @@ -52,4 +52,5 @@ pub mod user_like_api; pub mod survey_response_api; pub mod entities_constructor; pub mod general_settings_api; -pub mod language_settings_api; \ No newline at end of file +pub mod language_settings_api; +pub mod security_settings_api; \ No newline at end of file diff --git a/src/api_data/security_settings_api.rs b/src/api_data/security_settings_api.rs new file mode 100644 index 0000000..a571b44 --- /dev/null +++ b/src/api_data/security_settings_api.rs @@ -0,0 +1,29 @@ +//! # Security settings API +//! +//! @author Pierre Hubert + +use serde::Serialize; + +use crate::data::user::User; + +#[derive(Serialize)] +#[allow(non_snake_case)] +pub struct SecuritySettingsAPI { + id: u64, + security_question_1: String, + security_answer_1: String, + security_question_2: String, + security_answer_2: String, +} + +impl SecuritySettingsAPI { + pub fn new(user: &User) -> SecuritySettingsAPI { + SecuritySettingsAPI { + id: user.id.id(), + security_question_1: user.security_question_1.clone().unwrap_or(String::new()), + security_answer_1: user.security_answer_1.clone().unwrap_or(String::new()), + security_question_2: user.security_question_2.clone().unwrap_or(String::new()), + security_answer_2: user.security_answer_2.clone().unwrap_or(String::new()), + } + } +} \ No newline at end of file diff --git a/src/controllers/routes.rs b/src/controllers/routes.rs index 05038d5..e5df7da 100644 --- a/src/controllers/routes.rs +++ b/src/controllers/routes.rs @@ -98,6 +98,7 @@ pub fn get_routes() -> Vec { Route::post("/settings/check_user_directory_availability", Box::new(settings_controller::check_virtual_directory)), Route::post("/settings/get_language", Box::new(settings_controller::get_language)), Route::post("/settings/set_language", Box::new(settings_controller::set_language)), + Route::post("/settings/get_security", Box::new(settings_controller::get_security)), // Friends controller Route::post("/friends/getList", Box::new(friends_controller::get_list)), diff --git a/src/controllers/settings_controller.rs b/src/controllers/settings_controller.rs index baf7a65..c7bb7b3 100644 --- a/src/controllers/settings_controller.rs +++ b/src/controllers/settings_controller.rs @@ -4,6 +4,7 @@ use crate::api_data::general_settings_api::GeneralSettingsAPI; use crate::api_data::language_settings_api::LanguageSettingsAPI; +use crate::api_data::security_settings_api::SecuritySettingsAPI; use crate::constants::SUPPORTED_LANGUAGES; use crate::controllers::routes::RequestResult; use crate::data::general_settings::GeneralSettings; @@ -83,4 +84,13 @@ pub fn set_language(r: &mut HttpRequestHandler) -> RequestResult { account_helper::set_language_settings(&new_settings)?; r.success("Language settings updated.") +} + +/// Get security settings +pub fn get_security(r: &mut HttpRequestHandler) -> RequestResult { + r.need_user_password("password")?; + + let user = user_helper::find_user_by_id(r.user_id_ref()?)?; + + r.set_response(SecuritySettingsAPI::new(&user)) } \ No newline at end of file