/** * resolveIdentity * * @param AuthEvent $e * @return void */ public function resolveIdentity(AuthEvent $e) { if (!is_int($e->getIdentity())) { return; } $identity = $this->getMapper()->findById($e->getIdentity()); if ($identity instanceof UserModel) { $e->setIdentity($identity); } }
public function authenticate(AuthEvent $e) { if ($this->isSatisfied()) { $storage = $this->getStorage()->read(); $e->setIdentity($storage['identity']); return; } $identity = $e->getRequest()->post()->get('email'); // change field name to 'identity' $credential = $e->getRequest()->post()->get('password'); // change field name to 'credential' $userObject = $this->getMapper()->findByEmail($identity); if (!$userObject && Module::getOption('enable_username')) { // Auth by username $userObject = $this->getMapper()->findByUsername($identity); } if (!$userObject) { $this->setSatisfied(false); // return redirect response? return false; // no identity match } $credentialHash = $this->hashPassword($credential, $userObject->getPassword()); if ($credentialHash === $userObject->getPassword()) { $e->setIdentity($userObject->getUserId()); $this->updateUserPasswordHash($userObject, $credential)->updateUserLastLogin($userObject)->setSatisfied(true); $storage = $this->getStorage()->read(); $storage['identity'] = $e->getIdentity(); $this->getStorage()->write($storage); } else { $this->setSatisfied(false); return false; } // do stuff }