2021-02-16 18:30:06 +00:00
|
|
|
import 'package:comunic/models/api_request.dart';
|
|
|
|
import 'package:comunic/models/server_config.dart';
|
|
|
|
|
|
|
|
/// Server configuration helper
|
|
|
|
///
|
|
|
|
/// @author Pierre Hubert
|
|
|
|
|
|
|
|
class ServerConfigurationHelper {
|
|
|
|
static ServerConfig _config;
|
|
|
|
|
|
|
|
/// Make sure the configuration has been correctly loaded
|
|
|
|
static Future<void> ensureLoaded() async {
|
|
|
|
if (_config != null) return;
|
|
|
|
|
|
|
|
final response =
|
|
|
|
(await APIRequest.withoutLogin("server/config").execWithThrow())
|
|
|
|
.getObject();
|
|
|
|
|
2021-02-18 17:20:50 +00:00
|
|
|
final passwordPolicy = response["password_policy"];
|
2021-02-16 18:30:06 +00:00
|
|
|
final dataConservationPolicy = response["data_conservation_policy"];
|
|
|
|
|
|
|
|
_config = ServerConfig(
|
2021-02-18 17:20:50 +00:00
|
|
|
passwordPolicy: PasswordPolicy(
|
|
|
|
allowMailInPassword: passwordPolicy["allow_email_in_password"],
|
|
|
|
allowNameInPassword: passwordPolicy["allow_name_in_password"],
|
|
|
|
minPasswordLength: passwordPolicy["min_password_length"],
|
|
|
|
minNumberUpperCaseLetters:
|
|
|
|
passwordPolicy["min_number_upper_case_letters"],
|
|
|
|
minNumberLowerCaseLetters:
|
|
|
|
passwordPolicy["min_number_lower_case_letters"],
|
|
|
|
minNumberDigits: passwordPolicy["min_number_digits"],
|
|
|
|
minNumberSpecialCharacters:
|
|
|
|
passwordPolicy["min_number_special_characters"],
|
|
|
|
minCategoriesPresence: passwordPolicy["min_categories_presence"],
|
|
|
|
),
|
2021-02-16 18:30:06 +00:00
|
|
|
dataConservationPolicy: ServerDataConservationPolicy(
|
|
|
|
minInactiveAccountLifetime:
|
|
|
|
dataConservationPolicy["min_inactive_account_lifetime"],
|
|
|
|
minNotificationLifetime:
|
|
|
|
dataConservationPolicy["min_notification_lifetime"],
|
|
|
|
minCommentsLifetime: dataConservationPolicy["min_comments_lifetime"],
|
|
|
|
minPostsLifetime: dataConservationPolicy["min_posts_lifetime"],
|
|
|
|
minConversationMessagesLifetime:
|
|
|
|
dataConservationPolicy["min_conversation_messages_lifetime"],
|
|
|
|
minLikesLifetime: dataConservationPolicy["min_likes_lifetime"],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Get current server configuration, throwing if it is not loaded yet
|
|
|
|
static ServerConfig get config {
|
|
|
|
if (_config == null)
|
|
|
|
throw Exception(
|
|
|
|
"Trying to access server configuration but it is not loaded yet!");
|
|
|
|
|
|
|
|
return _config;
|
|
|
|
}
|
|
|
|
}
|