示例#1
0
 /**
  * Adds a new user login data record
  * @param unknown_type $loginEmail
  * @param unknown_type $password
  * @param unknown_type $partnerId
  * @param unknown_type $firstName
  * @param unknown_type $lastName
  * @param bool $checkPasswordStructure backward compatibility - some extensions are registering a partner and setting its first password without checking its structure
  *
  * @throws kUserException::INVALID_EMAIL
  * @throws kUserException::INVALID_PARTNER
  * @throws kUserException::PASSWORD_STRUCTURE_INVALID
  * @throws kUserException::LOGIN_ID_ALREADY_USED
  * @throws kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED
  */
 public static function addLoginData($loginEmail, $password, $partnerId, $firstName, $lastName, $isAdminUser, $checkPasswordStructure = true, &$alreadyExisted = null)
 {
     if (!kString::isEmailString($loginEmail)) {
         throw new kUserException('', kUserException::INVALID_EMAIL);
     }
     $partner = partnerPeer::retrieveByPK($partnerId);
     if (!$partner) {
         throw new kUserException('', kUserException::INVALID_PARTNER);
     }
     if ($isAdminUser) {
         $userQuota = $partner->getAdminLoginUsersQuota();
         $adminLoginUsersNum = $partner->getAdminLoginUsersNumber();
         // check if login users quota exceeded - value -1 means unlimited
         if ($adminLoginUsersNum && (is_null($userQuota) || $userQuota != -1 && $userQuota <= $adminLoginUsersNum)) {
             throw new kUserException('', kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED);
         }
     }
     $existingData = self::getByEmail($loginEmail);
     if (!$existingData) {
         if ($checkPasswordStructure && !UserLoginDataPeer::isPasswordStructureValid($password)) {
             throw new kUserException('', kUserException::PASSWORD_STRUCTURE_INVALID);
         }
         // create a new login data record
         $loginData = new UserLoginData();
         $loginData->setConfigPartnerId($partnerId);
         $loginData->setLoginEmail($loginEmail);
         $loginData->setFirstName($firstName);
         $loginData->setLastName($lastName);
         $loginData->setPassword($password);
         $loginData->setLoginAttempts(0);
         $loginData->setLoginBlockedUntil(null);
         $loginData->resetPreviousPasswords();
         $loginData->save();
         // now $loginData has an id and hash key can be generated
         $hashKey = $loginData->newPassHashKey();
         $loginData->setPasswordHashKey($hashKey);
         $loginData->save();
         $alreadyExisted = false;
         return $loginData;
     } else {
         // add existing login data if password is valid
         $existingKuser = kuserPeer::getByLoginDataAndPartner($existingData->getId(), $partnerId);
         if ($existingKuser) {
             // partner already has a user with the same login data
             throw new kUserException('', kUserException::LOGIN_ID_ALREADY_USED);
         }
         KalturaLog::debug('Existing login data with the same email & password exists - returning id [' . $existingData->getId() . ']');
         $alreadyExisted = true;
         if ($isAdminUser && !$existingData->isLastLoginPartnerIdSet()) {
             $existingData->setLastLoginPartnerId($partnerId);
             $existingData->save();
         }
         return $existingData;
     }
 }
 $existing_login_data = UserLoginDataPeer::doSelectOne($c);
 if ($existing_login_data) {
     if ($user->getPartnerId() === $existing_login_data->getConfigPartnerId()) {
         $checkKuser = kuserPeer::getByLoginDataAndPartner($existing_login_data->getId(), $user->getPartnerId());
         if ($checkKuser && $checkKuser->getIsAdmin()) {
             KalturaLog::notice('!!! NOTICE - Existing ADMIN login data found with id [' . $existing_login_data->getId() . '] partner [' . $existing_login_data->getConfigPartnerId() . '] - skipping user id [' . $lastUser . '] of partner [' . $user->getPartnerId() . '] since this was probably caused by a bug');
             echo '!!! NOTICE - Existing ADMIN login data found with id [' . $existing_login_data->getId() . '] partner [' . $existing_login_data->getConfigPartnerId() . '] - skipping user id [' . $lastUser . '] of partner [' . $user->getPartnerId() . '] since this was probably caused by a bug';
             continue;
         }
     }
     KalturaLog::alert('!!! ERROR - Existing login data found with id [' . $existing_login_data->getId() . '] partner [' . $existing_login_data->getConfigPartnerId() . '] - skipping user id [' . $lastUser . '] of partner [' . $user->getPartnerId() . '] !!!!');
     echo '!!! ERROR - Existing login data found with id [' . $existing_login_data->getId() . '] partner [' . $existing_login_data->getConfigPartnerId() . '] - skipping user id [' . $lastUser . '] of partner [' . $user->getPartnerId() . '] !!!!';
     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);
示例#3
0
         KalturaLog::notice($msg);
     }
     // user can login - add a user_login_data record
     $existingLoginData = UserLoginDataPeer::getByEmail($newTempEmail);
     if ($existingLoginData) {
         $msg = 'NOTICE - login data for the same email [' . $newTempEmail . '] partner id [' . $existingLoginData->getConfigPartnerId() . '] already exists - setting kusers login email to';
         $newTempEmail = 'kuser_' . $user->getId() . '_' . $user->getEmail();
         while ($temp = UserLoginDataPeer::getByEmail($newTempEmail)) {
             $newTempEmail = '_' . $newTempEmail;
         }
         $msg .= ' [' . $newTempEmail . ']!';
         KalturaLog::notice($msg);
     }
     $new_login_data = new UserLoginData();
     $new_login_data->setConfigPartnerId($user->getPartnerId());
     $new_login_data->setLoginEmail($newTempEmail);
     $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());
 }
 if (!$dryRun) {
     if ($new_login_data) {
         KalturaLog::log('Saving new user_login_data with the following parameters: ' . PHP_EOL);
         KalturaLog::log(print_r($new_login_data, true));
         $new_login_data->save();
         // save
         $user->setLoginDataId($new_login_data->getId());
     } else {