function addUserImpl($user) { $dbUser = null; $dbUser = $user->toObject($dbUser); try { $dbUser = kuserPeer::addUser($dbUser, $user->password); } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::USER_ALREADY_EXISTS) { throw new KalturaAPIException(KalturaErrors::DUPLICATE_USER_BY_ID, $user->id); //backward compatibility } if ($code == kUserException::LOGIN_ID_ALREADY_USED) { throw new KalturaAPIException(KalturaErrors::DUPLICATE_USER_BY_LOGIN_ID, $user->email); //backward compatibility } else { if ($code == kUserException::USER_ID_MISSING) { throw new KalturaAPIException(KalturaErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL, $user->getFormattedPropertyNameWithClassName('id')); } else { if ($code == kUserException::INVALID_EMAIL) { throw new KalturaAPIException(KalturaErrors::INVALID_FIELD_VALUE, 'email'); } else { if ($code == kUserException::INVALID_PARTNER) { throw new KalturaAPIException(KalturaErrors::UNKNOWN_PARTNER_ID); } else { if ($code == kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED) { throw new KalturaAPIException(KalturaErrors::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED); } else { if ($code == kUserException::PASSWORD_STRUCTURE_INVALID) { $partner = $dbUser->getPartner(); $invalidPasswordStructureMessage = ''; if ($partner && $partner->getInvalidPasswordStructureMessage()) { $invalidPasswordStructureMessage = $partner->getInvalidPasswordStructureMessage(); } throw new KalturaAPIException(KalturaErrors::PASSWORD_STRUCTURE_INVALID, $invalidPasswordStructureMessage); } } } } } } throw $e; } catch (kPermissionException $e) { $code = $e->getCode(); if ($code == kPermissionException::ROLE_ID_MISSING) { throw new KalturaAPIException(KalturaErrors::ROLE_ID_MISSING); } if ($code == kPermissionException::ONLY_ONE_ROLE_PER_USER_ALLOWED) { throw new KalturaAPIException(KalturaErrors::ONLY_ONE_ROLE_PER_USER_ALLOWED); } else { if ($code == kPermissionException::USER_ROLE_NOT_FOUND) { throw new KalturaAPIException(KalturaErrors::USER_ROLE_NOT_FOUND); } } throw $e; } $newUser = new KalturaUser(); $newUser->fromObject($dbUser, $this->getResponseProfile()); return $newUser; }
/** * Adds a user to the Kaltura DB. * Input param $id is the unique identifier in the partner's system * * @action add * @param KalturaUser $user * @return KalturaUser * * @throws KalturaErrors::DUPLICATE_USER_BY_ID * @throws KalturaErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL * @throws KalturaErrors::INVALID_FIELD_VALUE * @throws KalturaErrors::UNKNOWN_PARTNER_ID * @throws KalturaErrors::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED * @throws KalturaErrors::PASSWORD_STRUCTURE_INVALID * @throws KalturaErrors::DUPLICATE_USER_BY_LOGIN_ID */ function addAction(KalturaUser $user) { $user->validatePropertyMinLength("id", 1); if ($user instanceof KalturaAdminUser) { $user->isAdmin = true; } $user->partnerId = $this->getPartnerId(); $dbUser = null; $dbUser = $user->toObject($dbUser); try { $dbUser = kuserPeer::addUser($dbUser, $user->password); } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::USER_ALREADY_EXISTS) { throw new KalturaAPIException(KalturaErrors::DUPLICATE_USER_BY_ID, $user->id); //backward compatibility } if ($code == kUserException::LOGIN_ID_ALREADY_USED) { throw new KalturaAPIException(KalturaErrors::DUPLICATE_USER_BY_LOGIN_ID, $user->email); //backward compatibility } else { if ($code == kUserException::USER_ID_MISSING) { throw new KalturaAPIException(KalturaErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL, $user->getFormattedPropertyNameWithClassName('id')); } else { if ($code == kUserException::INVALID_EMAIL) { throw new KalturaAPIException(KalturaErrors::INVALID_FIELD_VALUE, 'email'); } else { if ($code == kUserException::INVALID_PARTNER) { throw new KalturaAPIException(KalturaErrors::UNKNOWN_PARTNER_ID); } else { if ($code == kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED) { throw new KalturaAPIException(KalturaErrors::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED); } else { if ($code == kUserException::PASSWORD_STRUCTURE_INVALID) { throw new KalturaAPIException(KalturaErrors::PASSWORD_STRUCTURE_INVALID); } } } } } } throw $e; } catch (kPermissionException $e) { $code = $e->getCode(); if ($code == kPermissionException::ROLE_ID_MISSING) { throw new KalturaAPIException(KalturaErrors::ROLE_ID_MISSING); } if ($code == kPermissionException::ONLY_ONE_ROLE_PER_USER_ALLOWED) { throw new KalturaAPIException(KalturaErrors::ONLY_ONE_ROLE_PER_USER_ALLOWED); } throw $e; } $newUser = new KalturaUser(); $newUser->fromObject($dbUser); return $newUser; }
public function executeImpl($partner_id, $subp_id, $puser_id, $partner_prefix, $puser_kuser) { $target_puser_id = $this->getPM("user_id"); $target_puser_kuser = PuserKuserPeer::retrieveByPartnerAndUid($partner_id, null, $target_puser_id); if ($target_puser_kuser) { $this->addDebug("puser_exists", $target_puser_kuser->getId()); // might be that the puser_kuser exists but the kuser does not $kuser = kuserPeer::retrieveByPK($target_puser_kuser->getKuserId()); if ($kuser) { $this->addError(APIErrors::DUPLICATE_USER_BY_ID, $target_puser_id); return; } else { // puser_kuser exists but need to create the ksuer... } } else { $target_puser_kuser = new PuserKuser(); $target_puser_kuser->setPuserId($target_puser_id); $target_puser_kuser->setPartnerId($partner_id); $target_puser_kuser->save(); $this->addDebug("Created_new_puser_kuser", $target_puser_kuser->getId()); } // get the new properties for the kuser from the request $kuser = new kuser(); $obj_wrapper = objectWrapperBase::getWrapperClass($kuser, 0); $fields_modified = baseObjectUtils::fillObjectFromMap($this->getInputParams(), $kuser, "user_", $obj_wrapper->getUpdateableFields()); // check that mandatory fields were set // TODO if (count($fields_modified) > 0) { if (!$partner_id) { $kuser_from_db = kuserPeer::getKuserByScreenName($kuser->getScreenName()); if ($kuser_from_db) { $this->addError(APIErrors::DUPLICATE_USER_BY_SCREEN_NAME, $kuser->getScreenName()); return; } } $kuser->setPartnerId($partner_id); $kuser->setPuserId($target_puser_id); try { $kuser = kuserPeer::addUser($kuser); } catch (kUserException $e) { $code = $e->getCode(); if ($code == kUserException::USER_ALREADY_EXISTS) { $this->addException(APIErrors::DUPLICATE_USER_BY_ID, $kuser->getId()); return null; } if ($code == kUserException::LOGIN_ID_ALREADY_USED) { $this->addException(APIErrors::DUPLICATE_USER_BY_LOGIN_ID, $kuser->getEmail()); return null; } else { if ($code == kUserException::USER_ID_MISSING) { $this->addException(APIErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL, 'id'); return null; } else { if ($code == kUserException::INVALID_EMAIL) { $this->addException(APIErrors::INVALID_FIELD_VALUE); return null; } else { if ($code == kUserException::INVALID_PARTNER) { $this->addException(APIErrors::UNKNOWN_PARTNER_ID); return null; } else { if ($code == kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED) { $this->addException(APIErrors::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED); return null; } else { if ($code == kUserException::PASSWORD_STRUCTURE_INVALID) { $this->addException(APIErrors::PASSWORD_STRUCTURE_INVALID); return null; } } } } } } throw $e; } catch (kPermissionException $e) { $code = $e->getCode(); if ($code == kPermissionException::ROLE_ID_MISSING) { $this->addException(APIErrors::ROLE_ID_MISSING); return null; } if ($code == kPermissionException::ONLY_ONE_ROLE_PER_USER_ALLOWED) { $this->addException(APIErrors::ONLY_ONE_ROLE_PER_USER_ALLOWED); return null; } throw $e; } // now update the puser_kuser $target_puser_kuser->setPuserName($kuser->getScreenName()); $target_puser_kuser->setKuserId($kuser->getId()); $target_puser_kuser->save(); $this->addMsg("user", objectWrapperBase::getWrapperClass($target_puser_kuser, objectWrapperBase::DETAIL_LEVEL_DETAILED)); $this->addDebug("added_fields", $fields_modified); } else { $this->addError(APIErrors::NO_FIELDS_SET_FOR_USER); } }
private function createNewAdminKuser($newPartner, $existing_password) { // generate a new password if not given if ($existing_password != null) { $password = $existing_password; } else { $password = UserLoginDataPeer::generateNewPassword(); } // create the user $kuser = new kuser(); $kuser->setEmail($newPartner->getAdminEmail()); list($firstName, $lastName) = kString::nameSplit($newPartner->getAdminName()); $kuser->setFirstName($firstName); $kuser->setLastName($lastName); $kuser->setPartnerId($newPartner->getId()); $kuser->setIsAdmin(true); $kuser->setPuserId($newPartner->getAdminEmail()); $kuser = kuserPeer::addUser($kuser, $password, false, false); //this also saves the kuser and adds a user_login_data record $loginData = UserLoginDataPeer::retrieveByPK($kuser->getLoginDataId()); return array($password, $loginData->getPasswordHashKey(), $kuser->getId()); }