我正在使用owncloud 7,我想创建一个自定义api调用来创建一个用户并初始化用户的主目录(创建一些文件夹)。
owncloud 的文档存在(这是我发现的最好的东西)
我正在使用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/New Folder 下创建一个名为“New Folder”的新文件夹
要删除文件夹,假设默认创建的照片文件夹,使用这个
OC\Files\Filesystem::rmdir( 'photos' );
这将删除目录 /data//files/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' => '',