summaryrefslogtreecommitdiffstats
path: root/lib/public/User/Backend
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/User/Backend')
-rw-r--r--lib/public/User/Backend/ABackend.php72
-rw-r--r--lib/public/User/Backend/ICheckPasswordBackend.php39
-rw-r--r--lib/public/User/Backend/ICountUsersBackend.php38
-rw-r--r--lib/public/User/Backend/ICreateUserBackend.php40
-rw-r--r--lib/public/User/Backend/IGetDisplayNameBackend.php39
-rw-r--r--lib/public/User/Backend/IGetHomeBackend.php39
-rw-r--r--lib/public/User/Backend/IProvideAvatarBackend.php39
-rw-r--r--lib/public/User/Backend/ISetDisplayNameBackend.php40
-rw-r--r--lib/public/User/Backend/ISetPasswordBackend.php40
9 files changed, 386 insertions, 0 deletions
diff --git a/lib/public/User/Backend/ABackend.php b/lib/public/User/Backend/ABackend.php
new file mode 100644
index 00000000000..a110ba5202a
--- /dev/null
+++ b/lib/public/User/Backend/ABackend.php
@@ -0,0 +1,72 @@
+<?php
+declare(strict_types=1);
+/**
+* @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+*
+* @author Roeland Jago Douma <roeland@famdouma.nl>
+*
+* @license GNU AGPL version 3 or any later version
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as
+* published by the Free Software Foundation, either version 3 of the
+* License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+namespace OCP\User\Backend;
+
+use OC\User\Backend;
+use OCP\IUserBackend;
+use OCP\UserInterface;
+
+/**
+ * @since 14.0.0
+ */
+abstract class ABackend implements IUserBackend, UserInterface {
+
+ /**
+ * @deprecated 14.0.0
+ *
+ * @param int $actions The action to check for
+ * @return bool
+ */
+ public function implementsActions($actions): bool {
+ $implements = 0;
+
+ if ($this instanceof ICreateUserBackend) {
+ $implements |= Backend::CREATE_USER;
+ }
+ if ($this instanceof ISetPasswordBackend) {
+ $implements |= Backend::SET_PASSWORD;
+ }
+ if ($this instanceof ICheckPasswordBackend) {
+ $implements |= Backend::CHECK_PASSWORD;
+ }
+ if ($this instanceof IGetHomeBackend) {
+ $implements |= Backend::GET_HOME;
+ }
+ if ($this instanceof IGetDisplayNameBackend) {
+ $implements |= Backend::GET_DISPLAYNAME;
+ }
+ if ($this instanceof ISetDisplayNameBackend) {
+ $implements |= Backend::SET_DISPLAYNAME;
+ }
+ if ($this instanceof IProvideAvatarBackend) {
+ $implements |= Backend::PROVIDE_AVATAR;
+ }
+ if ($this instanceof ICountUsersBackend) {
+ $implements |= Backend::COUNT_USERS;
+ }
+
+ return (bool)($actions & $implements);
+ }
+}
diff --git a/lib/public/User/Backend/ICheckPasswordBackend.php b/lib/public/User/Backend/ICheckPasswordBackend.php
new file mode 100644
index 00000000000..b28c94f1a6c
--- /dev/null
+++ b/lib/public/User/Backend/ICheckPasswordBackend.php
@@ -0,0 +1,39 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface ICheckPasswordBackend {
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid The username
+ * @param string $password The password
+ * @return string|bool The uid on success false on failure
+ */
+ public function checkPassword(string $loginName, string $password);
+}
diff --git a/lib/public/User/Backend/ICountUsersBackend.php b/lib/public/User/Backend/ICountUsersBackend.php
new file mode 100644
index 00000000000..1cb46712aa0
--- /dev/null
+++ b/lib/public/User/Backend/ICountUsersBackend.php
@@ -0,0 +1,38 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface ICountUsersBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @return int|bool The number of users on success false on failure
+ */
+ public function countUsers();
+}
diff --git a/lib/public/User/Backend/ICreateUserBackend.php b/lib/public/User/Backend/ICreateUserBackend.php
new file mode 100644
index 00000000000..09a20e12453
--- /dev/null
+++ b/lib/public/User/Backend/ICreateUserBackend.php
@@ -0,0 +1,40 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface ICreateUserBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid The username of the user to create
+ * @param string $password The password of the new user
+ * @return bool
+ */
+ public function createUser(string $uid, string $password): bool;
+}
diff --git a/lib/public/User/Backend/IGetDisplayNameBackend.php b/lib/public/User/Backend/IGetDisplayNameBackend.php
new file mode 100644
index 00000000000..6382ddd6eb6
--- /dev/null
+++ b/lib/public/User/Backend/IGetDisplayNameBackend.php
@@ -0,0 +1,39 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface IGetDisplayNameBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid user ID of the user
+ * @return string display name
+ */
+ public function getDisplayName($uid): string;
+}
diff --git a/lib/public/User/Backend/IGetHomeBackend.php b/lib/public/User/Backend/IGetHomeBackend.php
new file mode 100644
index 00000000000..20fcd004bba
--- /dev/null
+++ b/lib/public/User/Backend/IGetHomeBackend.php
@@ -0,0 +1,39 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface IGetHomeBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid the username
+ * @return string|bool Datadir on success false on failure
+ */
+ public function getHome(string $uid);
+}
diff --git a/lib/public/User/Backend/IProvideAvatarBackend.php b/lib/public/User/Backend/IProvideAvatarBackend.php
new file mode 100644
index 00000000000..328c7450b40
--- /dev/null
+++ b/lib/public/User/Backend/IProvideAvatarBackend.php
@@ -0,0 +1,39 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface IProvideAvatarBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid
+ * @return bool
+ */
+ public function canChangeAvatar(string $uid): bool;
+}
diff --git a/lib/public/User/Backend/ISetDisplayNameBackend.php b/lib/public/User/Backend/ISetDisplayNameBackend.php
new file mode 100644
index 00000000000..ac41cd3e2c3
--- /dev/null
+++ b/lib/public/User/Backend/ISetDisplayNameBackend.php
@@ -0,0 +1,40 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface ISetDisplayNameBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid The username
+ * @param string $displayName The new display name
+ * @return bool
+ */
+ public function setDisplayName(string $uid, string $displayName): bool;
+}
diff --git a/lib/public/User/Backend/ISetPasswordBackend.php b/lib/public/User/Backend/ISetPasswordBackend.php
new file mode 100644
index 00000000000..687ac5f70bb
--- /dev/null
+++ b/lib/public/User/Backend/ISetPasswordBackend.php
@@ -0,0 +1,40 @@
+<?php
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCP\User\Backend;
+
+/**
+ * @since 14.0.0
+ */
+interface ISetPasswordBackend {
+
+ /**
+ * @since 14.0.0
+ *
+ * @param string $uid The username
+ * @param string $password The new password
+ * @return bool
+ */
+ public function setPassword(string $uid, string $password): bool;
+}