Я использую owncloud 7 и хочу создать пользовательский вызов API, который создает пользователя и инициализирует домашний каталог пользователя (создает некоторую папку).
Документация для owncloud существует (это лучшее, что я нашел)
Для создания пользовательского вызова API я использовал \ OCP \ API :: register.
Чтобы проверить, существует ли пользователь
OC_User::userExists( $new_user_username ); // return boolean
Создать нового пользователя
OC_User::createUser( $new_user_username, $new_user_password );
Чтобы создать папку внутри этого домашнего каталога пользователей
Первый выход из системы любого зарегистрированного пользователя
OC_User::logout();
Затем войдите как новый пользователь
OC_User::login( $new_user_username, $new_user_password );
Если вы хотите быть уверены, что новый пользователь зарегистрирован, вы можете использовать
$logged_user_username = OC_User::getUser(); // If( $logged_user_username == $new_user_username ) you are ok!
Для инициализации домашнего каталога пользователя вы должны запустить эти два
\OC\Files\Filesystem::initMounts();
\OC\Files\Filesystem::initMountPoints( $new_user_username );
Для создания новой папки внутри домашнего каталога пользователей используйте
OC\Files\Filesystem::mkdir( 'New folder' );
сделав это, вы создадите новую папку с именем «Новая папка» в
/ data // files / Новая папка
Чтобы удалить папку, скажем, папку с фотографиями, созданную по умолчанию, используйте эту
OC\Files\Filesystem::rmdir( 'photos' );
Это удалит каталог
/ данных // файлы / фотографии
Чтобы получить чистый код, вы должны выйти из $ new_user_username
OC_User::logout();
и повторно зарегистрировать пользователя, который сделал вызов API.
Вы должны проверить, кому разрешено выполнять такой вызов API.
Об инициализации домашней страницы пользователя: если содержимое папки одинаково для всех новых пользователей, вы можете создать каталог шаблонов с содержимым и указать его в config.php
/**
* The directory where the skeleton files are located. These files will be
* copied to the data directory of new users. Leave empty to not copy any
* skeleton files.
*/
'skeletondirectory' => '',