aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/IUserManager.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/IUserManager.php')
-rw-r--r--lib/public/IUserManager.php246
1 files changed, 246 insertions, 0 deletions
diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php
new file mode 100644
index 00000000000..dbd1e188bec
--- /dev/null
+++ b/lib/public/IUserManager.php
@@ -0,0 +1,246 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCP;
+
+/**
+ * Class Manager
+ *
+ * Hooks available in scope \OC\User:
+ * - preSetPassword(\OC\User\User $user, string $password, string $recoverPassword)
+ * - postSetPassword(\OC\User\User $user, string $password, string $recoverPassword)
+ * - preDelete(\OC\User\User $user)
+ * - postDelete(\OC\User\User $user)
+ * - preCreateUser(string $uid, string $password)
+ * - postCreateUser(\OC\User\User $user, string $password)
+ * - assignedUserId(string $uid)
+ * - preUnassignedUserId(string $uid)
+ * - postUnassignedUserId(string $uid)
+ *
+ * @since 8.0.0
+ */
+interface IUserManager {
+ /**
+ * @since 26.0.0
+ */
+ public const MAX_PASSWORD_LENGTH = 469;
+
+ /**
+ * register a user backend
+ *
+ * @since 8.0.0
+ * @return void
+ */
+ public function registerBackend(UserInterface $backend);
+
+ /**
+ * Get the active backends
+ * @return UserInterface[]
+ * @since 8.0.0
+ */
+ public function getBackends();
+
+ /**
+ * remove a user backend
+ *
+ * @since 8.0.0
+ * @return void
+ */
+ public function removeBackend(UserInterface $backend);
+
+ /**
+ * remove all user backends
+ * @since 8.0.0
+ * @return void
+ */
+ public function clearBackends();
+
+ /**
+ * get a user by user id
+ *
+ * @param string $uid
+ * @return \OCP\IUser|null Either the user or null if the specified user does not exist
+ * @since 8.0.0
+ */
+ public function get($uid);
+
+ /**
+ * Get the display name of a user
+ *
+ * @param string $uid
+ * @return string|null
+ * @since 25.0.0
+ */
+ public function getDisplayName(string $uid): ?string;
+
+ /**
+ * check if a user exists
+ *
+ * @param string $uid
+ * @return bool
+ * @since 8.0.0
+ */
+ public function userExists($uid);
+
+ /**
+ * Check if the password is valid for the user
+ *
+ * @param string $loginName
+ * @param string $password
+ * @return IUser|false the User object on success, false otherwise
+ * @since 8.0.0
+ */
+ public function checkPassword($loginName, $password);
+
+ /**
+ * search by user id
+ *
+ * @param string $pattern
+ * @param int $limit
+ * @param int $offset
+ * @return \OCP\IUser[]
+ * @since 8.0.0
+ */
+ public function search($pattern, $limit = null, $offset = null);
+
+ /**
+ * search by displayName
+ *
+ * @param string $pattern
+ * @param int $limit
+ * @param int $offset
+ * @return \OCP\IUser[]
+ * @since 8.0.0
+ */
+ public function searchDisplayName($pattern, $limit = null, $offset = null);
+
+ /**
+ * @return IUser[]
+ * @since 28.0.0
+ * @since 30.0.0 $search parameter added
+ */
+ public function getDisabledUsers(?int $limit = null, int $offset = 0, string $search = ''): array;
+
+ /**
+ * Search known users (from phonebook sync) by displayName
+ *
+ * @param string $searcher
+ * @param string $pattern
+ * @param int|null $limit
+ * @param int|null $offset
+ * @return IUser[]
+ * @since 21.0.1
+ */
+ public function searchKnownUsersByDisplayName(string $searcher, string $pattern, ?int $limit = null, ?int $offset = null): array;
+
+ /**
+ * @param string $uid
+ * @param string $password
+ * @throws \InvalidArgumentException
+ * @return false|\OCP\IUser the created user or false
+ * @since 8.0.0
+ */
+ public function createUser($uid, $password);
+
+ /**
+ * @param string $uid
+ * @param string $password
+ * @param UserInterface $backend
+ * @return IUser|null
+ * @throws \InvalidArgumentException
+ * @since 12.0.0
+ */
+ public function createUserFromBackend($uid, $password, UserInterface $backend);
+
+ /**
+ * Get how many users per backend exist (if supported by backend)
+ *
+ * @return array<string, int> an array of backend class name as key and count number as value
+ * @since 8.0.0
+ */
+ public function countUsers();
+
+ /**
+ * Get how many users exists in total, whithin limit
+ *
+ * @param int $limit Limit the count to avoid resource waste. 0 to disable
+ * @param bool $onlyMappedUsers Count mapped users instead of all users for compatible backends
+ *
+ * @since 31.0.0
+ */
+ public function countUsersTotal(int $limit = 0, bool $onlyMappedUsers = false): int|false;
+
+ /**
+ * @param \Closure $callback
+ * @psalm-param \Closure(\OCP\IUser):void $callback
+ * @param string $search
+ * @since 9.0.0
+ */
+ public function callForAllUsers(\Closure $callback, $search = '');
+
+ /**
+ * returns how many users have logged in once
+ *
+ * @return int
+ * @since 11.0.0
+ */
+ public function countDisabledUsers();
+
+ /**
+ * returns how many users have logged in once
+ *
+ * @return int
+ * @since 11.0.0
+ */
+ public function countSeenUsers();
+
+ /**
+ * @param \Closure $callback
+ * @psalm-param \Closure(\OCP\IUser):?bool $callback
+ * @since 11.0.0
+ */
+ public function callForSeenUsers(\Closure $callback);
+
+ /**
+ * returns all users having the provided email set as system email address
+ *
+ * @param string $email
+ * @return IUser[]
+ * @since 9.1.0
+ */
+ public function getByEmail($email);
+
+ /**
+ * @param string $uid The user ID to validate
+ * @param bool $checkDataDirectory Whether it should be checked if files for the ID exist inside the data directory
+ * @throws \InvalidArgumentException Message is an already translated string with a reason why the ID is not valid
+ * @since 26.0.0
+ */
+ public function validateUserId(string $uid, bool $checkDataDirectory = false): void;
+
+ /**
+ * Gets the list of users sorted by lastLogin, from most recent to least recent
+ *
+ * @param int|null $limit how many records to fetch
+ * @param int $offset from which offset to fetch
+ * @param string $search search users based on search params
+ * @return list<string> list of user IDs
+ * @since 30.0.0
+ */
+ public function getLastLoggedInUsers(?int $limit = null, int $offset = 0, string $search = ''): array;
+
+ /**
+ * Gets the list of users.
+ * An iterator is returned allowing the caller to stop the iteration at any time.
+ * The offset argument allows the caller to continue the iteration at a specific offset.
+ *
+ * @param int $offset from which offset to fetch
+ * @return \Iterator<IUser> list of IUser object
+ * @since 32.0.0
+ */
+ public function getSeenUsers(int $offset = 0): \Iterator;
+}