From 9e6ac3de700ebf51e3677e752db4928afacbf7e6 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 26 Apr 2017 15:07:11 +0200 Subject: [PATCH] Allow to create a user for a specific backend Signed-off-by: Joas Schilling --- lib/private/User/Manager.php | 18 ++++++++++++++++++ lib/public/IUserManager.php | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index 6220613cbb1..d482ee811f7 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -38,6 +38,7 @@ use OCP\IUser; use OCP\IUserBackend; use OCP\IUserManager; use OCP\IConfig; +use OCP\UserInterface; /** * Class Manager @@ -321,9 +322,26 @@ class Manager extends PublicEmitter implements IUserManager { return $user; } } + return false; } + /** + * @param string $uid + * @param string $password + * @param UserInterface $backend + * @return IUser|null + */ + public function createUserFromBackend($uid, $password, UserInterface $backend) { + $this->emit('\OC\User', 'preCreateUser', [$uid, $password]); + $backend->createUser($uid, $password); + $user = $this->getUserObject($uid, $backend); + if ($user instanceof IUser) { + $this->emit('\OC\User', 'postCreateUser', [$user, $password]); + } + return $user; + } + /** * returns how many users per backend exist (if supported by backend) * diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php index 1f8c23dbedf..2287a24e9ec 100644 --- a/lib/public/IUserManager.php +++ b/lib/public/IUserManager.php @@ -129,6 +129,15 @@ interface IUserManager { */ public function createUser($uid, $password); + /** + * @param string $uid + * @param string $password + * @param UserInterface $backend + * @return IUser|null + * @since 12.0.0 + */ + public function createUserFromBackend($uid, $password, UserInterface $backend); + /** * returns how many users per backend exist (if supported by backend) *