diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php index d158092bf..cef8f9d2d 100644 --- a/app/Controllers/authController.php +++ b/app/Controllers/authController.php @@ -131,6 +131,11 @@ class FreshRSS_auth_Controller extends Minz_ActionController { return; } + if (!$conf->enabled) { + Minz_Error::error(403, array(_t('feedback.auth.login.invalid')), false); + return; + } + $ok = FreshRSS_FormAuth::checkCredentials( $username, $conf->passwordHash, $nonce, $challenge ); diff --git a/app/Controllers/userController.php b/app/Controllers/userController.php index 491350ef3..6e7908df3 100644 --- a/app/Controllers/userController.php +++ b/app/Controllers/userController.php @@ -191,6 +191,12 @@ class FreshRSS_user_Controller extends Minz_ActionController { case 'demote': $this->demoteAction(); break; + case 'enable': + $this->enableAction(); + break; + case 'disable': + $this->disableAction(); + break; } } @@ -332,6 +338,7 @@ class FreshRSS_user_Controller extends Minz_ActionController { $ok = self::createUser($new_user_name, $email, $passwordPlain, array( 'language' => Minz_Request::param('new_user_language', FreshRSS_Context::$user_conf->language), 'is_admin' => Minz_Request::paramBoolean('new_user_is_admin'), + 'enabled' => true, )); Minz_Request::_param('new_user_passwordPlain'); //Discard plain-text password ASAP $_POST['new_user_passwordPlain'] = ''; @@ -550,14 +557,22 @@ class FreshRSS_user_Controller extends Minz_ActionController { } public function promoteAction() { - $this->switchAdminAction(true); + $this->toggleAction('is_admin', true); } public function demoteAction() { - $this->switchAdminAction(false); + $this->toggleAction('is_admin', false); } - private function switchAdminAction($isAdmin) { + public function enableAction() { + $this->toggleAction('enabled', true); + } + + public function disableAction() { + $this->toggleAction('enabled', false); + } + + private function toggleAction($field, $value) { if (!FreshRSS_Auth::hasAccess('admin')) { Minz_Error::error(403); } @@ -575,9 +590,10 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Error::error(500); } - $userConfig->_param('is_admin', $isAdmin); + $userConfig->_param($field, $value); $ok = $userConfig->save(); + FreshRSS_UserDAO::touch($username); if ($ok) { Minz_Request::good(_t('feedback.user.updated', $username), array('c' => 'user', 'a' => 'manage')); @@ -597,7 +613,6 @@ class FreshRSS_user_Controller extends Minz_ActionController { Minz_Error::error(404); } - $this->view->isDefaultUser = $username === FreshRSS_Context::$system_conf->default_user; $this->view->username = $username; $this->view->details = $this->retrieveUserDetails($username); } @@ -615,8 +630,10 @@ class FreshRSS_user_Controller extends Minz_ActionController { 'database_size' => $databaseDAO->size(), 'language' => $userConfiguration->language, 'mail_login' => $userConfiguration->mail_login, + 'enabled' => $userConfiguration->enabled, 'is_admin' => $userConfiguration->is_admin, 'last_user_activity' => date('c', FreshRSS_UserDAO::mtime($username)), + 'is_default' => FreshRSS_Context::$system_conf->default_user === $username, ); } } diff --git a/app/actualize_script.php b/app/actualize_script.php index 5a5403d62..ffa6baedb 100755 --- a/app/actualize_script.php +++ b/app/actualize_script.php @@ -53,6 +53,10 @@ if ($system_conf->default_user !== '') { $limits = $system_conf->limits; $min_last_activity = time() - $limits['max_inactivity']; foreach ($users as $user) { + if (!get_user_configuration($user)->enabled) { + notice('FreshRSS skip disabled user ' . $user); + continue; + } if (($user !== $system_conf->default_user) && (FreshRSS_UserDAO::mtime($user) < $min_last_activity)) { notice('FreshRSS skip inactive user ' . $user); diff --git a/app/i18n/cz/admin.php b/app/i18n/cz/admin.php index 7dae02e3e..9b11ca928 100644 --- a/app/i18n/cz/admin.php +++ b/app/i18n/cz/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Jazyk', diff --git a/app/i18n/de/admin.php b/app/i18n/de/admin.php index 244a0fbb6..5718f2ff3 100644 --- a/app/i18n/de/admin.php +++ b/app/i18n/de/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Lösche Benutzer', 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Sprache', diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 3a10dc7e7..b4aef304f 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', 'delete_users' => 'Delete user', 'email' => 'Email address', + 'enabled' => 'Enabled', 'feed_count' => 'Feeds', 'is_admin' => 'Is admin', 'language' => 'Language', diff --git a/app/i18n/es/admin.php b/app/i18n/es/admin.php index ed92e466f..1916ffc4a 100755 --- a/app/i18n/es/admin.php +++ b/app/i18n/es/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Idioma', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 6088b4efe..eaf39eaed 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -190,8 +190,9 @@ return array( 'database_size' => 'Volumétrie', 'delete_users' => 'Supprimer un utilisateur', 'email' => 'Adresse email', + 'enabled' => 'Actif', 'feed_count' => 'Flux', - 'is_admin' => 'Admin ?', + 'is_admin' => 'Admin', 'language' => 'Langue', 'last_user_activity' => 'Dernière activité utilisateur', 'list' => 'Liste des utilisateurs', diff --git a/app/i18n/he/admin.php b/app/i18n/he/admin.php index 7b9977834..f33ffab67 100644 --- a/app/i18n/he/admin.php +++ b/app/i18n/he/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'שפה', diff --git a/app/i18n/it/admin.php b/app/i18n/it/admin.php index 2a19d6b30..2a034e837 100644 --- a/app/i18n/it/admin.php +++ b/app/i18n/it/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Lingua', diff --git a/app/i18n/kr/admin.php b/app/i18n/kr/admin.php index 5825a189f..a2f4112da 100644 --- a/app/i18n/kr/admin.php +++ b/app/i18n/kr/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => '사용자 삭제', 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => '언어', diff --git a/app/i18n/nl/admin.php b/app/i18n/nl/admin.php index 5b1450b6e..7e402e625 100644 --- a/app/i18n/nl/admin.php +++ b/app/i18n/nl/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Databasegrootte', 'delete_users' => 'Verwijder gebruiker', 'email' => 'Emailadres', + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', 'is_admin' => 'Is beheerder', 'language' => 'Taal', diff --git a/app/i18n/oc/admin.php b/app/i18n/oc/admin.php index 2b5d4ad3b..2e99e0f84 100644 --- a/app/i18n/oc/admin.php +++ b/app/i18n/oc/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Talha basa de donadas', 'delete_users' => 'Suprimir un utilizaire', 'email' => 'Adreça electronica', + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Flux', 'is_admin' => 'Es admin', 'language' => 'Lenga', diff --git a/app/i18n/pt-br/admin.php b/app/i18n/pt-br/admin.php index 29be8e74c..d09d76c5a 100644 --- a/app/i18n/pt-br/admin.php +++ b/app/i18n/pt-br/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Tamanho do banco de dados', 'delete_users' => 'Deletar usuário', 'email' => 'Endereço de email', + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', 'is_admin' => 'É administrador', 'language' => 'Idioma', diff --git a/app/i18n/ru/admin.php b/app/i18n/ru/admin.php index 9c93cf62c..cb22898c7 100644 --- a/app/i18n/ru/admin.php +++ b/app/i18n/ru/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Язык', diff --git a/app/i18n/sk/admin.php b/app/i18n/sk/admin.php index c9aa49b1e..de7329483 100644 --- a/app/i18n/sk/admin.php +++ b/app/i18n/sk/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Zmazať používateľa', 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Jazyk', diff --git a/app/i18n/tr/admin.php b/app/i18n/tr/admin.php index 9a2f72f4c..61615c9fa 100644 --- a/app/i18n/tr/admin.php +++ b/app/i18n/tr/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => 'Database size', // TODO - Translation 'delete_users' => 'Delete user', // TODO - Translation 'email' => 'Email address', // TODO - Translation + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => 'Feeds', // TODO - Translation 'is_admin' => 'Is admin', // TODO - Translation 'language' => 'Dil', diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php index 078685fae..e880168b7 100644 --- a/app/i18n/zh-cn/admin.php +++ b/app/i18n/zh-cn/admin.php @@ -190,6 +190,7 @@ return array( 'database_size' => '数据库大小', 'delete_users' => '删除用户', 'email' => '邮箱地址', + 'enabled' => 'Enabled', // TODO - Translation 'feed_count' => '订阅源数', 'is_admin' => '管理员', 'language' => '语言', diff --git a/app/install.php b/app/install.php index ddb9d7eaa..cf1ac2c61 100644 --- a/app/install.php +++ b/app/install.php @@ -224,6 +224,7 @@ function saveStep3() { [ 'language' => $_SESSION['language'], 'is_admin' => true, + 'enabled' => true, ] ); } catch (Exception $e) { diff --git a/app/views/user/details.phtml b/app/views/user/details.phtml index 8b3cc3a44..b93cd4d72 100644 --- a/app/views/user/details.phtml +++ b/app/views/user/details.phtml @@ -1,6 +1,8 @@ partial('aside_configure'); ?> +details['is_default']; ?> details['is_admin']; ?> +details['enabled']; ?>