diff --git a/src/Bridges/SecurityDI/SecurityExtension.php b/src/Bridges/SecurityDI/SecurityExtension.php index 339ec43d..750bcb57 100644 --- a/src/Bridges/SecurityDI/SecurityExtension.php +++ b/src/Bridges/SecurityDI/SecurityExtension.php @@ -34,9 +34,9 @@ public function getConfigSchema(): Nette\Schema\Schema 'debugger' => Expect::bool(), 'users' => Expect::arrayOf( Expect::anyOf( - Expect::string(), // user => password + Expect::string()->dynamic(), // user => password Expect::structure([ // user => password + roles + data - 'password' => Expect::string(), + 'password' => Expect::string()->dynamic(), 'roles' => Expect::anyOf(Expect::string(), Expect::listOf('string')), 'data' => Expect::array(), ])->castTo('array'), diff --git a/tests/Security.DI/SecurityExtension.authenticator.phpt b/tests/Security.DI/SecurityExtension.authenticator.phpt index ececfc23..fd159549 100644 --- a/tests/Security.DI/SecurityExtension.authenticator.phpt +++ b/tests/Security.DI/SecurityExtension.authenticator.phpt @@ -29,6 +29,8 @@ security: admin: {password: admin123, roles: [admin, user]} user: {password: user123} moderator: {password: moderator123, roles: moderator} + dynamic1: ::trim(xxx) + dynamic2: {password: ::trim(xxx)} ', 'neon')); eval($compiler->addConfig($config)->compile()); @@ -43,12 +45,16 @@ $userList = [ 'admin' => 'admin123', 'user' => 'user123', 'moderator' => 'moderator123', + 'dynamic1' => 'xxx', + 'dynamic2' => 'xxx', ]; $expectedRoles = [ 'john' => [], 'admin' => ['admin', 'user'], 'user' => [], 'moderator' => ['moderator'], + 'dynamic1' => [], + 'dynamic2' => [], ]; foreach ($userList as $username => $password) {