示例#1
0
 /**
  * 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());
 }
示例#2
0
 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]');