diff --git a/src/PHPCensor/Command/CreateAdminCommand.php b/src/PHPCensor/Command/CreateAdminCommand.php index 6d661f89..779b9fc6 100644 --- a/src/PHPCensor/Command/CreateAdminCommand.php +++ b/src/PHPCensor/Command/CreateAdminCommand.php @@ -81,7 +81,7 @@ class CreateAdminCommand extends Command $adminPass = $helper->ask($input, $output, $question); try { - $userService->createUser($adminName, $adminEmail, $adminPass, true); + $userService->createUser($adminName, $adminEmail, 'default', json_encode(['type' => 'internal']), $adminPass, true); $output->writeln('User account created!'); } catch (\Exception $e) { $output->writeln(sprintf('%s', 'PHP Censor failed to create your admin account.')); diff --git a/src/PHPCensor/Command/InstallCommand.php b/src/PHPCensor/Command/InstallCommand.php index fe8f0ae8..ef99a127 100644 --- a/src/PHPCensor/Command/InstallCommand.php +++ b/src/PHPCensor/Command/InstallCommand.php @@ -466,7 +466,7 @@ class InstallCommand extends Command /** @var UserStore $userStore */ $userStore = Factory::getStore('User'); $userService = new UserService($userStore); - $userService->createUser($admin['name'], $admin['email'], $admin['password'], 1); + $userService->createUser($admin['name'], $admin['email'], 'default', json_encode(['type' => 'internal']), $admin['password'], true); $output->writeln('User account created!'); } catch (\Exception $ex) { diff --git a/src/PHPCensor/Controller/UserController.php b/src/PHPCensor/Controller/UserController.php index 67b619dd..afbd324e 100644 --- a/src/PHPCensor/Controller/UserController.php +++ b/src/PHPCensor/Controller/UserController.php @@ -175,12 +175,12 @@ class UserController extends Controller } - $name = $this->getParam('name', null); - $email = $this->getParam('email', null); + $name = $this->getParam('name', null); + $email = $this->getParam('email', null); $password = $this->getParam('password', null); - $isAdmin = (int)$this->getParam('is_admin', 0); + $isAdmin = (int)$this->getParam('is_admin', 0); - $this->userService->createUser($name, $email, $password, $isAdmin); + $this->userService->createUser($name, $email, 'default', json_encode(['type' => 'internal']), $password, $isAdmin); $response = new b8\Http\Response\RedirectResponse(); $response->setHeader('Location', APP_URL . 'user'); diff --git a/src/PHPCensor/Security/Authentication/UserProvider/Ldap.php b/src/PHPCensor/Security/Authentication/UserProvider/Ldap.php index 142da14f..46593475 100644 --- a/src/PHPCensor/Security/Authentication/UserProvider/Ldap.php +++ b/src/PHPCensor/Security/Authentication/UserProvider/Ldap.php @@ -14,6 +14,7 @@ use b8\Store\Factory; use PHPCensor\Model\User; use PHPCensor\Security\Authentication\LoginPasswordProviderInterface; use PHPCensor\Service\UserService; +use PHPCensor\Store\UserStore; /** * Ldap user provider. @@ -68,11 +69,13 @@ class Ldap extends AbstractProvider implements LoginPasswordProviderInterface public function provisionUser($identifier) { - $userService = new UserService(Factory::getStore('User')); + /** @var UserStore $user */ + $user = Factory::getStore('User'); + $userService = new UserService($user); $parts = explode("@", $identifier); $username = $parts[0]; - return $userService->createUserWithProvider($username, $identifier, $this->key, null); + return $userService->createUser($username, $identifier, $this->key, json_encode($this->config), '', false); } } diff --git a/src/PHPCensor/Service/UserService.php b/src/PHPCensor/Service/UserService.php index dfddda6d..c7860aca 100644 --- a/src/PHPCensor/Service/UserService.php +++ b/src/PHPCensor/Service/UserService.php @@ -35,46 +35,21 @@ class UserService /** * Create a new user within PHPCI. * - * @param string $name - * @param string $emailAddress - * @param string $password - * @param bool $isAdmin - * @param string $language - * @param integer $perPage + * @param string $name + * @param string $email + * @param string $providerKey + * @param string $providerData + * @param string $password + * @param bool $isAdmin * * @return User */ - public function createUser($name, $emailAddress, $password, $isAdmin = false, $language = null, $perPage = null) + public function createUser($name, $email, $providerKey, $providerData, $password, $isAdmin = false) { $user = new User(); $user->setName($name); - $user->setEmail($emailAddress); + $user->setEmail($email); $user->setHash(password_hash($password, PASSWORD_DEFAULT)); - $user->setIsAdmin(($isAdmin ? 1 : 0)); - $user->setLanguage($language); - $user->setPerPage($perPage); - - return $this->store->save($user); - } - - /** - * Create a new user within PHPCI (with provider). - * - * @param $name - * @param $emailAddress - * @param $providerKey - * @param $providerData - * @param bool $isAdmin - * - * @return \PHPCI\Model\User - */ - - public function createUserWithProvider($name, $emailAddress, $providerKey, $providerData, $isAdmin = false) - { - $user = new User(); - $user->setName($name); - $user->setEmail($emailAddress); - $user->setHash(""); $user->setProviderKey($providerKey); $user->setProviderData($providerData); $user->setIsAdmin(($isAdmin ? 1 : 0)); diff --git a/tests/PHPCensor/Service/UserServiceTest.php b/tests/PHPCensor/Service/UserServiceTest.php index 6e18e2db..fdfe0241 100644 --- a/tests/PHPCensor/Service/UserServiceTest.php +++ b/tests/PHPCensor/Service/UserServiceTest.php @@ -42,7 +42,14 @@ class UserServiceTest extends \PHPUnit_Framework_TestCase public function testExecute_CreateNonAdminUser() { - $user = $this->testedService->createUser('Test', 'test@example.com', 'testing', 0); + $user = $this->testedService->createUser( + 'Test', + 'test@example.com', + 'default', + json_encode(['type' => 'internal']), + 'testing', + false + ); $this->assertEquals('Test', $user->getName()); $this->assertEquals('test@example.com', $user->getEmail()); @@ -52,7 +59,15 @@ class UserServiceTest extends \PHPUnit_Framework_TestCase public function testExecute_CreateAdminUser() { - $user = $this->testedService->createUser('Test', 'test@example.com', 'testing', 1); + $user = $this->testedService->createUser( + 'Test', + 'test@example.com', + 'default', + json_encode(['type' => 'internal']), + 'testing', + true + ); + $this->assertEquals(1, $user->getIsAdmin()); }