]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/classes/main/filter/auth/class_UserAuthFilter.php
Auth filter basicly completed, user update filter added (stubs), minor fixes
[shipsimu.git] / inc / classes / main / filter / auth / class_UserAuthFilter.php
index 5754bf1d6643b6841d29a833b4e898d4999f947a..dac1ebc09205806a17c3b6baa386df245a2992d9 100644 (file)
@@ -78,6 +78,7 @@ class UserAuthFilter extends BaseFilter implements Filterable {
         * @param       $responseInstance       An instance of a class with an Responseable interface
         * @return      void
         * @throws      UserAuthorizationException      If the auth login was not found or if it was invalid
+        * @throws      UserPasswordMismatchException   If the supplied password hash does not match
         */
        public function execute (Requestable $requestInstance, Responseable $responseInstance) {
                // Then get an auth instance for checking and updating the auth cookies
@@ -103,10 +104,20 @@ class UserAuthFilter extends BaseFilter implements Filterable {
 
                        // Stop here
                        throw new UserAuthorizationException($this, self::EXCEPTION_AUTH_DATA_INVALID);
-               }
+               } // END - if
 
-               // Destroy safely the auth instance
-               unset($authInstance);
+               // Now, try to get a user instance
+               $userInstance = User::createUserByUserName($authLogin);
+
+               // Is the password correct?
+               if ($userInstance->getPasswordHash() !== $authHash) {
+                       // Mismatching password
+                       throw new UserPasswordMismatchException(array($this, $userInstance), User::EXCEPTION_USER_PASS_MISMATCH);
+               } // END - if
+
+               // Remember auth and user instances in registry
+               Registry::getRegistry()->addInstance('auth', $authInstance);
+               Registry::getRegistry()->addInstance('user', $userInstance);
        }
 }