/** * Create a new Partner object * * @action register * @param KalturaPartner $partner * @param string $cmsPassword * @param int $templatePartnerId * @param bool $silent * @return KalturaPartner * * @throws APIErrors::PARTNER_REGISTRATION_ERROR */ public function registerAction(KalturaPartner $partner, $cmsPassword = "", $templatePartnerId = null, $silent = false) { KalturaResponseCacher::disableCache(); $dbPartner = $partner->toPartner(); $c = new Criteria(); $c->addAnd(UserLoginDataPeer::LOGIN_EMAIL, $partner->adminEmail, Criteria::EQUAL); $existingUser = UserLoginDataPeer::doSelectOne($c); /*@var $exisitingUser UserLoginData */ try { if ($cmsPassword == "") { $cmsPassword = null; } $parentPartnerId = null; if ($this->getKs() && $this->getKs()->isAdmin()) { $parentPartnerId = $this->getKs()->partner_id; if ($parentPartnerId == Partner::ADMIN_CONSOLE_PARTNER_ID) { $parentPartnerId = null; } else { // only if this partner is a var/group, allow setting it as parent for the new created partner $parentPartner = PartnerPeer::retrieveByPK($parentPartnerId); if (!($parentPartner->getPartnerGroupType() == PartnerGroupType::VAR_GROUP || $parentPartner->getPartnerGroupType() == PartnerGroupType::GROUP)) { throw new KalturaAPIException(KalturaErrors::NON_GROUP_PARTNER_ATTEMPTING_TO_ASSIGN_CHILD, $parentPartnerId); } if ($templatePartnerId) { $templatePartner = PartnerPeer::retrieveByPK($templatePartnerId); if (!$templatePartner || $templatePartner->getPartnerParentId() != $parentPartnerId) { throw new KalturaAPIException(KalturaErrors::NON_GROUP_PARTNER_ATTEMPTING_TO_ASSIGN_CHILD, $parentPartnerId); } } } } $partner_registration = new myPartnerRegistration($parentPartnerId); $ignorePassword = false; if ($existingUser && ($this->getKs()->partner_id == Partner::ADMIN_CONSOLE_PARTNER_ID || $this->getKs()->partner_id == $parentPartnerId)) { kuserPeer::setUseCriteriaFilter(false); $kuserOfLoginData = kuserPeer::getKuserByEmail($partner->adminEmail, $existingUser->getConfigPartnerId()); kuserPeer::setUseCriteriaFilter(true); if ($kuserOfLoginData) { $ignorePassword = true; } } list($pid, $subpid, $pass, $hashKey) = $partner_registration->initNewPartner($dbPartner->getName(), $dbPartner->getAdminName(), $dbPartner->getAdminEmail(), $dbPartner->getCommercialUse(), "yes", $dbPartner->getDescription(), $dbPartner->getUrl1(), $cmsPassword, $dbPartner, $ignorePassword, $templatePartnerId); $dbPartner = PartnerPeer::retrieveByPK($pid); // send a confirmation email as well as the result of the service $partner_registration->sendRegistrationInformationForPartner($dbPartner, false, $existingUser, $silent); } catch (Exception $ex) { KalturaLog::CRIT($ex); // this assumes the partner name is unique - TODO - remove key from DB ! throw new KalturaAPIException(APIErrors::PARTNER_REGISTRATION_ERROR); } $partner = new KalturaPartner(); // start from blank $partner->fromPartner($dbPartner); $partner->secret = $dbPartner->getSecret(); $partner->adminSecret = $dbPartner->getAdminSecret(); $partner->cmsPassword = $pass; return $partner; }
/** * Update admin user password and email * * @param string $email * @param string $password * @param string $newEmail Optional, provide only when you want to update the email * @param string $newPassword * * @throws KalturaErrors::INVALID_FIELD_VALUE * @throws KalturaErrors::LOGIN_DATA_NOT_FOUND * @throws KalturaErrors::WRONG_OLD_PASSWORD * @throws KalturaErrors::PASSWORD_STRUCTURE_INVALID * @throws KalturaErrors::PASSWORD_ALREADY_USED * @throws KalturaErrors::LOGIN_ID_ALREADY_USED */ protected function updateLoginDataImpl($email, $password, $newEmail = "", $newPassword = "", $newFirstName, $newLastName) { KalturaResponseCacher::disableCache(); $this->validateApiAccessControlByEmail($email); if ($newEmail != "") { if (!kString::isEmailString($newEmail)) { throw new KalturaAPIException(KalturaErrors::INVALID_FIELD_VALUE, "newEmail"); } } try { UserLoginDataPeer::updateLoginData($email, $password, $newEmail, $newPassword, $newFirstName, $newLastName); } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::LOGIN_DATA_NOT_FOUND) { throw new KalturaAPIException(KalturaErrors::LOGIN_DATA_NOT_FOUND); } else { if ($code == kUserException::WRONG_PASSWORD) { if ($password == $newPassword) { throw new KalturaAPIException(KalturaErrors::USER_WRONG_PASSWORD); } else { throw new KalturaAPIException(KalturaErrors::WRONG_OLD_PASSWORD); } } else { if ($code == kUserException::PASSWORD_STRUCTURE_INVALID) { $c = new Criteria(); $c->add(UserLoginDataPeer::LOGIN_EMAIL, $email); $loginData = UserLoginDataPeer::doSelectOne($c); $invalidPasswordStructureMessage = $loginData->getInvalidPasswordStructureMessage(); throw new KalturaAPIException(KalturaErrors::PASSWORD_STRUCTURE_INVALID, $invalidPasswordStructureMessage); } else { if ($code == kUserException::PASSWORD_ALREADY_USED) { throw new KalturaAPIException(KalturaErrors::PASSWORD_ALREADY_USED); } else { if ($code == kUserException::INVALID_EMAIL) { throw new KalturaAPIException(KalturaErrors::INVALID_FIELD_VALUE, 'email'); } else { if ($code == kUserException::LOGIN_ID_ALREADY_USED) { throw new KalturaAPIException(KalturaErrors::LOGIN_ID_ALREADY_USED); } } } } } } throw $e; } }
private function updateLoginData($email, $password, $newEmail = "", $newPassword = "", $newFirstName = null, $newLastName = null) { if ($newEmail != "") { if (!kString::isEmailString($newEmail)) { throw new KalturaLoginDataException(APIErrors::INVALID_FIELD_VALUE, "newEmail"); } } try { UserLoginDataPeer::updateLoginData($email, $password, $newEmail, $newPassword, $newFirstName, $newLastName); } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::LOGIN_DATA_NOT_FOUND) { throw new KalturaLoginDataException(APIErrors::LOGIN_DATA_NOT_FOUND); } else { if ($code == kUserException::WRONG_PASSWORD) { if ($password == $newPassword) { throw new KalturaLoginDataException(APIErrors::USER_WRONG_PASSWORD); } else { throw new KalturaLoginDataException(APIErrors::WRONG_OLD_PASSWORD); } } else { if ($code == kUserException::PASSWORD_STRUCTURE_INVALID) { $c = new Criteria(); $c->add(UserLoginDataPeer::LOGIN_EMAIL, $email); $loginData = UserLoginDataPeer::doSelectOne($c); $invalidPasswordStructureMessage = $loginData->getInvalidPasswordStructureMessage(); $invalidPasswordStructureMessage = str_replace('\\n', "\n", $invalidPasswordStructureMessage); throw new KalturaLoginDataException(APIErrors::PASSWORD_STRUCTURE_INVALID, $invalidPasswordStructureMessage); } else { if ($code == kUserException::PASSWORD_ALREADY_USED) { throw new KalturaLoginDataException(APIErrors::PASSWORD_ALREADY_USED); } else { if ($code == kUserException::INVALID_EMAIL) { throw new KalturaLoginDataException(APIErrors::INVALID_FIELD_VALUE, 'email'); } else { if ($code == kUserException::LOGIN_ID_ALREADY_USED) { throw new KalturaLoginDataException(APIErrors::LOGIN_ID_ALREADY_USED); } } } } } } throw $e; } }
if ($user->getPartnerId() == PartnerPeer::GLOBAL_PARTNER) { KalturaLog::log('Skipping partner 0'); continue; } $new_kuser = new kuser(); $new_login_data = new UserLoginData(); $partner = PartnerPeer::retrieveByPK($user->getPartnerId()); if (!$partner) { KalturaLog::alert('!!! ERROR - Partner ID [' . $user->getPartnerId() . '] not found on DB but set for admin user id [' . $lastUser . '] !!!'); echo '!!! ERROR - Partner ID [' . $user->getPartnerId() . '] not found on DB but set for admin user id [' . $lastUser . '] !!!'; continue; } list($firstName, $lastName) = kString::nameSplit($user->getFullName()); $c = new Criteria(); $c->addAnd(UserLoginDataPeer::LOGIN_EMAIL, $user->getEmail()); $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());
/** * @param string $email * @param string $use_bd * @return UserLoginData */ public static function getByEmail($email) { $c = new Criteria(); $c->add(UserLoginDataPeer::LOGIN_EMAIL, $email); $data = UserLoginDataPeer::doSelectOne($c); return $data; }