/** * Tests UserLoginData->setLastLoginPartnerId() & UserLoginData->getLastLoginPartnerId() */ public function testGetSetLastLoginPartnerId() { $this->assertNull($this->UserLoginData->getLastLoginPartnerId()); $partnerId = rand(10, 30000); $this->UserLoginData->setLastLoginPartnerId($partnerId); $this->assertEquals($partnerId, $this->UserLoginData->getLastLoginPartnerId()); $this->UserLoginData->save(); $this->assertEquals($partnerId, $this->UserLoginData->getLastLoginPartnerId()); $c = new Criteria(); $fromDb = UserLoginDataPeer::retrieveByPK($this->UserLoginData->getId()); $this->assertEquals($partnerId, $fromDb->getLastLoginPartnerId()); }
private static function userLogin(UserLoginData $loginData = null, $password, $partnerId = null, $validatePassword = true) { $requestedPartner = $partnerId; if (!$loginData) { throw new kUserException('', kUserException::LOGIN_DATA_NOT_FOUND); } // check if password is valid if ($validatePassword && !$loginData->isPasswordValid($password)) { if (time() < $loginData->getLoginBlockedUntil(null)) { throw new kUserException('', kUserException::LOGIN_BLOCKED); } if ($loginData->getLoginAttempts() + 1 >= $loginData->getMaxLoginAttempts()) { $loginData->setLoginBlockedUntil(time() + $loginData->getLoginBlockPeriod()); $loginData->setLoginAttempts(0); $loginData->save(); throw new kUserException('', kUserException::LOGIN_RETRIES_EXCEEDED); } $loginData->incLoginAttempts(); $loginData->save(); throw new kUserException('', kUserException::WRONG_PASSWORD); } if (time() < $loginData->getLoginBlockedUntil(null)) { throw new kUserException('', kUserException::LOGIN_BLOCKED); } $loginData->setLoginAttempts(0); $loginData->save(); $passUpdatedAt = $loginData->getPasswordUpdatedAt(null); if ($passUpdatedAt && time() > $passUpdatedAt + $loginData->getPassReplaceFreq()) { throw new kUserException('', kUserException::PASSWORD_EXPIRED); } if (!$partnerId) { $partnerId = $loginData->getLastLoginPartnerId(); } if (!$partnerId) { throw new kUserException('', kUserException::INVALID_PARTNER); } $partner = PartnerPeer::retrieveByPK($partnerId); $kuser = kuserPeer::getByLoginDataAndPartner($loginData->getId(), $partnerId); if (!$kuser || $kuser->getStatus() != KuserStatus::ACTIVE || !$partner || $partner->getStatus() != Partner::PARTNER_STATUS_ACTIVE) { // if a specific partner was requested - throw error if ($requestedPartner) { if ($partner && $partner->getStatus() != Partner::PARTNER_STATUS_ACTIVE) { throw new kUserException('', kUserException::USER_IS_BLOCKED); } else { if ($kuser && $kuser->getStatus() == KuserStatus::BLOCKED) { throw new kUserException('', kUserException::USER_IS_BLOCKED); } else { throw new kUserException('', kUserException::USER_NOT_FOUND); } } } // if kuser was found, keep status for following exception message $kuserStatus = $kuser ? $kuser->getStatus() : null; // if no specific partner was requested, but last logged in partner is not available, login to first found partner $kuser = null; $kuser = self::findFirstValidKuser($loginData->getId(), $partnerId); if (!$kuser) { if ($kuserStatus === KuserStatus::BLOCKED) { throw new kUserException('', kUserException::USER_IS_BLOCKED); } throw new kUserException('', kUserException::USER_NOT_FOUND); } } if ($kuser->getIsAdmin() && !in_array($kuser->getPartnerId(), kConf::get('no_save_of_last_login_partner_for_partner_ids'))) { $loginData->setLastLoginPartnerId($kuser->getPartnerId()); } $loginData->save(); $kuser->setLastLoginTime(time()); $kuser->save(); return $kuser; }
continue; } $new_login_data->setConfigPartnerId($user->getPartnerId()); $new_login_data->setLoginEmail($user->getEmail()); $new_login_data->setFirstName($firstName); $new_login_data->setLastName($lastName); $new_login_data->setSalt($user->getSalt()); $new_login_data->setSha1Password($user->getSha1Password()); $new_login_data->setCreatedAt($user->getCreatedAt()); $new_login_data->setUpdatedAt($user->getUpdatedAt()); $new_login_data->setLoginBlockedUntil($user->getLoginBlockedUntil()); $new_login_data->setLoginAttempts($user->getLoginAttempts()); $new_login_data->setPasswordHashKey($user->getPasswordHashKey()); $new_login_data->setPasswordUpdatedAt($user->getPasswordUpdatedAt()); $new_login_data->setPreviousPasswords($user->getPreviousPasswords()); $new_login_data->setLastLoginPartnerId($user->getPartnerId()); // check for existing kusers for this admin_kuser $c = new Criteria(); $c->addAnd(kuserPeer::PUSER_ID, '__ADMIN__' . $user->getId(), Criteria::EQUAL); $c->addAnd(kuserPeer::PARTNER_ID, $user->getPartnerId(), Criteria::EQUAL); $existing_kuser = kuserPeer::doSelectOne($c); if ($existing_kuser) { $existing_kuser->setFirstName($firstName); $existing_kuser->setLastName($lastName); $existing_kuser->setEmail($user->getEmail()); $existing_kuser->setIsAdmin(true); } else { $new_kuser->setEmail($user->getEmail()); $new_kuser->setScreenName($user->getScreenName()); $new_kuser->setPartnerId($user->getPartnerId()); $new_kuser->setFirstName($firstName);
echo '!!! ERROR - Existing user_login_data record with different password found with id [' . $existing_login_data->getId() . '] skipping user id [' . $lastUser . ']'; continue; } } else { $new_login_data->setConfigPartnerId($admin_console_partner_id); $new_login_data->setLoginEmail($user->getEmail()); $new_login_data->setFirstName($user->getFirstName()); $new_login_data->setLastName($user->getLastName()); $new_login_data->setSalt($user->getSalt()); $new_login_data->setSha1Password($user->getSha1Password()); $new_login_data->setCreatedAt($user->getCreatedAt()); $new_login_data->setUpdatedAt($user->getUpdatedAt()); $new_login_data->setLoginBlockedUntil(null); $new_login_data->setLoginAttempts(0); $new_login_data->setPasswordUpdatedAt(time()); $new_login_data->setLastLoginPartnerId($admin_console_partner_id); } if (!$dryRun) { if (!$existing_login_data) { KalturaLog::log('Saving new user_login_data with the following parameters: '); KalturaLog::log(print_r($new_login_data, true)); $new_login_data->save(); // save $new_kuser->setLoginDataId($new_login_data->getId()); } KalturaLog::log('Saving new kuser with the following parameters: '); KalturaLog::log(print_r($new_kuser, true)); $new_kuser->save(); // save if ($user->getIsPrimary()) { KalturaLog::log('Setting new kuser id [' . $new_kuser->getId() . '] as account owner for partner [-2]');