From 5f898dcc5ee244e4adbd6aa83b607c844d432fb6 Mon Sep 17 00:00:00 2001 From: Luc SANCHEZ <4697568+ColonelMoutarde@users.noreply.github.com> Date: Sun, 26 Mar 2023 14:17:22 +0200 Subject: Modernize Constants and use new constant for string 'currentUser' (#5089) * Modernize Constants and use new constant 'currentUser' * Add FreshRSS_Context::currentUser() function and use * Add FreshRSS_Context::currentUser() function and use * Add FreshRSS_Context::currentUser() function and use * Add FreshRSS_Context::currentUser() function and use * Add FreshRSS_Context::currentUser() function and use * Update app/Controllers/userController.php * Update app/Controllers/userController.php * Update app/Controllers/userController.php * Update app/Models/Auth.php * Update p/api/greader.php * Update p/api/greader.php * Update p/api/greader.php * Update app/Models/Context.php * Update app/Models/LogDAO.php * Update lib/Minz/Log.php * Update p/api/greader.php * Update app/layout/header.phtml * Update app/views/helpers/export/articles.phtml * Update cli/do-install.php * Remarque's from Alkarex * Remarque's from Alkarex * Refactor using new Minz_User class * Consistent naming of public constants --------- Co-authored-by: Luc Co-authored-by: Alexandre Alapetite --- app/Models/Auth.php | 16 ++++++++-------- app/Models/Context.php | 21 ++++++++++++--------- app/Models/Feed.php | 2 +- app/Models/LogDAO.php | 14 ++++++++++---- app/Models/UserDAO.php | 2 +- 5 files changed, 32 insertions(+), 23 deletions(-) (limited to 'app/Models') diff --git a/app/Models/Auth.php b/app/Models/Auth.php index 90fb128d4..65e761fb8 100644 --- a/app/Models/Auth.php +++ b/app/Models/Auth.php @@ -21,11 +21,11 @@ class FreshRSS_Auth { } self::$login_ok = Minz_Session::param('loginOk', false); - $current_user = Minz_Session::param('currentUser', ''); - if ($current_user == '') { + $current_user = Minz_User::name(); + if ($current_user === null) { $current_user = FreshRSS_Context::$system_conf->default_user; Minz_Session::_params([ - 'currentUser' => $current_user, + Minz_User::CURRENT_USER => $current_user, 'csrf' => false, ]); } @@ -58,7 +58,7 @@ class FreshRSS_Auth { if (isset($credentials[1])) { $current_user = trim($credentials[0]); Minz_Session::_params([ - 'currentUser' => $current_user, + Minz_User::CURRENT_USER => $current_user, 'passwordHash' => trim($credentials[1]), 'csrf' => false, ]); @@ -84,7 +84,7 @@ class FreshRSS_Auth { } if ($login_ok) { Minz_Session::_params([ - 'currentUser' => $current_user, + Minz_User::CURRENT_USER => $current_user, 'csrf' => false, ]); } @@ -112,7 +112,7 @@ class FreshRSS_Auth { self::$login_ok = Minz_Session::param('passwordHash') === FreshRSS_Context::$user_conf->passwordHash; break; case 'http_auth': - $current_user = Minz_Session::param('currentUser'); + $current_user = Minz_User::name(); self::$login_ok = strcasecmp($current_user, httpAuthUser()) === 0; break; case 'none': @@ -140,7 +140,7 @@ class FreshRSS_Auth { if (FreshRSS_Context::$user_conf == null) { return false; } - $currentUser = Minz_Session::param('currentUser'); + $currentUser = Minz_User::name(); $isAdmin = FreshRSS_Context::$user_conf->is_admin; $default_user = FreshRSS_Context::$system_conf->default_user; $ok = self::$login_ok; @@ -181,7 +181,7 @@ class FreshRSS_Auth { if ($username == '') { $username = FreshRSS_Context::$system_conf->default_user; } - Minz_Session::_param('currentUser', $username); + Minz_User::change($username); switch (FreshRSS_Context::$system_conf->auth_type) { case 'form': diff --git a/app/Models/Context.php b/app/Models/Context.php index 734458d7f..35bd192d7 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -4,7 +4,7 @@ * The context object handles the current configuration file and different * useful functions associated to the current view state. */ -class FreshRSS_Context { +final class FreshRSS_Context { /** * @var FreshRSS_UserConfiguration|null @@ -55,7 +55,7 @@ class FreshRSS_Context { /** * Initialize the context for the global system. */ - public static function initSystem($reload = false) { + public static function initSystem(bool $reload = false): FreshRSS_SystemConfiguration { if ($reload || FreshRSS_Context::$system_conf == null) { //TODO: Keep in session what we need instead of always reloading from disk FreshRSS_Context::$system_conf = FreshRSS_SystemConfiguration::init(DATA_PATH . '/config.php', FRESHRSS_PATH . '/config.default.php'); @@ -68,8 +68,9 @@ class FreshRSS_Context { /** * Initialize the context for the current user. + * @return FreshRSS_UserConfiguration|false */ - public static function initUser($username = '', $userMustExist = true) { + public static function initUser(string $username = '', bool $userMustExist = true) { FreshRSS_Context::$user_conf = null; if (!isset($_SESSION)) { Minz_Session::init('FreshRSS'); @@ -77,9 +78,9 @@ class FreshRSS_Context { Minz_Session::lock(); if ($username == '') { - $username = Minz_Session::param('currentUser', ''); + $username = Minz_User::name() ?? ''; } - if (($username === '_' || FreshRSS_user_Controller::checkUsername($username)) && + if (($username === Minz_User::INTERNAL_USER || FreshRSS_user_Controller::checkUsername($username)) && (!$userMustExist || FreshRSS_user_Controller::userExists($username))) { try { //TODO: Keep in session what we need instead of always reloading from disk @@ -88,7 +89,7 @@ class FreshRSS_Context { FRESHRSS_PATH . '/config-user.default.php', FreshRSS_Context::$system_conf->configurationSetter()); - Minz_Session::_param('currentUser', $username); + Minz_User::change($username); } catch (Exception $ex) { Minz_Log::warning($ex->getMessage(), USERS_PATH . '/_/' . LOG_FILENAME); } @@ -96,7 +97,7 @@ class FreshRSS_Context { if (FreshRSS_Context::$user_conf == null) { Minz_Session::_params([ 'loginOk' => false, - 'currentUser' => false, + Minz_User::CURRENT_USER => false, ]); } Minz_Session::unlock(); @@ -212,6 +213,7 @@ class FreshRSS_Context { * * If $array is true, the first item of the returned value is 'f' or 'c' and * the second is the id. + * @return string|array{string,bool|int} */ public static function currentGet($array = false) { if (self::$current_get['all']) { @@ -239,6 +241,7 @@ class FreshRSS_Context { } elseif (self::$current_get['tags']) { return 'T'; } + return ''; } /** @@ -272,8 +275,8 @@ class FreshRSS_Context { /** * @return bool true if $get parameter correspond to the $current_get attribute. */ - public static function isCurrentGet($get): bool { - $type = $get[0]; + public static function isCurrentGet(string $get): bool { + $type = substr($get, 0, 1); $id = substr($get, 2); switch($type) { diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 7c46199a5..0b16bc796 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -1011,7 +1011,7 @@ class FreshRSS_Feed extends Minz_Model { Minz_Log::debug($text); Minz_Log::debug($text, PSHB_LOG); } - $currentUser = Minz_Session::param('currentUser'); + $currentUser = Minz_User::name(); if (FreshRSS_user_Controller::checkUsername($currentUser) && !file_exists($path . '/' . $currentUser . '.txt')) { touch($path . '/' . $currentUser . '.txt'); } diff --git a/app/Models/LogDAO.php b/app/Models/LogDAO.php index 787945af4..6e5bf171b 100644 --- a/app/Models/LogDAO.php +++ b/app/Models/LogDAO.php @@ -1,9 +1,15 @@ */ + public static function lines(): array { $logs = array(); - $handle = @fopen(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), LOG_FILENAME), 'r'); + $handle = @fopen(self::logPath(), 'r'); if ($handle) { while (($line = fgets($handle)) !== false) { if (preg_match('/^\[([^\[]+)\] \[([^\[]+)\] --- (.*)$/', $line, $matches)) { @@ -19,8 +25,8 @@ class FreshRSS_LogDAO { return array_reverse($logs); } - public static function truncate() { - file_put_contents(join_path(DATA_PATH, 'users', Minz_Session::param('currentUser', '_'), LOG_FILENAME), ''); + public static function truncate(): void { + file_put_contents(self::logPath(), ''); if (FreshRSS_Auth::hasAccess('admin')) { file_put_contents(ADMIN_LOG, ''); file_put_contents(API_LOG, ''); diff --git a/app/Models/UserDAO.php b/app/Models/UserDAO.php index 67498f5cd..9f91df80e 100644 --- a/app/Models/UserDAO.php +++ b/app/Models/UserDAO.php @@ -44,7 +44,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo { public static function touch($username = '') { if (!FreshRSS_user_Controller::checkUsername($username)) { - $username = Minz_Session::param('currentUser', '_'); + $username = Minz_User::name() ?? Minz_User::INTERNAL_USER; } return touch(USERS_PATH . '/' . $username . '/config.php'); } -- cgit v1.2.3