From a78ab8f4f4796f458a7995cf23a50114d7bb2498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 18:18:08 +0200 Subject: [PATCH 1/8] Change support version to 14 --- appinfo/info.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 0e5c94b..38207b0 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -10,8 +10,8 @@ 4.0.0-dev agpl - Andreas Böhler <dev (at) aboehler (dot) at> - Marcin Łojewski <dev@mlojewski.me> + Marcin Łojewski + Andreas Böhler UserSQL https://github.com/nextcloud/user_sql/issues https://github.com/nextcloud/user_sql @@ -22,7 +22,7 @@ auth - + \OCA\UserSQL\Settings\Admin From 3546682804d869d34559b3af0ed00c4f622ca601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 19:06:52 +0200 Subject: [PATCH 2/8] Group backend for Nextcloud 14 --- lib/Backend/GroupBackend.php | 113 ++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 36 deletions(-) diff --git a/lib/Backend/GroupBackend.php b/lib/Backend/GroupBackend.php index 2ef5cd0..3d514cb 100644 --- a/lib/Backend/GroupBackend.php +++ b/lib/Backend/GroupBackend.php @@ -21,12 +21,20 @@ namespace OCA\UserSQL\Backend; -use OC\Group\Backend; use OCA\UserSQL\Cache; use OCA\UserSQL\Constant\DB; use OCA\UserSQL\Model\Group; use OCA\UserSQL\Properties; use OCA\UserSQL\Repository\GroupRepository; +use OCP\Group\Backend\ABackend; +use OCP\Group\Backend\IAddToGroupBackend; +use OCP\Group\Backend\ICountDisabledInGroup; +use OCP\Group\Backend\ICountUsersBackend; +use OCP\Group\Backend\ICreateGroupBackend; +use OCP\Group\Backend\IDeleteGroupBackend; +use OCP\Group\Backend\IGroupDetailsBackend; +use OCP\Group\Backend\IIsAdminBackend; +use OCP\Group\Backend\IRemoveFromGroupBackend; use OCP\ILogger; /** @@ -34,7 +42,15 @@ use OCP\ILogger; * * @author Marcin Łojewski */ -final class GroupBackend extends Backend +final class GroupBackend extends ABackend implements + IAddToGroupBackend, + ICountDisabledInGroup, + ICountUsersBackend, + ICreateGroupBackend, + IDeleteGroupBackend, + IGroupDetailsBackend, + IIsAdminBackend, + IRemoveFromGroupBackend { /** * @var string The application name. @@ -128,14 +144,9 @@ final class GroupBackend extends Backend } /** - * Returns the number of users in given group matching the search term. - * - * @param string $gid The group ID. - * @param string $search The search term. - * - * @return int The number of users in given group matching the search term. + * @inheritdoc */ - public function countUsersInGroup($gid, $search = "") + public function countUsersInGroup(string $gid, string $search = ""): int { $this->logger->debug( "Entering countUsersInGroup($gid, $search)", @@ -355,18 +366,18 @@ final class GroupBackend extends Backend } /** - * Checks if a user is in the admin group. - * - * @param string $uid User ID. - * - * @return bool TRUE if a user is in the admin group, FALSE otherwise. + * @inheritdoc */ - public function isAdmin($uid) + public function isAdmin(string $uid): bool { $this->logger->debug( "Entering isAdmin($uid)", ["app" => $this->appName] ); + if (empty($this->properties[DB::GROUP_ADMIN_COLUMN])) { + return false; + } + $cacheKey = self::class . "admin_" . $uid; $admin = $this->cache->get($cacheKey); @@ -394,18 +405,18 @@ final class GroupBackend extends Backend } /** - * Get associative array of the group details. - * - * @param string $gid The group ID. - * - * @return array Associative array of the group details. + * @inheritdoc */ - public function getGroupDetails($gid) + public function getGroupDetails(string $gid): array { $this->logger->debug( "Entering getGroupDetails($gid)", ["app" => $this->appName] ); + if (empty($this->properties[DB::GROUP_NAME_COLUMN])) { + return []; + } + $group = $this->getGroup($gid); if (!($group instanceof Group)) { @@ -421,21 +432,6 @@ final class GroupBackend extends Backend return $details; } - /** - * @inheritdoc - */ - public function getSupportedActions() - { - $actions = parent::getSupportedActions(); - - $actions &= empty($this->properties[DB::GROUP_ADMIN_COLUMN]) - ? ~Backend::IS_ADMIN : ~0; - $actions &= empty($this->properties[DB::GROUP_NAME_COLUMN]) - ? ~Backend::GROUP_DETAILS : ~0; - - return $actions; - } - /** * Check if this backend is correctly set and can be enabled. * @@ -454,4 +450,49 @@ final class GroupBackend extends Backend && !empty($this->properties[DB::USER_GROUP_GID_COLUMN]) && !empty($this->properties[DB::USER_GROUP_UID_COLUMN]); } + + /** + * @inheritdoc + */ + public function addToGroup(string $uid, string $gid): bool + { + // TODO: Implement addToGroup() method. + return false; + } + + /** + * @inheritdoc + */ + public function countDisabledInGroup(string $gid): int + { + // TODO: Implement countDisabledInGroup() method. + return 0; + } + + /** + * @inheritdoc + */ + public function createGroup(string $gid): bool + { + // TODO: Implement createGroup() method. + return false; + } + + /** + * @inheritdoc + */ + public function deleteGroup(string $gid): bool + { + // TODO: Implement deleteGroup() method. + return false; + } + + /** + * @inheritdoc + */ + public function removeFromGroup(string $uid, string $gid) + { + // TODO: Implement removeFromGroup() method. + return false; + } } From bb8e05b3bea21d4b697580e5d8f885b622976cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 22:14:14 +0200 Subject: [PATCH 3/8] Options to enable execute DMLs on tables --- lib/Constant/Opt.php | 3 ++ templates/admin.php | 69 +++++++++++++++++++++++--------------------- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/lib/Constant/Opt.php b/lib/Constant/Opt.php index 56ce8b2..cad2be6 100644 --- a/lib/Constant/Opt.php +++ b/lib/Constant/Opt.php @@ -32,6 +32,9 @@ final class Opt const EMAIL_SYNC = "opt.email_sync"; const HOME_LOCATION = "opt.home_location"; const HOME_MODE = "opt.home_mode"; + const MODIFY_GROUP = "opt.modify_group"; + const MODIFY_USER = "opt.modify_user"; + const MODIFY_USER_GROUP = "opt.modify_user_group"; const NAME_CHANGE = "opt.name_change"; const PASSWORD_CHANGE = "opt.password_change"; const USE_CACHE = "opt.use_cache"; diff --git a/templates/admin.php b/templates/admin.php index a39becf..7469d1f 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -21,8 +21,8 @@ use OCP\IL10N; -script('user_sql', 'settings'); -style('user_sql', 'settings'); +script("user_sql", "settings"); +style("user_sql", "settings"); function print_text_input(IL10N $l, $id, $label, $value = "", $type = "text") { @@ -94,11 +94,11 @@ function print_select_options(

t("Define your database connection parameters.")); ?>

"MySQL", "pgsql" => "PostgreSQL"]; - print_select_options($l, "db-driver", "SQL driver", $drivers, $_['db.driver']); - print_text_input($l, "db-hostname", "Hostname", $_['db.hostname']); - print_text_input($l, "db-database", "Database", $_['db.database']); - print_text_input($l, "db-username", "Username", $_['db.username']); - print_text_input($l, "db-password", "Password", $_['db.password'], "password"); ?> + print_select_options($l, "db-driver", "SQL driver", $drivers, $_["db.driver"]); + print_text_input($l, "db-hostname", "Hostname", $_["db.hostname"]); + print_text_input($l, "db-database", "Database", $_["db.database"]); + print_text_input($l, "db-username", "Username", $_["db.username"]); + print_text_input($l, "db-password", "Password", $_["db.password"], "password"); ?>
">
@@ -108,16 +108,16 @@ function print_select_options(

t("Options")); ?>

t("Here are all currently supported options.")); ?>

+ print_checkbox_input($l, "opt-name_change", "Allow display name change", $_["opt.name_change"]); + print_checkbox_input($l, "opt-password_change", "Allow password change", $_["opt.password_change"]); ?>
+ print_checkbox_input($l, "opt-use_cache", "Use cache", $_["opt.use_cache"], false); ?> ">
"None", "initial" => "Synchronise only once", "force_nc"=>"Nextcloud always wins", "force_sql"=>"SQL always wins"], $_['opt.email_sync']); - print_select_options($l, "opt-home_mode", "Home mode", ["" => "Default", "query" => "Query", "static" => "Static"], $_['opt.home_mode']); - print_text_input($l, "opt-home_location", "Home Location", $_['opt.home_location']); ?> + print_select_options($l, "opt-crypto_class", "Hashing algorithm", $hashing, $_["opt.crypto_class"]); + print_select_options($l, "opt-email_sync", "Email sync", ["" => "None", "initial" => "Synchronise only once", "force_nc"=>"Nextcloud always wins", "force_sql"=>"SQL always wins"], $_["opt.email_sync"]); + print_select_options($l, "opt-home_mode", "Home mode", ["" => "Default", "query" => "Query", "static" => "Static"], $_["opt.home_mode"]); + print_text_input($l, "opt-home_location", "Home Location", $_["opt.home_location"]); ?>

t("User table")); ?>

t("Table containing user accounts.")); ?>

+ print_text_input($l, "db-table-user", "Table name", $_["db.table.user"]); + print_checkbox_input($l, "opt-modify_user", "Allow DML statements on table", $_["opt.modify_user"]); ?>

t("Columns")); ?>

+ print_text_input($l, "db-table-user-column-uid", "Username", $_["db.table.user.column.uid"]); + print_text_input($l, "db-table-user-column-email", "Email", $_["db.table.user.column.email"]); + print_text_input($l, "db-table-user-column-home", "Home", $_["db.table.user.column.home"]); + print_text_input($l, "db-table-user-column-password", "Password", $_["db.table.user.column.password"]); + print_text_input($l, "db-table-user-column-name", "Display name", $_["db.table.user.column.name"]); + print_text_input($l, "db-table-user-column-active", "Active", $_["db.table.user.column.active"]); + print_text_input($l, "db-table-user-column-avatar", "Can change avatar", $_["db.table.user.column.avatar"]); + print_text_input($l, "db-table-user-column-salt", "Salt", $_["db.table.user.column.salt"]); ?>

t("Group table")); ?>

t("Group definitions table.")); ?>

+ print_text_input($l, "db-table-group", "Table name", $_["db.table.group"]); + print_checkbox_input($l, "opt-modify_group", "Allow DML statements on table", $_["opt.modify_group"]); ?>

t("Columns")); ?>

+ print_text_input($l, "db-table-group-column-admin", "Is admin", $_["db.table.group.column.admin"]); + print_text_input($l, "db-table-group-column-name", "Display name", $_["db.table.group.column.name"]); + print_text_input($l, "db-table-group-column-gid", "Group name", $_["db.table.group.column.gid"]); ?>

t("User group table")); ?>

t("Associative table which maps users to groups.")); ?>

+ print_text_input($l, "db-table-user_group", "Table name", $_["db.table.user_group"]); + print_checkbox_input($l, "opt-modify_user_group", "Allow DML statements on table", $_["opt.modify_user_group"]); ?>

t("Columns")); ?>

+ print_text_input($l, "db-table-user_group-column-uid", "Username", $_["db.table.user_group.column.uid"]); + print_text_input($l, "db-table-user_group-column-gid", "Group name", $_["db.table.user_group.column.gid"]); ?>
- - + " id="requesttoken"/> + "/>
From 20ffbfcddb2bad7581e6235d33fa47acfc3ccf9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 22:59:52 +0200 Subject: [PATCH 4/8] Revert previous commit. --- lib/Constant/Opt.php | 3 --- templates/admin.php | 9 +++------ 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/Constant/Opt.php b/lib/Constant/Opt.php index cad2be6..56ce8b2 100644 --- a/lib/Constant/Opt.php +++ b/lib/Constant/Opt.php @@ -32,9 +32,6 @@ final class Opt const EMAIL_SYNC = "opt.email_sync"; const HOME_LOCATION = "opt.home_location"; const HOME_MODE = "opt.home_mode"; - const MODIFY_GROUP = "opt.modify_group"; - const MODIFY_USER = "opt.modify_user"; - const MODIFY_USER_GROUP = "opt.modify_user_group"; const NAME_CHANGE = "opt.name_change"; const PASSWORD_CHANGE = "opt.password_change"; const USE_CACHE = "opt.use_cache"; diff --git a/templates/admin.php b/templates/admin.php index 7469d1f..176871f 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -139,8 +139,7 @@ function print_select_options(

t("User table")); ?>

t("Table containing user accounts.")); ?>

+ print_text_input($l, "db-table-user", "Table name", $_["db.table.user"]); ?>

t("Columns")); ?>

t("Group table")); ?>

t("Group definitions table.")); ?>

+ print_text_input($l, "db-table-group", "Table name", $_["db.table.group"]); ?>

t("Columns")); ?>

t("User group table")); ?>

t("Associative table which maps users to groups.")); ?>

+ print_text_input($l, "db-table-user_group", "Table name", $_["db.table.user_group"]); ?>

t("Columns")); ?>

Date: Sat, 30 Jun 2018 23:02:27 +0200 Subject: [PATCH 5/8] Group Backend read only actions. --- lib/Backend/GroupBackend.php | 57 +----------------------------------- 1 file changed, 1 insertion(+), 56 deletions(-) diff --git a/lib/Backend/GroupBackend.php b/lib/Backend/GroupBackend.php index 3d514cb..c44d359 100644 --- a/lib/Backend/GroupBackend.php +++ b/lib/Backend/GroupBackend.php @@ -27,14 +27,9 @@ use OCA\UserSQL\Model\Group; use OCA\UserSQL\Properties; use OCA\UserSQL\Repository\GroupRepository; use OCP\Group\Backend\ABackend; -use OCP\Group\Backend\IAddToGroupBackend; -use OCP\Group\Backend\ICountDisabledInGroup; use OCP\Group\Backend\ICountUsersBackend; -use OCP\Group\Backend\ICreateGroupBackend; -use OCP\Group\Backend\IDeleteGroupBackend; use OCP\Group\Backend\IGroupDetailsBackend; use OCP\Group\Backend\IIsAdminBackend; -use OCP\Group\Backend\IRemoveFromGroupBackend; use OCP\ILogger; /** @@ -43,14 +38,9 @@ use OCP\ILogger; * @author Marcin Łojewski */ final class GroupBackend extends ABackend implements - IAddToGroupBackend, - ICountDisabledInGroup, ICountUsersBackend, - ICreateGroupBackend, - IDeleteGroupBackend, IGroupDetailsBackend, - IIsAdminBackend, - IRemoveFromGroupBackend + IIsAdminBackend { /** * @var string The application name. @@ -450,49 +440,4 @@ final class GroupBackend extends ABackend implements && !empty($this->properties[DB::USER_GROUP_GID_COLUMN]) && !empty($this->properties[DB::USER_GROUP_UID_COLUMN]); } - - /** - * @inheritdoc - */ - public function addToGroup(string $uid, string $gid): bool - { - // TODO: Implement addToGroup() method. - return false; - } - - /** - * @inheritdoc - */ - public function countDisabledInGroup(string $gid): int - { - // TODO: Implement countDisabledInGroup() method. - return 0; - } - - /** - * @inheritdoc - */ - public function createGroup(string $gid): bool - { - // TODO: Implement createGroup() method. - return false; - } - - /** - * @inheritdoc - */ - public function deleteGroup(string $gid): bool - { - // TODO: Implement deleteGroup() method. - return false; - } - - /** - * @inheritdoc - */ - public function removeFromGroup(string $uid, string $gid) - { - // TODO: Implement removeFromGroup() method. - return false; - } } From e4d962f13942ec74d7c4d73b22638e966f9b2e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 23:06:12 +0200 Subject: [PATCH 6/8] Changelog --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95d78e1..079b961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,10 +10,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - phpass hashing implementation - Support for salt column +### Changed +- Support for Nextcloud 14 only +- Group backend implementation + ### Fixed - Table and column autocomplete in settings panel -## [v4.0.0-rc2] +## [4.0.0-rc2] ### Added - User active column @@ -75,6 +79,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Supported version of ownCloud, Nextcloud: ownCloud 10, Nextcloud 12 [Unreleased]: https://github.com/nextcloud/user_sql/compare/v4.0.0-rc2...develop -[v4.0.0-rc2]: https://github.com/nextcloud/user_sql/compare/v4.0.0-rc1...v4.0.0-rc2 +[4.0.0-rc2]: https://github.com/nextcloud/user_sql/compare/v4.0.0-rc1...v4.0.0-rc2 [4.0.0-rc1]: https://github.com/nextcloud/user_sql/compare/v3.1.0...v4.0.0-rc1 [3.1.0]: https://github.com/nextcloud/user_sql/compare/v2.4.0...v3.1.0 From 01a91f54cecf911cdb7359c2e202b613bb145749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 23:20:46 +0200 Subject: [PATCH 7/8] Adopt user backend to Nextcloud 14 interfaces --- CHANGELOG.md | 1 + lib/Backend/UserBackend.php | 88 ++++++++++++++++++++++++------------- 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 079b961..9289665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - Support for Nextcloud 14 only - Group backend implementation +- User backend implementation ### Fixed - Table and column autocomplete in settings panel diff --git a/lib/Backend/UserBackend.php b/lib/Backend/UserBackend.php index 6a8237b..0955ccf 100644 --- a/lib/Backend/UserBackend.php +++ b/lib/Backend/UserBackend.php @@ -21,7 +21,6 @@ namespace OCA\UserSQL\Backend; -use OC\User\Backend; use OCA\UserSQL\Action\EmailSync; use OCA\UserSQL\Action\IUserAction; use OCA\UserSQL\Cache; @@ -35,13 +34,28 @@ use OCA\UserSQL\Repository\UserRepository; use OCP\IConfig; use OCP\IL10N; use OCP\ILogger; +use OCP\User\Backend\ABackend; +use OCP\User\Backend\ICheckPasswordBackend; +use OCP\User\Backend\ICountUsersBackend; +use OCP\User\Backend\IGetDisplayNameBackend; +use OCP\User\Backend\IGetHomeBackend; +use OCP\User\Backend\IProvideAvatarBackend; +use OCP\User\Backend\ISetDisplayNameBackend; +use OCP\User\Backend\ISetPasswordBackend; /** * The SQL user backend manager. * * @author Marcin Łojewski */ -final class UserBackend extends Backend +final class UserBackend extends ABackend implements + ICheckPasswordBackend, + ICountUsersBackend, + IGetDisplayNameBackend, + IGetHomeBackend, + IProvideAvatarBackend, + ISetDisplayNameBackend, + ISetPasswordBackend { /** * @var string The application name. @@ -228,7 +242,7 @@ final class UserBackend extends Backend /** * @inheritdoc */ - public function getDisplayName($uid) + public function getDisplayName($uid): string { $this->logger->debug( "Entering getDisplayName($uid)", ["app" => $this->appName] @@ -258,7 +272,7 @@ final class UserBackend extends Backend * * @return string|bool The user ID on success, false otherwise. */ - public function checkPassword($uid, $password) + public function checkPassword(string $uid, string $password) { $this->logger->debug( "Entering checkPassword($uid, *)", ["app" => $this->appName] @@ -337,6 +351,10 @@ final class UserBackend extends Backend ["app" => $this->appName] ); + if (empty($this->properties[DB::USER_NAME_COLUMN])) { + return false; + } + $users = $this->getUsers($search, $limit, $offset); $names = []; @@ -410,12 +428,16 @@ final class UserBackend extends Backend * * @return bool TRUE if the password has been set, FALSE otherwise. */ - public function setPassword($uid, $password) + public function setPassword(string $uid, string $password): bool { $this->logger->debug( "Entering setPassword($uid, *)", ["app" => "user_sql"] ); + if (empty($this->properties[Opt::PASSWORD_CHANGE])) { + return false; + } + $passwordAlgorithm = $this->getPasswordAlgorithm(); if ($passwordAlgorithm === false) { return false; @@ -452,12 +474,16 @@ final class UserBackend extends Backend /** * @inheritdoc */ - public function getHome($uid) + public function getHome(string $uid) { $this->logger->debug( "Entering getHome($uid)", ["app" => $this->appName] ); + if (empty($this->properties[Opt::HOME_MODE])) { + return false; + } + $home = false; switch ($this->properties[Opt::HOME_MODE]) { case App::HOME_STATIC: @@ -487,12 +513,16 @@ final class UserBackend extends Backend * * @return bool TRUE if the user can change its avatar, FALSE otherwise. */ - public function canChangeAvatar($uid) + public function canChangeAvatar(string $uid): bool { $this->logger->debug( "Entering canChangeAvatar($uid)", ["app" => $this->appName] ); + if (empty($this->properties[DB::USER_AVATAR_COLUMN])) { + return false; + } + $user = $this->userRepository->findByUid($uid); if (!($user instanceof User)) { return false; @@ -515,13 +545,17 @@ final class UserBackend extends Backend * * @return bool TRUE if the password has been set, FALSE otherwise. */ - public function setDisplayName($uid, $displayName) + public function setDisplayName(string $uid, string $displayName): bool { $this->logger->debug( "Entering setDisplayName($uid, $displayName)", ["app" => $this->appName] ); + if (empty($this->properties[Opt::NAME_CHANGE])) { + return false; + } + $user = $this->userRepository->findByUid($uid); if (!($user instanceof User)) { return false; @@ -541,28 +575,6 @@ final class UserBackend extends Backend return false; } - /** - * @inheritdoc - */ - public function getSupportedActions() - { - $actions = parent::getSupportedActions(); - - $actions &= empty($this->properties[DB::USER_NAME_COLUMN]) - ? ~Backend::GET_DISPLAYNAME : ~0; - $actions &= empty($this->properties[Opt::HOME_MODE]) - ? ~Backend::GET_HOME : ~0; - $actions &= empty($this->properties[DB::USER_AVATAR_COLUMN]) - ? ~Backend::PROVIDE_AVATAR : ~0; - $actions &= (!empty($this->properties[DB::USER_NAME_COLUMN]) - && $this->properties[Opt::NAME_CHANGE]) ? ~0 - : ~Backend::SET_DISPLAYNAME; - $actions &= $this->properties[Opt::PASSWORD_CHANGE] ? ~0 - : ~Backend::SET_PASSWORD; - - return $actions; - } - /** * Check if this backend is correctly set and can be enabled. * @@ -580,4 +592,20 @@ final class UserBackend extends Backend && !empty($this->properties[DB::USER_PASSWORD_COLUMN]) && !empty($this->properties[Opt::CRYPTO_CLASS]); } + + /** + * @inheritdoc + */ + public function getBackendName() + { + return "User SQL"; + } + + /** + * @inheritdoc + */ + public function deleteUser($uid) + { + return false; + } } From 657e5a7cedd26aa4513c50f952cf64b7904040fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20=C5=81ojewski?= Date: Sat, 30 Jun 2018 23:35:16 +0200 Subject: [PATCH 8/8] Handle null value for isAdmin function --- lib/Backend/GroupBackend.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Backend/GroupBackend.php b/lib/Backend/GroupBackend.php index c44d359..6174b26 100644 --- a/lib/Backend/GroupBackend.php +++ b/lib/Backend/GroupBackend.php @@ -358,13 +358,13 @@ final class GroupBackend extends ABackend implements /** * @inheritdoc */ - public function isAdmin(string $uid): bool + public function isAdmin(string $uid = null): bool { $this->logger->debug( "Entering isAdmin($uid)", ["app" => $this->appName] ); - if (empty($this->properties[DB::GROUP_ADMIN_COLUMN])) { + if (empty($this->properties[DB::GROUP_ADMIN_COLUMN]) || $uid === null) { return false; }