*/ class remote_plugin_usermanager extends RemotePlugin { /** * Create a new user * * If no password is provided, a password is auto generated. If the user can't be created * by the auth backend a return value of `false` is returned. You need to check this return * value rather than relying on the error code only. * * Superuser permission are required to create users. * * @param string $user The user's login name * @param string $name The user's full name * @param string $mail The user's email address * @param string[] $groups The groups the user should be in * @param string $password The user's password, empty for autogeneration * @param bool $notify Whether to send a notification email to the user * @return bool Wether the user was successfully created * @throws AccessDeniedException * @throws RemoteException * @todo handle error messages from auth backend */ public function createUser($user, $name, $mail, $groups, $password = '', $notify = false) { if (!auth_isadmin()) { throw new AccessDeniedException('Only admins are allowed to create users', 114); } /** @var AuthPlugin $auth */ global $auth; if (!$auth->canDo('addUser')) { throw new AccessDeniedException( sprintf('Authentication backend %s can\'t do addUser', $auth->getPluginName()), 404 ); } $user = trim($auth->cleanUser($user)); $name = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $name)); $mail = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $mail)); if ($user === '') throw new RemoteException('empty or invalid user', 401); if ($name === '') throw new RemoteException('empty or invalid user name', 402); if (!mail_isvalid($mail)) throw new RemoteException('empty or invalid mail address', 403); if ((string)$password === '') { try { $password = auth_pwgen($user); } catch (\Exception $e) { throw new RemoteException('Could not generate password', 405); } } if (!is_array($groups) || $groups === []) { $groups = null; } $ok = (bool)$auth->triggerUserMod('create', [$user, $password, $name, $mail, $groups]); if ($ok && $notify) { auth_sendPassword($user, $password); } return $ok; } /** * Remove a user * * You need to be a superuser to delete users. * * @param string[] $user The login name of the user to delete * @return bool wether the user was successfully deleted * @throws AccessDeniedException * @todo handle error messages from auth backend */ public function deleteUser($user) { if (!auth_isadmin()) { throw new AccessDeniedException('Only admins are allowed to delete users', 114); } global $auth; if (!$auth->canDo('delUser')) { throw new AccessDeniedException( sprintf('Authentication backend %s can\'t do delUser', $auth->getPluginName()), 404 ); } /** @var AuthPlugin $auth */ global $auth; return (bool)$auth->triggerUserMod('delete', [[$user]]); } }