aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Patrick Crandol <patrick@crandol.com> 2018-11-18 13:34:41 -0500
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2018-11-18 19:34:41 +0100
commitebb9ee0873333c111546412ad08bf5207529f24a (patch)
tree67387066bb14df60973d43a811c51055b09ad7c9 /app
parente20c7ef1b020df492923ca9a445fb8fa172a11dd (diff)
Edit cookie_duration from GUI (#2137)
* Use cookie_duration correctly * WIP allow cookie_duration to be modified from GUI * Allow cookie_duration to actually be updated * Update view to properly display cookie_duration * Add new strings in Translation Files * Fix typo * Fix trailing whitespace * I18n: French translation * I18n fr: Forgot todo
Diffstat (limited to 'app')
-rwxr-xr-xapp/Controllers/configureController.php2
-rw-r--r--app/Models/Auth.php11
-rw-r--r--app/Models/ConfigurationSetter.php3
-rw-r--r--app/i18n/cz/admin.php14
-rw-r--r--app/i18n/de/admin.php4
-rw-r--r--app/i18n/en/admin.php4
-rwxr-xr-xapp/i18n/es/admin.php4
-rw-r--r--app/i18n/fr/admin.php4
-rw-r--r--app/i18n/he/admin.php14
-rw-r--r--app/i18n/it/admin.php4
-rw-r--r--app/i18n/kr/admin.php4
-rw-r--r--app/i18n/nl/admin.php4
-rw-r--r--app/i18n/oc/admin.php4
-rw-r--r--app/i18n/pt-br/admin.php4
-rw-r--r--app/i18n/ru/admin.php4
-rw-r--r--app/i18n/tr/admin.php4
-rw-r--r--app/i18n/zh-cn/admin.php4
-rw-r--r--app/views/configure/system.phtml8
18 files changed, 85 insertions, 15 deletions
diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index 20bcd2e76..9c3900f39 100755
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -308,6 +308,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
* - user limit (default: 1)
* - user category limit (default: 16384)
* - user feed limit (default: 16384)
+ * - user login duration for form auth (default: 2592000)
*/
public function systemAction() {
if (!FreshRSS_Auth::hasAccess('admin')) {
@@ -318,6 +319,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$limits['max_registrations'] = Minz_Request::param('max-registrations', 1);
$limits['max_feeds'] = Minz_Request::param('max-feeds', 16384);
$limits['max_categories'] = Minz_Request::param('max-categories', 16384);
+ $limits['cookie_duration'] = Minz_Request::param('cookie-duration', 2592000);
FreshRSS_Context::$system_conf->limits = $limits;
FreshRSS_Context::$system_conf->title = Minz_Request::param('instance-name', 'FreshRSS');
FreshRSS_Context::$system_conf->auto_update_url = Minz_Request::param('auto-update-url', false);
diff --git a/app/Models/Auth.php b/app/Models/Auth.php
index 8c711308c..d1e26b8e8 100644
--- a/app/Models/Auth.php
+++ b/app/Models/Auth.php
@@ -233,9 +233,10 @@ class FreshRSS_FormAuth {
$token_file = DATA_PATH . '/tokens/' . $token . '.txt';
$mtime = @filemtime($token_file);
- if ($mtime + 2629744 < time()) {
- // Token has expired (> 1 month) or does not exist.
- // TODO: 1 month -> use a configuration instead
+ $limits = $conf->limits;
+ $cookie_duration = empty($limits['cookie_duration']) ? 2592000 : $limits['cookie_duration'];
+ if ($mtime + $cookie_duration < time()) {
+ // Token has expired (> cookie_duration) or does not exist.
@unlink($token_file);
return array();
}
@@ -256,7 +257,7 @@ class FreshRSS_FormAuth {
}
$limits = $conf->limits;
- $cookie_duration = empty($limits['cookie_duration']) ? 2629744 : $limits['cookie_duration'];
+ $cookie_duration = empty($limits['cookie_duration']) ? 2592000 : $limits['cookie_duration'];
$expire = time() + $cookie_duration;
Minz_Session::setLongTermCookie('FreshRSS_login', $token, $expire);
return $token;
@@ -277,7 +278,7 @@ class FreshRSS_FormAuth {
public static function purgeTokens() {
$conf = Minz_Configuration::get('system');
$limits = $conf->limits;
- $cookie_duration = empty($limits['cookie_duration']) ? 2629744 : $limits['cookie_duration'];
+ $cookie_duration = empty($limits['cookie_duration']) ? 2592000 : $limits['cookie_duration'];
$oldest = time() - $cookie_duration;
foreach (new DirectoryIterator(DATA_PATH . '/tokens/') as $file_info) {
// $extension = $file_info->getExtension(); doesn't work in PHP < 5.3.7
diff --git a/app/Models/ConfigurationSetter.php b/app/Models/ConfigurationSetter.php
index ad703dfc5..ec6380df4 100644
--- a/app/Models/ConfigurationSetter.php
+++ b/app/Models/ConfigurationSetter.php
@@ -335,6 +335,9 @@ class FreshRSS_ConfigurationSetter {
private function _limits(&$data, $values) {
$max_small_int = 16384;
$limits_keys = array(
+ 'cookie_duration' => array(
+ 'min' => 0,
+ ),
'cache_duration' => array(
'min' => 0,
),
diff --git a/app/i18n/cz/admin.php b/app/i18n/cz/admin.php
index 271a9a253..68127f571 100644
--- a/app/i18n/cz/admin.php
+++ b/app/i18n/cz/admin.php
@@ -157,11 +157,15 @@ return array(
'top_feed' => 'Top ten kanálů',
),
'system' => array(
- '_' => 'System configuration', //TODO - Translation
- 'auto-update-url' => 'Auto-update server URL', //TODO - Translation
- 'instance-name' => 'Instance name', //TODO - Translation
- 'max-categories' => 'Categories per user limit', //TODO - Translation
- 'max-feeds' => 'Feeds per user limit', //TODO - Translation
+ '_' => 'System configuration', //TODO - Translation
+ 'auto-update-url' => 'Auto-update server URL', //TODO - Translation
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', //TODO - Translation
+ 'number' => 'Duration to keep logged in', //TODO - Translation
+ ),
+ 'instance-name' => 'Instance name', //TODO - Translation
+ 'max-categories' => 'Categories per user limit', //TODO - Translation
+ 'max-feeds' => 'Feeds per user limit', //TODO - Translation
'registration' => array(
'help' => '0 znamená žádná omezení účtu',
'number' => 'Maximální počet účtů',
diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php
index fe626bb70..f0307dcab 100644
--- a/app/i18n/de/admin.php
+++ b/app/i18n/de/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Dein Reader Name',
'max-categories' => 'Anzahl erlaubter Kategorien pro Benutzer',
'max-feeds' => 'Anzahl erlaubter Feeds pro Benutzer',
+ 'cookie-duration' => array(
+ 'help' => 'in Sekunden',
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 meint, dass es kein Account Limit gibt',
'number' => 'Maximale Anzahl von Accounts',
diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php
index b1252d672..004089ffc 100644
--- a/app/i18n/en/admin.php
+++ b/app/i18n/en/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Instance name',
'max-categories' => 'Categories per user limit',
'max-feeds' => 'Feeds per user limit',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds',
+ 'number' => 'Duration to keep logged in',
+ ),
'registration' => array(
'help' => '0 means that there is no account limit',
'number' => 'Max number of accounts',
diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php
index bd4446ce5..0ec8549bd 100755
--- a/app/i18n/es/admin.php
+++ b/app/i18n/es/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Nombre de la fuente',
'max-categories' => 'Límite de categorías por usuario',
'max-feeds' => 'Límite de fuentes por usuario',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 significa que no hay límite en la cuenta',
'number' => 'Número máximo de cuentas',
diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php
index 1175c9c65..74605b5ee 100644
--- a/app/i18n/fr/admin.php
+++ b/app/i18n/fr/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Nom de l’instance',
'max-categories' => 'Limite de catégories par utilisateur',
'max-feeds' => 'Limite de flux par utilisateur',
+ 'cookie-duration' => array(
+ 'help' => 'en secondes',
+ 'number' => 'Durée avant expiration de la session',
+ ),
'registration' => array(
'help' => 'Un chiffre de 0 signifie que l’on peut créer un nombre infini de comptes',
'number' => 'Nombre max de comptes',
diff --git a/app/i18n/he/admin.php b/app/i18n/he/admin.php
index 415816d34..e0dfc405d 100644
--- a/app/i18n/he/admin.php
+++ b/app/i18n/he/admin.php
@@ -157,11 +157,15 @@ return array(
'top_feed' => 'עשרת ההזנות המובילות',
),
'system' => array(
- '_' => 'System configuration', //TODO - Translation
- 'auto-update-url' => 'Auto-update server URL', //TODO - Translation
- 'instance-name' => 'Instance name', //TODO - Translation
- 'max-categories' => 'Categories per user limit', //TODO - Translation
- 'max-feeds' => 'Feeds per user limit', //TODO - Translation
+ '_' => 'System configuration', //TODO - Translation
+ 'auto-update-url' => 'Auto-update server URL', //TODO - Translation
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', //TODO - Translation
+ 'number' => 'Duration to keep logged in', //TODO - Translation
+ ),
+ 'instance-name' => 'Instance name', //TODO - Translation
+ 'max-categories' => 'Categories per user limit', //TODO - Translation
+ 'max-feeds' => 'Feeds per user limit', //TODO - Translation
'registration' => array(
'help' => '0 means that there is no account limit', //TODO - Translation
'number' => 'Max number of accounts', //TODO - Translation
diff --git a/app/i18n/it/admin.php b/app/i18n/it/admin.php
index 88972aa8f..d4253e9ba 100644
--- a/app/i18n/it/admin.php
+++ b/app/i18n/it/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Nome istanza',
'max-categories' => 'Limite categorie per utente',
'max-feeds' => 'Limite feeds per utente',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 significa che non esiste limite sui profili',
'number' => 'Numero massimo di profili',
diff --git a/app/i18n/kr/admin.php b/app/i18n/kr/admin.php
index ac4a808e7..532fe30a5 100644
--- a/app/i18n/kr/admin.php
+++ b/app/i18n/kr/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => '인스턴스 이름',
'max-categories' => '사용자별 카테고리 개수 제한',
'max-feeds' => '사용자별 피드 개수 제한',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0: 제한 없음',
'number' => '계정 최대 개수',
diff --git a/app/i18n/nl/admin.php b/app/i18n/nl/admin.php
index 1fd31e27a..8a63b885b 100644
--- a/app/i18n/nl/admin.php
+++ b/app/i18n/nl/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Voorbeeld naam',
'max-categories' => 'Categoriën limiet per gebruiker',
'max-feeds' => 'Feed limiet per gebruiker',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 betekent geen account limiet',
'number' => 'Maximum aantal accounts',
diff --git a/app/i18n/oc/admin.php b/app/i18n/oc/admin.php
index 9eab3b4c8..3df36c7c5 100644
--- a/app/i18n/oc/admin.php
+++ b/app/i18n/oc/admin.php
@@ -159,6 +159,10 @@ return array(
'system' => array(
'_' => 'Configuracion sistèma',
'auto-update-url' => 'URL del servici de mesa a jorn',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', //TODO - Translation
+ 'number' => 'Duration to keep logged in', //TODO - Translation
+ ),
'instance-name' => 'Nom de l’instància',
'max-categories' => 'Limita de categoria per utilizaire',
'max-feeds' => 'Limita de fluxes per utilizaire',
diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php
index ca88e2039..82559c67b 100644
--- a/app/i18n/pt-br/admin.php
+++ b/app/i18n/pt-br/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Nome da instância',
'max-categories' => 'Limite de categorias por usuário',
'max-feeds' => 'Limite de Feeds por usuário',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 significa que não há limite para a conta',
'number' => 'Máximo número de contas',
diff --git a/app/i18n/ru/admin.php b/app/i18n/ru/admin.php
index efbd8fde0..c9a7d6683 100644
--- a/app/i18n/ru/admin.php
+++ b/app/i18n/ru/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Название этого сервера',
'max-categories' => 'Количество категорий на пользователя',
'max-feeds' => 'Количество статей на пользователя',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 означает неограниченное количество пользователей',
'number' => 'Максимальное количество пользователей',
diff --git a/app/i18n/tr/admin.php b/app/i18n/tr/admin.php
index 81e5d14a2..b1d6671ca 100644
--- a/app/i18n/tr/admin.php
+++ b/app/i18n/tr/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => 'Örnek isim',
'max-categories' => 'Kullanıcı başına kategori limiti',
'max-feeds' => 'Kullanıcı başına akış limiti',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 sınır yok anlamındadır',
'number' => 'En fazla hesap sayısı',
diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php
index e6ca552ab..e34070526 100644
--- a/app/i18n/zh-cn/admin.php
+++ b/app/i18n/zh-cn/admin.php
@@ -162,6 +162,10 @@ return array(
'instance-name' => '实例名称',
'max-categories' => '每用户分类限制',
'max-feeds' => '每用户 RSS 源限制',
+ 'cookie-duration' => array(
+ 'help' => 'in seconds', // @todo translate
+ 'number' => 'Duration to keep logged in', // @todo translate
+ ),
'registration' => array(
'help' => '0 表示无账户数限制',
'number' => '最大账户数',
diff --git a/app/views/configure/system.phtml b/app/views/configure/system.phtml
index 37b68c991..9af4cc2c9 100644
--- a/app/views/configure/system.phtml
+++ b/app/views/configure/system.phtml
@@ -51,6 +51,14 @@
<input type="number" id="max-categories" name="max-categories" value="<?php echo FreshRSS_Context::$system_conf->limits['max_categories']; ?>" min="1" data-leave-validation="<?php echo FreshRSS_Context::$system_conf->limits['max_categories']; ?>"/>
</div>
</div>
+
+ <div class="form-group">
+ <label class="group-name" for="cookie-duration"><?php echo _t('admin.system.cookie-duration.number'); ?></label>
+ <div class="group-controls">
+ <input type="number" id="cookie-duration" name="cookie-duration" value="<?php echo FreshRSS_Context::$system_conf->limits['cookie_duration']; ?>" min="0" data-leave-validation="<?php echo FreshRSS_Context::$system_conf->limits['cookie_duration']; ?>"/>
+ <?php echo _i('help'); ?> <?php echo _t('admin.system.cookie-duration.help'); ?>
+ </div>
+ </div>
<div class="form-group form-actions">
<div class="group-controls">