From 20c1ce7f470211e53461be7893cb7320f0a2b452 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 9 Jul 2014 15:32:33 +0200 Subject: [PATCH] Add public interfaces for User, UserManager and UserSession --- lib/private/user/manager.php | 3 +- lib/private/user/session.php | 3 +- lib/private/user/user.php | 3 +- lib/public/iuser.php | 105 +++++++++++++++++++++++++++++++++++ lib/public/iusermanager.php | 105 +++++++++++++++++++++++++++++++++++ lib/public/iusersession.php | 13 +++++ 6 files changed, 229 insertions(+), 3 deletions(-) create mode 100644 lib/public/iuser.php create mode 100644 lib/public/iusermanager.php diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index f2964fecca3..d4d91163003 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -10,6 +10,7 @@ namespace OC\User; use OC\Hooks\PublicEmitter; +use OCP\IUserManager; /** * Class Manager @@ -24,7 +25,7 @@ use OC\Hooks\PublicEmitter; * * @package OC\User */ -class Manager extends PublicEmitter { +class Manager extends PublicEmitter implements IUserManager { /** * @var \OC_User_Interface[] $backends */ diff --git a/lib/private/user/session.php b/lib/private/user/session.php index 5f0dee607ae..8c9b3e264e3 100644 --- a/lib/private/user/session.php +++ b/lib/private/user/session.php @@ -10,6 +10,7 @@ namespace OC\User; use OC\Hooks\Emitter; +use OCP\IUserSession; /** * Class Session @@ -29,7 +30,7 @@ use OC\Hooks\Emitter; * * @package OC\User */ -class Session implements Emitter, \OCP\IUserSession { +class Session implements IUserSession, Emitter { /** * @var \OC\User\Manager $manager */ diff --git a/lib/private/user/user.php b/lib/private/user/user.php index 8aba7188e24..f9c2cb4d130 100644 --- a/lib/private/user/user.php +++ b/lib/private/user/user.php @@ -10,8 +10,9 @@ namespace OC\User; use OC\Hooks\Emitter; +use OCP\IUser; -class User { +class User implements IUser { /** * @var string $uid */ diff --git a/lib/public/iuser.php b/lib/public/iuser.php new file mode 100644 index 00000000000..dc4acc7658f --- /dev/null +++ b/lib/public/iuser.php @@ -0,0 +1,105 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP; + +interface IUser { + /** + * get the user id + * + * @return string + */ + public function getUID(); + + /** + * get the displayname for the user, if no specific displayname is set it will fallback to the user id + * + * @return string + */ + public function getDisplayName(); + + /** + * set the displayname for the user + * + * @param string $displayName + * @return bool + */ + public function setDisplayName($displayName); + + /** + * returns the timestamp of the user's last login or 0 if the user did never + * login + * + * @return int + */ + public function getLastLogin(); + + /** + * updates the timestamp of the most recent login of this user + */ + public function updateLastLoginTimestamp(); + + /** + * Delete the user + * + * @return bool + */ + public function delete(); + + /** + * Set the password of the user + * + * @param string $password + * @param string $recoveryPassword for the encryption app to reset encryption keys + * @return bool + */ + public function setPassword($password, $recoveryPassword); + + /** + * get the users home folder to mount + * + * @return string + */ + public function getHome(); + + /** + * check if the backend allows the user to change his avatar on Personal page + * + * @return bool + */ + public function canChangeAvatar(); + + /** + * check if the backend supports changing passwords + * + * @return bool + */ + public function canChangePassword(); + + /** + * check if the backend supports changing display names + * + * @return bool + */ + public function canChangeDisplayName(); + + /** + * check if the user is enabled + * + * @return bool + */ + public function isEnabled(); + + /** + * set the enabled status for the user + * + * @param bool $enabled + */ + public function setEnabled($enabled); +} diff --git a/lib/public/iusermanager.php b/lib/public/iusermanager.php new file mode 100644 index 00000000000..fc0729b860b --- /dev/null +++ b/lib/public/iusermanager.php @@ -0,0 +1,105 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +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) + * + * @package OC\User + */ +interface IUserManager { + /** + * register a user backend + * + * @param \OCP\UserInterface $backend + */ + public function registerBackend($backend); + + /** + * remove a user backend + * + * @param \OCP\UserInterface $backend + */ + public function removeBackend($backend); + + /** + * remove all user backends + */ + public function clearBackends() ; + + /** + * get a user by user id + * + * @param string $uid + * @return \OCP\IUser + */ + public function get($uid); + + /** + * check if a user exists + * + * @param string $uid + * @return bool + */ + public function userExists($uid); + + /** + * Check if the password is valid for the user + * + * @param string $loginname + * @param string $password + * @return mixed the User object on success, false otherwise + */ + public function checkPassword($loginname, $password); + + /** + * search by user id + * + * @param string $pattern + * @param int $limit + * @param int $offset + * @return \OCP\IUser[] + */ + public function search($pattern, $limit = null, $offset = null); + + /** + * search by displayName + * + * @param string $pattern + * @param int $limit + * @param int $offset + * @return \OCP\IUser[] + */ + public function searchDisplayName($pattern, $limit = null, $offset = null); + + /** + * @param string $uid + * @param string $password + * @throws \Exception + * @return bool|\OCP\IUser the created user of false + */ + public function createUser($uid, $password); + + /** + * returns how many users per backend exist (if supported by backend) + * + * @return array an array of backend class as key and count number as value + */ + public function countUsers(); +} diff --git a/lib/public/iusersession.php b/lib/public/iusersession.php index adc706cc7c3..e9d417c1ace 100644 --- a/lib/public/iusersession.php +++ b/lib/public/iusersession.php @@ -49,4 +49,17 @@ interface IUserSession { */ public function logout(); + /** + * set the currently active user + * + * @param \OCP\User|null $user + */ + public function setUser($user); + + /** + * get the current active user + * + * @return \OCP\User + */ + public function getUser(); } -- 2.39.5