1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-06-20 16:35:17 +00:00

Can update data conservation policy

This commit is contained in:
2021-02-15 19:29:43 +01:00
parent 3e73a0376b
commit aa8916b8f2
7 changed files with 93 additions and 1 deletions

View File

@ -8,12 +8,13 @@ use crate::api_data::general_settings_api::GeneralSettingsAPI;
use crate::api_data::language_settings_api::LanguageSettingsAPI;
use crate::api_data::res_create_custom_emoji::ResCreateCustomEmoji;
use crate::api_data::security_settings_api::SecuritySettingsAPI;
use crate::constants::SUPPORTED_LANGUAGES;
use crate::constants::{conservation_policy, SUPPORTED_LANGUAGES};
use crate::data::base_request_handler::BaseRequestHandler;
use crate::data::general_settings::GeneralSettings;
use crate::data::http_request_handler::HttpRequestHandler;
use crate::data::lang_settings::LangSettings;
use crate::data::new_custom_emoji::NewCustomEmoji;
use crate::data::new_data_conservation_policy::NewDataConservationPolicy;
use crate::data::security_settings::{SecurityQuestion, SecuritySettings};
use crate::data::user::{AccountImageVisibility, UserPageStatus};
use crate::helpers::{account_helper, custom_emojies_helper, user_helper};
@ -210,4 +211,47 @@ pub fn get_data_conservation_policy(r: &mut HttpRequestHandler) -> RequestResult
let user = user_helper::find_user_by_id(r.user_id_ref()?)?;
r.set_response(DataConservationSettingsAPI::new(&user))
}
/// Set data conservation policy
pub fn set_data_conservation_policy(r: &mut HttpRequestHandler) -> RequestResult {
let policy = NewDataConservationPolicy {
user_id: r.user_id()?,
delete_account_after: r.post_positive_u64_opt("inactive_account_lifetime")?,
delete_notifications_after: r.post_positive_u64_opt("notification_lifetime")?,
delete_comments_after: r.post_positive_u64_opt("comments_lifetime")?,
delete_posts_after: r.post_positive_u64_opt("posts_lifetime")?,
delete_conversation_messages_after: r.post_positive_u64_opt("conversation_messages_lifetime")?,
delete_likes_after: r.post_positive_u64_opt("likes_lifetime")?,
};
// Check policy is respected
if policy.delete_account_after.map(|f| f < conservation_policy::MIN_INACTIVE_ACCOUNT_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for inactive account !".to_string())?;
}
if policy.delete_notifications_after.map(|f| f < conservation_policy::MIN_NOTIFICATIONS_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for notifications !".to_string())?;
}
if policy.delete_comments_after.map(|f| f < conservation_policy::MIN_COMMENTS_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for comments !".to_string())?;
}
if policy.delete_posts_after.map(|f| f < conservation_policy::MIN_POSTS_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for posts !".to_string())?;
}
if policy.delete_conversation_messages_after.map(|f| f < conservation_policy::MIN_CONVERSATION_MESSAGES_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for conversation messages !".to_string())?;
}
if policy.delete_likes_after.map(|f| f < conservation_policy::MIN_LIKES_LIFETIME.as_secs()) == Some(true) {
r.bad_request("Invalid lifetime for likes !".to_string())?;
}
account_helper::set_data_conservation_policy(policy)?;
r.success("Successfully updated data conservation policy!")
}