diff --git a/doc/nextcloud-notes.md b/doc/nextcloud-notes.md new file mode 100644 index 0000000..b820e4b --- /dev/null +++ b/doc/nextcloud-notes.md @@ -0,0 +1,94 @@ +# Nextcloud integration + +- Based on [this plugin](https://github.com/nextcloud/user_external) +- Install that plugin via web +- Connect to server, enter nextcloud-docker-image: `docker exec -it nextcloud-aio-nextcloud bash` +- Adapt `/var/www/html/custom_apps/user_external/lib/BasicAuth.php` to switch from BasicAuth to RowtAuth: +```php + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\UserExternal; + +class BasicAuth extends Base { + private $authUrl; + + public function __construct($authUrl) { + parent::__construct($authUrl); + $this->authUrl = $authUrl; + } + + /** + * Check if the password is correct without logging in the user + * + * @param string $uid The username + * @param string $password The password + * + * @return true/false + */ + public function checkPassword($uid, $password) { + // Prepare POST data with credentials + $postData = http_build_query([ + 'name' => $uid, + 'password' => $password + ]); + + // Create context with POST method + $context = stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => 'Content-Type: application/x-www-form-urlencoded', + 'content' => $postData, + 'follow_location' => 0 + ] + ]); + + // Get the content of the response + $content = @file_get_contents($this->authUrl, false, $context); + + if ($content === false) { + \OC::$server->getLogger()->error( + 'ERROR: Failed to get content from Auth Url: '.$this->authUrl, + ['app' => 'user_external'] + ); + return false; + } + + // Check if the content is "SUCC" + if (trim($content) === "SUCC") { + $this->storeUser($uid); + return $uid; + } + + return false; + } +} +``` +- In `/var/www/html/config/config.php` add this: +``` + 'user_backends' => + array ( + 0 => + array ( + 'class' => '\\OCA\\UserExternal\\BasicAuth', + 'arguments' => + array ( + 0 => 'https://app.rudernlinz.at/nxauth', + ), + ), + ), +``` +- In `/var/www/html/config/config.php` add this `'skeletondirectory' => '',` to disable default folders for new users +- To automatically add users to a group (e.g. `vorstand`), use the `Auto Groups` plugin +- Shared folders are not shared with new members due to [this bug](https://github.com/nextcloud/server/issues/25062#issuecomment-766445043) + - Find DB config: `docker exec nextcloud-aio-database env | grep POSTGRES` + - Workaround: Connect to docker-db: `docker exec -it nextcloud-aio-database bash` + - Connect to db: `psql -U nextcloud -d nextcloud_database` + - (with `\l` you see all dbs) + - Connect to nextcloud db: `\c nextcloud_database` + - Do query from issue: `UPDATE oc_share SET accepted = 1 WHERE share_type = 1;`