/** * 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; }
/** * Register to Kaltura's partner program * * @action register * @param KalturaPartner $partner * @param string $cmsPassword * @return KalturaPartner * * @throws APIErrors::PARTNER_REGISTRATION_ERROR */ function registerAction(KalturaPartner $partner, $cmsPassword = "") { KalturaResponseCacher::disableCache(); $dbPartner = $partner->toPartner(); $partner->validatePropertyNotNull("name"); $partner->validatePropertyNotNull("adminName"); $partner->validatePropertyNotNull("adminEmail"); $partner->validatePropertyNotNull("description"); $partner->validatePropertyMaxLength("country", 2, true); $partner->validatePropertyMaxLength("state", 2, true); $c = new Criteria(); $c->addAnd(UserLoginDataPeer::LOGIN_EMAIL, $partner->adminEmail, Criteria::EQUAL); $c->setLimit(1); $existingUser = UserLoginDataPeer::doCount($c) > 0; 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/grou, allow setting it as parent for the new created partner $parentPartner = PartnerPeer::retrieveByPK($parentPartnerId); if (!($parentPartner->getPartnerGroupType() == Partner::PARTNER_GROUP_TYPE_VAR || $parentPartner->getPartnerGroupType() == Partner::PARTNER_GROUP_TYPE_GROUP)) { 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 && kuserPeer::getKuserByEmail($partner->adminEmail, Partner::ADMIN_CONSOLE_PARTNER_ID) != null) { $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); $dbPartner = PartnerPeer::retrieveByPK($pid); // send a confirmation email as well as the result of the service $partner_registration->sendRegistrationInformationForPartner($dbPartner, false, $existingUser); } catch (SignupException $se) { KalturaLog::INFO($se); throw new KalturaAPIException(APIErrors::PARTNER_REGISTRATION_ERROR, 'SE ' . $se->getMessage()); } 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, $ex->getMessage()); } $partner = new KalturaPartner(); // start from blank $partner->fromPartner($dbPartner); $partner->secret = $dbPartner->getSecret(); $partner->adminSecret = $dbPartner->getAdminSecret(); $partner->cmsPassword = $pass; return $partner; }
public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { // make sure the secret fits the one in the partner's table $partner_adminEmail = trim($this->getPM("partner_adminEmail")); $cms_password = trim($this->getPM("cms_password")); $detailed = trim($this->getP("detailed", "true", true)); if ($detailed === "0" || $detailed === "false") { $detailed = false; } if (empty($partner_id)) { $this->addError(APIErrors::MANDATORY_PARAMETER_MISSING, "partner_id"); return; } $login_data = UserLoginDataPeer::getByEmail($partner_adminEmail); if (!$login_data) { $this->addError(APIErrors::ADMIN_KUSER_NOT_FOUND); return; } if (!$login_data->isPasswordValid($cms_password)) { $this->addError(APIErrors::ADMIN_KUSER_NOT_FOUND); return; } $c = new Criteria(); $c->add(kuserPeer::EMAIL, $partner_adminEmail); $c->add(kuserPeer::PARTNER_ID, $partner_id); $c->add(kuserPeer::LOGIN_DATA_ID, $login_data->getId()); $c->add(kuserPeer::IS_ADMIN, true); $c->setLimit(20); // just to limit the number of partners returned $admin = kuserPeer::doSelectOne($c); // be sure to return the same error if there are no admins in the list and when there are none matched - // so no hint about existing admin will leak if (count($admin) < 1) { $this->addError(APIErrors::ADMIN_KUSER_NOT_FOUND); return; } $partner = PartnerPeer::retrieveByPK($partner_id); $partner_registration = new myPartnerRegistration(); $partner_registration->sendRegistrationInformationForPartner($partner, true, true); $subpid = $partner_id * 100; $level = $detailed ? objectWrapperBase::DETAIL_LEVEL_DETAILED : objectWrapperBase::DETAIL_LEVEL_REGULAR; $wrapper = objectWrapperBase::getWrapperClass($partner, $level); $this->addMsg("partner", $wrapper); $this->addMsg("html_message", ""); $this->addMsg("subp_id", $partner->getSubp()); }
public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { defPartnerservices2baseAction::disableCache(); $partner = new Partner(); $obj_wrapper = objectWrapperBase::getWrapperClass($partner, 0); $fields_modified = baseObjectUtils::fillObjectFromMap($this->getInputParams(), $partner, "partner_", $obj_wrapper->getUpdateableFields()); $c = new Criteria(); $c->addAnd(UserLoginDataPeer::LOGIN_EMAIL, $partner->getAdminEmail(), Criteria::EQUAL); $c->setLimit(1); $existingUser = UserLoginDataPeer::doCount($c) > 0; // check that mandatory fields were set // TODO if (count($fields_modified) > 0) { try { $cms_password = $this->getP("cms_password"); $partner_registration = new myPartnerRegistration(); list($pid, $subpid, $pass, $hashKey) = $partner_registration->initNewPartner($partner->getName(), $partner->getAdminName(), $partner->getAdminEmail(), $partner->getCommercialUse(), "yes", $partner->getDescription(), $partner->getUrl1(), $cms_password, $partner); $partner_from_db = PartnerPeer::retrieveByPK($pid); $partner_registration->sendRegistrationInformationForPartner($partner_from_db, false, $existingUser); } catch (SignupException $se) { $this->addError(APIErrors::PARTNER_REGISTRATION_ERROR, $se->getMessage()); return; } catch (Exception $ex) { // this assumes the partner name is unique - TODO - remove key from DB ! $this->addError(APIErrors::SERVERL_ERROR, "Partner with name already exists"); $this->addError(APIErrors::SERVERL_ERROR, $ex->getMessage()); return; } $this->addMsg("partner", objectWrapperBase::getWrapperClass($partner_from_db, objectWrapperBase::DETAIL_LEVEL_DETAILED)); $this->addMsg("subp_id", $subpid); $this->addMsg("cms_password", $pass); $this->addDebug("added_fields", $fields_modified); } else { $this->addError(APIErrors::NO_FIELDS_SET_FOR_PARTNER); } }