From 0b0bfe94a21bc5a2b317ad2549c5703425a6bc1e Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Fri, 14 Dec 2018 18:30:38 +0100 Subject: [PATCH] create user in the SAML back-end and update the attributes when the user was found on another back-end during login Signed-off-by: Bjoern Schiessle --- lib/Controller/SAMLController.php | 1 + lib/UserBackend.php | 35 +++++++++++++++++++------------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/Controller/SAMLController.php b/lib/Controller/SAMLController.php index 9664e82..d3d4598 100644 --- a/lib/Controller/SAMLController.php +++ b/lib/Controller/SAMLController.php @@ -144,6 +144,7 @@ class SAMLController extends Controller { // help with it and make the user known $this->userManager->search($uid); if($this->userManager->userExists($uid)) { + $this->userBackend->initializeHomeDir($uid); return; } throw new NoUserFoundException('Auto provisioning not allowed and user ' . $uid . ' does not exist'); diff --git a/lib/UserBackend.php b/lib/UserBackend.php index 026c275..bc8d9f3 100644 --- a/lib/UserBackend.php +++ b/lib/UserBackend.php @@ -146,21 +146,30 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend { } $qb->execute(); - ### Code taken from lib/private/User/Session.php - function prepareUserLogin() ### - //trigger creation of user home and /files folder - $userFolder = \OC::$server->getUserFolder($uid); - try { - // copy skeleton - \OC_Util::copySkeleton($uid, $userFolder); - } catch (NotPermittedException $ex) { - // read only uses - } - // trigger any other initialization - $user = $this->userManager->get($uid); - \OC::$server->getEventDispatcher()->dispatch(IUser::class . '::firstLogin', new GenericEvent($user)); + $this->initializeHomeDir($uid); + } } + /** + * @param string $uid + * @throws \OCP\Files\NotFoundException + */ + public function initializeHomeDir($uid) { + ### Code taken from lib/private/User/Session.php - function prepareUserLogin() ### + //trigger creation of user home and /files folder + $userFolder = \OC::$server->getUserFolder($uid); + try { + // copy skeleton + \OC_Util::copySkeleton($uid, $userFolder); + } catch (NotPermittedException $ex) { + // read only uses + } + // trigger any other initialization + $user = $this->userManager->get($uid); + \OC::$server->getEventDispatcher()->dispatch(IUser::class . '::firstLogin', new GenericEvent($user)); + } + /** * Check if backend implements actions * @param int $actions bitwise-or'ed actions @@ -227,7 +236,7 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend { /** * Returns the user's home directory, if home directory mapping is set up. * - * @param string $uid the username + * @param string $uid the username * @return string */ public function getHome($uid) {