/** * Get a session using user email and password * * @param string $puserId * @param string $loginEmail * @param string $password * @param int $partnerId * @param int $expiry * @param string $privileges * * @return string KS * * @throws KalturaErrors::USER_NOT_FOUND * @thrown KalturaErrors::LOGIN_RETRIES_EXCEEDED * @thrown KalturaErrors::LOGIN_BLOCKED * @thrown KalturaErrors::PASSWORD_EXPIRED * @thrown KalturaErrors::INVALID_PARTNER_ID * @thrown KalturaErrors::INTERNAL_SERVERL_ERROR * @throws KalturaErrors::USER_IS_BLOCKED */ protected function loginImpl($puserId, $loginEmail, $password, $partnerId = null, $expiry = 86400, $privileges = '*') { KalturaResponseCacher::disableCache(); myPartnerUtils::resetPartnerFilter('kuser'); kuserPeer::setUseCriteriaFilter(true); // if a KS of a specific partner is used, don't allow logging in to a different partner if ($this->getPartnerId() && $partnerId && $this->getPartnerId() != $partnerId) { throw new KalturaAPIException(KalturaErrors::INVALID_PARTNER_ID, $partnerId); } if ($loginEmail && !$partnerId) { $this->validateApiAccessControlByEmail($loginEmail); } try { if ($loginEmail) { $user = UserLoginDataPeer::userLoginByEmail($loginEmail, $password, $partnerId); } else { $user = kuserPeer::userLogin($puserId, $password, $partnerId); } } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::LOGIN_DATA_NOT_FOUND) { throw new KalturaAPIException(KalturaErrors::USER_NOT_FOUND); } if ($code == kUserException::USER_NOT_FOUND) { throw new KalturaAPIException(KalturaErrors::USER_NOT_FOUND); } else { if ($code == kUserException::LOGIN_RETRIES_EXCEEDED) { throw new KalturaAPIException(KalturaErrors::LOGIN_RETRIES_EXCEEDED); } else { if ($code == kUserException::LOGIN_BLOCKED) { throw new KalturaAPIException(KalturaErrors::LOGIN_BLOCKED); } else { if ($code == kUserException::PASSWORD_EXPIRED) { throw new KalturaAPIException(KalturaErrors::PASSWORD_EXPIRED); } else { if ($code == kUserException::WRONG_PASSWORD) { throw new KalturaAPIException(KalturaErrors::USER_WRONG_PASSWORD); } else { if ($code == kUserException::USER_IS_BLOCKED) { throw new KalturaAPIException(KalturaErrors::USER_IS_BLOCKED); } } } } } } throw new $e(); } if (!$user) { throw new KalturaAPIException(KalturaErrors::LOGIN_DATA_NOT_FOUND); } if ($partnerId && $user->getPartnerId() != $partnerId || $this->getPartnerId() && !$partnerId && $user->getPartnerId() != $this->getPartnerId()) { throw new KalturaAPIException(KalturaErrors::INVALID_PARTNER_ID, $partnerId); } $partner = PartnerPeer::retrieveByPK($user->getPartnerId()); if (!$partner || $partner->getStatus() == Partner::PARTNER_STATUS_FULL_BLOCK) { throw new KalturaAPIException(KalturaErrors::INVALID_PARTNER_ID, $user->getPartnerId()); } $ks = null; $admin = $user->getIsAdmin() ? KalturaSessionType::ADMIN : KalturaSessionType::USER; // create a ks for this admin_kuser as if entered the admin_secret using the API kSessionUtils::createKSessionNoValidations($partner->getId(), $user->getPuserId(), $ks, $expiry, $admin, "", $privileges); return $ks; }