protected function _getSecureUsers()
{
$credentials = Text::explodeNewLines(trim($this->fluidbookSettings->secureClientSidePasswordCredentials));
- $credentials[] = 'fluidbook:LatacaM4##*';
+ if ($this->fluidbookSettings->secureClientSideMode == '1') {
+ $credentials[] = 'fluidbook';
+ } else {
+ $credentials[] = 'fluidbook:LatacaM4##*';
+ }
$users = [];
foreach ($credentials as $credential) {
$salt = bin2hex(random_bytes(5));
$e = explode(':', $credential);
- if (count($e) <= 1) {
+ if ($this->fluidbookSettings->secureClientSideMode == '0' && count($e) <= 1) {
continue;
}
$usersalt = bin2hex(random_bytes(5));
$user = hash("sha256", $usersalt . '+' . mb_strtolower($e[0]));
- $users[$user] = ['salt' => $salt, 'usersalt' => $usersalt, 'hash' => hash("sha256", $salt . '-' . Text::removeAccents($e[1]))];
+ $u = ['salt' => $salt, 'usersalt' => $usersalt];
+ if (count($e) > 1 && $this->fluidbookSettings->secureClientSideMode != '0') {
+ $u['hash'] = hash("sha256", $salt . '-' . Text::removeAccents($e[1]));
+ }
+ $users[$user] = $u;
+
}
return $users;
}
$variables['FORM_USERNAME'] = $locale['Username'] ?? 'Username';
$variables['FORM_PASSWORD'] = $locale['Password'] ?? 'Password';
$variables['FORM_SIGN_IN'] = $locale['Sign in'] ?? 'Sign in';
- $variables['CODE'] = '
+ if ($this->fluidbookSettings->secureClientSideMode == '0') {
+ $variables['CODE'] = '
$(function(){
$(\'form\').on(\'submit\', function (e) {
e.preventDefault();
return false;
});
});';
+ } else {
+ $variables['CODE'] = '
+ $(function(){
+ $(\'form\').on(\'submit\', function (e) {
+ e.preventDefault();
+
+ var u = $("#username").val().toLowerCase();
+ var error = true;
+ $.each(CREDENTIALS, function (user, data) {
+ let hu = forge_sha256(data.usersalt + \'+\' + u);
+
+ if (hu === user) {
+ error = false;
+ window.sessionStorage.setItem(\'secureUsername\', u);
+ window.location = \'index.html\';
+ }
+ });
+ if (error) {
+ $("#message").text(\'' . addcslashes($locale['User unknown'] ?? 'User unknown', "'") . '\');
+ }
+ return false;
+ });
+ });';
+ }
$variables['CSS'] = $this->fluidbookSettings->secureClientSideStyles;
$this->fluidbookSettings->secureClientSideFont = $this->fluidbookSettings->secureClientSideFont ?: 'OpenSans';
$this->addFontKit($this->fluidbookSettings->secureClientSideFont);
protected function _securePage()
{
$this->addSettingField('section_securepage', FormSection::class, $this->__('Sécurisation par une page de login'));
+ $this->addSettingField('secureClientSideMode', SelectFromArray::class, __('Mode de d\'authentification'), ['default' => '0', 'options' => ['0' => __('Nom d\'utilisateur et un mot de passe'), '1' => __('Nom d\'utilisateur uniquement')]]);
$this->addSettingField('secureClientSidePassword', FilesOrURL::class, __('Template HTML'), [
'v2' => '{"type":"freefile","label":"S\\u00e9curisation par mot de passe c\\u00f4t\\u00e9 client","editable":true,"default":"","grade":3,"fileFilter":{"name":"\\u00a7!\\u00a7Fichier HTML!\\u00a7! (*.html)","extensions":"*.html"}}',
'accept' => self::$acceptHTML,