protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $quiet = (bool) $options['quiet']; if (!$quiet) { echo "Removing files..."; } AuthFailureTable::getInstance()->cleanUpOldFailures(); if (!$quiet) { echo "\n"; } }
protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $quiet = (bool) $options['quiet']; if (!$quiet) { echo "Removing old authorization failures..."; } AuthFailureTable::getInstance()->cleanUpOldFailures(); if (!$quiet) { echo "\nRemoving expired API user authorization tokens..."; } sfGuardUserAuthKeyTable::getInstance()->cleanUpTokens(); if (!$quiet) { echo "\n"; } }
/** * Request a new xAuth key for a user. * * @param string $email_address Email address of the user. * @param string $password Password of the user. * @param int $expires_in How long the auth key should last. Max 1 year. * @return string|boolean The auth key for this API. False upon failure. */ public function requestAuthKey($email_address, $password, $expires_in = 7200) { if (!$this->getIsActive()) { throw new sfException('API is inactive!'); } // Attempt to find user by email address $user = sfGuardUserTable::getInstance()->findOneByEmailAddress($email_address); /* @var $user sfGuardUser */ if (!$user) { throw new sfException('Email address or password is incorrect.'); } // Find out how many failures in the past two minutes - max of five $failures = AuthFailureTable::getInstance()->countFailuresMadeInRecentSeconds($this->getIncremented(), $user->getIncremented(), 120); if ($failures >= 6) { throw new sfException('Too many failures. Please wait a few minutes and try again.'); } if ($user && $user->checkPassword($password) && $user->getIsAuthorized() && $user->getIsActive()) { $year = 31536000; $expires_in = $expires_in >= $year ? $year : $expires_in; $user_auth = new sfGuardUserAuthKey(); $user_auth->setSfGuardUser($user); $user_auth->setApiKey($this); $user_auth->setExpiresAt(date('Y-m-d H:i:s', time() + $expires_in)); $auth_key = sha1(rand(0, 10000) . time()); $user_auth->setAuthKey($auth_key); $user_auth->save(); return $auth_key; } $failure = new AuthFailure(); $failure->setSfGuardUser($user); $failure->setApiKey($this); $failure->save(); if (!$user) { throw new sfException('Email address or password is incorrect.'); } elseif (!$user->getIsActive()) { throw new sfException('Email address or password is incorrect.'); } elseif (!$user->getIsAuthorized()) { throw new sfException('User has not validated their email address yet'); } elseif (!$user->checkPassword($password)) { throw new sfException('Email address or password is incorrect.'); } else { throw new sfException('An unexpected error occured.'); } }
/** * Tests for success at creating the object. */ public function testCreate() { $t = AuthFailureTable::getInstance(); $this->assertTrue($t instanceof Doctrine_Table); }