From a9f0f64c78ea9cc6442b2c784a53d7a59663cc96 Mon Sep 17 00:00:00 2001 From: TimZ99 Date: Thu, 12 Dec 2019 22:00:31 +0100 Subject: [PATCH] Public server page --- public.php | 35 +++++++++++++++++++++++++++ src/bootstrap.php | 13 ++++++++++ src/lang/en_US.lang.php | 1 + src/psm/Module/AbstractController.php | 2 +- src/psm/Service/User.php | 11 +++++++++ src/psm/Util/User/UserValidator.php | 2 +- 6 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 public.php diff --git a/public.php b/public.php new file mode 100644 index 00000000..35299784 --- /dev/null +++ b/public.php @@ -0,0 +1,35 @@ +. + * + * @package phpservermon + * @author Pepijn Over + * @copyright Copyright (c) 2008-2017 Pepijn Over + * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 + * @version Release: @package_version@ + * @link http://www.phpservermonitor.org/ + **/ + +namespace { + define('PSM_PUBLIC_PAGE', true); + + require __DIR__ . '/src/bootstrap.php'; + + $router->run('server'); +} diff --git a/src/bootstrap.php b/src/bootstrap.php index 9037beef..e6dd3338 100644 --- a/src/bootstrap.php +++ b/src/bootstrap.php @@ -108,6 +108,19 @@ namespace { } } + // check for a public page var + // This should be defined in the config + if (!defined('PSM_PUBLIC')) { + define('PSM_PUBLIC', false); + } + + // check for a public page + // This variable is for internal use + // and should not be changed by the user manualy + if (!defined('PSM_PUBLIC_PAGE')) { + define('PSM_PUBLIC_PAGE', false); + } + $lang = psm_get_conf('language', 'en_US'); psm_load_lang($lang); } diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 621a6aed..c836511f 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -106,6 +106,7 @@ $sm_lang = array( 'level' => 'Level', 'level_10' => 'Administrator', 'level_20' => 'User', + 'level_30' => 'Anonymous', 'level_description' => 'Administrators have full access: they can manage servers, users and edit the global configuration.
Users can only view and run the updater for the servers that have been assigned to them.', diff --git a/src/psm/Module/AbstractController.php b/src/psm/Module/AbstractController.php index 260543e6..2fe2209b 100644 --- a/src/psm/Module/AbstractController.php +++ b/src/psm/Module/AbstractController.php @@ -124,7 +124,7 @@ abstract class AbstractController implements ControllerInterface * @var int $user_level_required * @see setMinUserLevelRequired() */ - protected $user_level_required = PSM_USER_USER; + protected $user_level_required = (PSM_PUBLIC && PSM_PUBLIC_PAGE) ? PSM_USER_ANONYMOUS : PSM_USER_USER; /** * Required user level for certain actions diff --git a/src/psm/Service/User.php b/src/psm/Service/User.php index fb50e475..fce6213b 100644 --- a/src/psm/Service/User.php +++ b/src/psm/Service/User.php @@ -100,6 +100,17 @@ class User } $this->session = $session; + if (PSM_PUBLIC === true && PSM_PUBLIC_PAGE === true) { + $query_user = $this->db_connection->prepare('SELECT * FROM ' . + PSM_DB_PREFIX . 'users WHERE user_name = :user_name and level = :level'); + $query_user->bindValue(':user_name', "__PUBLIC__", \PDO::PARAM_STR); + $query_user->bindValue(':level', PSM_USER_ANONYMOUS, \PDO::PARAM_STR); + $query_user->execute(); + + // get result row (as an object) + $this->setUserLoggedIn($query_user->fetchObject()->user_id); + } + if ((!defined('PSM_INSTALL') || !PSM_INSTALL)) { // check the possible login actions: // 1. login via session data (happens each time user opens a page on your php project AFTER diff --git a/src/psm/Util/User/UserValidator.php b/src/psm/Util/User/UserValidator.php index 65f322e0..b7277ce8 100644 --- a/src/psm/Util/User/UserValidator.php +++ b/src/psm/Util/User/UserValidator.php @@ -39,7 +39,7 @@ class UserValidator * Available editable user levels * @var array $user_levels */ - protected $user_levels = array(PSM_USER_ADMIN, PSM_USER_USER); + protected $user_levels = array(PSM_USER_ADMIN, PSM_USER_USER, PSM_USER_ANONYMOUS); /** * User service