diff --git a/.travis.yml b/.travis.yml index b1ecaee6..3a1d7bc3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,6 +27,7 @@ jobs: - name: Nette Code Checker + php: 7.4 install: - travis_retry composer create-project nette/code-checker temp/code-checker ^3 --no-progress script: @@ -34,6 +35,7 @@ jobs: - name: Nette Coding Standard + php: 7.4 install: - travis_retry composer create-project nette/coding-standard temp/coding-standard ^2 --no-progress script: @@ -41,11 +43,13 @@ jobs: - stage: Static Analysis (informative) + php: 7.4 script: - composer run-script phpstan - stage: Code Coverage + php: 7.4 script: - vendor/bin/tester -p phpdbg tests -s --coverage ./coverage.xml --coverage-src ./src after_script: diff --git a/src/Bridges/SecurityDI/SecurityExtension.php b/src/Bridges/SecurityDI/SecurityExtension.php index bb485da6..d87f21a7 100644 --- a/src/Bridges/SecurityDI/SecurityExtension.php +++ b/src/Bridges/SecurityDI/SecurityExtension.php @@ -35,9 +35,10 @@ public function getConfigSchema(): Nette\Schema\Schema 'users' => Expect::arrayOf( Expect::anyOf( Expect::string(), // user => password - Expect::structure([ // user => password + roles + Expect::structure([ // user => password + roles + data 'password' => Expect::string(), 'roles' => Expect::anyOf(Expect::string(), Expect::listOf('string')), + 'data' => Expect::array(), ])->castTo('array') ) ), @@ -49,6 +50,7 @@ public function getConfigSchema(): Nette\Schema\Schema public function loadConfiguration() { + /** @var object{debugger: bool, users: array, roles: array, resources: array} $config */ $config = $this->config; $builder = $this->getContainerBuilder(); @@ -69,17 +71,18 @@ public function loadConfiguration() } if ($config->users) { - $usersList = $usersRoles = []; + $usersList = $usersRoles = $usersData = []; foreach ($config->users as $username => $data) { $data = is_array($data) ? $data : ['password' => $data]; - $this->validateConfig(['password' => null, 'roles' => null], $data, $this->prefix("security.users.$username")); + $this->validateConfig(['password' => null, 'roles' => null, 'data' => []], $data, $this->prefix("security.users.$username")); $usersList[$username] = $data['password']; $usersRoles[$username] = $data['roles'] ?? null; + $usersData[$username] = $data['data'] ?? []; } $builder->addDefinition($this->prefix('authenticator')) ->setType(Nette\Security\IAuthenticator::class) - ->setFactory(Nette\Security\SimpleAuthenticator::class, [$usersList, $usersRoles]); + ->setFactory(Nette\Security\SimpleAuthenticator::class, [$usersList, $usersRoles, $usersData]); if ($this->name === 'security') { $builder->addAlias('nette.authenticator', $this->prefix('authenticator')); diff --git a/src/Bridges/SecurityTracy/templates/UserPanel.panel.phtml b/src/Bridges/SecurityTracy/templates/UserPanel.panel.phtml index 18e3c954..17873ed4 100644 --- a/src/Bridges/SecurityTracy/templates/UserPanel.panel.phtml +++ b/src/Bridges/SecurityTracy/templates/UserPanel.panel.phtml @@ -9,5 +9,5 @@ use Tracy\Dumper;
no identity
+ getIdentity()): echo Dumper::toHtml($user->getIdentity(), [Dumper::LIVE => true]); else: ?>No identity.