X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=inc%2Fclasses%2Fmain%2Ffilter%2Fverifier%2Fclass_ConfirmCodeVerifierFilter.php;fp=inc%2Fclasses%2Fmain%2Ffilter%2Fverifier%2Fclass_ConfirmCodeVerifierFilter.php;h=98fc1e67ce0a66798950b822aa1d221270048441;hb=c59dccf46c5d0e3b7f2687370b2b15023b1ecdfe;hp=0000000000000000000000000000000000000000;hpb=e2767d5148436d0c90ed66ed9290416353ae6e60;p=hub.git diff --git a/inc/classes/main/filter/verifier/class_ConfirmCodeVerifierFilter.php b/inc/classes/main/filter/verifier/class_ConfirmCodeVerifierFilter.php new file mode 100644 index 000000000..98fc1e67c --- /dev/null +++ b/inc/classes/main/filter/verifier/class_ConfirmCodeVerifierFilter.php @@ -0,0 +1,108 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, this is free software + * @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 ConfirmCodeVerifierFilter extends BaseFilter 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 createConfirmCodeVerifierFilter () { + // Get a new instance + $filterInstance = new ConfirmCodeVerifierFilter(); + + // 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 + * @throws NullPointerException If the user instance from registry is null + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + // Get confirmation code from request + $confirmCode = $requestInstance->getRequestElement('confirm'); + + // Is this code set? + if (is_null($confirmCode)) { + // Is not in request + $requestInstance->requestIsValid(false); + + // Add a message to the response + $responseInstance->addFatalMessage('confirm_code_unset'); + + // Abort here + return false; + } elseif (empty($confirmCode)) { + // Email is empty + $requestInstance->requestIsValid(false); + + // Add a message to the response + $responseInstance->addFatalMessage('confirm_code_empty'); + + // Abort here + return false; + } + + // Get a user instance from registry + $userInstance = Registry::getRegistry()->getInstance('user'); + + // Is the instance there? + if (is_null($userInstance)) { + // Throw an exception here + throw new NullPointerException ($this, self::EXCEPTION_IS_NULL_POINTER); + } // END - if + + // Get the confirm code from user for comparison + $userCode = $userInstance->getField(UserDatabaseWrapper::DB_COLUMN_CONFIRM_HASH); + + // Do we have the same code or different? + if ($userCode != $confirmCode) { + // Email is empty + $requestInstance->requestIsValid(false); + + // Redirect to error page + $responseInstance->redirectToConfiguredUrl('confirm_code_invalid_url'); + + // Stop processing here + exit; + } // END - if + } +} + +// [EOF] +?>