Fixes for authentication and users

This commit is contained in:
Dmitry Khomutov 2017-02-05 00:44:55 +07:00
parent 0a4636a379
commit 0ab4acd72f
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
6 changed files with 36 additions and 43 deletions

View file

@ -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('<info>User account created!</info>');
} catch (\Exception $e) {
$output->writeln(sprintf('<error>%s</error>', 'PHP Censor failed to create your admin account.'));

View file

@ -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('<info>User account created!</info>');
} catch (\Exception $ex) {

View file

@ -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');

View file

@ -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);
}
}

View file

@ -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));

View file

@ -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());
}