From: Roland Häder Date: Fri, 31 Jul 2009 20:31:28 +0000 (+0000) Subject: Now we have a filter to not allow the guest-account to change it's data X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=commitdiff_plain;h=080c45cc2fafa9b188e004f51d533a1156a80cbd Now we have a filter to not allow the guest-account to change it's data --- diff --git a/.gitattributes b/.gitattributes index d52fdc2..bf54969 100644 --- a/.gitattributes +++ b/.gitattributes @@ -77,6 +77,7 @@ application/ship-simu/main/actions/web/class_WebShipSimuLoginGovernmentTrainingA application/ship-simu/main/actions/web/class_WebShipSimuLoginLogoutAction.php -text application/ship-simu/main/actions/web/class_WebShipSimuLoginProfileAction.php -text application/ship-simu/main/actions/web/class_WebShipSimuLoginRefillAction.php -text +application/ship-simu/main/actions/web/class_WebShipSimuLoginStatusProblemAction.php -text application/ship-simu/main/actions/web/class_WebShipSimuLoginWelcomeAction.php -text application/ship-simu/main/bank/.htaccess -text application/ship-simu/main/bank/class_MoneyBank.php -text @@ -135,6 +136,7 @@ application/ship-simu/main/filter/page/.htaccess -text application/ship-simu/main/filter/page/class_RefillPageFilter.php -text application/ship-simu/main/filter/validator/.htaccess -text application/ship-simu/main/filter/validator/class_RefillRequestValidatorFilter.php -text +application/ship-simu/main/filter/validator/class_ShipSimuUserStatusGuestFilter.php -text application/ship-simu/main/filter/verifier/.htaccess -text application/ship-simu/main/filter/verifier/class_BirthdayVerifierFilter.php -text application/ship-simu/main/government/.htaccess -text diff --git a/application/ship-simu/config.php b/application/ship-simu/config.php index 27ccf63..802e984 100644 --- a/application/ship-simu/config.php +++ b/application/ship-simu/config.php @@ -91,6 +91,9 @@ $cfg->setConfigEntry('user_status_guest', "GUEST"); // CFG: USER-STATUS-CONFIRMED $cfg->setConfigEntry('user_status_confirmed', "CONFIRMED"); +// CFG: USER-STATUS-LOCKED +//$cfg->setConfigEntry('user_status_locked', "LOCKED"); + // CFG: LOGIN-HELPER-CLASS $cfg->setConfigEntry('login_helper_class', "ShipSimuLoginHelper"); @@ -107,7 +110,10 @@ $cfg->setConfigEntry('login_failed_url', "index.php?app={?app_short_name?}&page= $cfg->setConfigEntry('logout_done_url', "index.php?app={?app_short_name?}&page=logout_done"); // CFG: LOGIN-USER-STATUS-URL -$cfg->setConfigEntry('login_user_status_url', "index.php?app={?app_short_name?}&page=login_area&action=status_problem"); +$cfg->setConfigEntry('login_user_status_url', "index.php?app={?app_short_name?}&page=login_area&action=status_problem&status=general"); + +// CFG: LOGIN-USER-STATUS-GUEST-URL +$cfg->setConfigEntry('login_user_status_guest_url', "index.php?app={?app_short_name?}&page=login_area&action=status_problem&status=guest"); // CFG: USER-NOT-UNCONFIRMED-URL $cfg->setConfigEntry('user_not_unconfirmed_url', "index.php?app={?app_short_name?}&page=status&status=unconfirmed_problem"); @@ -181,6 +187,9 @@ $cfg->setConfigEntry('news_reader_login_area_government_training_class', "Defaul // CFG: NEWS-READER-LOGIN-AREA-GOVERNMENT-STARTUP-HELP-CLASS $cfg->setConfigEntry('news_reader_login_area_government_startup_help_class', "DefaultNewsReader"); +// CFG: NEWS-READER-LOGIN-AREA-STATUS-PROBLEM-CLASS +$cfg->setConfigEntry('news_reader_login_area_status_problem_class', "DefaultNewsReader"); + // CFG: NEWS-READER-GOVERNMENT-FAILED-CLASS $cfg->setConfigEntry('news_reader_government_failed_class', "DefaultNewsReader"); @@ -244,6 +253,9 @@ $cfg->setConfigEntry('government_pays_training_filter', "ShipSimuGovernmentPaysT // CFG: GOVERNMENT-PAYS-STARTUP-HELP-FILTER $cfg->setConfigEntry('government_pays_startup_help_filter', "ShipSimuGovernmentPaysStartupHelpFilter"); +// CFG: USER-STATUS-GUEST-FILTER +$cfg->setConfigEntry('user_status_guest_filter', "ShipSimuUserStatusGuestFilter"); + // CFG: NEWS-HOME-LIMIT $cfg->setConfigEntry('news_home_limit', 10); diff --git a/application/ship-simu/main/actions/web/class_WebShipSimuLogin b/application/ship-simu/main/actions/web/class_WebShipSimuLogin index 9525d19..db03e47 100644 --- a/application/ship-simu/main/actions/web/class_WebShipSimuLogin +++ b/application/ship-simu/main/actions/web/class_WebShipSimuLogin @@ -59,6 +59,7 @@ class WebShipSimuLogin???Action extends BaseAction implements Commandable, Regis */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Unfinished method + $this->partialStub('Unfinished method.'); } /** diff --git a/application/ship-simu/main/actions/web/class_WebShipSimuLoginStatusProblemAction.php b/application/ship-simu/main/actions/web/class_WebShipSimuLoginStatusProblemAction.php new file mode 100644 index 0000000..0a45498 --- /dev/null +++ b/application/ship-simu/main/actions/web/class_WebShipSimuLoginStatusProblemAction.php @@ -0,0 +1,80 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class WebShipSimuLoginStatusProblemAction extends BaseAction implements Commandable, Registerable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this action + * + * @param $resolverInstance An instance of an action resolver + * @return $actionInstance An instance of this action class + */ + public final static function createWebShipSimuLoginStatusProblemAction (ActionResolver $resolverInstance) { + // Get a new instance + $actionInstance = new WebShipSimuLoginStatusProblemAction(); + + // Set the resolver instance + $actionInstance->setResolverInstance($resolverInstance); + + // Return the instance + return $actionInstance; + } + + /** + * Executes the command with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Unfinished method + $this->partialStub('Unfinished method.'); + } + + /** + * Adds extra filters to the given controller instance + * + * @param $controllerInstance A controller instance + * @param $requestInstance An instance of a class with an Requestable interface + * @return void + * @todo Add some filters here + */ + public function addExtraFilters (Controller $controllerInstance, Requestable $requestInstance) { + // Check for user status by default + $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('user_status_filter')); + } +} + +// [EOF] +?> diff --git a/application/ship-simu/main/commands/web/class_WebShipsimuProfileCommand.php b/application/ship-simu/main/commands/web/class_WebShipsimuProfileCommand.php index 25b6426..7c64fdd 100644 --- a/application/ship-simu/main/commands/web/class_WebShipsimuProfileCommand.php +++ b/application/ship-simu/main/commands/web/class_WebShipsimuProfileCommand.php @@ -127,6 +127,9 @@ class WebShipsimuProfileCommand extends BaseCommand implements Commandable { // User status filter $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('user_status_filter')); + // User status if not 'guest' filter + $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('user_status_guest_filter')); + // Updated rules accepted $controllerInstance->addPreFilter(ObjectFactory::createObjectByConfiguredName('rules_accepted_filter')); diff --git a/application/ship-simu/main/filter/validator/class_ShipSimuUserStatusGuestFilter.php b/application/ship-simu/main/filter/validator/class_ShipSimuUserStatusGuestFilter.php new file mode 100644 index 0000000..261e188 --- /dev/null +++ b/application/ship-simu/main/filter/validator/class_ShipSimuUserStatusGuestFilter.php @@ -0,0 +1,79 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class ShipSimuUserStatusGuestFilter extends BaseShipSimuFilter implements Filterable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this filter class + * + * @return $filterInstance An instance of this filter class + */ + public final static function createShipSimuUserStatusGuestFilter () { + // Get a new instance + $filterInstance = new ShipSimuUserStatusGuestFilter(); + + // Return the instance + return $filterInstance; + } + + /** + * Executes the filter with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @todo Maybe we need to added some more generic tests on the request here? + * @throws FilterChainException If this filter fails to operate + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Execute the parent execute method + parent::execute($requestInstance, $responseInstance); + + // Get a user instance for comparison + $userInstance = Registry::getRegistry()->getInstance('user'); + + // Is the user account confirmed? + if ($userInstance->getField(UserDatabaseWrapper::DB_COLUMN_USER_STATUS) == $this->getConfigInstance()->getConfigEntry('user_status_guest')) { + // Request is invalid! + $requestInstance->requestIsValid(false); + + // Redirect to configured URL + $responseInstance->redirectToConfiguredUrl('login_user_status_guest'); + + // Stop processing here + exit(); + } // END - if + } +} + +// [EOF] +?>