diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000000000000000000000000000000000..9e6459bfce2ece78597afa039f44e3f48b19d3e9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,26 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +# **Help us to keep this issue-tracker clean! For questions or support, please refer to our [mailing lists](https://simplesamlphp.org/lists)** + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots or logs** +If applicable, add screenshots and/or log files to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000000000000000000000000000000000..066b2d920a28db73b4ba3a0b35e6905eeeef5772 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.travis.yml b/.travis.yml index 4b8c7209e371cdd6c117ce3744aad3003059d195..29adc1e452771f1575064e081518604a84c4563a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ php: - 7.0 - 7.1 - 7.2 +- 7.3 - hhvm matrix: allow_failures: @@ -15,7 +16,7 @@ before_script: - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then composer require --dev php-coveralls/php-coveralls; fi script: - bin/check-syntax.sh -- if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit --configuration tools/phpunit; else php vendor/phpunit/phpunit/phpunit --configuration tools/phpunit --no-coverage; fi +- if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi - if [[ "$TRAVIS_PHP_VERSION" == "7.0" ]]; then vendor/bin/psalm; fi after_success: - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/bin/php-coveralls -v; fi diff --git a/attributemap/addurnprefix.php b/attributemap/addurnprefix.php index 9d9877c0002173f18a53d51aaf50a2e7da9dd87c..c8623954f9284a5b784e78cea3e050bd19895218 100644 --- a/attributemap/addurnprefix.php +++ b/attributemap/addurnprefix.php @@ -1,6 +1,6 @@ <?php -$attributemap = array( +$attributemap = [ 'sn' => 'urn:mace:dir:attribute-def:sn', 'telephoneNumber' => 'urn:mace:dir:attribute-def:telephoneNumber', 'facsimileTelephoneNumber' => 'urn:mace:dir:attribute-def:facsimileTelephoneNumber', @@ -17,4 +17,4 @@ $attributemap = array( 'eduPersonEntitlement' => 'urn:mace:dir:attribute-def:eduPersonEntitlement', 'eduPersonOrgDN' => 'urn:mace:dir:attribute-def:eduPersonOrgDN', 'eduPersonOrgUnitDN' => 'urn:mace:dir:attribute-def:eduPersonOrgUnitDN', -); +]; diff --git a/attributemap/deprecatedSchacNS.php b/attributemap/deprecatedSchacNS.php index 5f90e03ab7a95cf2720c3706674cb80a7d71840e..4a613348e15ed5f84f236a755c76e8d1c26421be 100644 --- a/attributemap/deprecatedSchacNS.php +++ b/attributemap/deprecatedSchacNS.php @@ -11,7 +11,7 @@ if (!defined('SCHAC_NEW_NS')) { define('SCHAC_NEW_NS', 'urn:schac:attribute-def:'); } -$attributemap = array( +$attributemap = [ SCHAC_NEW_NS.'schacCountryOfCitizenship' => SCHAC_OLD_NS.'schacCountryOfCitizenship', SCHAC_NEW_NS.'schacCountryOfResidence' => SCHAC_OLD_NS.'schacCountryOfResidence', SCHAC_NEW_NS.'schacDateOfBirth' => SCHAC_OLD_NS.'schacDateOfBirth', @@ -32,4 +32,4 @@ $attributemap = array( SCHAC_NEW_NS.'schacUserPresenceID' => SCHAC_OLD_NS.'schacUserPresenceID', SCHAC_NEW_NS.'schacUserPrivateAttribute' => SCHAC_OLD_NS.'schacUserPrivateAttribute', SCHAC_NEW_NS.'schacUserStatus' => SCHAC_OLD_NS.'schacUserStatus', -); +]; diff --git a/attributemap/facebook2name.php b/attributemap/facebook2name.php index 5867ea7edfc87e56c1338bcb99b06f4bcc98f035..e567a69f20572cdbeaa1328cab5316cab1cea20d 100644 --- a/attributemap/facebook2name.php +++ b/attributemap/facebook2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ // Generated Facebook Attributes 'facebook_user' => 'eduPersonPrincipalName', // username OR uid @ facebook.com @@ -15,4 +15,4 @@ $attributemap = array( 'facebook.profile_url' => 'labeledURI', 'facebook.locale' => 'preferredLanguage', 'facebook.about_me' => 'description', -); +]; diff --git a/attributemap/feide-oid.php b/attributemap/feide-oid.php index dc94cd7a4ea344c4cac679d3219c5d8454af861d..45a1a28a4050205489689511b4b975648bd82ecf 100644 --- a/attributemap/feide-oid.php +++ b/attributemap/feide-oid.php @@ -1,6 +1,6 @@ <?php -$attributemap = array( +$attributemap = [ 'mobile' => 'urn:mace:dir:attribute-def:mobile', 'displayName' => 'urn:oid:2.16.840.1.113730.3.1.241', -); +]; diff --git a/attributemap/linkedin2name.php b/attributemap/linkedin2name.php index 97231dd4b37f63d09c697e8f41e9da769f5542ed..9b654682d8652a0a41ab630b4ea2bb1ef8d36e68 100644 --- a/attributemap/linkedin2name.php +++ b/attributemap/linkedin2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ // See http://developer.linkedin.com/docs/DOC-1061 for LinkedIn Profile fields. // NB: JSON response requires the conversion of field names from hyphened to camelCase. @@ -15,4 +15,4 @@ $attributemap = array( 'linkedin.id' => 'uid', // alpha + mixed case user id 'linkedin.headline' => 'title', 'linkedin.summary' => 'description', -); +]; diff --git a/attributemap/name2claim.php b/attributemap/name2claim.php index 482bb6d8bd3606e8fa5d2f2675c999bce4c98878..7b03b104539ad251a30519989c0b920ba77b1763 100644 --- a/attributemap/name2claim.php +++ b/attributemap/name2claim.php @@ -1,5 +1,5 @@ <?php // Maps AD LDAP to Claims from http://msdn.microsoft.com/en-us/library/hh159803.aspx -$attributemap = array( +$attributemap = [ 'c' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country', 'givenName' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname', 'mail' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress', @@ -10,4 +10,4 @@ $attributemap = array( 'st' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/stateorprovince', 'streetaddress' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress', 'telephonenumber' => 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/otherphone', -); +]; diff --git a/attributemap/name2oid.php b/attributemap/name2oid.php index 1a5e10ca27e6746149668f4cfd91687d5ea759db..c99f0e0b371e493a5dd6f865fccc8aef93feef85 100644 --- a/attributemap/name2oid.php +++ b/attributemap/name2oid.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'aRecord' => 'urn:oid:0.9.2342.19200300.100.1.26', 'aliasedEntryName' => 'urn:oid:2.5.4.1', 'aliasedObjectName' => 'urn:oid:2.5.4.1', @@ -189,4 +189,4 @@ $attributemap = array( 'userid' => 'urn:oid:0.9.2342.19200300.100.1.1', 'x121Address' => 'urn:oid:2.5.4.24', 'x500UniqueIdentifier' => 'urn:oid:2.5.4.45', -); +]; diff --git a/attributemap/name2urn.php b/attributemap/name2urn.php index 9286f6fe3b9a25b246512d5ccfaeaf56bcf5dfea..03190f3090a673497a4c2d5f09665c0175657b93 100644 --- a/attributemap/name2urn.php +++ b/attributemap/name2urn.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'aRecord' => 'urn:mace:dir:attribute-def:aRecord', 'aliasedEntryName' => 'urn:mace:dir:attribute-def:aliasedEntryName', 'aliasedObjectName' => 'urn:mace:dir:attribute-def:aliasedObjectName', @@ -186,4 +186,4 @@ $attributemap = array( 'userid' => 'urn:mace:dir:attribute-def:userid', 'x121Address' => 'urn:mace:dir:attribute-def:x121Address', 'x500UniqueIdentifier' => 'urn:mace:dir:attribute-def:x500UniqueIdentifier', -); +]; diff --git a/attributemap/newSchacNS.php b/attributemap/newSchacNS.php index 8b3d2a75685f392c9c73c56431b2e31c947d6c78..16e67394eecf567af9ffb263c21e02e5964efad7 100644 --- a/attributemap/newSchacNS.php +++ b/attributemap/newSchacNS.php @@ -11,7 +11,7 @@ if (!defined('SCHAC_NEW_NS')) { define('SCHAC_NEW_NS', 'urn:schac:attribute-def:'); } -$attributemap = array( +$attributemap = [ SCHAC_OLD_NS.'schacCountryOfCitizenship' => SCHAC_NEW_NS.'schacCountryOfCitizenship', SCHAC_OLD_NS.'schacCountryOfResidence' => SCHAC_NEW_NS.'schacCountryOfResidence', SCHAC_OLD_NS.'schacDateOfBirth' => SCHAC_NEW_NS.'schacDateOfBirth', @@ -32,4 +32,4 @@ $attributemap = array( SCHAC_OLD_NS.'schacUserPresenceID' => SCHAC_NEW_NS.'schacUserPresenceID', SCHAC_OLD_NS.'schacUserPrivateAttribute' => SCHAC_NEW_NS.'schacUserPrivateAttribute', SCHAC_OLD_NS.'schacUserStatus' => SCHAC_NEW_NS.'schacUserStatus', -); +]; diff --git a/attributemap/oid-feide.php b/attributemap/oid-feide.php index e20b7a88500056734152c19768e61b2df7ea477a..c6bc2148d289c0d3ed9e442c02872025301a397a 100644 --- a/attributemap/oid-feide.php +++ b/attributemap/oid-feide.php @@ -1,6 +1,6 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:oid:0.9.2342.19200300.100.1.41' => 'mobile', 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6' => 'eduPersonPrincipalName', 'urn:oid:0.9.2342.19200300.100.1.3' => 'mail', @@ -9,4 +9,4 @@ $attributemap = array( 'urn:oid:2.5.4.4' => 'sn', 'urn:oid:2.5.4.42' => 'givenName', 'urn:oid:2.16.756.1.2.5.1.1.1' => 'eduPerson', -); +]; diff --git a/attributemap/oid2name.php b/attributemap/oid2name.php index e1ce887d6e61ef1e8509d58f05707da251f830b7..f36dd1cab3b173df320c424f78b05a8e5a455a49 100644 --- a/attributemap/oid2name.php +++ b/attributemap/oid2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:oid:0.9.2342.19200300.100.1.1' => 'uid', 'urn:oid:0.9.2342.19200300.100.1.10' => 'manager', 'urn:oid:0.9.2342.19200300.100.1.11' => 'documentIdentifier', @@ -167,4 +167,4 @@ $attributemap = array( 'urn:oid:2.5.4.7' => 'l', 'urn:oid:2.5.4.8' => 'st', 'urn:oid:2.5.4.9' => 'street', -); +]; diff --git a/attributemap/oid2urn.php b/attributemap/oid2urn.php index cefb99ce762a69f0bdb6f69cd1f0ee38275d782d..a2b0a78e32e63655ca946a2d85a05d86d1e29a26 100644 --- a/attributemap/oid2urn.php +++ b/attributemap/oid2urn.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:oid:0.9.2342.19200300.100.1.1' => 'urn:mace:dir:attribute-def:uid', 'urn:oid:0.9.2342.19200300.100.1.10' => 'urn:mace:dir:attribute-def:manager', 'urn:oid:0.9.2342.19200300.100.1.11' => 'urn:mace:dir:attribute-def:documentIdentifier', @@ -164,4 +164,4 @@ $attributemap = array( 'urn:oid:2.5.4.7' => 'urn:mace:dir:attribute-def:l', 'urn:oid:2.5.4.8' => 'urn:mace:dir:attribute-def:st', 'urn:oid:2.5.4.9' => 'urn:mace:dir:attribute-def:street', -); +]; diff --git a/attributemap/openid2name.php b/attributemap/openid2name.php index 624074b02cf4ffb8f13e1bf8919f767156f30736..1cef43ef2cef2b7e0ebbed04cfe47da204e42bf6 100644 --- a/attributemap/openid2name.php +++ b/attributemap/openid2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ // Simple Registration + AX Schema 'http://axschema.org/namePerson/friendly' => 'displayName', // Alias/Username -> displayName 'openid.sreg.nickname' => 'displayName', @@ -30,4 +30,4 @@ $attributemap = array( 'http://axschema.org/contact/phone/fax' => 'facsimileTelephoneNumber', // Phone (fax) // Further attributes can be found at http://www.axschema.org/types/ -); +]; diff --git a/attributemap/removeurnprefix.php b/attributemap/removeurnprefix.php index 6a7c920d59fb9761fd2b72b75382057799b1d3b9..f9ac92f5edb3115251c14f571f5d373905a308fe 100644 --- a/attributemap/removeurnprefix.php +++ b/attributemap/removeurnprefix.php @@ -1,6 +1,6 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:mace:dir:attribute-def:sn' => 'sn', 'urn:mace:dir:attribute-def:telephoneNumber' => 'telephoneNumber', 'urn:mace:dir:attribute-def:facsimileTelephoneNumber' => 'facsimileTelephoneNumber', @@ -17,4 +17,4 @@ $attributemap = array( 'urn:mace:dir:attribute-def:eduPersonEntitlement' => 'eduPersonEntitlement', 'urn:mace:dir:attribute-def:eduPersonOrgDN' => 'eduPersonOrgDN', 'urn:mace:dir:attribute-def:eduPersonOrgUnitDN' => 'eduPersonOrgUnitDN', -); +]; diff --git a/attributemap/test.php b/attributemap/test.php index a89ad869f7ea0606e95bded4133360245ad97faf..8ddd84b6980ea06d58548c81cdd4710066693238 100644 --- a/attributemap/test.php +++ b/attributemap/test.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'mobile' => 'urn:mace:dir:attribute-def:mobile' -); +]; diff --git a/attributemap/twitter2name.php b/attributemap/twitter2name.php index 27c9e755a1b478625846a20c6000ea173ae7ee7d..00f65317a26ad6e11a10b1d6c11c4d025180dfb5 100644 --- a/attributemap/twitter2name.php +++ b/attributemap/twitter2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ // Generated Twitter Attributes 'twitter_screen_n_realm' => 'eduPersonPrincipalName', // screen_name@twitter.com @@ -11,4 +11,4 @@ $attributemap = array( 'twitter.url' => 'labeledURI', 'twitter.lang' => 'preferredLanguage', 'twitter.description' => 'description', -); +]; diff --git a/attributemap/urn2name.php b/attributemap/urn2name.php index fc8d4d97db5a0de8cfaeb2c21ac6b1907b71174d..8cf8bffd7d408414cc3ccc719fe57ccda866303d 100644 --- a/attributemap/urn2name.php +++ b/attributemap/urn2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:mace:dir:attribute-def:aRecord' => 'aRecord', 'urn:mace:dir:attribute-def:aliasedEntryName' => 'aliasedEntryName', 'urn:mace:dir:attribute-def:aliasedObjectName' => 'aliasedObjectName', @@ -186,4 +186,4 @@ $attributemap = array( 'urn:mace:terena.org:attribute-def:schacUserStatus' => 'schacUserStatus', 'urn:oasis:names:tc:SAML:attribute:pairwise-id' => 'pairwise-id', 'urn:oasis:names:tc:SAML:attribute:subject-id' => 'subject-id', -); +]; diff --git a/attributemap/urn2oid.php b/attributemap/urn2oid.php index fda382b93ab6de4c9e55c3b37b6cd2ddd5886339..4abf467844205819687bee888882586f4e3e8cec 100644 --- a/attributemap/urn2oid.php +++ b/attributemap/urn2oid.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ 'urn:mace:dir:attribute-def:aRecord' => 'urn:oid:0.9.2342.19200300.100.1.26', 'urn:mace:dir:attribute-def:aliasedEntryName' => 'urn:oid:2.5.4.1', 'urn:mace:dir:attribute-def:aliasedObjectName' => 'urn:oid:2.5.4.1', @@ -185,4 +185,4 @@ $attributemap = array( 'urn:mace:terena.org:attribute-def:schacUserPresenceID' => 'urn:oid:1.3.6.1.4.1.25178.1.2.12', 'urn:mace:terena.org:attribute-def:schacUserPrivateAttribute' => 'urn:oid:1.3.6.1.4.1.25178.1.2.18', 'urn:mace:terena.org:attribute-def:schacUserStatus' => 'urn:oid:1.3.6.1.4.1.25178.1.2.19', -); +]; diff --git a/attributemap/windowslive2name.php b/attributemap/windowslive2name.php index 1c5496c90dd63e3c9006c38ff13644cda5b37402..3c3ffa1f00c91b488597a062c96731e7082149b5 100644 --- a/attributemap/windowslive2name.php +++ b/attributemap/windowslive2name.php @@ -1,5 +1,5 @@ <?php -$attributemap = array( +$attributemap = [ // Generated Windows Live ID Attributes 'windowslive_user' => 'eduPersonPrincipalName', // uid @ windowslive.com @@ -19,4 +19,4 @@ $attributemap = array( 'windowslive.mail' => 'mail', 'windowslive.preferredLanguage' => 'preferredLanguage', -); +]; diff --git a/bin/importPdoMetadata.php b/bin/importPdoMetadata.php index b930b99f2169324759c3a6a0632e752328d3d77b..abf4fdd4842f5a6ec3c6641d82664a01e330e769 100755 --- a/bin/importPdoMetadata.php +++ b/bin/importPdoMetadata.php @@ -14,7 +14,7 @@ foreach ($config['metadata.sources'] as $s) { $mdshp->initDatabase(); foreach (glob("metadata/*.php") as $filename) { - $metadata = array(); + $metadata = []; require_once $filename; $set = basename($filename, ".php"); echo "importing set '$set'...".PHP_EOL; diff --git a/bin/memcacheSync.php b/bin/memcacheSync.php index 278cd0f6dcb3bf62d84e00360185741b27a0b654..0dfdc31f4741b3b56961c9ea27e7e569ac3952a8 100755 --- a/bin/memcacheSync.php +++ b/bin/memcacheSync.php @@ -3,19 +3,19 @@ // Check that the memcache library is enabled -if(!class_exists('Memcache') && !class_exists('Memcached')) { - echo("Error: the memcached (or memcache) PHP extension appears to be unavailable.\n"); - echo("\n"); - echo("This is most likely because PHP doesn't load it for the command line\n"); - echo("version. You probably need to enable it somehow.\n"); - echo("\n"); - if(is_executable('/usr/sbin/phpenmod')) { - echo("It is possible that running one of the following commands as root will fix it:\n"); - echo(" phpenmod -s cli memcached\n"); - echo(" phpenmod -s cli memcache\n"); - } - - exit(1); +if (!class_exists('Memcache') && !class_exists('Memcached')) { + echo "Error: the memcached (or memcache) PHP extension appears to be unavailable.\n"; + echo "\n"; + echo "This is most likely because PHP doesn't load it for the command line\n"; + echo "version. You probably need to enable it somehow.\n"; + echo "\n"; + if (is_executable('/usr/sbin/phpenmod')) { + echo "It is possible that running one of the following commands as root will fix it:\n"; + echo " phpenmod -s cli memcached\n"; + echo " phpenmod -s cli memcache\n"; + } + + exit(1); } // This is the base directory of the SimpleSAMLphp installation @@ -35,28 +35,27 @@ $warnBigSlab = 0; // We use the stats interface to determine which servers exists $stats = \SimpleSAML\Memcache::getRawStats(); -$keys = array(); +$keys = []; foreach ($stats as $group) { foreach ($group as $server => $state) { - if ($state === false) { - echo("WARNING: Server ".$server." is down.\n"); + echo "WARNING: Server ".$server." is down.\n"; $warnServerDown++; continue; } $items = $state['curr_items']; - echo("Server ".$server." has ".$items." items.\n"); + echo "Server ".$server." has ".$items." items.\n"; $serverKeys = getServerKeys($server); $keys = array_merge($keys, $serverKeys); } } -echo("Total number of keys: ".count($keys)."\n"); +echo "Total number of keys: ".count($keys)."\n"; $keys = array_unique($keys); -echo("Total number of unique keys: ".count($keys)."\n"); +echo "Total number of unique keys: ".count($keys)."\n"; -echo("Starting synchronization.\n"); +echo "Starting synchronization.\n" ; $skipped = 0; $sync = 0; @@ -70,20 +69,20 @@ foreach ($keys as $key) { } -echo("Synchronization done.\n"); -echo($sync." keys in sync.\n"); +echo "Synchronization done.\n"; +echo $sync." keys in sync.\n"; if ($skipped > 0) { - echo($skipped." keys skipped.\n"); - echo("Keys are skipped because they are either expired, or are of a type unknown\n"); - echo("to SimpleSAMLphp.\n"); + echo $skipped." keys skipped.\n"; + echo "Keys are skipped because they are either expired, or are of a type unknown\n"; + echo "to SimpleSAMLphp.\n"; } if ($warnServerDown > 0) { - echo("WARNING: ".$warnServerDown." server(s) down. Not all servers are synchronized.\n"); + echo "WARNING: ".$warnServerDown." server(s) down. Not all servers are synchronized.\n"; } if ($warnBigSlab > 0) { - echo("WARNING: ".$warnBigSlab." slab(s) may have contained more keys than we were told about.\n"); + echo "WARNING: ".$warnBigSlab." slab(s) may have contained more keys than we were told about.\n"; } /** @@ -99,17 +98,17 @@ function getServerKeys($server) $host = $server[0]; $port = (int) $server[1]; - echo("Connecting to: ".$host.":".$port."\n"); + echo "Connecting to: ".$host.":".$port."\n"; $socket = fsockopen($host, $port); - echo("Connected. Finding keys.\n"); + echo "Connected. Finding keys.\n"; if (fwrite($socket, "stats slabs\r\n") === false) { - echo("Error requesting slab dump from server.\n"); + echo "Error requesting slab dump from server.\n"; exit(1); } // Read list of slabs - $slabs = array(); + $slabs = []; while (($line = fgets($socket)) !== false) { $line = rtrim($line); if ($line === 'END') { @@ -125,11 +124,10 @@ function getServerKeys($server) } // Dump keys in slabs - $keys = array(); + $keys = []; foreach ($slabs as $slab) { - if (fwrite($socket, "stats cachedump ".$slab." 1000000\r\n") === false) { - echo("Error requesting cache dump from server.\n"); + echo "Error requesting cache dump from server.\n"; exit(1); } @@ -149,17 +147,17 @@ function getServerKeys($server) if (preg_match('/^ITEM (.*) \[\d+ b; \d+ s\]/', $line, $matches)) { $keys[] = $matches[1]; } else { - echo("Unknown result from cache dump: ".$line."\n"); + echo "Unknown result from cache dump: ".$line."\n"; } } if ($resultSize > 1900000 || count($keys) >= 1000000) { - echo("WARNING: Slab ".$slab." on server ".$host.":".$port. - " may have contained more keys than we were told about.\n"); + echo "WARNING: Slab ".$slab." on server ".$host.":".$port. + " may have contained more keys than we were told about.\n"; $GLOBALS['warnBigSlab'] += 1; } } - echo("Found ".count($keys)." key(s).\n"); + echo "Found ".count($keys)." key(s).\n"; fclose($socket); return $keys; diff --git a/composer.json b/composer.json index 46b7501745f285cae77bf266ec56c214b0733706..14deee4f7f938e55adbc2e9be55a4aad473a20a9 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "files": ["lib/_autoload_modules.php"] }, "require": { - "php": ">=5.4", + "php": ">=5.5", "ext-SPL": "*", "ext-zlib": "*", "ext-pcre": "*", @@ -50,8 +50,7 @@ }, "require-dev": { "phpunit/phpunit": "~4.8", - "mikey179/vfsStream": "~1.6", - "friendsofphp/php-cs-fixer": "^2.2" + "mikey179/vfsStream": "~1.6" }, "suggests": { "predis/predis": "1.1.1" diff --git a/composer.lock b/composer.lock index 23ffb81ecd508911c8bd721d06731753fda3ccb0..98696127f413790637e8237841f15da4c00ca422 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ca77036cf8ae88d3f3679effc3fea17c", + "content-hash": "9bb30d08fad0383d1455906ecf328ef3", "packages": [ { "name": "gettext/gettext", @@ -316,16 +316,16 @@ }, { "name": "robrichards/xmlseclibs", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "1f4de0c0d121922aafd8c62c2a9f5e528830cf38" + "reference": "406c68ac9124db033d079284b719958b829cb830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/1f4de0c0d121922aafd8c62c2a9f5e528830cf38", - "reference": "1f4de0c0d121922aafd8c62c2a9f5e528830cf38", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/406c68ac9124db033d079284b719958b829cb830", + "reference": "406c68ac9124db033d079284b719958b829cb830", "shasum": "" }, "require": { @@ -350,20 +350,20 @@ "xml", "xmldsig" ], - "time": "2018-09-27T13:24:13+00:00" + "time": "2018-11-15T11:59:02+00:00" }, { "name": "simplesamlphp/saml2", - "version": "v3.2.2", + "version": "v3.2.5", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "b3a040ec186f4a3749228b8c13642c5295fc451b" + "reference": "0e6632e8a208fa1f3ff3786d997f27c1d430de80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/b3a040ec186f4a3749228b8c13642c5295fc451b", - "reference": "b3a040ec186f4a3749228b8c13642c5295fc451b", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/0e6632e8a208fa1f3ff3786d997f27c1d430de80", + "reference": "0e6632e8a208fa1f3ff3786d997f27c1d430de80", "shasum": "" }, "require": { @@ -407,7 +407,7 @@ } ], "description": "SAML2 PHP library from SimpleSAMLphp", - "time": "2018-09-27T14:09:06+00:00" + "time": "2018-11-16T09:36:27+00:00" }, { "name": "symfony/config", @@ -1277,180 +1277,6 @@ } ], "packages-dev": [ - { - "name": "composer/semver", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2016-08-30T16:08:34+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2018-08-31T19:07:57+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2017-02-24T16:22:25+00:00" - }, { "name": "doctrine/instantiator", "version": "1.0.5", @@ -1505,156 +1331,6 @@ ], "time": "2015-06-14T21:17:01+00:00" }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.13.0", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/7136aa4e0c5f912e8af82383775460d906168a10", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4", - "composer/xdebug-handler": "^1.2", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^5.6 || >=7.0 <7.3", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.2 || ^4.0", - "symfony/event-dispatcher": "^3.0 || ^4.0", - "symfony/filesystem": "^3.0 || ^4.0", - "symfony/finder": "^3.0 || ^4.0", - "symfony/options-resolver": "^3.0 || ^4.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0", - "symfony/stopwatch": "^3.0 || ^4.0" - }, - "conflict": { - "hhvm": "*" - }, - "require-dev": { - "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.1", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.1", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", - "phpunitgoodpractices/traits": "^1.5.1", - "symfony/phpunit-bridge": "^4.0" - }, - "suggest": { - "ext-mbstring": "For handling non-UTF8 characters in cache signature.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.13-dev" - } - }, - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/TestCase.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dariusz RumiĹ„ski", - "email": "dariusz.ruminski@gmail.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "time": "2018-08-23T13:15:44+00:00" - }, { "name": "mikey179/vfsStream", "version": "v1.6.5", @@ -1701,57 +1377,6 @@ "homepage": "http://vfs.bovigo.org/", "time": "2017-08-01T08:02:14+00:00" }, - { - "name": "php-cs-fixer/diff", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", - "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "symfony/process": "^3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "SpacePossum" - } - ], - "description": "sebastian/diff v2 backport support for PHP5.6", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "time": "2018-02-15T16:58:55+00:00" - }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", @@ -2715,331 +2340,6 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21T13:59:46+00:00" }, - { - "name": "symfony/console", - "version": "v3.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", - "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-10-02T16:33:53+00:00" - }, - { - "name": "symfony/finder", - "version": "v3.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d", - "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-10-03T08:46:40+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v3.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "1cf7d8e704a9cc4164c92e430f2dfa3e6983661d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1cf7d8e704a9cc4164c92e430f2dfa3e6983661d", - "reference": "1cf7d8e704a9cc4164c92e430f2dfa3e6983661d", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2018-09-17T17:29:18+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/95c50420b0baed23852452a7f0c7b527303ed5ae", - "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-08-06T14:22:27+00:00" - }, - { - "name": "symfony/process", - "version": "v3.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "1dc2977afa7d70f90f3fefbcd84152813558910e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1dc2977afa7d70f90f3fefbcd84152813558910e", - "reference": "1dc2977afa7d70f90f3fefbcd84152813558910e", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-10-02T12:28:39+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v3.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4", - "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2018-10-02T12:28:39+00:00" - }, { "name": "symfony/yaml", "version": "v3.4.17", @@ -3156,7 +2456,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.4", + "php": ">=5.5", "ext-spl": "*", "ext-zlib": "*", "ext-pcre": "*", diff --git a/config-templates/acl.php b/config-templates/acl.php index e208952eb3e8f5b92b74c0eef9ee01cb9660e376..cb760d0aa7c024715049a69c6e7ee56ad0d06a43 100644 --- a/config-templates/acl.php +++ b/config-templates/acl.php @@ -4,56 +4,56 @@ * This file defines "named" access control lists, which can * be reused in several places. */ -$config = array( - 'adminlist' => array( - //array('allow', 'equals', 'mail', 'admin1@example.org'), - //array('allow', 'has', 'groups', 'admin'), +$config = [ + 'adminlist' => [ + //['allow', 'equals', 'mail', 'admin1@example.org'], + //['allow', 'has', 'groups', 'admin'], // The default action is to deny access. - ), + ], - 'example-simple' => array( - array('allow', 'equals', 'mail', 'admin1@example.org'), - array('allow', 'equals', 'mail', 'admin2@example.org'), + 'example-simple' => [ + ['allow', 'equals', 'mail', 'admin1@example.org'], + ['allow', 'equals', 'mail', 'admin2@example.org'], // The default action is to deny access. - ), + ], - 'example-deny-some' => array( - array('deny', 'equals', 'mail', 'eviluser@example.org'), - array('allow'), // Allow everybody else. - ), + 'example-deny-some' => [ + ['deny', 'equals', 'mail', 'eviluser@example.org'], + ['allow'], // Allow everybody else. + ], - 'example-maildomain' => array( - array('allow', 'equals-preg', 'mail', '/@example\.org$/'), + 'example-maildomain' => [ + ['allow', 'equals-preg', 'mail', '/@example\.org$/'], // The default action is to deny access. - ), + ], - 'example-allow-employees' => array( - array('allow', 'has', 'eduPersonAffiliation', 'employee'), + 'example-allow-employees' => [ + ['allow', 'has', 'eduPersonAffiliation', 'employee'], // The default action is to deny access. - ), + ], - 'example-allow-employees-not-students' => array( - array('deny', 'has', 'eduPersonAffiliation', 'student'), - array('allow', 'has', 'eduPersonAffiliation', 'employee'), + 'example-allow-employees-not-students' => [ + ['deny', 'has', 'eduPersonAffiliation', 'student'], + ['allow', 'has', 'eduPersonAffiliation', 'employee'], // The default action is to deny access. - ), - - 'example-deny-student-except-one' => array( - array('deny', 'and', - array('has', 'eduPersonAffiliation', 'student'), - array('not', 'equals', 'mail', 'user@example.org'), - ), - array('allow'), - ), - - 'example-allow-or' => array( - array('allow', 'or', - array('equals', 'eduPersonAffiliation', 'student', 'member'), - array('equals', 'mail', 'someuser@example2.org'), - ), - ), - - 'example-allow-all' => array( - array('allow'), - ), -); + ], + + 'example-deny-student-except-one' => [ + ['deny', 'and', + ['has', 'eduPersonAffiliation', 'student'], + ['not', 'equals', 'mail', 'user@example.org'], + ], + ['allow'], + ], + + 'example-allow-or' => [ + ['allow', 'or', + ['equals', 'eduPersonAffiliation', 'student', 'member'], + ['equals', 'mail', 'someuser@example2.org'], + ], + ], + + 'example-allow-all' => [ + ['allow'], + ], +]; diff --git a/config-templates/authmemcookie.php b/config-templates/authmemcookie.php index cf2031addbc34bde7e8cfb70eea0f10d4256c32c..fac02813814cd56c09cd69ce3b526408d35da4e9 100644 --- a/config-templates/authmemcookie.php +++ b/config-templates/authmemcookie.php @@ -4,7 +4,7 @@ * This is the configuration file for the Auth MemCookie example. */ -$config = array( +$config = [ /* * The authentication source that should be used. * @@ -70,4 +70,4 @@ $config = array( * 'memcache.port' => 11211, */ 'memcache.port' => 11211, -); +]; diff --git a/config-templates/authsources.php b/config-templates/authsources.php index 5550b6d557b11c068fe534fc445c02ce409400b5..ac1d1c5545fa14b685d2c6f58b078eaf44e95aeb 100644 --- a/config-templates/authsources.php +++ b/config-templates/authsources.php @@ -1,19 +1,19 @@ <?php -$config = array( +$config = [ // This is a authentication source which handles admin authentication. - 'admin' => array( + 'admin' => [ // The default is to use core:AdminPassword, but it can be replaced with // any authentication source. 'core:AdminPassword', - ), + ], // An authentication source which can authenticate against both SAML 2.0 // and Shibboleth 1.3 IdPs. - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', // The entity ID of this SP. @@ -35,79 +35,81 @@ $config = array( * The metadata will then be created as follows: * <md:RequestedAttribute FriendlyName="friendlyName" Name="name" /> */ - /*'name' => array( - 'en' => 'A service', - 'no' => 'En tjeneste', - ), + /* + 'name' => [ + 'en' => 'A service', + 'no' => 'En tjeneste', + ], - 'attributes' => array( + 'attributes' => [ 'attrname' => 'urn:oid:x.x.x.x', - ),*/ - /*'attributes.required' => array ( + ], + 'attributes.required' => [ 'urn:oid:x.x.x.x', - ),*/ - ), + ], + */ + ], /* - 'example-sql' => array( + 'example-sql' => [ 'sqlauth:SQL', 'dsn' => 'pgsql:host=sql.example.org;port=5432;dbname=simplesaml', 'username' => 'simplesaml', 'password' => 'secretpassword', - 'query' => 'SELECT uid, givenName, email, eduPersonPrincipalName FROM users WHERE uid = :username AND password = SHA2(CONCAT((SELECT salt FROM users WHERE uid = :username), :password),256);', - ), + 'query' => 'SELECT uid, givenName, email, eduPersonPrincipalName FROM users WHERE uid = :username AND password = SHA2(CONCAT((SELECT salt FROM users WHERE uid = :username), :password), 256);', + ], */ /* - 'example-static' => array( + 'example-static' => [ 'exampleauth:Static', - 'uid' => array('testuser'), - 'eduPersonAffiliation' => array('member', 'employee'), - 'cn' => array('Test User'), - ), + 'uid' => ['testuser'], + 'eduPersonAffiliation' => ['member', 'employee'], + 'cn' => ['Test User'], + ], */ /* - 'example-userpass' => array( + 'example-userpass' => [ 'exampleauth:UserPass', // Give the user an option to save their username for future login attempts // And when enabled, what should the default be, to save the username or not - //'remember.username.enabled' => FALSE, - //'remember.username.checked' => FALSE, - - 'student:studentpass' => array( - 'uid' => array('test'), - 'eduPersonAffiliation' => array('member', 'student'), - ), - 'employee:employeepass' => array( - 'uid' => array('employee'), - 'eduPersonAffiliation' => array('member', 'employee'), - ), - ), + //'remember.username.enabled' => false, + //'remember.username.checked' => false, + + 'student:studentpass' => [ + 'uid' => ['test'], + 'eduPersonAffiliation' => ['member', 'student'], + ], + 'employee:employeepass' => [ + 'uid' => ['employee'], + 'eduPersonAffiliation' => ['member', 'employee'], + ], + ], */ /* - 'crypto-hash' => array( + 'crypto-hash' => [ 'authcrypt:Hash', // hashed version of 'verysecret', made with bin/pwgen.php - 'professor:{SSHA256}P6FDTEEIY2EnER9a6P2GwHhI5JDrwBgjQ913oVQjBngmCtrNBUMowA==' => array( - 'uid' => array('prof_a'), - 'eduPersonAffiliation' => array('member', 'employee', 'board'), - ), - ), + 'professor:{SSHA256}P6FDTEEIY2EnER9a6P2GwHhI5JDrwBgjQ913oVQjBngmCtrNBUMowA==' => [ + 'uid' => ['prof_a'], + 'eduPersonAffiliation' => ['member', 'employee', 'board'], + ], + ], */ /* - 'htpasswd' => array( + 'htpasswd' => [ 'authcrypt:Htpasswd', 'htpasswd_file' => '/var/www/foo.edu/legacy_app/.htpasswd', - 'static_attributes' => array( - 'eduPersonAffiliation' => array('member', 'employee'), - 'Organization' => array('University of Foo'), - ), - ), + 'static_attributes' => [ + 'eduPersonAffiliation' => ['member', 'employee'], + 'Organization' => ['University of Foo'], + ], + ], */ /* @@ -115,21 +117,21 @@ $config = array( // external authentication engine. Take a look at the comment in the beginning // of modules/exampleauth/lib/Auth/Source/External.php for a description of // how to adjust it to your own site. - 'example-external' => array( + 'example-external' => [ 'exampleauth:External', - ), + ], */ /* - 'yubikey' => array( + 'yubikey' => [ 'authYubiKey:YubiKey', 'id' => '000', // 'key' => '012345678', - ), + ], */ /* - 'facebook' => array( + 'facebook' => [ 'authfacebook:Facebook', // Register your Facebook application on http://www.facebook.com/developers // App ID or API key (requests with App ID should be faster; https://github.com/facebook/php-sdk/issues/214) @@ -143,7 +145,7 @@ $config = array( // When empty, only the app-specific user id and name will be returned // See https://developers.facebook.com/docs/graph-api/reference/v2.6/user for the full list // 'user_fields' => 'email,birthday,third_party_id,name,first_name,last_name', - ), + ], */ /* @@ -152,59 +154,59 @@ $config = array( // https://www.linkedin.com/secure/developer // Attributes definition: // https://developer.linkedin.com/docs/fields - 'linkedin' => array( + 'linkedin' => [ 'authlinkedin:LinkedIn', 'key' => 'xxxxxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxx', 'attributes' => 'id,first-name,last-name,headline,summary,specialties,picture-url,email-address', - ), + ], */ /* // Twitter OAuth Authentication API. // Register your application to get an API key here: // http://twitter.com/oauth_clients - 'twitter' => array( + 'twitter' => [ 'authtwitter:Twitter', 'key' => 'xxxxxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxx', // Forces the user to enter their credentials to ensure the correct users account is authorized. // Details: https://dev.twitter.com/docs/api/1/get/oauth/authenticate - 'force_login' => FALSE, - ), + 'force_login' => false, + ], */ /* // Microsoft Account (Windows Live ID) Authentication API. // Register your application to get an API key here: // https://apps.dev.microsoft.com/ - 'windowslive' => array( + 'windowslive' => [ 'authwindowslive:LiveID', 'key' => 'xxxxxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxx', - ), + ], */ /* // Example of a LDAP authentication source. - 'example-ldap' => array( + 'example-ldap' => [ 'ldap:LDAP', // Give the user an option to save their username for future login attempts // And when enabled, what should the default be, to save the username or not - //'remember.username.enabled' => FALSE, - //'remember.username.checked' => FALSE, + //'remember.username.enabled' => false, + //'remember.username.checked' => false, // The hostname of the LDAP server. 'hostname' => 'ldap.example.org', // Whether SSL/TLS should be used when contacting the LDAP server. - 'enable_tls' => TRUE, + 'enable_tls' => true, // Whether debug output from the LDAP library should be enabled. // Default is FALSE. - 'debug' => FALSE, + 'debug' => false, // The timeout for accessing the LDAP server, in seconds. // The default is 0, which means no timeout. @@ -215,12 +217,12 @@ $config = array( 'port' => 389, // Set whether to follow referrals. AD Controllers may require FALSE to function. - 'referrals' => TRUE, + 'referrals' => true, // Which attributes should be retrieved from the LDAP server. // This can be an array of attribute names, or NULL, in which case // all attributes are fetched. - 'attributes' => NULL, + 'attributes' => null, // The pattern which should be used to create the users DN given the username. // %username% in this pattern will be replaced with the users username. @@ -230,7 +232,7 @@ $config = array( // As an alternative to specifying a pattern for the users DN, it is possible to // search for the username in a set of attributes. This is enabled by this option. - 'search.enable' => FALSE, + 'search.enable' => false, // The DN which will be used as a base for the search. // This can be a single string, in which case only that DN is searched, or an @@ -241,40 +243,40 @@ $config = array( // // This is an array with one or more attribute names. Any of the attributes in // the array may match the value the username. - 'search.attributes' => array('uid', 'mail'), + 'search.attributes' => ['uid', 'mail'], // Additional LDAP filters appended to the search attributes 'search.filter' => '(objectclass=inetorgperson)', // The username & password the SimpleSAMLphp should bind to before searching. If // this is left as NULL, no bind will be performed before searching. - 'search.username' => NULL, - 'search.password' => NULL, + 'search.username' => null, + 'search.password' => null, // If the directory uses privilege separation, // the authenticated user may not be able to retrieve // all required attribures, a privileged entity is required // to get them. This is enabled with this option. - 'priv.read' => FALSE, + 'priv.read' => false, // The DN & password the SimpleSAMLphp should bind to before // retrieving attributes. These options are required if // 'priv.read' is set to TRUE. - 'priv.username' => NULL, - 'priv.password' => NULL, + 'priv.username' => null, + 'priv.password' => null, - ), + ], */ /* // Example of an LDAPMulti authentication source. - 'example-ldapmulti' => array( + 'example-ldapmulti' => [ 'ldap:LDAPMulti', // Give the user an option to save their username for future login attempts // And when enabled, what should the default be, to save the username or not - //'remember.username.enabled' => FALSE, - //'remember.username.checked' => FALSE, + //'remember.username.enabled' => false, + //'remember.username.checked' => false, // Give the user an option to save their organization choice for future login // attempts. And when enabled, what should the default be, checked or not. @@ -298,7 +300,7 @@ $config = array( // username will be used as the user enters it. // // The default is FALSE. - 'include_organization_in_username' => FALSE, + 'include_organization_in_username' => false, // A list of available LDAP servers. // @@ -308,7 +310,7 @@ $config = array( // // The value of each element is an array in the same format as an LDAP // authentication source. - 'employees' => array( + 'employees' => [ // A short name/description for this group. Will be shown in a dropdown list // when the user logs on. // @@ -319,16 +321,14 @@ $config = array( // the LDAP authentication source. 'hostname' => 'ldap.employees.example.org', 'dnpattern' => 'uid=%username%,ou=employees,dc=example,dc=org', - ), + ], - 'students' => array( + 'students' => [ 'description' => 'Students', 'hostname' => 'ldap.students.example.org', 'dnpattern' => 'uid=%username%,ou=students,dc=example,dc=org', - ), - - ), + ], + ], */ - -); +]; diff --git a/config-templates/config.php b/config-templates/config.php index 50a08f9b9b749c3bbf6db5f6e60784b93f7d052c..1fa9d3b40f8d1dfd764b319413a0266452135336 100644 --- a/config-templates/config.php +++ b/config-templates/config.php @@ -4,7 +4,7 @@ * */ -$config = array( +$config = [ /******************************* | BASIC CONFIGURATION OPTIONS | @@ -33,7 +33,7 @@ $config = array( * The 'application' configuration array groups a set configuration options * relative to an application protected by SimpleSAMLphp. */ - //'application' => array( + //'application' => [ /* * The 'baseURL' configuration option allows you to specify a protocol, * host and optionally a port that serves as the canonical base for all @@ -49,7 +49,7 @@ $config = array( * to SimpleSAMLphp's API. */ //'baseURL' => 'https://example.com', - //), + //], /* * The following settings are *filesystem paths* which define where @@ -148,9 +148,9 @@ $config = array( * WHAT YOU ARE DOING! * * Example: - * 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), + * 'trusted.url.domains' => ['sp.example.com', 'app.example.com'], */ - 'trusted.url.domains' => array(), + 'trusted.url.domains' => [], /* * Enable regular expression matching of trusted.url.domains. @@ -214,11 +214,11 @@ $config = array( * If you want to disable debugging completely, unset this option or set it to an * empty array. */ - 'debug' => array( + 'debug' => [ 'saml' => false, 'backtraces' => true, 'validatexml' => false, - ), + ], /* * When 'showerrors' is enabled, all error messages and stack traces will be output @@ -235,7 +235,7 @@ $config = array( * See docs/simplesamlphp-errorhandling.txt for function code example. * * Example: - * 'errors.show_function' => array('SimpleSAML\Module\example\Error', 'show'), + * 'errors.show_function' => ['SimpleSAML\Module\example\Error', 'show'], */ @@ -316,21 +316,21 @@ $config = array( * This is an array of outputs. Each output has at least a 'class' option, which * selects the output. */ - 'statistics.out' => array(// Log statistics to the normal log. + 'statistics.out' => [// Log statistics to the normal log. /* - array( + [ 'class' => 'core:Log', 'level' => 'notice', - ), + ], */ // Log statistics to files in a directory. One file per day. /* - array( + [ 'class' => 'core:File', 'directory' => '/var/log/stats', - ), + ], */ - ), + ], @@ -377,7 +377,7 @@ $config = array( */ 'database.username' => 'simplesamlphp', 'database.password' => 'secret', - 'database.options' => array(), + 'database.options' => [], /* * (Optional) Table prefix @@ -387,7 +387,7 @@ $config = array( /* * (Optional) Driver options */ - 'database.driver_options' => array(), + 'database.driver_options' => [], /* * True or false if you would like a persistent database connection @@ -404,16 +404,16 @@ $config = array( * options for the master (shown above) with the exception of the table * prefix and driver options. */ - 'database.slaves' => array( + 'database.slaves' => [ /* - array( + [ 'dsn' => 'mysql:host=myslave;dbname=saml', 'username' => 'simplesamlphp', 'password' => 'secret', 'persistent' => false, - ), + ], */ - ), + ], @@ -458,11 +458,11 @@ $config = array( * * Example: * - * 'module.enable' => array( - * 'exampleauth' => TRUE, // Setting to TRUE enables. - * 'saml' => FALSE, // Setting to FALSE disables. - * 'core' => NULL, // Unset or NULL uses default. - * ), + * 'module.enable' => [ + * 'exampleauth' => true, // Setting to TRUE enables. + * 'saml' => false, // Setting to FALSE disables. + * 'core' => null, // Unset or NULL uses default. + * ], * */ @@ -568,7 +568,7 @@ $config = array( * See docs/simplesamlphp-advancedfeatures.txt for function code example. * * Example: - * 'session.check_function' => array('\SimpleSAML\Module\example\Util', 'checkSession'), + * 'session.check_function' => ['\SimpleSAML\Module\example\Util', 'checkSession'], */ @@ -606,33 +606,33 @@ $config = array( * Note that sessions will be lost if one server is lost from both the * a-group and the b-group. * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'mc_a1'), - * array('hostname' => 'mc_a2'), - * ), - * array( - * array('hostname' => 'mc_b1'), - * array('hostname' => 'mc_b2'), - * ), - * ), + * 'memcache_store.servers' => [ + * [ + * ['hostname' => 'mc_a1'], + * ['hostname' => 'mc_a2'], + * ], + * [ + * ['hostname' => 'mc_b1'], + * ['hostname' => 'mc_b2'], + * ], + * ], * * Example of simple configuration with only one memcache server, * running on the same computer as the web server: * Note that all sessions will be lost if the memcache server crashes. * - * 'memcache_store.servers' => array( - * array( - * array('hostname' => 'localhost'), - * ), - * ), + * 'memcache_store.servers' => [ + * [ + * ['hostname' => 'localhost'], + * ], + * ], * */ - 'memcache_store.servers' => array( - array( - array('hostname' => 'localhost'), - ), - ), + 'memcache_store.servers' => [ + [ + ['hostname' => 'localhost'], + ], + ], /* * This value allows you to set a prefix for memcache-keys. The default @@ -670,7 +670,7 @@ $config = array( /* * Language-related options. */ - 'language' => array( + 'language' => [ /* * An array in the form 'language' => <list of alternative languages>. * @@ -681,32 +681,34 @@ $config = array( * * For example, for the "no" language code (Norwegian), we would have: * - * 'priorities' => array( - * 'no' => array('nb', 'nn', 'en', 'se'), + * 'priorities' => [ + * 'no' => ['nb', 'nn', 'en', 'se'], * ... - * ), + * ], * * establishing that if a translation for the "no" language code is * not available, we look for translations in "nb" (Norwegian BokmĂĄl), * and so on, in that order. */ - 'priorities' => array( - 'no' => array('nb', 'nn', 'en', 'se'), - 'nb' => array('no', 'nn', 'en', 'se'), - 'nn' => array('no', 'nb', 'en', 'se'), - 'se' => array('nb', 'no', 'nn', 'en'), - ), - ), + 'priorities' => [ + 'no' => ['nb', 'nn', 'en', 'se'], + 'nb' => ['no', 'nn', 'en', 'se'], + 'nn' => ['no', 'nb', 'en', 'se'], + 'se' => ['nb', 'no', 'nn', 'en'], + 'nr' => ['zu', 'en'], + 'nd' => ['zu', 'en'], + ], + ], /* * Languages available, RTL languages, and what language is the default. */ - 'language.available' => array( - 'en', 'no', 'nn', 'se', 'da', 'de', 'sv', 'fi', 'es', 'ca', 'fr', 'it', 'nl', 'lb', + 'language.available' => [ + 'en', 'no', 'nn', 'se', 'da', 'de', 'sv', 'fi', 'es', 'ca', 'fr', 'it', 'nl', 'lb', 'cs', 'sl', 'lt', 'hr', 'hu', 'pl', 'pt', 'pt-br', 'tr', 'ja', 'zh', 'zh-tw', 'ru', - 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af' - ), - 'language.rtl' => array('ar', 'dv', 'fa', 'ur', 'he'), + 'et', 'he', 'id', 'sr', 'lv', 'ro', 'eu', 'el', 'af', 'zu', 'xh', + ], + 'language.rtl' => ['ar', 'dv', 'fa', 'ur', 'he'], 'language.default' => 'en', /* @@ -745,7 +747,7 @@ $config = array( * the default language for the user. * * Example: - * 'language.get_language_function' => array('\SimpleSAML\Module\example\Template', 'getLanguage'), + * 'language.get_language_function' => ['\SimpleSAML\Module\example\Template', 'getLanguage'], */ /* @@ -854,11 +856,12 @@ $config = array( * Authentication processing filters that will be executed for all IdPs * Both Shibboleth and SAML 2.0 */ - 'authproc.idp' => array( + 'authproc.idp' => [ /* Enable the authproc filter below to add URN prefixes to all attributes - 10 => array( - 'class' => 'core:AttributeMap', 'addurnprefix' - ), */ + 10 => array[ + 'class' => 'core:AttributeMap', 'addurnprefix' + ], + */ /* Enable the authproc filter below to automatically generated eduPersonTargetedID. 20 => 'core:TargetedID', */ @@ -866,11 +869,11 @@ $config = array( // Adopts language from attribute to use in UI 30 => 'core:LanguageAdaptor', - 45 => array( + 45 => [ 'class' => 'core:StatisticsWithAttribute', 'attributename' => 'realm', 'type' => 'saml20-idp-SSO', - ), + ], /* When called without parameters, it will fallback to filter attributes ‹the old way› * by checking the 'attributes' parameter in metadata on IdP hosted and SP remote. @@ -879,58 +882,61 @@ $config = array( /* * Search attribute "distinguishedName" for pattern and replaces if found - - 60 => array( + */ + /* + 60 => [ 'class' => 'core:AttributeAlter', 'pattern' => '/OU=studerende/', 'replacement' => 'Student', 'subject' => 'distinguishedName', '%replace', - ), - */ + ], + */ /* * Consent module is enabled (with no permanent storage, using cookies). - - 90 => array( + */ + /* + 90 => [ 'class' => 'consent:Consent', 'store' => 'consent:Cookie', 'focus' => 'yes', - 'checked' => TRUE - ), - */ + 'checked' => true + ], + */ // If language is set in Consent module it will be added as an attribute. 99 => 'core:LanguageAdaptor', - ), + ], /* * Authentication processing filters that will be executed for all SPs * Both Shibboleth and SAML 2.0 */ - 'authproc.sp' => array( + 'authproc.sp' => [ /* - 10 => array( + 10 => [ 'class' => 'core:AttributeMap', 'removeurnprefix' - ), + ], */ /* * Generate the 'group' attribute populated from other variables, including eduPersonAffiliation. - 60 => array( + 60 => [ 'class' => 'core:GenerateGroups', 'eduPersonAffiliation' - ), + ], */ /* * All users will be members of 'users' and 'members' - 61 => array( - 'class' => 'core:AttributeAdd', 'groups' => array('users', 'members') - ), + */ + /* + 61 => [ + 'class' => 'core:AttributeAdd', 'groups' => ['users', 'members'] + ], */ // Adopts language from attribute to use in UI 90 => 'core:LanguageAdaptor', - - ), + ], @@ -987,40 +993,40 @@ $config = array( * This example defines two flatfile sources. One is the default metadata directory, the other * is a metadata directory with auto-generated metadata files. * - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'flatfile', 'directory' => 'metadata-generated'), - * ), + * 'metadata.sources' => [ + * ['type' => 'flatfile'], + * ['type' => 'flatfile', 'directory' => 'metadata-generated'], + * ], * * This example defines a flatfile source and an XML source. - * 'metadata.sources' => array( - * array('type' => 'flatfile'), - * array('type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'), - * ), + * 'metadata.sources' => [ + * ['type' => 'flatfile'], + * ['type' => 'xml', 'file' => 'idp.example.org-idpMeta.xml'], + * ], * * This example defines an mdq source. - * 'metadata.sources' => array( - * array( + * 'metadata.sources' => [ + * [ * 'type' => 'mdq', * 'server' => 'http://mdq.server.com:8080', * 'cachedir' => '/var/simplesamlphp/mdq-cache', * 'cachelength' => 86400 - * ) - * ), + * ] + * ], * * This example defines an pdo source. - * 'metadata.sources' => array( - * array('type' => 'pdo') - * ), + * 'metadata.sources' => [ + * ['type' => 'pdo'] + * ], * * Default: - * 'metadata.sources' => array( - * array('type' => 'flatfile') - * ), + * 'metadata.sources' => [ + * ['type' => 'flatfile'] + * ], */ - 'metadata.sources' => array( - array('type' => 'flatfile'), - ), + 'metadata.sources' => [ + ['type' => 'flatfile'], + ], /* * Should signing of generated metadata be enabled by default. @@ -1091,4 +1097,4 @@ $config = array( * The prefix we should use on our Redis datastore. */ 'store.redis.prefix' => 'SimpleSAMLphp', -); +]; diff --git a/dictionaries/admin.translation.json b/dictionaries/admin.translation.json index 28742f46bead11bf762aba2dcce6829192db3cbb..7f5f18abbdbc4d57dfdc8f92a55beafdc632eb34 100644 --- a/dictionaries/admin.translation.json +++ b/dictionaries/admin.translation.json @@ -885,8 +885,7 @@ "sr": "Shib 1.3 Davalac Identiteta (udaljeni)", "ro": "Furnizor de identitate Shib 1.3 (distant)", "ru": "\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Shib 1.3 (\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435)", - "eu": "Shib 1.3 Identitate hornitzailea (Urrunekoa)", - "eu": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03a4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 Shib 1.3 (\u0391\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2)" + "eu": "Shib 1.3 Identitate hornitzailea (Urrunekoa)" }, "metaover_group_metadata.wsfed-sp-hosted": { "no": "WS-Federation tjenesteleverand\u00f8r (intern)", diff --git a/dictionaries/attributes.translation.json b/dictionaries/attributes.translation.json index 4b859cf4f704553397cf06e7340b85817b8b6a5b..e0f652fa742e571245718ae422df41fc61b670e7 100644 --- a/dictionaries/attributes.translation.json +++ b/dictionaries/attributes.translation.json @@ -35,7 +35,9 @@ "eu": "Afiliazioa", "ca": "Afiliaci\u00f3", "af": "Affiliasie", - "el": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1\u002f\u03b5\u03c2" + "el": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1\u002f\u03b5\u03c2", + "xh": "Indima", + "zu": "Indima" }, "attribute_title": { "no": "Tittel", @@ -72,7 +74,9 @@ "ro": "Titlu\/titulatur\u0103", "ca": "Tractament", "af": "Titel", - "el": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2" + "el": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2", + "xh": "Isibizo", + "zu": "Isiqu" }, "attribute_uid": { "no": "Bruker-ID", @@ -110,7 +114,9 @@ "ro": "ID utilizator", "ca": "Identificador d'usuari", "af": "Gebruikers ID", - "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "xh": "I-ID yomsebenzisi", + "zu": "I-ID yomsebenzisi" }, "attribute_sn": { "no": "Etternavn", @@ -148,7 +154,9 @@ "ro": "Nume de familie", "ca": "Cognoms", "af": "Van", - "el": "\u0395\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf" + "el": "\u0395\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf", + "zu": "Isibongo", + "xh": "Ifani" }, "attribute_givenname": { "no": "Fornavn", @@ -186,7 +194,9 @@ "eu": "Izena", "ca": "Nom", "af": "Voornaam", - "el": "\u038c\u03bd\u03bf\u03bc\u03b1" + "el": "\u038c\u03bd\u03bf\u03bc\u03b1", + "xh": "Igama elinikiweyo", + "zu": "Igama lokuzalwa" }, "attribute_cn": { "no": "Fullt navn", @@ -224,7 +234,9 @@ "eu": "Izen arrunta (CN)", "ca": "Nom com\u00fa (CN)", "af": "Algemene naam", - "el": "\u039a\u03bf\u03b9\u03bd\u03cc \u03cc\u03bd\u03bf\u03bc\u03b1 (CN)" + "el": "\u039a\u03bf\u03b9\u03bd\u03cc \u03cc\u03bd\u03bf\u03bc\u03b1 (CN)", + "zu": "Igama elivamile", + "xh": "Igama eliqhelekileyo" }, "attribute_mail": { "no": "E-post", @@ -262,7 +274,9 @@ "ro": "Mail", "ca": "Correu electr\u00f2nic", "af": "E-pos", - "el": "Email" + "el": "Email", + "zu": "Imeyili", + "xh": "Iposi" }, "attribute_mobile": { "no": "Mobiltelefon", @@ -300,7 +314,9 @@ "ro": "Mobil", "ca": "Tel\u00e8fon m\u00f2bil", "af": "Selfoon", - "el": "\u039a\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf" + "el": "\u039a\u03b9\u03bd\u03b7\u03c4\u03cc \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + "zu": "Imobhayili", + "xh": "Imobhayili" }, "attribute_preferredlanguage": { "no": "Foretrukket spr\u00e5k", @@ -338,7 +354,9 @@ "eu": "Hizkuntza lehenetsia", "ca": "Idioma preferit", "af": "Taal voorkeur", - "el": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ce\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1" + "el": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ce\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1", + "xh": "Ulwimi olukhethayo", + "zu": "Ulimi oluncanyelwayo" }, "attribute_noredupersonnin": { "no": "F\u00f8dselsnummer", @@ -376,7 +394,9 @@ "eu": "Gizarte-segurantzako zenbakia", "ca": "N\u00famero de la Seguretat Social", "af": "Identiteitsnommer", - "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b1\u03c0\u03cc \u03b4\u03b7\u03bc\u03cc\u03c3\u03b9\u03b1 \u03b1\u03c1\u03c7\u03ae" + "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b1\u03c0\u03cc \u03b4\u03b7\u03bc\u03cc\u03c3\u03b9\u03b1 \u03b1\u03c1\u03c7\u03ae", + "xh": "Inombolo yesazisi eyabelwe ngamagunya oluntu", + "zu": "Inombolo kamazisi eyabelwe amagunya omphakathi" }, "attribute_schachomeorganization": { "no": "Unik ID for organisasjon", @@ -413,7 +433,9 @@ "eu": "Jatorrizko erakundearen domeinu izena", "ca": "Identificador \u00fanic de l'organitzaci\u00f3 d'origen", "af": "Tuis Organisasie domein naam", - "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2 (domain) \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2 (domain) \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "zu": "Igama lesizinda senhlangano yasekhaya", + "xh": "Igama ledomeyini yombutho wekhaya" }, "attribute_organisationname": { "no": "Navn p\u00e5 organisasjon", @@ -451,7 +473,9 @@ "ro": "Denumirea institu\u021biei", "ca": "Nom de l'organitzaci\u00f3", "af": "Organisasie naam", - "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "xh": "Igama lombutho", + "zu": "Igama lenhlangano" }, "attribute_edupersonentitlement": { "no": "Rettighet", @@ -489,7 +513,9 @@ "eu": "Zerbitzuari dagokion eskubidea", "ca": "Dret relatiu al servei", "af": "Reg mbt. die diens", - "el": "\u0394\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1" + "el": "\u0394\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1", + "zu": "Ilungelo eliphathelene nesevisi", + "xh": "Ilungelo ngokuphathelele inkonzo" }, "attribute_edupersonscopedaffiliation": { "no": "Gruppetilh\u00f8righet", @@ -527,7 +553,9 @@ "eu": "Afiliazioa jatorrizko erakundean", "ca": "Afiliaci\u00f3 a l'organitzaci\u00f3 d'origen", "af": "Affiliasie by Tuis organisasie", - "el": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b1\u03bd\u03ac \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ae \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae (administrative domain)" + "el": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b1\u03bd\u03ac \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ae \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae (administrative domain)", + "zu": "Indima enhlanganweni yasekhaya", + "xh": "Indima kumbutho wasekhaya" }, "attribute_edupersontargetedid": { "no": "Persistent anonym ID", @@ -564,7 +592,9 @@ "eu": "Goitizen ID etengabea", "ca": "Identificador pseud\u00f2nim persistent", "af": "Aanhoudende anonieme ID", - "el": "\u0391\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bc\u03b1\u03ba\u03c1\u03ac\u03c2 \u03b4\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1\u03c2" + "el": "\u0391\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bc\u03b1\u03ba\u03c1\u03ac\u03c2 \u03b4\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1\u03c2", + "zu": "Isibizo esingashintshi esiqondene nesevisi", + "xh": "Igama elingelolakhe elingatshintshiyo elingqale kwinkonzo" }, "attribute_pairwise_id": { "de": "Service-spezifische pseudonyme ID bei der Heimorganisation" @@ -605,18 +635,25 @@ "eu": "Jatorrizko erakundean pertsonak duen izen nagusia", "ca": "Identificador \u00fanic de la persona a la seva organitzaci\u00f3 d'origen", "af": "Persoonlike ID by tuis organisasie", - "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc" + "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc", + "xh": "Igama elingundoqo lomntu kwinkampani yekhaya", + "zu": "Igama eliyinhloko lomuntu enhlanganweni yasekhaya" }, "attribute_edupersonuniqueid": { "zh-tw": "\u500b\u4eba\u7121\u6cd5\u91cd\u65b0\u8a2d\u7f6e\uff0c\u65bc\u6240\u5c6c\u7d44\u7e54\u7684\u6c38\u4e45\u533f\u540d ID", - "el": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf, \u03b1\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc" + "el": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf, \u03b1\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc", + "zu": "I-ID yesibizo ephikelelayo, engakwazi ukwabelwa kabusha yomuntu yenhlangano yasekhaya", + "xh": "I-ID yomntu enganakuphinda yabelwe, ebhalwe ngegama lobuxoki eqhubekayo kwinkampani yekhaya" }, "attribute_subject_id": { "de": "Pseudonyme ID bei der Heimorganisation" }, "attribute_edupersonorcid": { "zh-tw": "ORCID \u7814\u7a76\u8005\u8b58\u5225\u78bc", - "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03b5\u03c1\u03b5\u03c5\u03bd\u03b7\u03c4\u03ae ORCID" + "el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03b5\u03c1\u03b5\u03c5\u03bd\u03b7\u03c4\u03ae ORCID", + "af": "ORCID identifiseerder", + "zu": "Isihlonzi se-ORCID", + "xh": "Isazisi se-ORCID" }, "attribute_o": { "no": "Navn p\u00e5 organisasjon", @@ -653,7 +690,9 @@ "ro": "Denumirea institu\u021biei", "ca": "Nom de l'organitzaci\u00f3", "af": "Organisasie naam", - "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "zu": "Igama lenhlangano", + "xh": "Igama lombutho" }, "attribute_dc": { "no": "Navneledd (DC)", @@ -690,7 +729,9 @@ "eu": "Domeinuaren osagaia (DC)", "ca": "Component de domini (DC)", "af": "Domein komponent (DC)", - "el": "\u03a3\u03c5\u03c3\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc \u03a4\u03bf\u03bc\u03ad\u03b1 (DC)" + "el": "\u03a3\u03c5\u03c3\u03c4\u03b1\u03c4\u03b9\u03ba\u03cc \u03a4\u03bf\u03bc\u03ad\u03b1 (DC)", + "zu": "Ingxenye yesizinda (I-DC)", + "xh": "Ikhomponenti yedomeyin (DC)" }, "attribute_displayname": { "no": "Navn som normalt vises", @@ -727,7 +768,9 @@ "eu": "Bistaratzeko izena", "ca": "Nom de visualitzaci\u00f3", "af": "Vertoon naam", - "el": "\u0395\u03bc\u03c6\u03b1\u03bd\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1" + "el": "\u0395\u03bc\u03c6\u03b1\u03bd\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1", + "zu": "Igama lesibonisi", + "xh": "Igama lomboniso" }, "attribute_facsimiletelephonenumber": { "no": "Faksnummer", @@ -764,7 +807,9 @@ "ro": "Num\u0103r de fax", "ca": "N\u00famero de fax", "af": "Faksnommer", - "el": "Fax" + "el": "Fax", + "zu": "Inombolo yefeksi", + "xh": "Inombolo yefeksi" }, "attribute_homephone": { "no": "Hjemmetelefon", @@ -801,7 +846,9 @@ "ro": "Telefon acas\u0103", "ca": "Tel\u00e8fon del domicili", "af": "Tuistelefoon", - "el": "\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03bf\u03b9\u03ba\u03af\u03b1\u03c2" + "el": "\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf \u03bf\u03b9\u03ba\u03af\u03b1\u03c2", + "xh": "Umnxeba wasekhaya", + "zu": "Ucingo lwasekhaya" }, "attribute_homepostaladdress": { "no": "Postadresse hjemme", @@ -838,7 +885,9 @@ "eu": "Etxeko helbidea", "ca": "Adre\u00e7a del domicili", "af": "Tuis posadres", - "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03bf\u03b9\u03ba\u03af\u03b1\u03c2" + "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03bf\u03b9\u03ba\u03af\u03b1\u03c2", + "zu": "Ikheli leposi lasekhaya", + "xh": "Idilesi yeposi yasekhaya" }, "attribute_jpegphoto": { "no": "JPEG-foto", @@ -875,7 +924,9 @@ "ro": "Fotografie JPEG", "ca": "Fotografia en JPEG", "af": "JPEG Foto", - "el": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03c3\u03b5 \u03bc\u03bf\u03c1\u03c6\u03ae JPEG" + "el": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03c3\u03b5 \u03bc\u03bf\u03c1\u03c6\u03ae JPEG", + "xh": "Ifoto ye-JPEG", + "zu": "Isithombe se-JPEG" }, "attribute_l": { "no": "Sted", @@ -912,7 +963,9 @@ "eu": "Herria", "ca": "Localitat", "af": "Ligging", - "el": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1" + "el": "\u03a4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1", + "zu": "Indawo", + "xh": "Indawo" }, "attribute_labeleduri": { "no": "URI med valgfri tilleggskommentar", @@ -949,7 +1002,9 @@ "eu": "URI etiketatua", "ca": "URI etiquetat", "af": "URI", - "el": "\u0395\u03c0\u03b9\u03c3\u03b7\u03bc\u03b1\u03c3\u03bc\u03ad\u03bd\u03b1 URI" + "el": "\u0395\u03c0\u03b9\u03c3\u03b7\u03bc\u03b1\u03c3\u03bc\u03ad\u03bd\u03b1 URI", + "xh": "I-URI eneleyibheli", + "zu": "I-URI Enelebula" }, "attribute_ou": { "no": "Organisasjonsenhet", @@ -986,7 +1041,9 @@ "eu": "Antolamendu-unitatea", "ca": "Unitat organitzativa", "af": "Organisasie eenheid", - "el": "\u039f\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1" + "el": "\u039f\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1", + "zu": "Iyunithi yenhlangano", + "xh": "Iyunithi yombutho" }, "attribute_postaladdress": { "no": "Postadresse", @@ -1023,7 +1080,9 @@ "ro": "Adresa po\u0219tal\u0103", "ca": "Adre\u00e7a postal", "af": "Posadres", - "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7" + "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7", + "xh": "Idilesi yeposi", + "zu": "Ikheli leposi" }, "attribute_postalcode": { "no": "Postnummer", @@ -1060,7 +1119,9 @@ "ro": "Cod po\u0219tal", "ca": "Codi postal", "af": "Poskode", - "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2" + "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", + "zu": "Ikhodi yeposi", + "xh": "Ikhowudi yeposi" }, "attribute_postofficebox": { "no": "Postboks", @@ -1097,7 +1158,9 @@ "ro": "Cutie po\u0219tal\u0103", "ca": "Apartat de correus", "af": "Posbus", - "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b8\u03c5\u03c1\u03af\u03b4\u03b1" + "el": "\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03ae \u03b8\u03c5\u03c1\u03af\u03b4\u03b1", + "zu": "Ibhokisi lehhovisi leposi", + "xh": "Ibhokisi yaseposini" }, "attribute_street": { "no": "Gate", @@ -1134,7 +1197,9 @@ "ro": "Strada", "ca": "Carrer", "af": "Straat", - "el": "\u039f\u03b4\u03cc\u03c2" + "el": "\u039f\u03b4\u03cc\u03c2", + "xh": "Istrato", + "zu": "Umgwaqo" }, "attribute_telephonenumber": { "no": "Telefon", @@ -1171,7 +1236,9 @@ "ro": "Num\u0103r de telefon", "ca": "N\u00famero de tel\u00e8fon", "af": "Telefoon nommer", - "el": "\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf" + "el": "\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf", + "zu": "Inombolo yocingo", + "xh": "Inombolo yomnxeba" }, "attribute_eduorghomepageuri": { "no": "Organisasjonens hjemmeside", @@ -1208,7 +1275,9 @@ "eu": "Erakundearen hasiera-orria", "ca": "P\u00e0gina inicial de l'organitzaci\u00f3", "af": "Organisasie tuisblad", - "el": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "xh": "Ikhasi lekhaya Lenkampani", + "zu": "Ikhasi lasekhaya lenhlangano" }, "attribute_eduorglegalname": { "no": "Foretaksnavn", @@ -1245,7 +1314,9 @@ "eu": "Erakundearen izen legala", "ca": "Nom legal de l'organitzaci\u00f3", "af": "Wettige naam", - "el": "\u0395\u03c0\u03af\u03c3\u03b7\u03bc\u03b7 \u03b5\u03c0\u03c9\u03bd\u03c5\u03bc\u03af\u03b1 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u0395\u03c0\u03af\u03c3\u03b7\u03bc\u03b7 \u03b5\u03c0\u03c9\u03bd\u03c5\u03bc\u03af\u03b1 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "zu": "Igama elisemthethweni lenhlangano", + "xh": "Igama elisemthethweni lenkampani" }, "attribute_edupersonnickname": { "no": "Kallenavn", @@ -1282,7 +1353,9 @@ "ro": "Porecl\u0103", "ca": "\u00c0lies", "af": "Bynaam", - "el": "\u03a8\u03b5\u03c5\u03b4\u03ce\u03bd\u03c5\u03bc\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + "el": "\u03a8\u03b5\u03c5\u03b4\u03ce\u03bd\u03c5\u03bc\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "xh": "Isiteketiso", + "zu": "Isidlaliso" }, "attribute_edupersonorgdn": { "no": "Entydig navn (DN) for brukerens vertsorganisasjon", @@ -1319,7 +1392,9 @@ "eu": "Pertsonaren jatorrizko erakundearen izen osatua (DN)", "ca": "Nom distingit (DN) de l'organitzaci\u00f3 d'origen", "af": "Kenmerkende naam (DN) van die person se tuisorganisasie", - "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "xh": "Igama elahlukileyo (DN) lenkampani yekhaya yomntu", + "zu": "Igama elihloniphekile (I-DN) lenhlangano yasekhaya yomuntu" }, "attribute_edupersonorgunitdn": { "no": "Entydig navn (DN) for brukerens organisasjonsenhet", @@ -1356,7 +1431,9 @@ "eu": "Pertsonaren jatorrizko erakundeko antolamendu-unitatearen izen osatua (DN)", "ca": "Nom distingit (DN) de la Unitat Organitzativa (OU) de l'organitzaci\u00f3 d'origen", "af": "Kenmerkende naam (DN) van die persoon se organisatoriese afdeling", - "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03bf\u03b9\u03ba\u03b5\u03af\u03b1\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1\u03c2" + "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03bf\u03b9\u03ba\u03b5\u03af\u03b1\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1\u03c2", + "xh": "Igama elahlukileyo (DN) leyunithi yenkampani yekhaya yomntu", + "zu": "Igama elihloniphekile (I-DN) leyunithi yenhlangano yasekhaya yomuntu" }, "attribute_edupersonprimaryaffiliation": { "no": "Prim\u00e6r tilknytning til organisasjon", @@ -1393,7 +1470,9 @@ "eu": "Lehen afiliazioa", "ca": "Afiliaci\u00f3 prim\u00e0ria", "af": "Prim\u00eare affiliasie", - "el": "\u039a\u03cd\u03c1\u03b9\u03b1 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1" + "el": "\u039a\u03cd\u03c1\u03b9\u03b1 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1", + "xh": "Indima eyintloko", + "zu": "Indima eyinhloko" }, "attribute_noreduorgnin": { "no": "Organisasjonsnummer", @@ -1430,7 +1509,9 @@ "eu": "Erakundearen zenbakia", "ca": "N\u00famero de l'organitzaci\u00f3", "af": "Organisasie nommer", - "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd" + "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "zu": "Inombolo yenhlangano", + "xh": "Inombolo yenkampani" }, "attribute_noredupersonbirthdate": { "no": "F\u00f8dselsdato", @@ -1467,7 +1548,9 @@ "ro": "Data na\u0219terii", "ca": "Data de naixement", "af": "Geboorte datum", - "el": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2" + "el": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2", + "zu": "Usuku lokuzalwa", + "xh": "Umhla wokuzalwa" }, "attribute_noredupersonlin": { "no": "Lokalt ID-nummer", @@ -1504,7 +1587,9 @@ "eu": "Tokiko zenbaki identifikatzailea", "ca": "N\u00famero d'identificaci\u00f3 local", "af": "Identiteitsnommer", - "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + "el": "\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "zu": "Inombolo kamazisi yasendaweni", + "xh": "Inombolo yesazisi yasekuhlaleni" }, "attribute_manager": { "no": "Overordnet", @@ -1541,7 +1626,9 @@ "eu": "Kudeatzailea", "ca": "Gestor", "af": "Bestuurder", - "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae" + "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae", + "xh": "Umanejala", + "zu": "Umphathi" }, "attribute_userpassword": { "no": "Hash av brukerens passord", @@ -1577,7 +1664,9 @@ "eu": "Erabiltzailearen pasahitzaren hash-a", "ca": "Clau o contrasenya i m\u00e8tode d'encriptaci\u00f3 usat", "af": "Gebruikerswagwoord", - "el": "\u039a\u03c1\u03c5\u03c0\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2" + "el": "\u039a\u03c1\u03c5\u03c0\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", + "xh": "Iheshi yephaswedi yomsebenzisi", + "zu": "Uheshi wephasiwedi yomsebenzisi" }, "attribute_edupersonprimaryorgunitdn": { "no": "Entydig navn for organisasjonsenheten som brukeren prim\u00e6rt er tilknyttet", @@ -1611,7 +1700,9 @@ "eu": "Pertsonaren antolamendu-unitatearen izen osatua (DN)", "ca": "Nom distingit (DN) de l'entrada del directori que representa l'identificador", "af": "Kenmerkende naam (DN) van die persoon se prim\u00eare organisatoriese afdeling", - "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03ba\u03cd\u03c1\u03b9\u03b1\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1\u03c2" + "el": "\u0394\u03b9\u03b1\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 (DN) \u03ba\u03cd\u03c1\u03b9\u03b1\u03c2 \u03bf\u03c1\u03b3\u03b1\u03bd\u03c9\u03c4\u03b9\u03ba\u03ae\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1\u03c2", + "xh": "Igama elahlukileyo (DN) leYunithi Yenkampani yokuqala yomntu", + "zu": "Igama elihloniphekile (I-DN) Leyunithi Yenhlangano eyinhloko yomuntu" }, "attribute_schacuserprivateattribute": { "no": "Private informasjonselement", @@ -1646,7 +1737,9 @@ "ca": "Elements d'informaci\u00f3 privada", "fi": "Yksil\u00f6iv\u00e4t tunnisteet", "af": "Private informasie elemente", - "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b7\u03c4\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1" + "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b7\u03c4\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1", + "zu": "Izingxenye zolwazi oluyimfihlo", + "xh": "Iimpawu zenkcazelo yangasese" }, "attribute_noredupersonlegalname": { "no": "Folkeregistrert navn", @@ -1679,7 +1772,9 @@ "ca": "Nom legal", "fi": "Virallinen nimi", "af": "Wettige naam", - "el": "\u0395\u03c0\u03af\u03c3\u03b7\u03bc\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1" + "el": "\u0395\u03c0\u03af\u03c3\u03b7\u03bc\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1", + "xh": "Igama elisemthethweni", + "zu": "Igama elisemthethweni" }, "attribute_edupersonassurance": { "no": "Tillitsniv\u00e5 for autentisering", @@ -1709,7 +1804,9 @@ "eu": "Bermearen profilaren identifikatzailea", "ca": "Identificador del perfil de garantia", "af": "Identiteitsversekerings profiel", - "el": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03be\u03b9\u03bf\u03c0\u03b9\u03c3\u03c4\u03af\u03b1\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2" + "el": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03b1\u03be\u03b9\u03bf\u03c0\u03b9\u03c3\u03c4\u03af\u03b1\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2", + "zu": "Iphrofayela yokuqinisekisa umazisi", + "xh": "Iprofayile yokuqinisekisa isazisi" }, "attribute_ismemberof": { "es": "Membres\u00eda a grupos", @@ -1719,6 +1816,8 @@ "nl": "Groepslidmaatschap", "da": "Gruppemedlemsskab", "af": "Groeplidmaatskap", - "el": "\u03a3\u03c5\u03bc\u03bc\u03b5\u03c4\u03bf\u03c7\u03ae \u03c3\u03b5 \u03bf\u03bc\u03ac\u03b4\u03b5\u03c2" + "el": "\u03a3\u03c5\u03bc\u03bc\u03b5\u03c4\u03bf\u03c7\u03ae \u03c3\u03b5 \u03bf\u03bc\u03ac\u03b4\u03b5\u03c2", + "xh": "Ubulungu beqela", + "zu": "Ubulungu beqembu" } } diff --git a/dictionaries/disco.translation.json b/dictionaries/disco.translation.json index 6bdc2997250d8e38c39c433ae1796a8df68fe636..9f17c1a3e4cf6c243060174c0dfd6e60640f49b6 100644 --- a/dictionaries/disco.translation.json +++ b/dictionaries/disco.translation.json @@ -32,7 +32,9 @@ "sr": "Odaberite va\u0161eg davaoca identiteta", "ro": "Alege\u021bi furnizorul de identitate", "af": "Kies jou identiteits verskaffer", - "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1" + "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1", + "xh": "Khetha umboneleli wesazisi wakho", + "zu": "Khetha umhlinzeki wakho kamazisi" }, "selectidp_full": { "no": "Vennligst velg hvilken identitetsleverand\u00f8r du vil bruke for \u00e5 logge inn:", @@ -67,7 +69,9 @@ "sr": "Molimo vas odaberite davaoca identiteta kod koga se \u017eelite autentifikovati:", "ro": "V\u0103 rug\u0103m s\u0103 alege\u021bi furnizorul de identitate pe care dori\u021bi s\u0103-l folosi\u021bi pentru autentificarea dumneavoastr\u0103:", "af": "Kies asb. jou identiteits verskaffer waar jy wil verifieer:", - "el": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03c6\u03bf\u03c1\u03ad\u03b1 \u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03ac \u03c3\u03b1\u03c2" + "el": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03c6\u03bf\u03c1\u03ad\u03b1 \u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03ac \u03c3\u03b1\u03c2", + "zu": "Sicela ukhethe umhlinzeki kamazisi lapho ofuna ukuqinisekisa khona:", + "xh": "Nceda ukhethe umboneleli wesazisi apho ufuna ukungqinisisa:" }, "select": { "no": "Velg", @@ -102,7 +106,9 @@ "sr": "Odaberi", "ro": "Selecta\u021bi", "af": "Kies", - "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae" + "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae", + "zu": "Khetha", + "xh": "Khetha" }, "remember": { "no": "Husk mitt valg", @@ -137,7 +143,9 @@ "sr": "Zapamti moj izbor", "ro": "Memoreaz\u0103 alegerea f\u0103cut\u0103", "af": "Onthou my keuse", - "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03cd" + "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03cd", + "zu": "Khumbula ukukhetha kwami", + "xh": "Khumbula ukhetho lwam" }, "icon_prefered_idp": { "no": "[Foretrukket valg]", @@ -172,7 +180,9 @@ "cs": "[Preferovan\u00e1 volba]", "eu": "[Aukera gogokoena]", "af": "[Verkies]", - "el": "[\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae]" + "el": "[\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae]", + "xh": "[Ukhetho olukhethwayo]", + "zu": "[Ukukhetha okuncanyelwayo]" }, "previous_auth": { "no": "Du har tidligere valg \u00e5 autentisere deg hos", @@ -206,7 +216,9 @@ "cs": "D\u0159\u00edve jste zvolil(a) ov\u011b\u0159en\u00ed u", "eu": "Lehenago, hemen kautotzea hautatu duzu", "af": "Jy het voorheen gekies om te verifieer deur:", - "el": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1:" + "el": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1:", + "zu": "Ngaphambilini ukhethe ukuqinisekisa kokuthi", + "xh": "Kwixesha elidlulileyo ukhethe ukungqinisisa ngo-" }, "login_at": { "no": "Logg inn hos", @@ -240,6 +252,8 @@ "cs": "P\u0159ihl\u00e1\u0161en\u00ed k", "eu": "Non identifikatu", "af": "Meld aan by", - "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u0040" + "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u0040", + "zu": "Ngena kokuthi", + "xh": "Ungeno ngo-" } } diff --git a/dictionaries/errors.translation.json b/dictionaries/errors.translation.json index a206080f5aa8fe444f35c308e9e98733cddcc85a..dafc78c7645a9c476782647cede72bd9c88a43a3 100644 --- a/dictionaries/errors.translation.json +++ b/dictionaries/errors.translation.json @@ -33,7 +33,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 SimpleSAMLphp", "ro": "Eroare SimpleSAMLphp", "af": "SimpleSAMLphp-fout", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c4\u03bf\u03c5 SimpleSAMLphp" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c4\u03bf\u03c5 SimpleSAMLphp", + "zu": "Iphutha le-SimpleSAMLphp", + "xh": "Impazamo ye-SimpleSAMLphp" }, "report_trackid": { "no": "Hvis vil rapportere denne feilen, send ogs\u00e5 med dette sporingsnummeret. Det gj\u00f8r det enklere for systemadministratorene \u00e5 finne ut hva som gikk galt:", @@ -69,7 +71,9 @@ "ro": "Dac\u0103 raporta\u021bi aceast\u0103 eroare, v\u0103 rug\u0103m s\u0103 include\u021bi urm\u0103torul num\u0103r de \u00eenregistrare care va permite localizarea sesiunii dumneavoastr\u0103 \u00een jurnalele de sistem:", "eu": "Mesedez, errore honen berri ematen baduzu, mantendu ezazu jarraipen zenbaki hau, honek sistemaren administratzaileak dituen erregistroetan zure saioa aurkitzea ahalbidetzen baitu:", "af": "Waneer jy die fout rapporteer, verskaf asb. ook die 'tracking'\/verwysings nommer wat dit moontlik maak vir die sisteem administrateur om jou sessie in die logs op te spoor:", - "el": "\u0391\u03bd \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u002c \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03b1\u03c2 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c0\u03c1\u03bf\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03bd\u03b1 \u03b4\u03b9\u03b5\u03c5\u03ba\u03bf\u03bb\u03cd\u03bd\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2:" + "el": "\u0391\u03bd \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u002c \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03b1\u03c2 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc \u03c0\u03c1\u03bf\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03bd\u03b1 \u03b4\u03b9\u03b5\u03c5\u03ba\u03bf\u03bb\u03cd\u03bd\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2:", + "zu": "Uma ubika leli phutha, sicela futhi ubike le nombolo yokulandelela eyenza kube nokwenzeka ukuthola iseshini yakho kumalogi atholakalayo kumlawuli wesistimu:", + "xh": "Ukuba ngaba uchaza le mpazamo, nceda kananjalo uchaze le nombolo yolandelelo eyenza kube lula ukufumana iseshoni yakho kwiincwadi ezifumaneka kumlawuli wesistim:" }, "debuginfo_header": { "no": "Detaljer for feils\u00f8king", @@ -105,7 +109,9 @@ "ru": "\u041e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", "ro": "Informa\u021bii de depanare", "af": "Ontleed informasie", - "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd" + "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd", + "xh": "Inkcazelo yokulungisa", + "zu": "Ulwazi lokususwa kwephutha" }, "debuginfo_text": { "no": "Detaljene nedenfor kan v\u00e6re av interesse for administratoren \/ brukerst\u00f8tte:", @@ -141,7 +147,9 @@ "ru": "\u041d\u0438\u0436\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b:", "ro": "Informa\u021biile de depanare de mai jos pot fi importante pentru administratorul de sistem:", "af": "Die onderstaande informasie mag van hulp wees vir die stelsel administrateur \/ hulplyn.", - "el": "\u039f\u03b9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b4\u03b9\u03b5\u03c5\u03ba\u03bf\u03bb\u03cd\u03bd\u03bf\u03c5\u03bd \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7\u03c2 \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd." + "el": "\u039f\u03b9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b4\u03b9\u03b5\u03c5\u03ba\u03bf\u03bb\u03cd\u03bd\u03bf\u03c5\u03bd \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7\u03c2 \u03c3\u03c6\u03b1\u03bb\u03bc\u03ac\u03c4\u03c9\u03bd.", + "xh": "Inkcazelo yokulungisa engezantsi isenokuba ibangela umdla kumlawuli / idesika yoncedo:", + "zu": "Ulwazi lokususwa kwephutha olungezansi lungase lukhange kumlawuli / ideski losizo:" }, "report_header": { "no": "Rapporter feil", @@ -177,7 +185,9 @@ "ru": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445", "ro": "Raporta\u021bi erorile", "af": "Rapporteer foute", - "el": "\u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2" + "el": "\u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2", + "zu": "Amaphutha ombiko", + "xh": "Chaza iimpazamo" }, "report_text": { "no": "Hvis du \u00f8nsker at brukerst\u00f8tte skal kunne kontakte deg igjen i forbindelse med denne feilen, m\u00e5 du oppgi e-postadressen din nedenfor:", @@ -213,7 +223,9 @@ "ro": "Op\u021bional, trece\u021bi adresa dumneavoastr\u0103 de e-mail. Administratorii de sistem vor putea s\u0103 v\u0103 contacteze pentru eventuale informa\u021bii suplimentare despre problema dumneavoastra:", "ru": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0433 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e):", "af": "Voeg opsioneel jou epos adres in vir die administrateurs om jou te kontak vir meer inligting m.b.t jou probleem:", - "el": "\u03a0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac\u002c \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03af\u03bc\u03b1\u03c3\u03c4\u03b5 \u03c3\u03b5 \u03b8\u03ad\u03c3\u03b7 \u03bd\u03b1 \u03ad\u03c1\u03b8\u03bf\u03c5\u03bc\u03b5 \u03c3\u03b5 \u03b5\u03c0\u03b1\u03c6\u03ae \u03bc\u03b1\u03b6\u03af \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b1\u03b9\u03c4\u03ad\u03c1\u03c9 \u03b5\u03c1\u03c9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf \u03b8\u03ad\u03bc\u03b1 \u03c3\u03b1\u03c2:" + "el": "\u03a0\u03c1\u03bf\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03ba\u03ac\u002c \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03c4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b5\u03af\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03af\u03bc\u03b1\u03c3\u03c4\u03b5 \u03c3\u03b5 \u03b8\u03ad\u03c3\u03b7 \u03bd\u03b1 \u03ad\u03c1\u03b8\u03bf\u03c5\u03bc\u03b5 \u03c3\u03b5 \u03b5\u03c0\u03b1\u03c6\u03ae \u03bc\u03b1\u03b6\u03af \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b1\u03b9\u03c4\u03ad\u03c1\u03c9 \u03b5\u03c1\u03c9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf \u03b8\u03ad\u03bc\u03b1 \u03c3\u03b1\u03c2:", + "xh": "Unokhetho lokuthumela idilesi yeimeyile yakho, ukuze abalawuli bakwazi ukukuqhagamshela ukuba banemibuzo engakumbi malunga nomba wakho:", + "zu": "Faka ngokuzithandela ikheli lakho le-imeyili, ukuze abalawuli bakwazi ukukuthinta ngemibuzo eyengeziwe mayelana nenkinga yakho:" }, "report_email": { "no": "E-postadresse:", @@ -250,7 +262,9 @@ "ro": "Adresa e-mail:", "ru": "\u0410\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b:", "af": "Epos adres:", - "el": "Email:" + "el": "Email:", + "xh": "Idilesi ye-imeyile:", + "zu": "Ikheli le-imeyili:" }, "report_explain": { "no": "Forklar hva du gjorde da feilen oppsto...", @@ -286,7 +300,9 @@ "ro": "Descrie\u021bi ce opera\u021biuini executa\u021bi c\u00e2nd a ap\u0103rut aceast\u0103 eroare ...", "ru": "\u0423\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u0432\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438... ", "af": "Verduidelik wat jy gedoen het toe jy die probleem ervaar...", - "el": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03ac\u03c8\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03ad\u03c2 \u03c3\u03b1\u03c2 \u03cc\u03c4\u03b1\u03bd \u03c3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1..." + "el": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03ac\u03c8\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03ad\u03c2 \u03c3\u03b1\u03c2 \u03cc\u03c4\u03b1\u03bd \u03c3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1...", + "xh": "Cacisa ukuba wenze ntoni xa bekusenzeka le mpazamo...", + "zu": "Chaza ukuthi yini oyenzile ngenkathi kuvela leli phutha..." }, "report_submit": { "no": "Send feilrapport", @@ -322,7 +338,9 @@ "ro": "Trimite\u021bi raportul cu erorile observate", "ru": "\u0412\u044b\u0441\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 ", "af": "Stuur die fout verslag", - "el": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2" + "el": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2", + "zu": "Thumela umbiko wephutha", + "xh": "Thumela ingxelo yempazamo" }, "howto_header": { "no": "Hvordan f\u00e5 hjelp", @@ -358,7 +376,9 @@ "ro": "Cum ob\u021bine\u021bi ajutor\/asisten\u021b\u0103", "ru": "\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u044c", "af": "Hoe om hulp te verkry", - "el": "\u03a0\u03ce\u03c2 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1" + "el": "\u03a0\u03ce\u03c2 \u03bd\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1", + "zu": "Indlela yokuthola usizo", + "xh": "Indlela yokufumana uncedo" }, "howto_text": { "no": "Denne feilen skyldes sannsynligvis feil i oppsettet av SimpleSAMLphp eller den er en f\u00f8lge av en uforutsett hendelse. Kontakt administratoren av denne tjenesten og rapporter s\u00e5 mye som mulig ang\u00e5ende feilen.", @@ -394,7 +414,9 @@ "ru": "\u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0438\u0437-\u0437\u0430 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 SimpleSAMLphp. \u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0435\u043c\u0443 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.", "eu": "Errore hau jazo izana SimpleSAMLphp-en ezusteko jokaera edo konfigurazio okerra izan da. Jar zaitez harremanetan identifikazio zerbitzu honen administratzailearekin eta bidal iezaiozu lehenagoko errore mezua. ", "af": "Die fout is moontlik te danke aan onverwagte gedrag of weens inkorrekte instellings in SimpleSAMLphp. Kontak die administrateur in beheer van die aanmeld diens en stuur die bostaande fout boodskap aan.", - "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c0\u03b9\u03b8\u03b1\u03bd\u03cc\u03c4\u03b1\u03c4\u03b1 \u03bf\u03c6\u03b5\u03af\u03bb\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03b1\u03c0\u03c1\u03bf\u03c3\u03b4\u03cc\u03ba\u03b7\u03c4\u03b7 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03c6\u03bf\u03c1\u03ac \u03ae \u03b5\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2." + "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c0\u03b9\u03b8\u03b1\u03bd\u03cc\u03c4\u03b1\u03c4\u03b1 \u03bf\u03c6\u03b5\u03af\u03bb\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03b1\u03c0\u03c1\u03bf\u03c3\u03b4\u03cc\u03ba\u03b7\u03c4\u03b7 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03c6\u03bf\u03c1\u03ac \u03ae \u03b5\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2.", + "zu": "Leli phutha kungenzeka ukuthi libangelwa indlela yokuziphatha engalindelwe noma umiso olungafanele lwe-SimpleSAMLphp. Thinta umlawuli wale sevisi yokungena, bese umthumela umlayezo wephutha ongenhla.", + "xh": "Le mpazamo kusenokwenzeka ingenxa yendlela yokwenza engalindelekanga okanye ulungiselelo olungachanekanga lwe-SimpleSAMLphp. Qhagamshelana nomlawuli wale nkonzo yokungena, uze umthumele umyalezo wempazamo ongentla." }, "title_CREATEREQUEST": { "no": "Feil i laging av foresp\u00f8rselen", @@ -430,7 +452,9 @@ "ro": "Eroare la crearea cererii", "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430", "af": "Fout met skepping van nuwe versoek", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "xh": "Impazamo nokuyila isicelo", + "zu": "Iphutha lokwakha isicelo" }, "descr_CREATEREQUEST": { "no": "En feil oppstod da SAML-foresp\u00f8rselen skulle lages.", @@ -466,7 +490,9 @@ "ro": "A ap\u0103rut o eroare la crearea cererii SAML.", "ru": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c SAML \u0437\u0430\u043f\u0440\u043e\u0441.", "af": "Daar was 'n fout met die skepping van die SAML versoek.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 SAML." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 SAML.", + "xh": "Kwenzeke impazamo xa kuzanywa ukuyilwa isicelo se-SAML.", + "zu": "Kuvele iphutha ngenkathi izama ukwakha isicelo se-SAML." }, "title_DISCOPARAMS": { "no": "Ugyldig foresp\u00f8rsel til SAML 2.0 Discovery-tjenesten", @@ -502,7 +528,9 @@ "ru": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u043b\u0443\u0436\u0431\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f", "eu": "Eskaera okerra aurkikuntza zerbitzuari", "af": "Toegangsfout by die ontdekkings diens", - "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03bd\u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03bd\u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "zu": "Isicelo esingalungile sesevisi yokuthola", + "xh": "Isicelo esibi kwinkonzo yofumaniso" }, "descr_DISCOPARAMS": { "no": "Parametere sendt til discovery-tjenesten var ikke i korrekt format.", @@ -538,7 +566,9 @@ "ru": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", "eu": "Aurkikuntza zerbitzuari bidalitako prametroak ez dira zehaztapenera doitzen.", "af": "Die gestuurde parameters na die ontdekkings diens was not volgens die korrekte spesifikasies nie.", - "el": "\u039f\u03b9 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03b9 \u03c0\u03bf\u03c5 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03bd\u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b5\u03c2." + "el": "\u039f\u03b9 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03b9 \u03c0\u03bf\u03c5 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03bd\u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03b5\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b5\u03c2.", + "xh": "Iipharamitha ezithunyelwe kwinkonzo yofumaniso azihambelani neenkcukacha.", + "zu": "Amapharamitha athunyelwe kusevisi yokuthola abengavumelani nezici." }, "title_GENERATEAUTHNRESPONSE": { "no": "Fikk ikke svart p\u00e5 autentiserings-foresp\u00f8rsel", @@ -574,7 +604,9 @@ "ru": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043f\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", "eu": "Ezin izan da kautotze erantzuna sortu", "af": "Kon nie 'n verifikasie versoek skep nie", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2" + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2", + "zu": "Ayikwazanga ukwakha impendulo yokuqinisekisa", + "xh": "Ayikwazanga ukuyila impendulo yongqinisiso" }, "descr_GENERATEAUTHNRESPONSE": { "no": "En feil oppsto da innloggingstjenesten pr\u00f8vde \u00e5 lage et svar p\u00e5 autentiserings-foresp\u00f8rselen.", @@ -610,7 +642,9 @@ "ru": "\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043f\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.", "eu": "Identitatearen hornitzaileak errore bat antzeman du kautotze erantzuna sortzean.", "af": "Daar was 'n fout tydens die verifikasie skepping deur die Identiteits Verskaffer.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.", + "zu": "Ngenkathi lo mhlinzeki kamazisi ezama ukwakha impendulo yokuqinisekisa, kuvele iphutha.", + "xh": "Xa lo mboneleli wesazisi ezama ukuyila impendulo yongqinisiso, kwenzeke impazamo." }, "title_LDAPERROR": { "no": "LDAP-feil", @@ -646,7 +680,9 @@ "ro": "Eroare LDAP", "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 LDAP", "af": "LDAP Fout", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 LDAP" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 LDAP", + "xh": "Impazamo ye-LDAP", + "zu": "Iphutha le-LDAP" }, "descr_LDAPERROR": { "no": "LDAP er brukerkatalogen, og n\u00e5r du fors\u00f8ker \u00e5 logge inn pr\u00f8ver vi \u00e5 kontakten en LDAP-katalog. Da vi fors\u00f8kte det denne gangen, oppsto en feil.", @@ -682,7 +718,9 @@ "ru": "LDAP - \u044d\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 LDAP. \u041f\u0440\u0438 \u044d\u0442\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 LDAP \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. ", "eu": "LDAP erabiltzaileen datu basea da, eta sartzea erabakitzen duzunean beharrezkoa da harekin harremanetan jartzea. Sartze ekintza horretan errore bat jazo da.", "af": "LDAP is die gebruikers databasis en waneer jy probeer inteken moet ons die LDAP databasis kontak. Daar was 'n fout toe ons die slag probeer het.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd (LDAP)." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd (LDAP).", + "xh": "I-LDAP ngumvimba wengcombolo yomsebenzisi, yaye xa uzame ukungena, kufuneka siqhagamshele uvimba wengcombolo we-LDAP. Kwenzeke impazamo xa besiyizama.", + "zu": "I-LDAP iyidathabheyisi yomsebenzisi, futhi lapho uzama ukungena, sidinga ukuthinta idathabheyisi ye-LDAP. Kuvele iphutha ngesikhathi siyizama ngalesi sikhathi." }, "title_LOGOUTREQUEST": { "no": "Feil i behandling av logout-foresp\u00f8rselen", @@ -718,7 +756,9 @@ "ro": "Eroare la procesarea cererii de deautentificare", "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b ", "af": "Fout met die verwerking van die Afmeldings Versoek", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "xh": "Impazamo iprosesa iSicelo Sokuphuma", + "zu": "Iphutha lokucubungula Isicelo Sokuphuma" }, "descr_LOGOUTREQUEST": { "no": "En feil oppsto i behandlingen av logout-foresp\u00f8rselen.", @@ -754,7 +794,9 @@ "ro": "A ap\u0103rut o eroare la procesarea cererii de deautentificare.", "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "af": "Daar was 'n probleem tydens die verwerking van die Afmelding Versoek", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03ae\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03ae\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2.", + "zu": "Kuvele iphutha ngenkathi izama ukucubungula Isicelo Sokuphuma.", + "xh": "Kwenzeke impazamo ngoxa kuproseswa isiCelo Sokuphuma." }, "title_METADATA": { "no": "Feil ved lasting av metadata", @@ -790,7 +832,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "eu": "Errorea metadatuak kargatzean", "af": "Fout met die laai van die metadata", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "zu": "Iphutha lokulayisha imethadatha", + "xh": "Impazamo ilayisha imetadata" }, "descr_METADATA": { "no": "Det er en feil i oppsettet for din SimpleSAMLphp-installasjon. Hvis du er administrator for tjenesten, b\u00f8r du kontrollere at metadata er satt opp riktig.", @@ -826,7 +870,9 @@ "ru": "\u0412\u0430\u0448 SimpleSAMLphp \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.", "eu": "Konfigurazio erroreak daude zure SimpleSAMLphp-ren instalazioan. Zerbitzuaren administratzailea bazara, ziurta ezazu metadatuen konfigurazioa zuzena dela.", "af": "Daar is fout met jou SimplSAMLphp installasie. Indien jy die administrateur is van di\u00e9 diens moet jy verseker dat jou metadata konfigurasie korrek is.", - "el": "\u03a5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03c3\u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03b1\u03c5\u03c4\u03ae\u03c2, \u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c9\u03c3\u03c4\u03ac." + "el": "\u03a5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03c3\u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03b1\u03c5\u03c4\u03ae\u03c2, \u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c9\u03c3\u03c4\u03ac.", + "xh": "Kukho ulungiselelo olungachanekanga oluthile lofakelo lwakho lwe-SimpleSAMLphp. Ukuba ngaba ungumlawuli wale nkonzo, ufanele uqinisekise ulungiselelo lwakho lweempawu-ngcaciso zefayile lusetwe ngokuchanekileyo.", + "zu": "Kukhona umiso olungafanele kukufaka kwakho kwe-SimpleSAMLphp. Uma ungumlawuli wale sevisi, kufanele wenze isiqiniseko sokuthi umiso lwakho lwemethadatha lumiswe ngendlela efanele." }, "title_NOACCESS": { "no": "Ingen tilgang", @@ -862,7 +908,9 @@ "ru": "\u041e\u0442\u043a\u0430\u0437 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435", "eu": "Sarrera zehaztu gabe", "af": "Geen toegang", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7", + "zu": "Akukho ukufinyelela", + "xh": "Akukho fikelelo" }, "descr_NOACCESS": { "no": "Dette endepunktet er ikke aktivert. Sjekk aktiveringsopsjonene i ditt SimpleSAMLphp-oppsett.", @@ -898,7 +946,9 @@ "ru": "\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043e\u043f\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e SimpleSAMLphp.", "eu": "Sarbide puntu hau ez dago gaituta. Egiazta itzazu SimpleSAMLphp-aren konfigurazioan gaitze aukerak.", "af": "Die eindpunt is nie beskikbaar nie. Gaan die staat opsies in jou opset van SimpleSAMLphp na.", - "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (endpoint) \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf. \u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2, \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp." + "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 (endpoint) \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf. \u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2, \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp.", + "xh": "Le ndawo yokuphela ayenziwanga yasebenza. Jonga ukhetho lokwenza isebenze kulungiselelo lwakho lwe-SimpleSAMLphp.", + "zu": "Lesi siphetho asivunyelwe. Hlola izinketho zokuvumela kumiso lwakho lwe-SimpleSAMLphp." }, "title_NORELAYSTATE": { "no": "Spesifikasjon av RelayState mangler", @@ -934,7 +984,9 @@ "ru": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 RelayState", "eu": "RelayState zehaztu gabe", "af": "Geen aflos staat('RelayState')", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5 'RelayState'" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5 'RelayState'", + "zu": "Ayikho I-RelayState", + "xh": "Akukho RelayState" }, "descr_NORELAYSTATE": { "no": "Kilden til denne foresp\u00f8rselen har ikke angitt noen RelayState-parameter som angir hvor vi skal fortsette etterp\u00e5.", @@ -970,7 +1022,9 @@ "ru": "\u0418\u043d\u0438\u0446\u0438\u0430\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 RelayState \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.", "eu": "Eskaera honen abiarazleak ez du ematen ondoren nora joan adierazten duen RelayState parametroa", "af": "Die inisieerder van hierdie versoek het nie 'n aflos staat('RelayState') parameter wat aandui waarheen om volgende te gaan nie.", - "el": "\u0397 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03c2 'RelayState' \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ae \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03bc\u03b5 \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03bd \u03c0\u03cc\u03c1\u03bf \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd0." + "el": "\u0397 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03c2 'RelayState' \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ae \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03bc\u03b5 \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03bd \u03c0\u03cc\u03c1\u03bf \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd0.", + "xh": "Umqalisi wesi sicelo akanikelanga ngepharamitha ye-RelayState apho kufanele kuyiwe khona.", + "zu": "Umqalisi walesi sicelo akazange ahlinzeke ngepharamitha ye-RelayState ebonisa ukuthi kufanele uye kuphi ngokulandelayo." }, "title_PROCESSASSERTION": { "no": "Feil i behandling av svar fra innloggingstjenesten", @@ -1006,7 +1060,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438", "eu": "Errorea IdP-tik datorren erantzuna prozesatzean", "af": "Fout in die Identiteits Verskaffer(IdP) versoek", - "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03b7 \u03b1\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "xh": "Impazamo iprosesa impendulo esuka kuMboneleli Wesazisi", + "zu": "Iphutha lokucubungula impendulo esuka Kumhlinzeki Kamazisi" }, "descr_PROCESSASSERTION": { "no": "Svaret mottatt fra innloggingstjenesten kan ikke aksepteres.", @@ -1042,7 +1098,9 @@ "ru": "\u041e\u0442\u043a\u043b\u0438\u043a \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d.", "eu": "Ezin izan da identitatearen hornitzaileak bidalitako erantzuna onartu.", "af": "Die antwoord vanaf die Indentiteits Verskaffer is nie aanvaar nie.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03b7\u03c2 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03b7\u03c2 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.", + "zu": "Asizange samukele impendulo ethunyelwe ukusuka Kumhlinzeki Kamazisi.", + "xh": "Asiyamkelanga impendulo ethunyelwe ukusuka kuMboneleli Wesazisi." }, "title_PROCESSAUTHNREQUEST": { "no": "Feil ved behandling av foresp\u00f8rsel fra SP", @@ -1078,7 +1136,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430", "eu": "Errorea zerbitzu hornitzailearen eskaera prozesatean ", "af": "Fout in Diens Verskaffer versoek proses", - "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd" + "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd", + "xh": "Impazamo iprosesa isicelo esisuka kuMboneleli Wenkonzo", + "zu": "Iphutha lokucubungula isicelo esisuka Kumhlinzeki Wesevisi" }, "descr_PROCESSAUTHNREQUEST": { "no": "Innloggingstjenesten mottok en autentiserings-foresp\u00f8rsel fra en tjeneste, men en feil oppsto i behandling av foresp\u00f8rselen.", @@ -1114,7 +1174,9 @@ "ru": "\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "eu": "IdP honek zerbitzu hornitzaile baten kautotze eskaera jaso du baina errore bat jazo da hau prozesatzen saiatzean.", "af": "Die Identiteits Verskaffer het 'n Verifikasie Versoek ontvang vanaf 'n Diens Verskaffer maar 'n fout het voorgekom tydens die verwerking van die versoek.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03bb\u03b1\u03b2\u03b5 \u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03ad\u03bb\u03b1\u03b2\u03b5 \u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd.", + "zu": "Lo Mhlinzeki Kamazisi uthole Isicelo Sokuqinisekisa ukusuka Kumhlinzeki Wesevisi, kodw,a kuvele iphutha ngenkathi ezama ukucubungula isicelo.", + "xh": "Lo Mboneleli Wesazisi ufumene Isicelo Songqinisiso esisuka kuMboneleli Wenkonzo, kodwa kwenzeke impazamo xa kuzanywa ukuprosesa isicelo." }, "title_SLOSERVICEPARAMS": { "no": "Ingen SAML-melding angitt", @@ -1150,7 +1212,9 @@ "ru": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 SAML ", "eu": "SAML mezua falta da", "af": "Geen SAML boodskap gevind nie", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae SingleLogoutService" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae SingleLogoutService", + "zu": "Awukho umlayezo we-SAML onikeziwe", + "xh": "Akukho myalezo we-SAML unikelweyo" }, "descr_SLOSERVICEPARAMS": { "no": "Du brukte SingleLogoutService-grensesnittet uten \u00e5 angi enten en SAML LogoutRequest eller en LogoutResponse.", @@ -1186,7 +1250,9 @@ "ru": "\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 SingleLogoutService, \u043d\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 SAML LogoutRequest \u0438\u043b\u0438 LogoutResponse \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f.", "eu": "SingleLogoutService interfazera sartu zara baina ez duzu erantsi SAML LogoutRequest edo LogoutResponse mezurik", "af": "Jy het toegang verkry na die SingleLogoutService koppelvlak('interface'), maar het geen SAML LogoutRequest of LogoutResponse gestuur nie.", - "el": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae SingleLogoutService \u03c0\u03b1\u03c1\u03b1\u03bb\u03b5\u03af\u03c8\u03b1\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 LogoutRequest \u03ae LogoutResponse \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML. \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf (endpoint) \u03b4\u03b5\u03bd \u03c0\u03c1\u03bf\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03bf." + "el": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae SingleLogoutService \u03c0\u03b1\u03c1\u03b1\u03bb\u03b5\u03af\u03c8\u03b1\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 LogoutRequest \u03ae LogoutResponse \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML. \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf (endpoint) \u03b4\u03b5\u03bd \u03c0\u03c1\u03bf\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03bf.", + "zu": "Ufinyelele ukusebenzisana kwe-SingleLogoutService, kodwa awuzange uhlinzeke nge-SAML LogoutRequest noma i-LogoutResponse. Sicela uphawule ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile.", + "xh": "Ufikelele i-intafeyisi ye-SingleLogoutService, kodwa awukhange unikele i-SAML LogoutRequest okanye i-LogoutResponse. Nceda uqaphele ukuba le ndawo yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." }, "title_ACSPARAMS": { "no": "Ingen SAML-respons angitt", @@ -1222,7 +1288,9 @@ "ru": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 SAML \u043e\u0442\u043a\u043b\u0438\u043a", "eu": "SAML erantzuna falta da", "af": "Geen SAML versoek gevind nie", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae AssertionConsumerService" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae AssertionConsumerService", + "zu": "Ayikho impendulo ye-SAML enikeziwe", + "xh": "Akukho mpendulo ye-SAML inikelweyo" }, "descr_ACSPARAMS": { "no": "Du brukte AssertionConsumerService-grensesnittet uten \u00e5 angi en SAML AuthenticationResponse.", @@ -1258,19 +1326,30 @@ "ru": "\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 Assertion Consumer Service, \u043d\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u0438\u043a SAML \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.", "eu": "Baieztapen kontsumitzailearen interfazera sartu zara baina ez duzu SAML kautotze erantzun bat erantsi.", "af": "Jy het aansoek gedoen vir toegang na die Assertion Consumer Service koppelvlak, maar geen SAML Verifikasie Versoek is saam gestuur nie.", - "el": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae AssertionConsumerService \u03c0\u03b1\u03c1\u03b1\u03bb\u03b5\u03af\u03c8\u03b1\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML. \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf (endpoint) \u03b4\u03b5\u03bd \u03c0\u03c1\u03bf\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03bf." + "el": "\u039a\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03c0\u03b1\u03c6\u03ae AssertionConsumerService \u03c0\u03b1\u03c1\u03b1\u03bb\u03b5\u03af\u03c8\u03b1\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03af\u03c4\u03b7\u03bc\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03c9\u03c4\u03bf\u03ba\u03cc\u03bb\u03bb\u03bf\u03c5 SAML. \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c4\u03b5\u03bb\u03b9\u03ba\u03cc \u03c3\u03b7\u03bc\u03b5\u03af\u03bf (endpoint) \u03b4\u03b5\u03bd \u03c0\u03c1\u03bf\u03bf\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03bf.", + "zu": "Ufinyelele ukusebenzisana Kwesevisi Yomthengi Yesimemezelo, kodwa awuzange uhlinzeke Ngempendulo Yokuqinisekisa ye-SAML. Sicela uphawule ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile.", + "xh": "Ufikelele i-intafeyisi ye-Assertion Consumer Service, kodwa awukhange unikele iMpendulo Yongqinisiso ye-SAML. Nceda uqaphele ukuba le ndawo yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." }, "title_SSOPARAMS": { - "zh-tw": "\u672a\u63d0\u4f9b SAML \u8acb\u6c42" + "zh-tw": "\u672a\u63d0\u4f9b SAML \u8acb\u6c42", + "zu": "Asikho isicelo se-SAML esinikeziwe", + "xh": "Akukho sicelo se-SAML sinikelweyo" }, "descr_SSOPARAMS": { - "zh-tw": "\u60a8\u9023\u7d50\u55ae\u4e00\u7c3d\u5165\u670d\u52d9\u4ecb\u9762\uff0c\u4f46\u672a\u63d0\u4f9b\u4e00\u500b SAML \u9a57\u8b49\u8acb\u6c42\u3002\u8acb\u6ce8\u610f\uff0c\u8a72\u7aef\u9ede\u4e26\u975e\u76f4\u63a5\u9023\u7dda\u3002" + "zh-tw": "\u60a8\u9023\u7d50\u55ae\u4e00\u7c3d\u5165\u670d\u52d9\u4ecb\u9762\uff0c\u4f46\u672a\u63d0\u4f9b\u4e00\u500b SAML \u9a57\u8b49\u8acb\u6c42\u3002\u8acb\u6ce8\u610f\uff0c\u8a72\u7aef\u9ede\u4e26\u975e\u76f4\u63a5\u9023\u7dda\u3002", + "xh": "Ufikelele i-intafeyisi ye-Single Sign On Service, kodwa awukhange unikele iMpendulo Yongqinisiso ye-SAML. Nceda uqaphele ukuba le ndawo yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo.", + "zu": "Ufinyelele ukusebenzisana Kwesevisi Yokubhalisa Okukodwa, kodwa awuzange uhlinzeke Ngempendulo Yokuqinisekisa ye-SAML. Sicela uphawule ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile." }, "title_ARSPARAMS": { - "zh-tw": "\u672a\u63d0\u4f9b SAML \u8a0a\u606f" + "zh-tw": "\u672a\u63d0\u4f9b SAML \u8a0a\u606f", + "zu": "Awukho umlayezo we-SAML onikeziwe", + "xh": "Akukho myalezo we-SAML unikelweyo" }, "descr_ARSPARAMS": { - "zh-tw": "\u60a8\u9023\u7d50\u4eba\u5de5\u8655\u7406\u670d\u52d9\u4ecb\u9762\uff0c\u4f46\u672a\u63d0\u4f9b SAML \u4eba\u5de5\u8655\u7406\u670d\u52d9\u8a0a\u606f\u3002\u8acb\u6ce8\u610f\uff0c\u8a72\u7aef\u9ede\u4e26\u975e\u76f4\u63a5\u9023\u7dda\u3002" + "zh-tw": "\u60a8\u9023\u7d50\u4eba\u5de5\u8655\u7406\u670d\u52d9\u4ecb\u9762\uff0c\u4f46\u672a\u63d0\u4f9b SAML \u4eba\u5de5\u8655\u7406\u670d\u52d9\u8a0a\u606f\u3002\u8acb\u6ce8\u610f\uff0c\u8a72\u7aef\u9ede\u4e26\u975e\u76f4\u63a5\u9023\u7dda\u3002", + "xh": "Ufikelele i-intafeyisi ye-Artifact Resolution Service, kodwa awukhange unikrele umyalezo we-SAML ArtifactResolve. Nceda uqaphele ukuba le ndawo yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo.", + "zu": "Ufinyelele ukusebenzisana Kwesevisi Yokucaciswa Kobuciko, kodwa awuzange uhlinzeke umlayezo we-SAML ArtifactResolve. Sicela uphawule ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile." + }, "title_CASERROR": { "no": "CAS-feil", @@ -1306,7 +1385,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 CAS", "eu": "CAS Errorea", "af": "CAS Fout", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 CAS" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 CAS", + "xh": "Impazamo ye-CAS", + "zu": "Iphutha Le-CAS" }, "descr_CASERROR": { "no": "Feil i kommunikasjonen med CAS-tjeneren.", @@ -1342,7 +1423,9 @@ "ru": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u043c\u0435\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c CAS.", "eu": "Errorea CAS zerbitzariarekin komunikatzen saiatzean", "af": "Fout tydens kommunikasie met die CAS bediener.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae CAS." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03c4\u03ae CAS.", + "zu": "Iphutha ngenkathi kuxhunyanwa neseva ye-CAS.", + "xh": "Impazamo xa kunxibelelwana neseva ye-CAS." }, "title_CONFIG": { "no": "Feil i oppsettet", @@ -1378,7 +1461,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438", "eu": "Konfigurazio errorea", "af": "Instellings fout", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd", + "zu": "Iphutha lomiso", + "xh": "Impazamo yolungiselelo" }, "descr_CONFIG": { "no": "Det virker som det er en feil i oppsettet av SimpleSAMLphp.", @@ -1414,7 +1499,9 @@ "ru": "\u0412\u0438\u0434\u0438\u043c\u043e, SimpleSAMLphp \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.", "eu": "Badirudi errore bat jazo dela SimpleSAMLphp-en konfigurazioan", "af": "SimpleSAMLphp is nie korrek ingestel nie", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2.", + "xh": "I-SimpleSAMLphp ibonakala ingalungiselelwanga kakuhle.", + "zu": "I-SimpleSAMLphp ibonakala ingamisiwe ngendlela efanele." }, "title_NOTSET": { "no": "Passordet er ikke satt", @@ -1450,7 +1537,9 @@ "ru": "\u041f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d", "eu": "Pasahitzik ez da ezarrii", "af": "Wagwoord nie opgestel nie", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "xh": "Iphaswedi ayisetwanga", + "zu": "Iphasiwedi ayisethiwe" }, "descr_NOTSET": { "no": "Admin passordet i konfigurasjonen (auth.adminpassword) er ikke satt til noe annet enn default verdien. Bytt passord i config.php.", @@ -1486,7 +1575,9 @@ "ru": "\u041f\u0430\u0440\u043e\u043b\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (auth.adminpassword) \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.", "eu": "Ez da aldatu konfigurazio fitxategiaren pasahitzaren (auth.adminpassword) balio lehenetsia. Mesedez, edita ezazu fitxategia", "af": "Die wagwoord in die konfigurasie (auth.adminpassword) is nie aangepas nie. Redigeer asb die konfigurasie le\u00ebr.", - "el": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd." + "el": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd.", + "xh": "Iphaswedi ekulungiselelo (auth.adminpassword) ayitshintshwanga ukusuka kwixabiso lesiseko. Nceda uhlele ifayile yolungiselelo.", + "zu": "Iphasiwedi kumiso (auth.adminpassword) ayishintshiwe kunani elizenzakalelayo. Sicela uhlele ifayela lomiso." }, "title_NOTVALIDCERT": { "no": "Ugyldig sertifikat", @@ -1522,7 +1613,9 @@ "ru": "\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442", "eu": "Ziurtagiri balio gabea", "af": "Ongeldige sertifikaat", - "el": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc" + "el": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc", + "xh": "Isatifikethi esingasebenziyo", + "zu": "Isitifiketi esingalungile" }, "descr_NOTVALIDCERT": { "no": "Du presenterte ikke et gyldig sertifikat", @@ -1558,7 +1651,9 @@ "ru": "\u0412\u044b \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", "eu": "Ez duzu baliozko ziurtagiririk aurkeztu ", "af": "Jy het nie 'n geldige sertifikaat gestuur nie.", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bb\u03cc\u03b3\u03c9 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c5 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd." + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bb\u03cc\u03b3\u03c9 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c5 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd.", + "zu": "Awuzange wethule isitifiketi esilungile.", + "xh": "Awukhange uzise isatifikethi esisebenzayo." }, "errorreport_header": { "no": "Feilrapport sent", @@ -1593,7 +1688,9 @@ "ro": "Raportul cu erori a fost trimis", "ru": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e", "af": "Foutmeldingsverslag gestuur", - "el": "\u0397 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5" + "el": "\u0397 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5", + "zu": "Umbiko wephutha uthunyelwe", + "xh": "Ingxelo yempazamo ithunyelwe" }, "errorreport_text": { "no": "Feilrapport er sent til administrator.", @@ -1628,7 +1725,9 @@ "ro": "Raportul cu erori a fost trimis c\u0103tre administratori.", "ru": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c.", "af": "Die foutmeldings verslag is gestuur na die administrateurs.", - "el": "\u0397 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03c4\u03b7\u03c2 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c3\u03c4\u03bf\u03c5\u03c2 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5." + "el": "\u0397 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03c4\u03b7\u03c2 \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c3\u03c4\u03bf\u03c5\u03c2 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5.", + "xh": "Ingxelo yempazamo ithunyelwe kubalawuli.", + "zu": "Umbiko wephutha uthunyelwe kubalawuli." }, "title_LOGOUTINFOLOST": { "no": "Informasjon om utlogging er tapt", @@ -1663,7 +1762,9 @@ "ru": "\u041f\u043e\u0442\u0435\u0440\u044f\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u044b\u0445\u043e\u0434\u0435.", "eu": "Saioa ixteko informazioa galdu da", "af": "Afmelding informasie verlore", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", + "zu": "Ulwazi lokuphuma lulahlekile", + "xh": "Inkcazelo yokuphuma ilahlekile" }, "descr_LOGOUTINFOLOST": { "no": "Informasjonen om den n\u00e5v\u00e6rende utloggingen har g\u00e5tt tapt. Du b\u00f8r g\u00e5 tilbake til den opprinnelige tjesesten og pr\u00f8ve \u00e5 logge ut p\u00e5 nytt. Informasjon om utloggingsoperasjoner er kun lagret i en begrenset tid - vanligvis noen timer. Dette er lengere tid enn en vanlig utlogging skal ta, s\u00e5 denne feilen kan tyde p\u00e5 at noe er galt med oppsettet. Ta kontakt med tjenesteyteren hvis problemet gjentar seg.", @@ -1698,7 +1799,9 @@ "ru": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u0430. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043b\u0443\u0436\u0431\u0443, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u0439\u0442\u0438 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0439\u0442\u0438 \u0441\u043d\u043e\u0432\u0430. \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u044b\u0445\u043e\u0434\u0435. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u044b\u0445\u043e\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 - \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e\u0438\u0445 \u0447\u0430\u0441\u043e\u0432. \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443.", "eu": "Saioa ixteko eragiketari buruzko informazioa galdu da. Irten nahi duzun zerbitzura itzuli eta saioa berriz ixten saitu behar duzu. Saioa ixteko informazioa denbora mugatu batean gordetzen da, orokorrean saio ixteko eragiketak iraun beharko lukeen denbora baino gehiago, beraz errore hau konfigurazioan erroreren bat jazo delako gerta liteke. Errorea etengabea bada, jar zaitez harremanetan zerbitzuaren hornitzailearekin.", "af": "Die inligting vir die huidige uiteken sessie is verlore. Jy moet terugkeer na die diens waarvan jy probeer afmeld het en probeer om weer af te meld. Di\u00e9 fout kan voorkom weens verstreke afmelding inligting. Die afmelding inligting word gestoor vir 'n beperkte tydperk - gewoonlik 'n paar ure. Dit is langer as wat 'n normale afmelding sessie moet vat, so die fout mag 'n indikasie wees van 'n probleem met die stellings. Kontak jou diens verskaffer sou die probleem voortduur.", - "el": "\u039f\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c7\u03b1\u03b8\u03b5\u03af. \u0398\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03bf\u03c0\u03bf\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5. \u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03b1\u03bd \u03b7 \u03b9\u03c3\u03c7\u03cd\u03c2 \u03c4\u03c9\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9. \u039f\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03b5\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 - \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03bc\u03b5\u03c1\u03b9\u03ba\u03ce\u03bd \u03c9\u03c1\u03ce\u03bd. \u0391\u03c5\u03c4\u03cc \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03b5\u03c0\u03b1\u03c1\u03ba\u03b5\u03af \u03b3\u03b9\u03b1 \u03bc\u03b9\u03b1 \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2, \u03c3\u03c5\u03bd\u03b5\u03c0\u03ce\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03b7 \u03c0\u03b5\u03c1\u03af\u03c0\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03ac\u03bb\u03bb\u03bf \u03b8\u03ad\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2. \u0395\u03ac\u03bd \u03c4\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9, \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd." + "el": "\u039f\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c7\u03b1\u03b8\u03b5\u03af. \u0398\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03bf\u03c0\u03bf\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b5\u03ba \u03bd\u03ad\u03bf\u03c5. \u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03b1\u03bd \u03b7 \u03b9\u03c3\u03c7\u03cd\u03c2 \u03c4\u03c9\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9. \u039f\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03b5\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 - \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03bc\u03b5\u03c1\u03b9\u03ba\u03ce\u03bd \u03c9\u03c1\u03ce\u03bd. \u0391\u03c5\u03c4\u03cc \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03b5\u03c0\u03b1\u03c1\u03ba\u03b5\u03af \u03b3\u03b9\u03b1 \u03bc\u03b9\u03b1 \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2, \u03c3\u03c5\u03bd\u03b5\u03c0\u03ce\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03b7 \u03c0\u03b5\u03c1\u03af\u03c0\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03ac\u03bb\u03bb\u03bf \u03b8\u03ad\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2. \u0395\u03ac\u03bd \u03c4\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9, \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd.", + "zu": "Ulwazi olumayelana nomsebenzi wokuphuma wamanje lulahlekile. Kufanele ubuyele kusevisi obuzama ukuphuma kuyo futhi uzame ukuphuma futhi. Leli phutha lingabangelwa ukuphelelwa isikhathi kolwazi lokuphuma. Ulwazi lokuphuma lugcinwa isikhathi esilinganiselwe - ngokuvamile amahora ambalwa. Lokhu kude kunanoma yimuphi umsebenzi wokuphuma ovamile, ngakho leli phutha lingase libonise elinye iphutha ngomiso. Uma inkinga iphikelela, thinta umhlinzeki wakho wesevisi.", + "xh": "Inkcazelo malunga nomsebenzi wokuphuma wangoku ilahlekile. Ufanele ubuyele kwinkonzo ubuzama ukuphuma kuyo uzame ukuphuma kwakhona. Le mpazamo inokubangelwa kukuphelelwa kwenkcazelo yokuphuma. Inkcazelo yokuphuma igcinwa ixesha elithile - ngokuqhelekileyo iiyure eziliqela. Oku kuthatha ixesha elide kunawo nawuphi na umsebenzi wokuphuma ofanele ulithathe, ngoko le mpazamo isenokubonisa enye impazamo ngolungiselelo. Ukuba ingxaki iyaqhubeka, qhagamshela umboneleli wenkonzo wakho." }, "title_UNHANDLEDEXCEPTION": { "no": "Uh\u00e5ndtert feil", @@ -1733,7 +1836,9 @@ "eu": "Kudeatu gabeko salbuespena", "fi": "K\u00e4sittelem\u00e4t\u00f6n poikkeus", "af": "Onverwagte foutmelding", - "el": "\u0391\u03bd\u03b5\u03c0\u03af\u03bb\u03c5\u03c4\u03b7 \u03b5\u03be\u03b1\u03af\u03c1\u03b5\u03c3\u03b7" + "el": "\u0391\u03bd\u03b5\u03c0\u03af\u03bb\u03c5\u03c4\u03b7 \u03b5\u03be\u03b1\u03af\u03c1\u03b5\u03c3\u03b7", + "xh": "Isinxaxhi esingasingathwanga", + "zu": "Okuhlukile okungasingathiwe" }, "descr_UNHANDLEDEXCEPTION": { "no": "En uventet feilsituasjon oppstod", @@ -1768,7 +1873,9 @@ "eu": "Kudeatu gabeko salbuespen bat abiarazi da", "fi": "K\u00e4sittelem\u00e4t\u00f6n poikkeus heitetty", "af": "'n Onverwagte foutmelding is aangetoon", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03b1\u03bd\u03b5\u03c0\u03af\u03bb\u03c5\u03c4\u03b7 \u03b5\u03be\u03b1\u03af\u03c1\u03b5\u03c3\u03b7" + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03b1\u03bd\u03b5\u03c0\u03af\u03bb\u03c5\u03c4\u03b7 \u03b5\u03be\u03b1\u03af\u03c1\u03b5\u03c3\u03b7", + "xh": "Isinxaxhi esingasingathwanga silahliwe.", + "zu": "Okuhlukile okungasingathiwe kulahliwe." }, "title_NOTFOUND": { "no": "Kan ikke finne siden", @@ -1803,7 +1910,9 @@ "ru": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", "eu": "Ez da orria aurkitu", "af": "Bladsy nie gevind nie", - "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5" + "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5", + "xh": "Ikhasi alifunyenwanga", + "zu": "Ikhasi alitholakali" }, "descr_NOTFOUND": { "no": "Den angitte siden finnes ike. URLen var: %URL%", @@ -1838,7 +1947,9 @@ "ru": "\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0421\u0441\u044b\u043b\u043a\u0430 \u0431\u044b\u043b\u0430: %URL%", "eu": "Ez da aurkitu adierazi duzun orria. URLa hau da: %URL%", "af": "Die bladsy bestaan nie. Die URL was: %URL%", - "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b1\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 %URL% \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5." + "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b1\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 %URL% \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5.", + "zu": "Ikhasi elinikeziwe alitholakalanga. I-URL ibithi: %URL%", + "xh": "Ikhasi elinikelweyo alifunyenwanga. I-URL ngu: %URL%" }, "title_NOTFOUNDREASON": { "no": "Kan ikke finne siden", @@ -1873,7 +1984,9 @@ "ru": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", "eu": "Ez da orria aurkitu", "af": "Bladsy nie gevind nie", - "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5" + "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5", + "xh": "Ikhasi alifunyenwanga", + "zu": "Ikhasi alitholakali" }, "descr_NOTFOUNDREASON": { "no": "Den angitte siden finnes ikke. Grunnen er: %REASON%. URLen var: %URL%", @@ -1908,7 +2021,9 @@ "ru": "\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: %REASON% \u0421\u0441\u044b\u043b\u043a\u0430: %URL%", "eu": "Ez da aurkitu adierazi duzun orria. Arrazoia hau da: %REASON% URL hau da: %URL%", "af": "Die gegewe bladsy is nie gevind nie. Die rede was: %REASON%. Die URL was: %URL%", - "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b1\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 %URL% \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5: %REASON%" + "el": "\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b1\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 %URL% \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5: %REASON%", + "zu": "Ikhasi elinikeziwe alitholakalanga. Isizathu besithi: %REASON% I-URL ibithi: %URL%", + "xh": "Ikhasi elinikelweyo alifunyenwanga. Isizathu sesi: %REASON% I-URL ngu: %URL%" }, "title_BADREQUEST": { "no": "Feil foresp\u00f8rsel motatt", @@ -1943,7 +2058,9 @@ "ru": "\u041f\u043e\u043b\u0443\u0447\u0435\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u043a\u043b\u0438\u043a", "eu": "Eskaera oker bat jaso da.", "af": "Foutiewe versoek ontvang", - "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1" + "el": "\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03b1", + "zu": "Kutholwe umlayezo ongalungile", + "xh": "Kufunyenwe isicelo esibi" }, "descr_BADREQUEST": { "no": "En feil oppsto i foresp\u00f8rselen til denne siden. Grunnen var: %REASON%", @@ -1977,7 +2094,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041f\u0440\u0438\u0447\u0438\u043d\u0430: %REASON%", "eu": "Errore bat dago orri honen eskaeran. Arrazoia hau da: %REASON%", "af": "Daar is 'n fout in die versoek na die bladsy. Die rede is: %REASON%", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2: %REASON%" + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2: %REASON%", + "zu": "Kukhona iphutha kusicelo saleli khasi. Isizathu besithi: %REASON%", + "xh": "Kukho impazamo kwisicelo kweli khasi. Isizathu sesi: %REASON%" }, "title_WRONGUSERPASS": { "no": "Feil brukernavn og passord", @@ -2012,7 +2131,9 @@ "ru": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", "eu": "Erabiltzaile-izena edo pasahitz okerra", "af": "Inkorrekte gebruikersnaam of wagwoord", - "el": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03ac\u03b8\u03bf\u03c2" + "el": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03ac\u03b8\u03bf\u03c2", + "zu": "Igama lomsebenzisi elingalungile noma iphasiwedi", + "xh": "Igama lomsebenzisi okanye iphaswedi engachanekanga" }, "descr_WRONGUSERPASS": { "no": "Enten var brukernavnet, eller kombinasjonen med brukernavn og passord feil. Sjekk brukernavn og passord og pr\u00f8v igjen.", @@ -2046,8 +2167,9 @@ "ru": "\u041b\u0438\u0431\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u043b\u0438\u0431\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.", "eu": "Ez dago erabiltzailerik adierazitako identifikadorearekin, edo adierazitako pasahitza okerra da. Mesedez, berrikusi ezazu erabiltzaile-identifikadorea eta saia zaiztez berriro.", "af": "Die gegewe gebruikersnaam bestaan nie, of die wagwoord wat jy verskaf het is verkeerd. Bevestig die gebruikersnaam en probeer weer.", - "el": "\u039f \u03c3\u03c5\u03bd\u03b4\u03c5\u03b1\u03c3\u03bc\u03cc\u03c2 \u03bf\u03bd\u03cc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03cc\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03bf\u03c1\u03b8\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac." - + "el": "\u039f \u03c3\u03c5\u03bd\u03b4\u03c5\u03b1\u03c3\u03bc\u03cc\u03c2 \u03bf\u03bd\u03cc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03cc\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03bf\u03c1\u03b8\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "zu": "Kungenzeka ukuthi akekho umsebenzisi onegama lomsebenzisi otholiwe, noma iphasiwedi oyinikezile ayilungile. Sicela uhlole igama lomsebenzisi bese uzame futhi.", + "xh": "Kusenokwenzeka akukho msebenzisi unegama lomsebenzisi elinikelweyo ofunyenweyo, okanye iphaswedi oyinikeleyo ayichanekanga. Nceda ujonge igama lomsebenzisi uzame kwakhona." }, "title_RESPONSESTATUSNOSUCCESS": { "no": "Feilmelding mottatt fra innloggingstjenesten", @@ -2082,7 +2204,9 @@ "ru": "\u041e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430", "eu": "Errore bat jazo da IdP-aren aldetik", "af": "Foutmelding ontvang vanaf die Identiteits Verskaffer", - "el": "\u039b\u03ae\u03c8\u03b7 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2" + "el": "\u039b\u03ae\u03c8\u03b7 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "zu": "Iphutha litholwe ukusuka Kumhlinzeki Kamazisi", + "xh": "Impazamo efunyenwe kuMboneleli Wesazisi" }, "descr_RESPONSESTATUSNOSUCCESS": { "no": "Innloggingstjenesten svarte med en feilmelding. (Statuskoden i SAML-svaret var noe annet enn OK)", @@ -2117,7 +2241,9 @@ "ru": "\u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. (\u041a\u043e\u0434 \u0441\u0442\u0430\u0442\u0443\u0441 \u0432 \u043e\u0442\u043a\u043b\u0438\u043a\u0435 SAML \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435)", "eu": "Idp-ak errore batekin erantzun dio eskaerari. (SAML erantzunean egoera kodea ez da arrakastatsua izan)", "af": "Die Identiteits Verskaffer reageer met 'n fout. (Die status kode in die SAML reaksie was onsuksesvol)", - "el": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03b7 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1." + "el": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03b7 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1.", + "xh": "Umboneleli Wesazisi uphendule ngempazamo. (Ikhowudi yobume kwiMpendulo ye-SAML ayiphumelelanga)", + "zu": "Umhlinzeki Womazisi uphendule ngephutha. (Ikhodi yesimo Sempendulo ye-SAML ayizange iphumelele)" }, "title_NOCERT": { "fr": "Aucun certificat pr\u00e9sent\u00e9", @@ -2150,7 +2276,9 @@ "eu": "Ziurtagiri gabe", "fi": "Ei sertifikaattia", "af": "Geen sertifikaat", - "el": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc" + "el": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc", + "xh": "Akukho satifikethi", + "zu": "Asikho isitifiketi" }, "descr_NOCERT": { "fr": "\u00c9chec de l'authentification : votre navigateur n'a pas pr\u00e9sent\u00e9 de certificat", @@ -2182,7 +2310,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u0432\u044b\u0441\u043b\u0430\u043b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442", "eu": "Kautotze okerra: zure nabigatzaileak ez du bidali ziurtagiririk ", "af": "Verifikasie het misluk: Jou webblaaier het geen sertifikaat gestuur nie", - "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc." + "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc.", + "zu": "Ukuqinisekisa kuhlulekile: isiphequluli sakho asizange sithumele noma yisiphi isitifiketi", + "xh": "Ungqinisiso lusilele: ibhrawuza yakho ayithumelanga nasiphi na isatifikethi" }, "title_INVALIDCERT": { "fr": "Certificat invalide", @@ -2215,7 +2345,9 @@ "eu": "Ziurtagiri baliogabea", "fi": "Virheellinen sertifikaatti", "af": "Ongeldige sertifikaat", - "el": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc" + "el": "\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc", + "xh": "Isatifikethi esingasebenziyo", + "zu": "Isifiketi esingalungile" }, "descr_INVALIDCERT": { "fr": "\u00c9chec de l'authentification : le certificat pr\u00e9sent\u00e9 par votre navigateur est invalide ou illisible", @@ -2247,7 +2379,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0432\u044b\u0441\u043b\u0430\u043b \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043b\u0438 \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442", "eu": "Kautotze okerra: Zure nabigatzaileak bidalitako ziurtagiria baliogabea da edo ezin da irakurri", "af": "Verifikasie het misluk: Jou webblaaier het 'n ongeldige of korrupte sertifikaat gestuur", - "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc \u03c0\u03bf\u03c5 \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ae \u03b4\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03ae \u03c4\u03bf\u03c5." + "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc \u03c0\u03bf\u03c5 \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ae \u03b4\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03ae \u03c4\u03bf\u03c5.", + "xh": "Ungqinisiso lusilele: isatifikethi esithunyelwe yibhrawuza yakho asisebenzi okanye asikwazi ukufundwa", + "zu": "Ukuqinisekisa kuhlulekile: isitifiketi esithunyelwe isiphequluli sakho asivumelekile noma asikwazi ukufundwa" }, "title_UNKNOWNCERT": { "fr": "Certificat inconnu", @@ -2280,7 +2414,9 @@ "eu": "Ziurtagiri ezezaguna", "fi": "Tuntematon sertifikaatti", "af": "Onbekende sertifikaat", - "el": "\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc" + "el": "\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc", + "zu": "Isitifiketi esingaziwa", + "xh": "Isatifikethi esingaziwayo" }, "descr_UNKNOWNCERT": { "fr": "\u00c9chec de l'authentification : le certificat pr\u00e9sent\u00e9 par votre navigateur n'est pas connu", @@ -2312,7 +2448,9 @@ "ru": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0432\u044b\u0441\u043b\u0430\u043b \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442", "eu": "Kautotze okerra: zure nabigatzaileak bidalitako ziurtagiria ezezaguna da", "af": "Verifikasie het misluk: die sertifikaat wat jou webblaaier gestuur het is onbekend", - "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc \u03c0\u03bf\u03c5 \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b5\u03af." + "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5: \u03a4\u03bf \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc \u03c0\u03bf\u03c5 \u03ad\u03c3\u03c4\u03b5\u03b9\u03bb\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b5\u03af.", + "zu": "Ukuqinisekisa kuhlulekile: isitifiketi esithunyelwe isiphequluli sakho asaziwa", + "xh": "Ungqinisiso lusilele: isatifikerthi esithunyelwe yibhrawuza yakho asaziwa" }, "title_USERABORTED": { "da": "Autentificering aubrudt", @@ -2344,7 +2482,9 @@ "ru": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430", "eu": "Kautotzea bertan behera utzia", "af": "Verifikasie gestop", - "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b1\u03c4\u03b1\u03b9\u03ce\u03b8\u03b7\u03ba\u03b5" + "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b1\u03c4\u03b1\u03b9\u03ce\u03b8\u03b7\u03ba\u03b5", + "zu": "Ukuqinisekisa kuyekisiwe", + "xh": "Ungqinisiso luyekiwe" }, "descr_USERABORTED": { "da": "Autentificering blev afbrudt af brugeren", @@ -2376,7 +2516,9 @@ "ru": "\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c", "eu": "Kautotzea bertan behera utzi du erabiltzaileak", "af": "Die verifikasie is gestop deur die gebruiker", - "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b1\u03c4\u03b1\u03b9\u03ce\u03b8\u03b7\u03ba\u03b5 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7." + "el": "\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b1\u03c4\u03b1\u03b9\u03ce\u03b8\u03b7\u03ba\u03b5 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.", + "zu": "Ukuqinisekisa kuyekiswe umsebenzisi", + "xh": "Ungqinisiso luyekiswe ngumsebenzisi" }, "title_NOSTATE": { "da": "State information tabt", @@ -2408,7 +2550,9 @@ "eu": "Egoera informazioa galdua", "af": "Toestandsinformasie verlore", "pt-br": "Informa\u00e7\u00f5es de estado perdidas", - "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2" + "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "xh": "Inkcazelo yobume ilahlekile", + "zu": "Ulwazi lwesifunda lulahlekile" }, "descr_NOSTATE": { "da": "State information er tabt og der er ikke muligt at gentage forsp\u00f8rgelsen", @@ -2440,7 +2584,9 @@ "eu": "Egoera informazioa galdua eta ez dago modurik eskaera berrabiarazteko", "af": "Toestandsinformasie verlore en daar is geen manier om die versoek weer te stuur nie", "pt-br": "Informa\u00e7\u00f5es de estado perdidas, e n\u00e3o \u00e9 poss\u00edvel reiniciar a requisi\u00e7\u00e3o", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03ac \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03ae \u03c4\u03bf\u03c5" + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b5\u03be\u03c5\u03c0\u03b7\u03c1\u03b5\u03c4\u03b7\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03af\u03c4\u03b7\u03bc\u03ac \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03ae \u03c4\u03bf\u03c5", + "xh": "Inkcazelo yobume ilahlekile, yaye akukho ndlela yokuqalisa isicelo", + "zu": "Ulwazi lwesifunda lulahlekile, futhi ayikho indlela yokuqala kabusha isicelo" }, "title_METADATANOTFOUND": { "da": "Metadata ikke fundet", @@ -2472,7 +2618,9 @@ "eu": "Ez dira metadatuak aurkitu", "af": "Metadata nie gevind nie", "pt-br": "Metadado n\u00e3o encontrado", - "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1" + "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1", + "zu": "Imethadatha ayitholakalanga", + "xh": "Imetadata ayifunyenwanga" }, "descr_METADATANOTFOUND": { "da": "Kan ikke finde metadata for %ENTITYID%", @@ -2504,7 +2652,9 @@ "eu": "Ezin da aurkitu metadaturik %ENTITYID%-(a)rentzat", "af": "Kan geen metadata vind vir %ENTITYID%", "pt-br": "N\u00e3o foi poss\u00edvel localizar os metadados de %ENTITYID%", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03bf\u03cd\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 %ENTITYID%" + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03bf\u03cd\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 %ENTITYID%", + "xh": "Ayikwazi ukufumana iimpawu-ngcaciso zefayile ze-%ENTITYID%", + "zu": "Ayikwazi ukuthola imethadatha yokuthi %ENTITYID%" }, "title_AUTHSOURCEERROR": { "hr": "Gre\u0161ka u autentifikacijskom modulu", @@ -2536,7 +2686,9 @@ "eu": "Errorea kautotze jatorrian", "af": "Fout in verifikasie bron", "pt-br": "Erro na fonte de autentica\u00e7\u00e3o", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c0\u03b7\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c0\u03b7\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2", + "zu": "Iphutha lomthombo wokuqinisekisa", + "xh": "Impazamo yomthombo wongqinisiso" }, "descr_AUTHSOURCEERROR": { "hr": "Do\u0161lo je do gre\u0161ke u autentifikacijskom modulu %AUTHSOURCE%. Razlog: %REASON%", @@ -2568,14 +2720,20 @@ "eu": "Errorea kautotze jatorrian %AUTHSOURCE%. Arrazoia hau da: %REASON%", "af": "Fout in verifikasie bron %AUTHSOURCE%. Die rede was %REASON%", "pt-br": "Erro de autentica\u00e7\u00e3o na origem %AUTHSOURCE%. O motivo foi:%REASON%", - "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c0\u03b7\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 %AUTHSOURCE%: %REASON%" + "el": "\u03a0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c0\u03b7\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 %AUTHSOURCE%: %REASON%", + "zu": "Iphutha lokuqinisekisa kumthombo othi %AUTHSOURCE%. Isizathu besithi: %REASON%", + "xh": "Impazamo yongqinisiso kumthombo %AUTHSOURCE%. Isizathu sesi: %REASON%" }, "title_MEMCACHEDOWN": { "zh-tw": "\u7121\u6cd5\u53d6\u5f97\u9023\u7dda Session \u8cc7\u8a0a", - "el": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2" + "el": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2", + "xh": "Ayikwazi ukubuyisela ingcombolo yeseshoni", + "zu": "Ayikwazi ukubuyisela idatha yeseshini" }, "descr_MEMCACHEDOWN": { "zh-tw": "\u60a8\u7684\u9023\u7dda Session \u8cc7\u8a0a\u56e0\u70ba\u6280\u8853\u56f0\u96e3\u73fe\u5728\u7121\u6cd5\u53d6\u5f97\uff0c\u8acb\u7a0d\u5f85\u5e7e\u5206\u9418\u5f8c\u518d\u91cd\u8a66", - "el": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2 \u03bb\u03cc\u03b3\u03c9 \u03c4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ce\u03bd \u03b4\u03c5\u03c3\u03ba\u03bf\u03bb\u03b9\u03ce\u03bd. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1" + "el": "\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2 \u03bb\u03cc\u03b3\u03c9 \u03c4\u03b5\u03c7\u03bd\u03b9\u03ba\u03ce\u03bd \u03b4\u03c5\u03c3\u03ba\u03bf\u03bb\u03b9\u03ce\u03bd. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1", + "zu": "Idatha yeseshini yakho ayikwazi ukubuyiswa njengamanje ngenxa yezinkinga zobuchwepheshe. Sicela uzame futhi emizuzwini embalwa.", + "xh": "Ingcombolo yeseshoni yakho ayikwazi ukubuyiselwa okwangoku ngenxa yeengxaki zobugcisa. Nceda uzame kwakhona kwimizuzu embalwa." } } diff --git a/dictionaries/general.translation.json b/dictionaries/general.translation.json index b9c9cfb87724421b2bf56f35fa4e95dfb70f14e3..299ea9f16c478f550032094612f617175dab567a 100644 --- a/dictionaries/general.translation.json +++ b/dictionaries/general.translation.json @@ -33,7 +33,9 @@ "ro": "Da", "eu": "Bai", "af": "Ja", - "el": "\u039d\u03b1\u03af" + "el": "\u039d\u03b1\u03af", + "zu": "Yebo", + "xh": "Ewe" }, "no": { "no": "Nei", @@ -69,7 +71,9 @@ "ro": "Nu", "eu": "Ez", "af": "Nee", - "el": "\u038c\u03c7\u03b9" + "el": "\u038c\u03c7\u03b9", + "xh": "Hayi", + "zu": "Cha" }, "remember": { "no": "Godta ogs\u00e5 for fremtiden", @@ -105,7 +109,9 @@ "ro": "\u021aine minte", "eu": "Onespena gogoratu", "af": "Onthou", - "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03c5" + "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03c5", + "zu": "Khumbula", + "xh": "Khumbula" }, "yes_continue": { "no": "Ja, fortsett", @@ -141,7 +147,9 @@ "ro": "Da, continu\u0103", "eu": "Bai, jarraitu", "af": "Ja, voortgaan", - "el": "\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae" + "el": "\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae", + "xh": "Ewe, qhubeka", + "zu": "Yebo, qhubeka" }, "no_cancel": { "no": "Nei, avbryt", @@ -177,7 +185,9 @@ "ro": "Nu, renun\u021b", "eu": "Ez, utzi", "af": "Nee, kanselleer", - "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b9\u03c8\u03b7" + "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b9\u03c8\u03b7", + "xh": "Hayi, rhoxisa", + "zu": "Cha, khansela" }, "service_provider": { "no": "Tjenesteleverand\u00f8r", @@ -213,6 +223,8 @@ "ro": "Furnizor de servicii", "eu": "Zerbitzu hornitzailea", "af": "Diens Verskaffer", - "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2" + "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2", + "xh": "Umboneleli Wenkonzo", + "zu": "Umhlinzeki Wesevisi" } } diff --git a/dictionaries/login.translation.json b/dictionaries/login.translation.json index 0ba81bb79287829f7dd041018fa6a8705bbad9fa..1c2593601262cefc172347a34dc654b17db35e48 100644 --- a/dictionaries/login.translation.json +++ b/dictionaries/login.translation.json @@ -34,7 +34,9 @@ "ro": "Eroare", "xh": "Imposiso", "af": "Fout", - "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1" + "el": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1", + "zu": "Iphutha", + "xh": "Impazamo" }, "user_pass_header": { "no": "Skriv inn brukernavn og passord", @@ -71,7 +73,9 @@ "ro": "V\u0103 rug\u0103m s\u0103 completa\u021bi numele de utilizator \u0219i parola", "xh": "Nceda ngenisa igama lakho lomsebenzisi kunye negama lokugqithisa", "af": "Voer jou gebruikersnaam en wagwoord in", - "el": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2" + "el": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "zu": "Faka igama lakho lomsebenzisi nephasiwedi", + "xh": "Ngenisa igama lomsebenzisi nephaswedi yakho" }, "user_pass_text": { "no": "En tjeneste har bedt om bekreftelse p\u00e5 din identitet. Skriv inn ditt brukernavn og passord for \u00e5 autentisere deg.", @@ -107,7 +111,9 @@ "ro": "Un serviciu a solicitat autentificarea dumneavoastr\u0103. V\u0103 rug\u0103m s\u0103 completa\u021bi numele de utilizator \u0219i parola \u00een c\u00e2mpurile de mai jos.", "eu": "Zerbitzu batek kautotu zaitezen eskatzen du. Mesedez, zure erabiltzaile-izena eta pasahitza honako formulario honetan sartu itzazu.", "af": "'n Diens vereis dat jy jouself identifiseer. Voer jou gebruikersnaam en wagwoord in die onderstaande vorm in.", - "el": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c6\u03cc\u03c1\u03bc\u03b1." + "el": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c6\u03cc\u03c1\u03bc\u03b1.", + "zu": "Isevisi icele ukuthi uziqinisekise. Sicela ufake igama lakho lomsebenzisi nephasiwedi ngohlobo olungezansi.", + "xh": "Inkonzo icele ukuba uzingqinisise. Nceda ungenise igama lomsebenzisi nephaswedi yakho kwifomu ngezantsi." }, "login_button": { "no": "Logg inn", @@ -145,11 +151,15 @@ "ro": "Autentificare", "xh": "Ngena", "af": "Meld aan", - "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2" + "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2", + "zu": "Ngena", + "xh": "Ngena" }, "processing": { "es": "Procesando...", - "zh-tw": "\u8655\u7406\u4e2d..." + "zh-tw": "\u8655\u7406\u4e2d...", + "zu": "Iyacubungula...", + "xh": "Iyaprosesa..." }, "username": { "no": "Brukernavn", @@ -187,7 +197,9 @@ "ro": "Nume de utilizator", "xh": "Igama lomsebenzisi", "af": "Gebruikersnaam", - "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7" + "el": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", + "zu": "Igama lomsebenzisi", + "xh": "Igama lomsebenzisi" }, "organization": { "no": "Organisasjon", @@ -225,7 +237,9 @@ "ro": "Institu\u021bie", "xh": "Umbutho", "af": "Organisasie", - "el": "\u039f\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2" + "el": "\u039f\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", + "zu": "Inhlangano", + "xh": "Umbutho" }, "password": { "no": "Passord", @@ -263,7 +277,9 @@ "ro": "Parola", "xh": "Igama lokugqithisa", "af": "Wagwoord", - "el": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2" + "el": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", + "xh": "Iphaswedi", + "zu": "Iphasiwedi" }, "help_header": { "no": "Hjelp! Jeg har glemt passordet mitt.", @@ -299,7 +315,9 @@ "sr": "Upomo\u0107! Zaboravio\/la sam svoju lozinku.", "ro": "Nu mai \u0219tiu parola.", "af": "Hulp! Ek het nie my wagwoord onthou nie.", - "el": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1! \u0394\u03b5 \u03b8\u03c5\u03bc\u03ac\u03bc\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03bc\u03bf\u03c5." + "el": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1! \u0394\u03b5 \u03b8\u03c5\u03bc\u03ac\u03bc\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03bc\u03bf\u03c5.", + "zu": "Siza! Angiyikhumbuli iphasiwedi yami.", + "xh": "Ncedani! Andiyikhumbuli iphaswedi yam." }, "help_text": { "no": "Synd! - Uten riktig brukernavn og passord kan du ikke autentisere deg. Det kan v\u00e6re noen som kan hjelpe deg. Fors\u00f8k \u00e5 kontakt brukerst\u00f8tte ved din vertsorganisasjon.", @@ -335,7 +353,9 @@ "ro": "Din p\u0103cate f\u0103r\u0103 nume de utilizator \u0219i parol\u0103 nu v\u0103 pute\u021bi autentifica pentru accesul la acest serviciu. Contacta\u021bi echipa de suport tehnic de la universitatea dumneavoastr\u0103.", "eu": "Zeinen txarto! - Zure erabiltziale-izena eta pasahitza gabe ezin zara identifikatu ezta zerbitzuan sartu ere. Agian bada norbait lagun diezazukeena. Jar zaitez harremanetan erakundeko laguntza zentroarekin!", "af": "Jammer! - Sonder jou gebruikersnaam en wagwoord kan jy jouself nie vir toegang tot die diens identifiseer nie. Dalk is daar iemand wat jou kan help. Raadpleeg die hulplyn by jou organisasie!", - "el": "\u039b\u03c5\u03c0\u03bf\u03cd\u03bc\u03b1\u03c3\u03c4\u03b5. \u03a7\u03c9\u03c1\u03af\u03c2 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2, \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1. \u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03b5\u03c5\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd \u0028\u0068\u0065\u006c\u0070 \u0064\u0065\u0073\u006b\u0029 \u03c4\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2." + "el": "\u039b\u03c5\u03c0\u03bf\u03cd\u03bc\u03b1\u03c3\u03c4\u03b5. \u03a7\u03c9\u03c1\u03af\u03c2 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2, \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1. \u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03b5\u03c5\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd \u0028\u0068\u0065\u006c\u0070 \u0064\u0065\u0073\u006b\u0029 \u03c4\u03bf\u03c5 \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2.", + "xh": "Ngaphandle kwegama lomsebenzisi nephaswedi yakho awukwazi ukuzingqinisisa ukuze ufumane ufikelelo kwinkonzo. Kusenokuba ukho umntu onokukunceda. Qhagamshelana nedesika yoncedo kumbutho wakho!", + "zu": "Ngaphandle kwegama lakho lomsebenzisi nephasiwedi awukwazi ukuziqinisekisa ukuze ufinyelele isevisi. Kungase kube khona ozokusiza. Thinta ideski losizo enhlanganweni yakho!" }, "error_nopassword": { "no": "Du kontaktet loginsiden, men passordet ble ikke sendt med. Fors\u00f8k igjen.", @@ -371,7 +391,9 @@ "ro": "A\u021bi trimis informa\u021bii c\u0103tre pagina de autentificare dar din motive necunoscute parola nu a fost trimis\u0103. V\u0103 rug\u0103m s\u0103 \u00eencerca\u021bi din nou.", "eu": "Sarrera orrira zerbait bidali duzu baina, arrazoiren bategatik, pasahitza ez da bidali.Saia zaitez berriro, mesedez.", "af": "Jy het probeer aanmeld maar jou wagwoord is nie verstuur nie, probeer asb. weer.", - "el": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03c3\u03c4\u03ac\u03bb\u03b7. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac." + "el": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03c3\u03c4\u03ac\u03bb\u03b7. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "zu": "Uthumele okuthile ekhasini lokungena, kodwa ngasizathu simbe iphasiwedi ayizange ithunyelwe. Sicela uzame futhi.", + "xh": "Uthumele into kwikhasi lokungena, kodwa ngesizathu esithile iphaswedi ayithunyelwanga. Nceda uzame kwakhona." }, "error_wrongpassword": { "no": "Feil brukernavn eller passord.", @@ -409,7 +431,9 @@ "ro": "Nume de utilizator incorect sau parola incorect\u0103.", "xh": "Awungenanga ngoba igama olisebenzisayo okanye isigqithisi asifakwanga kakuhle.", "af": "Verkeerde gebruikersnaam of wagwoord.", - "el": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03ac\u03b8\u03bf\u03c2." + "el": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03ac\u03b8\u03bf\u03c2.", + "zu": "Igama lomsebenzisi noma iphasiwedi engalungile.", + "xh": "Igama lomsebenzisi okanye iphaswedi engachanekanga." }, "contact_info": { "no": "Kontaktinformasjon:", @@ -444,7 +468,9 @@ "sr": "Kontakt podaci:", "ro": "Informa\u021bii de contact:", "af": "Kontak detail:", - "el": "\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1\u03c2:" + "el": "\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1\u03c2:", + "zu": "Ulwazi lokuxhumana:", + "xh": "Inkcazelo yoqhagamshelwano:" }, "select_home_org": { "no": "Velg vertsorganisasjon", @@ -479,7 +505,9 @@ "ro": "Alege\u021bi institu\u021bia de origine", "eu": "Hautatu zure jatorrizko erakundea", "af": "Kies jou tuisorganisasie", - "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1" + "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1", + "xh": "Khetha umbutho wakho wekhaya", + "zu": "Khetha inhlangano yakho yasekhaya" }, "change_home_org_title": { "no": "Endre din vertsorganisasjon", @@ -514,7 +542,9 @@ "ro": "Modifica\u021bi institu\u021bia de origine", "eu": "Zure jatorrizko erakundea aldatu", "af": "Verander jou tuisorganisasie", - "el": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1" + "el": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1", + "xh": "Tshintsha umbutho wakho wekhaya", + "zu": "Shintsha inhlangano yakho yasekhaya" }, "change_home_org_text": { "no": "Du har valgt <b>%HOMEORG%<\/b> som din vertsorganisasjon. Dersom dette er feil kan du velge en annen.", @@ -549,7 +579,9 @@ "ro": "A\u021bi ales ca institu\u021bie de origine<b>%HOMEORG%<\/b>. Dac\u0103 nu este corect v\u0103 rug\u0103m s\u0103 alege\u021bi alt\u0103 institu\u021bie.", "eu": "<b>%HOMEORG%<\/b> hautatu duzu zure jatorrizko erakunde bezala. Informazio hau okerra bada beste bat hautatu dezakezu.", "af": "Jy het <b>%HOMEORG%<\/b> gekies as jou tuisorganisasie. As dit is verkeerd jy kan 'n ander een te kies.", - "el": "\u0395\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c2 \u03c6\u03bf\u03c1\u03ad\u03b1\u03c2: <b>%HOMEORG%<\/b>." + "el": "\u0395\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c2 \u03c6\u03bf\u03c1\u03ad\u03b1\u03c2: <b>%HOMEORG%<\/b>.", + "zu": "Ukhethe okuthi <b>%HOMEORG%</b> njengenhlangano yakho yasekhaya. Uma lokhu kungalungile ungase ukhethe enye.", + "xh": "Uye wakhetha u-<b>%HOMEORG%</b> njengombutho wakho wekhaya. Ukuba oku akuchanekanga usenokukhetha omnye." }, "change_home_org_button": { "no": "Velg vertsorganisasjon", @@ -584,7 +616,9 @@ "ro": "Alege\u021bi institu\u021bia de origine", "eu": "Jatorrizko erakundea hautatu", "af": "Kies tuisorganisasie", - "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1" + "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bf\u03b9\u03ba\u03b5\u03af\u03bf\u03c5 \u03c6\u03bf\u03c1\u03ad\u03b1", + "xh": "Khetha umbutho wekhaya", + "zu": "Khetha inhlangano yasekhaya" }, "help_desk_link": { "no": "Hjemmesiden til brukerst\u00f8tte", @@ -619,7 +653,9 @@ "ro": "Pagina echipei de suport tehnic", "eu": "Laguntza teknikoaren orria ", "af": "Hulplyn-tuisblad", - "el": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd" + "el": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd", + "zu": "Ikhasi lasekhaya ledeski losizo", + "xh": "Ikhasi lekhaya ledesika yoncedo" }, "help_desk_email": { "no": "Send e-post til brukerst\u00f8tte", @@ -654,7 +690,9 @@ "ro": "Trimite\u021bi un mesaj la echipa de suport tehnic", "eu": "Bidali posta laguntza teknikoari ", "af": "Stuur e-pos aan hulplyn", - "el": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u0065\u006d\u0061\u0069\u006c \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd" + "el": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u0065\u006d\u0061\u0069\u006c \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b1\u03c1\u03c9\u03b3\u03ae\u03c2 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd", + "xh": "Thumela i-imeyile kwidesika yoncedo", + "zu": "Thumela i-imeyili edeskini losizo" }, "next": { "no": "Fortsett", @@ -690,7 +728,9 @@ "eu": "Hurrengoa", "xh": "Olandelayo", "af": "Volgende", - "el": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf" + "el": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", + "xh": "Okulandelayo", + "zu": "Okulandelayo" }, "remember_username": { "es": "Recordar mi nombre de usuario", @@ -701,7 +741,9 @@ "da": "Husk mit brugernavn", "af": "Onthou my gebruikersnaam", "pt-br": "Lembrar meu nome de usu\u00e1rio", - "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "zu": "Khumbula igama lami lomsebenzisi", + "xh": "Khumbula igama lomsebenzisi lam" }, "remember_me": { "es": "Recordarme", @@ -712,6 +754,8 @@ "da": "Husk mig", "af": "Onthou my", "pt-br": "Lembre-me", - "el": "\u039d\u03b1 \u03bc\u03b5 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9" + "el": "\u039d\u03b1 \u03bc\u03b5 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9", + "xh": "Ndikhumbule", + "zu": "Ngikhumbule" } } diff --git a/dictionaries/logout.translation.json b/dictionaries/logout.translation.json index 8cfb40d2a8e01a10861a5bf92f1c8a477a23e437..d17a234a88c2b4bd6b618f7aac4efc2503cfd30c 100644 --- a/dictionaries/logout.translation.json +++ b/dictionaries/logout.translation.json @@ -32,7 +32,9 @@ "ro": "Ie\u0219ire din sistem (deautentificare)", "ru": "\u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434", "af": "Afgemeld", - "el": "\u0391\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2/\u03b7" + "el": "\u0391\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2/\u03b7", + "xh": "Uphumile", + "zu": "Uphume ngemvume" }, "logged_out_text": { "no": "Du er n\u00e5 utlogget.", @@ -67,7 +69,9 @@ "ro": "A\u021bi fost deautentificat", "ru": "\u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "af": "Jy is afgemeld.", - "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af." + "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af.", + "zu": "Usuphumile.", + "xh": "Uphumile." }, "default_link_text": { "no": "G\u00e5 tilbake til SimpleSAMLphp installasjonen sin startside.", @@ -102,7 +106,9 @@ "ru": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 SimpleSAMLphp", "eu": "Itzuli SimpleSAMLphp instalazio orrira ", "af": "Gaan terug na die SimpleSAMLphp installasie bladsy", - "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03c3\u03b5\u03bb\u03af\u03b4\u03b1" + "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", + "xh": "Buyela emva kwikhasi lofakelo le-SimpleSAMLphp", + "zu": "Buyela emuva ekhasini lokufaka le-SimpleSAMLphp" }, "hold": { "no": "P\u00e5 vent", @@ -137,7 +143,9 @@ "ru": "\u0412 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f", "eu": "Itxaroten", "af": "Hou die verbinding", - "el": "\u03a3\u03b5 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae" + "el": "\u03a3\u03b5 \u03b1\u03bd\u03b1\u03bc\u03bf\u03bd\u03ae", + "xh": "Ibanjiwe", + "zu": "Imisiwe" }, "completed": { "no": "Fullf\u00f8rt", @@ -172,7 +180,9 @@ "ru": "\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e", "eu": "Amaitua", "af": "Voltooid", - "el": "\u039f\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5" + "el": "\u039f\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5", + "xh": "Igqityiwe", + "zu": "Kuqedile" }, "progress": { "no": "Logger ut...", @@ -207,7 +217,9 @@ "ro": "Deautentificare ...", "ru": "\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b...", "af": "Besig om af te meld?", - "el": "\u0393\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7..." + "el": "\u0393\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7...", + "zu": "Iyaphuma...", + "xh": "Iyaphuma..." }, "failed": { "no": "Utlogging feilet", @@ -242,7 +254,9 @@ "ru": "\u0412\u044b\u0445\u043e\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", "eu": "Saioa ixteko prozesuak huts egin du", "af": "Afmelding misluk", - "el": "\u0397 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5" + "el": "\u0397 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5", + "xh": "Ukuphuma kusilele", + "zu": "Ukuphuma kuhlulekile" }, "return": { "no": "Tilbake til tjenesten", @@ -277,7 +291,9 @@ "ro": "\u00centoarcere la serviciu", "ru": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043b\u0443\u0436\u0431\u0435", "af": "Terug na diens", - "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1" + "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1", + "xh": "Buyela kwinkonzo", + "zu": "Buyela kusevisi" }, "success": { "no": "Du har nå logget ut fra alle tjenestene listet ovenfor.", @@ -312,7 +328,9 @@ "ru": "\u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435.", "eu": "Hemen adierazten den zerrendako zerbitzu guztietako saioak zuzen itxi dira", "af": "Jy het suksesvol afgemeld.", - "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03cc \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9." + "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03cc \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9.", + "xh": "Uphume ngokuyimpumelelo kuzo zonke iinkonzo ezidweliswe ngasentla.", + "zu": "Uphume ngempumelelo kuwo wonke amasevisi abhalwe ngenhla." }, "loggedoutfrom": { "no": "Du er n\u00e5 logget ut fra %SP%.", @@ -347,7 +365,9 @@ "ru": "\u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u0448\u043b\u0438 \u0438\u0437 \u0441\u043b\u0443\u0436\u0431\u044b %SP%.", "eu": "%SP% saioa zuzen itxi da.", "af": "Jy is suksesvol afgemeld van %SP% af.", - "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 %SP%." + "el": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 %SP%.", + "xh": "Ngoku uphume ngokuyimpumelelo kwi-%SP%.", + "zu": "Usuphume ngempumelelo kokuthi %SP%." }, "also_from": { "no": "Du er ogs\u00e5 logget inn p\u00e5 disse tjenestene:", @@ -382,7 +402,9 @@ "ru": "\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c:", "eu": "Zerbitzu hauetan ere kautotuta zaude:", "af": "Jy is ook by di\u00e9 dienste aangemeld:", - "el": "\u0395\u03af\u03c3\u03c4\u03b5 \u03b5\u03c0\u03af\u03c3\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2:" + "el": "\u0395\u03af\u03c3\u03c4\u03b5 \u03b5\u03c0\u03af\u03c3\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ad\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2:", + "zu": "Ungenile futhi kulawa masevisi:", + "xh": "Kananjalo ungene kwezi nkonzo:" }, "logout_all_question": { "no": "Vil du logge ut fra alle tjenestene ovenfor?", @@ -417,7 +439,9 @@ "ro": "Dori\u021bi s\u0103 v\u0103 deautentifica\u021bi de la toate serviciile de mai sus ?", "ru": "\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435?", "af": "Wil jy van alle bogenoemde dienste afmeld?", - "el": "\u0395\u03c0\u03b9\u03b8\u03c5\u03bc\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b1\u03c0\u03cc \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2\u003b" + "el": "\u0395\u03c0\u03b9\u03b8\u03c5\u03bc\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b1\u03c0\u03cc \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b1\u03c0\u03ac\u03bd\u03c9 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2\u003b", + "xh": "Ngaba ufuna ukuphuma kuzo zonke iinkonzo ezingasentla?", + "zu": "Ingabe ufuna ukuphuma kuwo wonke amasevisi angenhla?" }, "logout_all": { "no": "Ja, alle tjenestene over", @@ -452,7 +476,9 @@ "ro": "Da, toate serviciile", "ru": "\u0414\u0430, \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0436\u0431", "af": "Ja, alle dienste", - "el": "\u039d\u03b1\u03b9, \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2" + "el": "\u039d\u03b1\u03b9, \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", + "zu": "Yebo, wonke amasevisi", + "xh": "Ewe, zonke iinkonzo" }, "logout_only": { "no": "Nei, bare %SP%", @@ -487,7 +513,9 @@ "ro": "Nu, doar %SP%", "ru": "\u041d\u0435\u0442, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0431\u044b %SP%", "af": "Nee, net %SP%", - "el": "\u038c\u03c7\u03b9, \u03bc\u03cc\u03bd\u03bf \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 %SP%" + "el": "\u038c\u03c7\u03b9, \u03bc\u03cc\u03bd\u03bf \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 %SP%", + "zu": "Cha, ku-%SP% kuphela", + "xh": "Hayi, kuphela %SP%" }, "incapablesps": { "no": "En eller flere av tjenestene du er logget inn p\u00e5 <i>st\u00f8tter ikke logout<\/i>. Lukk nettleseren, dersom du \u00f8nsker \u00e5 logge ut fra disse tjenestene.", @@ -522,7 +550,9 @@ "ru": "\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b, <i>\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/i>. \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u0441\u0441\u0438\u0439, <i>\u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440<\/i>.", "eu": "Kautotuta zauden zerbitzu bat edo batzuk <i>ez dute uzten saioa ixten<\/i>. Zure saio guztiak ixten direla ziurtatzeko, <i>zure nabigatzaileko leiho guztiak ixtea<\/i> gomendatzen da.", "af": "Een of meerdere dienste waarby jy aangemeld het, <i>ondersteun nie afmelding nie<\/i>. Om seker te wees datal jou sessies afgesluit word, is dit beter om jou <i>webblaaier toe te maak<\/i>.", - "el": "\u039c\u03af\u03b1 \u03ae \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03bf\u03c0\u03bf\u03af\u03b5\u03c2 \u03b5\u03af\u03c3\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2\u002f\u03b7 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03bf\u03c5\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u002e \u0393\u03b9\u03b1 \u03c4\u03bf \u03ba\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03b9\u03ce\u03bd \u03c3\u03b1\u03c2 (sessions), \u03c3\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 <i>\u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5<\/i> \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 (web browser)." + "el": "\u039c\u03af\u03b1 \u03ae \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03bf\u03c0\u03bf\u03af\u03b5\u03c2 \u03b5\u03af\u03c3\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c2\u002f\u03b7 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03bf\u03c5\u03bd \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u002e \u0393\u03b9\u03b1 \u03c4\u03bf \u03ba\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03b9\u03ce\u03bd \u03c3\u03b1\u03c2 (sessions), \u03c3\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 <i>\u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5<\/i> \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 (web browser).", + "zu": "Isevisi eyodwa noma ngaphezulu ongene kuyo <i>ayikusekeli ukuphuma</i>. Ukuze wenze isiqiniseko sokuthi wonke amaseshini akho avaliwe, ukhuthazwa ukuthi <i>uvale isiphequluli sakho sewebhu</i>.", + "xh": "Inkonzo enye okanye ezingakumbi ongeneyo kuzo <i>azikuxhasi ukuphuma</i>. Ukuqinisekisa zonke iiseshoni zakho zivaliwe, ukhuthazwa <i>uvale ibhrawuza yewebhu</i>." }, "no": { "no": "Nei", @@ -557,7 +587,9 @@ "ro": "Nu", "ru": "\u041d\u0435\u0442", "af": "Nee", - "el": "\u038c\u03c7\u03b9" + "el": "\u038c\u03c7\u03b9", + "xh": "Hayi", + "zu": "Cha" }, "logging_out_from": { "sl": "Odjava iz naslednjih storitev:", @@ -591,7 +623,9 @@ "eu": "Honako zerbitzu hauen saioak itxi:", "fi": "Kirjaudutaan ulos seuraavista palveluista:", "af": "Afmelding van die volgende dienste:", - "el": "Γίνεται αποĎύνδεĎη από τις ακόλουθες υπηĎεĎίες:" + "el": "Γίνεται αποĎύνδεĎη από τις ακόλουθες υπηĎεĎίες:", + "zu": "Iyaphuma kumasevisi alandelayo:", + "xh": "Iphuma kwezi nkonzo zilandelayo:" }, "failedsps": { "sl": "Odjava z ene ali ve\u010d storitev ni uspela. Odjavo dokon\u010dajte tako, da <i>zaprete spletni brskalnik<\/i>.", @@ -624,6 +658,8 @@ "eu": "Ezinezkoa da zerbitzu bat edo batzuen saioak ixtea. Zure saio guztiak itxi direla ziurtatzeko, <i>zure web nabigatzailea ixtea<\/i> gomendatzen da. ", "fi": "Uloskirjautuminen yhdest\u00e4 tai useammasta palvelusta ep\u00e4onnistui. <i>Sulje web-selaimesi<\/i> varmistaaksesi, ett\u00e4 kaikki istuntosi sulkeutuvat.", "af": "Dit was nie moontlik om van een of meer dienste af te meld nie. Om seker te wees dat al jou sessies afgesluit word, is dit beter om jou <i>webblaaier toe te maak<\/i>.", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03cc \u03bc\u03af\u03b1 \u03ae \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2\u002e \u0393\u03b9\u03b1 \u03c4\u03bf \u03ba\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03b9\u03ce\u03bd \u03c3\u03b1\u03c2 (sessions), \u03c3\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 <i>\u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5<\/i> \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 (web browser)." + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b1\u03c0\u03cc \u03bc\u03af\u03b1 \u03ae \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2\u002e \u0393\u03b9\u03b1 \u03c4\u03bf \u03ba\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03b9\u03ce\u03bd \u03c3\u03b1\u03c2 (sessions), \u03c3\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 <i>\u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5<\/i> \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 (web browser).", + "xh": "Awukwazi ukuphuma kwinkonzo enye okanye ezingakumbi. Ukuqinisekisa zonke iiseshoni zakho zivaliwe, ukhuthazwa <i>uvale ibhrawuza yewebhu</i>.", + "zu": "Ayikwazi ukuphuma kusevisi eyodwa noma ngaphezulu. Ukuze wenze isiqiniseko sokuthi wonke amaseshini akho avaliwe, ukhuthazwa ukuthi <i>uvale isiphequluli sakho sewebhu</i>." } } diff --git a/dictionaries/status.translation.json b/dictionaries/status.translation.json index a78f1e1e460a55fcea2d12424f68d185ee999e92..8131661d8551ad56ba3a44ba3ddaccb79513e8c3 100644 --- a/dictionaries/status.translation.json +++ b/dictionaries/status.translation.json @@ -31,7 +31,9 @@ "sr": "SAML 2.0 SP Demo Primer", "ro": "Exemplu demonstrativ de furnizor de servicii SAML 2.0", "ru": "\u0414\u0435\u043c\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 SAML 2.0 SP", - "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd SAML 2.0" + "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd SAML 2.0", + "zu": "Isampula Ledemo Ye-SAML 2.0 SP", + "xh": "Umzekelo weDemo we-SAML 2.0 SP" }, "header_shib": { "no": "Shibboleth Demo", @@ -65,7 +67,9 @@ "sr": "Shibboleth Demo", "ro": "Demo Shibboleth", "ru": "Shibboleth \u0434\u0435\u043c\u043e", - "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd Shibboleth" + "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd Shibboleth", + "xh": "Idemo ye-Shibboleth", + "zu": "Idemo ye-Shibboleth" }, "header_wsfed": { "no": "WS-Fed SP Demo Eksempel", @@ -99,7 +103,9 @@ "sr": "WS-Fed SP Demo Primer", "ro": "Exemplu demonstrativ de WS-Fed", "ru": "\u0414\u0435\u043c\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 WS-Fed SP", - "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd WS-Fed" + "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03b1\u03c1\u03bf\u03c7\u03ad\u03b1\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd WS-Fed", + "zu": "Isibonelo Sedemo ye-WS-Fed SP", + "xh": "Umzekelo weDemo we-WS-Fed SP" }, "header_diagnostics": { "no": "SimpleSAMLphp diagnostikk", @@ -133,7 +139,9 @@ "sr": "SimpleSAMLphp Dijagnostika", "ro": "Diagnostic SimpleSAMLphp", "ru": "\u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 SimpleSAMLphp", - "el": "\u0394\u03b9\u03b1\u03b3\u03bd\u03c9\u03c3\u03c4\u03b9\u03ba\u03ac SimpleSAMLphp" + "el": "\u0394\u03b9\u03b1\u03b3\u03bd\u03c9\u03c3\u03c4\u03b9\u03ba\u03ac SimpleSAMLphp", + "zu": "Ukuhlonzwa Kwe-SimpleSAMLphp", + "xh": "Uhlalutyo lwe-SimpleSAMLphp" }, "some_error_occurred": { "no": "En feil har oppst\u00e5tt", @@ -167,7 +175,9 @@ "sr": "Desila se gre\u0161ka", "ro": "A ap\u0103rut o eroare", "ru": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430", - "el": "\u03a3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1" + "el": "\u03a3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1", + "zu": "Kuvele iphutha elithile", + "xh": "Kwenzeke impazamo ethile" }, "intro": { "no": "Hei, dette er en statusside p\u00e5 SimpleSAMLphp. Her kan du se om sesjonen din er timet ut, hvor lenge det er til den timer ut og attributter som er knyttet til din sesjon.", @@ -201,7 +211,9 @@ "ro": "Aceasta este pagina de stare pentru SimpleSAMLphp. Aici pute\u021bi verifica dac\u0103 sesiunea dumneavoastr\u0103 a expirat, c\u00e2t timp mai este p\u00e2n\u0103 la expirarea sesiunii precum \u0219i toate atributele ata\u0219ate sesiunii dumneavoastr\u0103.", "ru": "\u042d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c SimpleSAMLphp. \u041c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u0438 \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0432\u0441\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438.", "eu": "Kaixo, hau SimpleSAMLphp-ren egoera orria da. Hemendik ikus dezakezu zure saioa iraungi den, zenbat denbora geratzen den hau gerta dadin eta zure saioan dauden atributu guztiak.", - "el": "\u03a7\u03b1\u03af\u03c1\u03b5\u03c4\u03b5, \u03b1\u03c5\u03c4\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03b4\u03ce \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b5\u03af\u03c4\u03b5 \u03b1\u03bd \u03b7 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03c3\u03b1\u03c2 \u0028\u0073\u0065\u0073\u0073\u0069\u006f\u006e\u0029 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9\u002c \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03b9\u03b1\u03c1\u03ba\u03b5\u03af \u03ad\u03c9\u03c2 \u03cc\u03c4\u03bf\u03c5 \u03bb\u03ae\u03be\u03b5\u03b9\u002c \u03ba\u03b1\u03b8\u03ce\u03c2 \u03ba\u03b1\u03b9 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03c4\u03b7 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03c3\u03b1\u03c2." + "el": "\u03a7\u03b1\u03af\u03c1\u03b5\u03c4\u03b5, \u03b1\u03c5\u03c4\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 SimpleSAMLphp. \u0395\u03b4\u03ce \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b5\u03af\u03c4\u03b5 \u03b1\u03bd \u03b7 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03c3\u03b1\u03c2 \u0028\u0073\u0065\u0073\u0073\u0069\u006f\u006e\u0029 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9\u002c \u03c4\u03bf \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03b9\u03b1\u03c1\u03ba\u03b5\u03af \u03ad\u03c9\u03c2 \u03cc\u03c4\u03bf\u03c5 \u03bb\u03ae\u03be\u03b5\u03b9\u002c \u03ba\u03b1\u03b8\u03ce\u03c2 \u03ba\u03b1\u03b9 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03c4\u03b7 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03c3\u03b1\u03c2.", + "zu": "Sawubona, leli ikhasi lesimo se-SimpleSAMLphp. Lapha ungakwazi ukubona ukuthi iseshini yakho iphelelwe isikhathi yini, ukuthi ihlala isikhathi eside kangakanani ngaphambi kokuthi iphelelwe isikhathi kanye nazo zonke izici ezihambisana neseshini yakho.", + "xh": "Molo, eli likhasi lobume be-SimpleSAMLphp. Apha ungabona ukuba ngaba iseshoni yakho iphelelwe lixesha, iza kuhlala ixesha elide kangakanani ngaphambi kokuba iphelelwe nazo zonke iimpawu ezincanyathiselweyo kwiseshoni yakho." }, "validfor": { "no": "Din sesjon er gyldig i %SECONDS% sekunder fra n\u00e5.", @@ -235,7 +247,9 @@ "ro": "Sesiunea dumneavoastr\u0103 mai este valid\u0103 \u00eenc\u0103 %SECONDS%.", "ru": "\u0412\u0430\u0448\u0430 \u0441\u0435\u0441\u0441\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 %SECONDS% \u0441\u0435\u043a\u0443\u043d\u0434.", "eu": "Zure saioa %SECONDS% segundoz izango da baliagarri.", - "el": "\u0391\u03c0\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5\u03bd %SECONDS% \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c4\u03b7 \u03bb\u03ae\u03be\u03b7 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2." + "el": "\u0391\u03c0\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5\u03bd %SECONDS% \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c4\u03b7 \u03bb\u03ae\u03be\u03b7 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2.", + "xh": "Iseshoni yakho iza kusebenza kangangemizuzu e-%SECONDS% ukususela ngoku.", + "zu": "Iseshini yakho isebenza imizuzwana engu-%SECONDS% ukusuka manje." }, "sessionsize": { "no": "Sesjons st\u00f8rrelse: %SIZE%", @@ -269,7 +283,9 @@ "id": "Ukuran session: %SIZE%", "sr": "Veli\u010dina sesije: %SIZE%", "ro": "Dimensiunea sesiunii: %SIZE%", - "el": "\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2: %SIZE%" + "el": "\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2: %SIZE%", + "xh": "Ubukhulu beseshoni: %SIZE%", + "zu": "Usayizi weseshini: %SIZE%" }, "attributes_header": { "no": "Dine attributter", @@ -303,7 +319,9 @@ "id": "Attribut Anda", "sr": "Va\u0161i atributi", "ro": "Atributele dumneavoastr\u0103", - "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2" + "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2", + "zu": "Izici zakho", + "xh": "Iimpawu zakho" }, "logout": { "no": "Logg ut", @@ -337,7 +355,9 @@ "id": "Logout", "sr": "Odjava", "ro": "Deautentificare", - "el": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7" + "el": "\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7", + "xh": "Phuma", + "zu": "Phuma" }, "subject_header": { "es": "Identificador SAML", @@ -345,7 +365,9 @@ "zh-tw": "SAML \u4e3b\u984c", "nl": "SAML Subject", "da": "SAML emne", - "el": "\u03a5\u03c0\u03bf\u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf (subject) SAML" + "el": "\u03a5\u03c0\u03bf\u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf (subject) SAML", + "zu": "Isihloko Se-SAML", + "xh": "Umbandela we-SAML" }, "subject_notset": { "es": "sin valor", @@ -353,7 +375,9 @@ "zh-tw": "\u672a\u8a2d\u5b9a", "nl": "niet aanwezig", "da": "ikke angivet", - "el": "\u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af" + "el": "\u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af", + "xh": "ayikasetwa", + "zu": "akusethiwe" }, "subject_format": { "es": "Formato", @@ -361,6 +385,16 @@ "zh-tw": "\u683c\u5f0f", "nl": "Formaat", "da": "Format", - "el": "\u039c\u03bf\u03c1\u03c6\u03ae (format)" + "el": "\u039c\u03bf\u03c1\u03c6\u03ae (format)", + "zu": "Ifomethi", + "xh": "Ufomatho" + }, + "authData_header": { + "xh": "Ungqinisiso lweNgcombolo", + "zu": "I-AuthData" + }, + "authData_summary": { + "xh": "Cofa ukuze ubone uNgqinisiso lweNgcombolo", + "zu": "Qhafaza ukuze ubuke i-AuthData" } } diff --git a/docs/index.md b/docs/index.md index e9e48e3691d31631680f87500cb2169ca6711ec7..c7df4fe4c5a74be5e098793e0c0d077e6c55239d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,6 +2,7 @@ SimpleSAMLphp Documentation =========================== * [Installing SimpleSAMLphp](simplesamlphp-install) + * [Upgrade notes for version 1.17](simplesamlphp-upgrade-notes-1.17) * [Upgrade notes for version 1.16](simplesamlphp-upgrade-notes-1.16) * [Upgrade notes for version 1.15](simplesamlphp-upgrade-notes-1.15) * [Upgrade notes for version 1.14](simplesamlphp-upgrade-notes-1.14) @@ -19,7 +20,6 @@ SimpleSAMLphp Documentation * [Using SimpleSAMLphp as a SAML Service Provider](simplesamlphp-sp) * [Hosted SP Configuration Reference](./saml:sp) * [IdP remote reference](simplesamlphp-reference-idp-remote) - * [Upgrading - migration to use the SAML authentication source](simplesamlphp-sp-migration) * [Configuring HTTP-Artifact](./simplesamlphp-artifact-sp) * [Using scoping](./simplesamlphp-scoping) * [Holder-of-Key profile](simplesamlphp-hok-sp) diff --git a/docs/simplesamlphp-advancedfeatures.md b/docs/simplesamlphp-advancedfeatures.md index adb7c2486569474a69930c1dc1117b1b3de6fbfc..a1ee444dd36a5da77d1f6e681b21999a94ec7cad 100644 --- a/docs/simplesamlphp-advancedfeatures.md +++ b/docs/simplesamlphp-advancedfeatures.md @@ -41,9 +41,9 @@ In `metadata/saml20-idp-hosted.php`: In `config/authsources.php`: - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', - ), + ], diff --git a/docs/simplesamlphp-artifact-idp.md b/docs/simplesamlphp-artifact-idp.md index b07985a854b40c7c43f40351b702ac3aee88976e..fcbf0079d1f36c43bf1bca98cbd1d547cabe747b 100644 --- a/docs/simplesamlphp-artifact-idp.md +++ b/docs/simplesamlphp-artifact-idp.md @@ -35,11 +35,11 @@ Enabling artifact on the IdP To enable the IdP to send artifacts, you must add the `saml20.sendartifact` option to the `saml20-idp-hosted` metadata file: - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ [....] 'auth' => 'example-userpass', 'saml20.sendartifact' => TRUE, - ); + ]; Add new metadata to SPs @@ -49,13 +49,13 @@ After enabling the Artifact binding, your IdP metadata will change to add a Arti You therefore need to update the metadata for your IdP at your SPs. `saml20-idp-remote` metadata for SimpleSAMLphp SPs should contain something like: - 'ArtifactResolutionService' => array( - array( + 'ArtifactResolutionService' => [ + [ 'index' => 0, 'Location' => 'https://idp.example.org/simplesaml/saml2/idp/ArtifactResolutionService.php', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP', - ), - ), + ], + ], SP metadata on the IdP @@ -66,16 +66,16 @@ This means that you must use the complex endpoint format in `saml20-sp-remote` m In general, that should look something like: 'AssertionConsumerService' => array ( - array( + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'index' => 0, - ), - array( + ], + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'index' => 2, - ), + ], ), (The specific values of the various fields will vary depending on the SP.) @@ -89,9 +89,9 @@ You may therefore have to add the webserver certificate to the metadata that you To do this, you need to set the `https.certificate` option in the `saml20-idp-hosted` metadata file. That option should refer to a file containing the webserver certificate. - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ [....] 'auth' => 'example-userpass', 'saml20.sendartifact' => TRUE, 'https.certificate' => '/etc/apache2/webserver.crt', - ); + ]; diff --git a/docs/simplesamlphp-artifact-sp.md b/docs/simplesamlphp-artifact-sp.md index 6b18119ce8ab464b71959fee98c0a88d26f4a2cf..7571454e611061fcfde9e06300d3282b47b10357 100644 --- a/docs/simplesamlphp-artifact-sp.md +++ b/docs/simplesamlphp-artifact-sp.md @@ -19,11 +19,11 @@ When this is done, you can add the metadata of your SP to the IdP, and test the Example configuration --------------------- - 'artifact-sp' => array( + 'artifact-sp' => [ 'saml:SP', 'ProtocolBinding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'privatekey' => 'sp.example.org.pem', 'certificate' => 'sp.example.org.crt', - ), + ], See the [SP configuration reference](./saml:sp) for a description of the options. diff --git a/docs/simplesamlphp-authproc.md b/docs/simplesamlphp-authproc.md index f97086b3adddc65bfbc6500d2fafa4699588a5fd..d66762e4bb0487265cb13bed7b220c564d001348 100644 --- a/docs/simplesamlphp-authproc.md +++ b/docs/simplesamlphp-authproc.md @@ -44,20 +44,20 @@ How to configure Auth Proc Filters The configuration of *Auth Proc Filters* is a list of filters with priority as *index*. Here is an example of *Auth Proc Filters* configured in `config.php`: - 'authproc.idp' => array( - 10 => array( + 'authproc.idp' => [ + 10 => [ 'class' => 'core:AttributeMap', 'addurnprefix' - ), + ], 20 => 'core:TargetedID', 50 => 'core:AttributeLimit', - 90 => array( + 90 => [ 'class' => 'consent:Consent', 'store' => 'consent:Cookie', 'focus' => 'yes', 'checked' => TRUE - ), - ), + ], + ], This configuration will execute *Auth Proc Filters* one by one, with the priority value in increasing order. When *Auth Proc Filters* is configured in multiple places, in example both globally, in the hosted IdP and remote SP metadata, then the list is interleaved sorted by priority. @@ -73,18 +73,18 @@ When you know the class definition of a filter, and the priority, the simple way This is analogous to: - 20 => array( + 20 => [ 'class' => 'core:TargetedID' - ), + ], Some *Auth Proc Filters* have optional or required *parameters*. To send parameters to *Auth Proc Filters*, you need to choose the second of the two alernatives above. Here is an example of provided parameters to the consent module: - 90 => array( + 90 => [ 'class' => 'consent:Consent', 'store' => 'consent:Cookie', 'focus' => 'yes', 'checked' => TRUE - ), + ], ### Filters in `config.php` @@ -105,15 +105,15 @@ The filters in `authproc.sp` will be executed at the SP side regardless of which Filters can be added both in `hosted` and `remote` metadata. Here is an example of a filter added in a metadata file: - '__DYNAMIC:1__' => array( + '__DYNAMIC:1__' => [ 'host' => '__DEFAULT_', 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', 'auth' => 'feide', - 'authproc' => array( + 'authproc' => [ 40 => 'preprodwarning:Warning', - ), - ) + ], + ] The example above is in `saml20-idp-hosted`. diff --git a/docs/simplesamlphp-automated_metadata.md b/docs/simplesamlphp-automated_metadata.md index 54eba451099d4108c77a6968d694e109f400116a..cc40de2ceb6f5367dc6edf95b91e5462f0d40ddd 100644 --- a/docs/simplesamlphp-automated_metadata.md +++ b/docs/simplesamlphp-automated_metadata.md @@ -68,43 +68,43 @@ Now we are going to proceed to configure the metarefresh module. First, edit the Here's an example of a possible configuration for both the Kalmar Federation and UK Access Management Federation: - $config = array( - 'sets' => array( - 'kalmar' => array( - 'cron' => array('hourly'), - 'sources' => array( - array( + $config = [ + 'sets' => [ + 'kalmar' => [ + 'cron' => ['hourly'], + 'sources' => [ + [ 'src' => 'https://kalmar.feide.no/simplesaml/module.php/aggregator/?id=kalmarcentral&mimetype=text/plain&exclude=norway', - 'certificates' => array( + 'certificates' => [ 'current.crt', 'rollover.crt', - ), - 'template' => array( - 'tags' => array('kalmar'), - 'authproc' => array( - 51 => array('class' => 'core:AttributeMap', 'oid2name'), - ), - ), - ), - ), + ], + 'template' => [ + 'tags' => ['kalmar'], + 'authproc' => [ + 51 => ['class' => 'core:AttributeMap', 'oid2name'], + ], + ], + ], + ], 'expireAfter' => 60*60*24*4, // Maximum 4 days cache time. 'outputDir' => 'metadata/metarefresh-kalmar/', 'outputFormat' => 'flatfile', - ), - 'uk' => array( - 'cron' => array('hourly'), - 'sources' => array( - array( + ], + 'uk' => [ + 'cron' => ['hourly'], + 'sources' => [ + [ 'src' => 'http://metadata.ukfederation.org.uk/ukfederation-metadata.xml', 'validateFingerprint' => 'D0:E8:40:25:F0:B1:2A:CC:74:22:ED:C3:87:04:BC:29:BB:7B:9A:40', - ), - ), + ], + ], 'expireAfter' => 60*60*24*4, // Maximum 4 days cache time. 'outputDir' => 'metadata/metarefresh-ukaccess/', 'outputFormat' => 'serialize', - ), - ) - ); + ], + ] + ]; The configuration consists of one or more metadata sets. Each metadata set has its own configuration, representing a metadata set of sources. @@ -180,11 +180,11 @@ web-server write access to the output directories. Following the previous exampl Now you can configure SimpleSAMLphp to use the metadata fetched by metarefresh. Edit the main config.php file, and modify the `metadata.sources` directive accordingly: - 'metadata.sources' => array( - array('type' => 'flatfile'), - array('type' => 'flatfile', 'directory' => 'metadata/metarefresh-kalmar'), - array('type' => 'serialize', 'directory' => 'metadata/metarefresh-ukaccess'), - ), + 'metadata.sources' => [ + ['type' => 'flatfile'], + ['type' => 'flatfile', 'directory' => 'metadata/metarefresh-kalmar'], + ['type' => 'serialize', 'directory' => 'metadata/metarefresh-ukaccess'], + ], Remember that the `type` parameter here must match the `outputFormat` in the configuration of the module. diff --git a/docs/simplesamlphp-changelog.md b/docs/simplesamlphp-changelog.md index 84e0b5d84366090ddde36b4ef78a5d9261100ac5..2ad95b068674abe74049244ddb8b902f423748d5 100644 --- a/docs/simplesamlphp-changelog.md +++ b/docs/simplesamlphp-changelog.md @@ -6,10 +6,57 @@ SimpleSAMLphp changelog This document lists the changes between versions of SimpleSAMLphp. See the upgrade notes for specific information about upgrading. -## Version 1.16.0 +## Version 1.17.0 Released TBD +### Changes + * Minimum required PHP version is now 5.5. + Fixed compatibility with PHP 7.3. + * Introduce new UI based on Twig templates. + The new templates co-exist next to the old ones. + * SimpleSAMLphp can now be used with applications that use Twig 2. + * Update configuration templates and documentation to PHP + short array syntax. + * All clases moved to namespaces and reformatted code to PSR-2. + * Many code cleanups. + +### consent + * Module is now disabled by default. + +### core + * Allow `core:PHP` to manipulate all of the state. + * IdP initiated login: add compatibility with Shibboleth parameters. + +### saml + * Add initial support for SAML Subject Id Attributes. + * Allow to specify multiple supported NameIdFormats in IdP hosted and + SP remote metadata. + +## Version 1.16.2 + +Released 2018-09-28 + + * Fixed an issue with PHP sessions in PHP 7.2. + * Fixed a bug in the OAuth module. + * Make schema validation work again. + * Properly document the `saml:AuthnContextClassRef` authentication processing filter. + * Fixed an issue that made it impossible to install the software with composer using the + "stable" minimum-stability setting. + * Changed the default authentication context class to "PasswordProtectedTransport" by default + when authentication happened on an HTTPS exchange. + +## Version 1.16.1 + +Released 2018-09-07 + + * Fix a bug preventing the consent page from showing. + * Add Catalan to the list of available languages. + +## Version 1.16.0 + +Released 2018-09-06 + ### Changes * Default signature algorithm is now RSA-SHA256. * Renamed class `SimpleSAML_Error_BadUserInnput` to `SimpleSAML_Error_BadUserInput` @@ -265,6 +312,14 @@ Released 2017-11-20 * Make sure we log the user out before reauthenticating. * More robust handling of IDPList support in proxy mode. * Increased `_authSource` field length in Logout Store. + * We now send the eduPersonTargetedID attribute in the correct + NameID XML form, instead of the incorrect simple string. We will also + refuse to parse an assertion with an eduPersonTargetedID in 'string' format. + * Receiving an eduPersonTargetedID in string form will no longer break + parsing of the assertion. + * Can disable the Scoping element in SP and remote IdP configuration with the + `disable_scoping` option, for compatibility with ADFS which does not accept + the element. ### `smartattributes` * Fix SmartName authproc that failed to load. diff --git a/docs/simplesamlphp-customauth.md b/docs/simplesamlphp-customauth.md index a11a3e5ce38090bcc06200c943396e34bcd80232..ac9b04e2456248c8ab91e7667136b500b1ee069c 100644 --- a/docs/simplesamlphp-customauth.md +++ b/docs/simplesamlphp-customauth.md @@ -45,11 +45,11 @@ Create the file `modules/mymodule/lib/Auth/Source/MyAuth.php` with the following if ($username !== 'theusername' || $password !== 'thepassword') { throw new \SimpleSAML\Error\Error('WRONGUSERPASS'); } - return array( - 'uid' => array('theusername'), - 'displayName' => array('Some Random User'), - 'eduPersonAffiliation' => array('member', 'employee'), - ); + return [ + 'uid' => ['theusername'], + 'displayName' => ['Some Random User'], + 'eduPersonAffiliation' => ['member', 'employee'], + ]; } } @@ -78,19 +78,19 @@ Before we can test our authentication source, we must add an entry for it in `co The entry looks like this: - 'myauthinstance' => array( + 'myauthinstance' => [ 'mymodule:MyAuth', - ), + ], You can add it to the beginning of the list, so that the file looks something like this: <?php - $config = array( - 'myauthinstance' => array( + $config = [ + 'myauthinstance' => [ 'mymodule:MyAuth', - ), + ], /* Other authentication sources follow. */ - ); + ]; `myauthinstance` is the name of this instance of the authentication source. (You are allowed to have multiple instances of an authentication source with different configuration.) @@ -124,7 +124,7 @@ In that file you should locate the `auth`-option for your IdP, and change it to <?php /* ... */ - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ /* ... */ /* * Authentication source to use. Must be one that is configured in @@ -132,7 +132,7 @@ In that file you should locate the `auth`-option for your IdP, and change it to */ 'auth' => 'myauthinstance', /* ... */ - ); + ]; You can then test logging in to the IdP. If you have logged in previously, you may need to log out first. @@ -189,22 +189,22 @@ The complete class file should look like this: if ($username !== $this->username || $password !== $this->password) { throw new \SimpleSAML\Error\Error('WRONGUSERPASS'); } - return array( - 'uid' => array($this->username), - 'displayName' => array('Some Random User'), - 'eduPersonAffiliation' => array('member', 'employee'), - ); + return [ + 'uid' => [$this->username], + 'displayName' => ['Some Random User'], + 'eduPersonAffiliation' => ['member', 'employee'], + ]; } } We can then update our entry in `config/authsources.php` with the configuration options: - 'myauthinstance' => array( + 'myauthinstance' => [ 'mymodule:MyAuth', 'username' => 'theconfigusername', 'password' => 'theconfigpassword', - ), + ], Next, you should go to the "Test configured authentication sources" page again, and test logging in. Note that we have updated the username & password to "theconfigusername" and "theconfigpassword". @@ -314,7 +314,7 @@ The class follows: */ $st = $db->prepare('SELECT username, password_hash, full_name FROM userdb WHERE username=:username'); - if (!$st->execute(array('username' => $username))) { + if (!$st->execute(['username' => $username])) { throw new Exception('Failed to query database for user.'); } @@ -334,11 +334,11 @@ The class follows: } /* Create the attribute array of the user. */ - $attributes = array( - 'uid' => array($username), - 'displayName' => array($row['full_name']), - 'eduPersonAffiliation' => array('member', 'employee'), - ); + $attributes = [ + 'uid' => [$username], + 'displayName' => [$row['full_name']], + 'eduPersonAffiliation' => ['member', 'employee'], + ]; /* Return the attributes. */ return $attributes; @@ -348,10 +348,10 @@ The class follows: And configured in `config/authsources.php`: - 'myauthinstance' => array( + 'myauthinstance' => [ 'mymodule:MyAuth', 'dsn' => 'mysql:host=sql.example.org;dbname=userdatabase', 'username' => 'db_username', 'password' => 'secret_db_password', - ), + ], diff --git a/docs/simplesamlphp-database.md b/docs/simplesamlphp-database.md index 01fbd5d9421491514722d9295c8780572f8b1b53..b9a797a00b2bcf5fc3fec803d0aaab577e1e5ad9 100644 --- a/docs/simplesamlphp-database.md +++ b/docs/simplesamlphp-database.md @@ -47,20 +47,20 @@ Since the database class allows administrators to configure master and slave dat The write function takes 2 parameters: SQL, params. $table = $db->applyPrefix("test"); - $values = array( + $values = [ 'id' => 20, 'data' => 'Some data', - ); + ]; $query = $db->write("INSERT INTO $table (id, data) VALUES (:id, :data)", $values); The values specified in the $values array will be bound to the placeholders and will be executed on the master. By default, values are binded as PDO::PARAM_STR. If you need to override this, you can specify it in the values array. $table = $db->applyPrefix("test"); - $values = array( - 'id' => array(20, PDO::PARAM_INT), + $values = [ + 'id' => [20, PDO::PARAM_INT], 'data' => 'Some data', - ); + ]; $query = $db->write("INSERT INTO $table (id, data) VALUES (:id, :data)", $values); @@ -75,17 +75,17 @@ Since the database class allows administrators to configure master and slave dat The read function takes 2 parameters: SQL, params. $table = $db->applyPrefix("test"); - $values = array( + $values = [ 'id' => 20, - ); + ]; $query = $db->read("SELECT * FROM $table WHERE id = :id", $values); The values specified in the $values array will be bound to the placeholders and will be executed on the selected slave. By default, values are binded as PDO::PARAM_STR. If you need to override this, you can specify it in the values array. $table = $db->applyPrefix("test"); - $values = array( - 'id' => array(20, PDO::PARAM_INT), - ); + $values = [ + 'id' => [20, PDO::PARAM_INT], + ]; $query = $db->read("SELECT * FROM $table WHERE id = :id", $values); diff --git a/docs/simplesamlphp-ecp-idp.md b/docs/simplesamlphp-ecp-idp.md index 28ac7f90a125dc2b14c1915cfa46755d82009453..566df182d610f989b349ee5a74aa4631d5ff3f3d 100644 --- a/docs/simplesamlphp-ecp-idp.md +++ b/docs/simplesamlphp-ecp-idp.md @@ -19,11 +19,11 @@ Enabling ECP Profile on the IdP To enable the IdP to send ECP assertions you must add the `saml20.ecp` option to the `saml20-idp-hosted` metadata file: - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ [....] 'auth' => 'example-userpass', 'saml20.ecp' => true, - ); + ]; Note: authentication filters that require interaction with the user will not work with ECP. diff --git a/docs/simplesamlphp-errorhandling.md b/docs/simplesamlphp-errorhandling.md index 1c9c8097c824cc265c0e7e9c6acd12cfc268b955..f7251550b6ccc801c6d7ed25c504217099b2b4fb 100644 --- a/docs/simplesamlphp-errorhandling.md +++ b/docs/simplesamlphp-errorhandling.md @@ -205,11 +205,11 @@ The code for handling this becomes something like: $procChain = [...]; - $state = array( + $state = [ 'ReturnURL' => \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), \SimpleSAML\Auth\State::EXCEPTION_HANDLER_URL => \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), [...], - ) + ] try { $procChain->processState($state); diff --git a/docs/simplesamlphp-googleapps.md b/docs/simplesamlphp-googleapps.md index 3eba11a6a634d221c2fcbcbe29ded49a87c9685b..5f8cfbd3c03cc938d92c869bf398c4360f4d3e1e 100644 --- a/docs/simplesamlphp-googleapps.md +++ b/docs/simplesamlphp-googleapps.md @@ -100,17 +100,17 @@ The next step is to create an authentication source with this module. An authent In this example we will use `example-userpass`, and hence that section is what matters and will be used. <?php - $config = array( - 'example-userpass' => array( + $config = [ + 'example-userpass' => [ 'exampleauth:UserPass', - 'student:studentpass' => array( - 'uid' => array('student'), - ), - 'employee:employeepass' => array( - 'uid' => array('employee'), - ), - ), - ); + 'student:studentpass' => [ + 'uid' => ['student'], + ], + 'employee:employeepass' => [ + 'uid' => ['employee'], + ], + ], + ]; ?> This configuration creates two users - `student` and `employee`, with the passwords `studentpass` and `employeepass`. The username and password are stored in the array index `student:studentpass` for the `student`-user. The attributes (only `uid` in this example) will be returned by the IdP when the user logs on. @@ -127,7 +127,7 @@ If you want to setup a SAML 2.0 IdP for Google Apps, you need to configure two m This is the configuration of the IdP itself. Here is some example config: // The SAML entity ID is the index of this config. Dynamic:X will automatically generate an entity ID (recommended) - $metadata['__DYNAMIC:1__'] => array( + $metadata['__DYNAMIC:1__'] => [ // The hostname of the server (VHOST) that this SAML entity will use. 'host' => '__DEFAULT__', @@ -137,7 +137,7 @@ This is the configuration of the IdP itself. Here is some example config: 'certificate' => 'googleappsidp.crt', 'auth' => 'example-userpass', - ) + ] **Note**: You can only have one entry in the file with host equal to `__DEFAULT__`, therefore you should replace the existing entry with this one, instead of adding this entry as a new entry in the file. @@ -152,12 +152,12 @@ In the `saml20-sp-remote.php` file we will configure an entry for G Suite (Googl * at G Suite. E.g. if your google account is foo.com, and you have a user with email john@foo.com, then you * must set the simplesaml.nameidattribute to be the name of an attribute that for this user has the value of 'john'. */ - $metadata['https://www.google.com/a/g.feide.no'] => array( + $metadata['https://www.google.com/a/g.feide.no'] => [ 'AssertionConsumerService' => 'https://www.google.com/a/g.feide.no/acs', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 'simplesaml.nameidattribute' => 'uid', 'simplesaml.attributes' => false - ); + ]; You must also map some attributes received from the authentication module into email field sent to Google Apps. In this example, the `uid` attribute is set. When you later configure the IdP to connect to a LDAP directory or some other authentication source, make sure that the `uid` attribute is set properly, or you can configure another attribute to use here. The `uid` attribute contains the local part of the user name. diff --git a/docs/simplesamlphp-hok-idp.md b/docs/simplesamlphp-hok-idp.md index e34a6b827d844699abbf85dbe2abf1c5c31befbe..a2315bf7481a9ca598b4d015c693941310d0a51e 100644 --- a/docs/simplesamlphp-hok-idp.md +++ b/docs/simplesamlphp-hok-idp.md @@ -29,11 +29,11 @@ Enabling HoK SSO Profile on the IdP To enable the IdP to send HoK assertions you must add the `saml20.hok.assertion` option to the `saml20-idp-hosted` metadata file: - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ [....] 'auth' => 'example-userpass', 'saml20.hok.assertion' => TRUE, - ); + ]; Add new metadata to SPs ----------------------- @@ -62,16 +62,16 @@ This means that you have to use the complex endpoint format in `saml20-sp-remote In general, this should look like the following code: 'AssertionConsumerService' => array ( - array( + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'index' => 0, - ), - array( + ], + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser', 'Location' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'index' => 4, - ), + ], ), (The specific values of the various fields will vary depending on the SP.) diff --git a/docs/simplesamlphp-hok-sp.md b/docs/simplesamlphp-hok-sp.md index a687896c529cba118c98845dddb0123b5a6000bd..4b12a113af316f9463c06bfb7c9b2eed95b057a1 100644 --- a/docs/simplesamlphp-hok-sp.md +++ b/docs/simplesamlphp-hok-sp.md @@ -31,10 +31,10 @@ To enable support for the HoK SSO Profile in the SP, the `saml20.hok.assertion` This option can also be enabled in the `saml20-idp-remote` metadata file, but in that case the endpoint will not be added to the SP metadata. You must also send authentication requests specifying the Holder-of-Key profile to the IdP. This is controlled by the `ProtocolBinding` option in the SP configuration. - 'hok-sp' => array( + 'hok-sp' => [ 'saml:SP', 'saml20.hok.assertion' => TRUE, 'ProtocolBinding' => 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser', - ), + ], When this is done, you can add the metadata of your SP to the IdP and test the authentication. diff --git a/docs/simplesamlphp-idp-more.md b/docs/simplesamlphp-idp-more.md index fe61e17096b224b11da425e52995a64d558e8e26..bb5ead1ac8bde0e79d9bdaa90299862db60d6163 100644 --- a/docs/simplesamlphp-idp-more.md +++ b/docs/simplesamlphp-idp-more.md @@ -45,11 +45,16 @@ Here is an example of such a URL: https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=urn:mace:feide.no:someservice -You can also add a RelayState parameter to the IdP-first URL: +You can also add a `RelayState` parameter to the IdP-first URL: https://idp.example.org/simplesaml/saml2/idp/SSOService.php?spentityid=urn:mace:feide.no:someservice&RelayState=https://sp.example.org/somepage -The RelayState parameter is often uset do carry the URL the SP should redirect to after authentication. +The `RelayState` parameter is often used to carry the URL the SP should redirect to after authentication. It is also possible to specify the Assertion +Consumer URL with the `ConsumerURL` parameter. + +For compatibility with certain SPs, SimpleSAMLphp will also accept the +`providerId`, `target` and `shire` parameters as aliases for `spentityid`, +`RelayState` and `ConsumerURL`, respectively. ### IdP first with SAML 1.1 diff --git a/docs/simplesamlphp-idp.md b/docs/simplesamlphp-idp.md index 3654d237f20b1a6d9bca0b2418f745cd596291c2..1401d1d543800e8b414786c0f4d8660cecff6b1e 100644 --- a/docs/simplesamlphp-idp.md +++ b/docs/simplesamlphp-idp.md @@ -96,26 +96,26 @@ The next step is to create an authentication source with this module. An authent In this setup, this file should contain a single entry: <?php - $config = array( - 'example-userpass' => array( + $config = [ + 'example-userpass' => [ 'exampleauth:UserPass', - 'student:studentpass' => array( - 'uid' => array('student'), - 'eduPersonAffiliation' => array('member', 'student'), - ), - 'employee:employeepass' => array( - 'uid' => array('employee'), - 'eduPersonAffiliation' => array('member', 'employee'), - ), - ), - ); + 'student:studentpass' => [ + 'uid' => ['student'], + 'eduPersonAffiliation' => ['member', 'student'], + ], + 'employee:employeepass' => [ + 'uid' => ['employee'], + 'eduPersonAffiliation' => ['member', 'employee'], + ], + ], + ]; This configuration creates two users - `student` and `employee`, with the passwords `studentpass` and `employeepass`. The username and password is stored in the array index (`student:studentpass` for the `student`-user. The attributes for each user is configured in the array referenced by the index. For the student user, these are: - array( - 'uid' => array('student'), - 'eduPersonAffiliation' => array('member', 'student'), - ), + [ + 'uid' => ['student'], + 'eduPersonAffiliation' => ['member', 'student'], + ], The attributes will be returned by the IdP when the user logs on. @@ -145,7 +145,7 @@ The SAML 2.0 IdP is configured by the metadata stored in This is a minimal configuration: <?php - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ /* * The hostname for this IdP. This makes it possible to run multiple * IdPs from the same configuration. '__DEFAULT__' means that this one @@ -165,7 +165,7 @@ This is a minimal configuration: * user. This must match one of the entries in config/authsources.php. */ 'auth' => 'example-userpass', - ); + ]; For more information about available options in the idp-hosted metadata files, see the [IdP hosted reference](simplesamlphp-reference-idp-hosted). @@ -179,10 +179,10 @@ We therefore recommended enabling this in new installations. This can be done by adding the following to the saml20-idp-hosted configuration: 'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri', - 'authproc' => array( + 'authproc' => [ // Convert LDAP names to oids. - 100 => array('class' => 'core:AttributeMap', 'name2oid'), - ), + 100 => ['class' => 'core:AttributeMap', 'name2oid'], + ], Adding SPs to the IdP @@ -193,10 +193,10 @@ This is configured by metadata stored in `metadata/saml20-sp-remote.php`. This is a minimal example of a `metadata/saml20-sp-remote.php` metadata file for a SimpleSAMLphp SP: <?php - $metadata['https://sp.example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array( + $metadata['https://sp.example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = [ 'AssertionConsumerService' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'SingleLogoutService' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', - ); + ]; Note that the URI in the entityID and the URLs to the AssertionConsumerService and SingleLogoutService endpoints change between different service providers. If you have the metadata of the remote SP as an XML file, you can use the built-in XML to SimpleSAMLphp metadata converter, which by default is available as `/admin/metadata-converter.php` in your SimpleSAMLphp installation. @@ -252,7 +252,7 @@ To send the RelayState parameter from a SimpleSAMLphp IdP, specify it in the que To set it in the SP configuration, add it to `authsources.php`: - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', 'RelayState' => 'https://sp.example.org/welcome.php', - ), + ], diff --git a/docs/simplesamlphp-install-repo.md b/docs/simplesamlphp-install-repo.md index c27fc9460236652ca9408be6c4798540684ea32d..cba84990a1bd90656c242cca7eba1789bdd96ecc 100644 --- a/docs/simplesamlphp-install-repo.md +++ b/docs/simplesamlphp-install-repo.md @@ -38,21 +38,8 @@ Ask git to update to the latest version: git fetch origin git pull origin master -Install or upgrade the external dependencies with Composer ([get composer](http://getcomposer.org/)): +Install or upgrade the external dependencies with Composer and npm ([get composer](http://getcomposer.org/)): php composer.phar install + npm install - -Migrating from Subversion -------------------------- - -If you installed SimpleSAMLphp from subversion, and want to keep updated on the development, you will have to migrate -your installation to git. First, follow the steps to get a fresh install from github in a different directory. Skip the -steps regarding configuration and metadata initialization, and copy all the files you might have modified instead (not -only configuration and metadata, but also any custom modules or templates). Finally, proceed to install Composer and -install all the dependencies with it. You may want to add all your custom files to the '.gitignore' file. - -If you really want to use subversion instead of git, or it is impossible for you to migrate (you cannot install git, for -example), you might want to do a fresh install like the one described here, but using github's subversion interface. -Refer to [github's documentation](https://help.github.com/articles/support-for-subversion-clients) for detailed -instructions on how to do that. diff --git a/docs/simplesamlphp-install.md b/docs/simplesamlphp-install.md index 14d8550c63f57515886c15db78366b9ff673713c..b410c54c793471412d502d9f03ae264d9ff300f6 100644 --- a/docs/simplesamlphp-install.md +++ b/docs/simplesamlphp-install.md @@ -290,7 +290,6 @@ You have now successfully installed SimpleSAMLphp, and the next steps depends on * [Using SimpleSAMLphp as a SAML Service Provider](simplesamlphp-sp) * [IdP remote reference](simplesamlphp-reference-idp-remote) * [Connecting SimpleSAMLphp as a SP to UK Access Federation or InCommon](simplesamlphp-ukaccess) - * [Upgrading - migration to use the SAML authentication source](simplesamlphp-sp-migration) * [Identity Provider QuickStart](simplesamlphp-idp) * [IdP hosted reference](simplesamlphp-reference-idp-hosted) * [SP remote reference](simplesamlphp-reference-sp-remote) diff --git a/docs/simplesamlphp-maintenance.md b/docs/simplesamlphp-maintenance.md index cfd2d7e3766a20921ea6e9b0b1fc89e0c106d534..ff4581b034555c381e814763afddcb3d0383f299 100644 --- a/docs/simplesamlphp-maintenance.md +++ b/docs/simplesamlphp-maintenance.md @@ -96,26 +96,26 @@ Here are two examples of configuration of memcache session handling: Example of redundant configuration with load balancing: This configuration makes it possible to lose both servers in the a-group or both servers in the b-group without losing any sessions. Note that sessions will be lost if one server is lost from both the a-group and the b-group. - 'memcache_store.servers' => array( - array( - array('hostname' => 'mc_a1'), - array('hostname' => 'mc_a2'), - ), - array( - array('hostname' => 'mc_b1'), - array('hostname' => 'mc_b2'), - ), - ), + 'memcache_store.servers' => [ + [ + ['hostname' => 'mc_a1'], + ['hostname' => 'mc_a2'], + ], + [ + ['hostname' => 'mc_b1'], + ['hostname' => 'mc_b2'], + ], + ], **Example 2. Example of simple configuration with only one memcache server** Example of simple configuration with only one memcache server, running on the same computer as the web server: Note that all sessions will be lost if the memcache server crashes. - 'memcache_store.servers' => array( - array( - array('hostname' => 'localhost'), - ), - ), + 'memcache_store.servers' => [ + [ + ['hostname' => 'localhost'], + ], + ], The expiration value (`memcache_store.expires`) is the duration for which data should be retained in memcache. Data are dropped from the memcache servers when this time expires. The time will be reset every time the data is written to the memcache servers. @@ -170,11 +170,11 @@ Several metadata storage backends are available by default, including `flatfile` example configuration of different metadata sources in use at the same time: ``` -'metadata.sources' => array( - array('type' => 'flatfile'), - array('type' => 'flatfile', 'directory' => 'metadata/metarefresh-kalmar'), - array('type' => 'serialize', 'directory' => 'metadata/metarefresh-ukaccess'), -), +'metadata.sources' => [ + ['type' => 'flatfile'], + ['type' => 'flatfile', 'directory' => 'metadata/metarefresh-kalmar'], + ['type' => 'serialize', 'directory' => 'metadata/metarefresh-ukaccess'], +], ``` You may also implement your own metadata storage handler, in a very similar way to how you would implement @@ -245,7 +245,7 @@ To add support for a new language, add your new language to the `language.availa /* * Languages available and which language is default */ - 'language.available' => array('en', 'no', 'da', 'es', 'xx'), + 'language.available' => ['en', 'no', 'da', 'es', 'xx'], 'language.default' => 'en', Please use the standardized two-character @@ -255,11 +255,11 @@ You also can set the default language. You should ensure that the default langua All strings that can be localized are found in the files `dictionaries/`. Add a new entry for each string, with your language code, like this: - 'user_pass_header' => array( + 'user_pass_header' => [ 'en' => 'Enter your username and password', 'no' => 'Skriv inn brukernavn og passord', 'xx' => 'Pooa jujjique jamba', - ), + ], You can translate as many of the texts as you would like; a full translation is not required unless you want to make this the default language. From the end users point of view, it looks best if all text fragments used in a given screen or form is in one single language. diff --git a/docs/simplesamlphp-metadata-endpoints.md b/docs/simplesamlphp-metadata-endpoints.md index 9bca9088db0db348b6d3a4ecd37cc03b0f5b827d..7200c9187de4ede82b371c1ec2de02306d06e319 100644 --- a/docs/simplesamlphp-metadata-endpoints.md +++ b/docs/simplesamlphp-metadata-endpoints.md @@ -32,10 +32,10 @@ It can be used when there is only a single endpoint that uses the default bindin Array of strings ---------------- - 'AssertionConsumerService' => array( + 'AssertionConsumerService' => [ 'https://site1.example.org/ACS', 'https://site2.example.org/ACS', - ), + ], This endpoint format can be used to represent multiple endpoints, all of which use the default binding. @@ -43,28 +43,28 @@ This endpoint format can be used to represent multiple endpoints, all of which u Array of arrays --------------- - 'AssertionConsumerService' => array( - array( + 'AssertionConsumerService' => [ + [ 'index' => 1, 'isDefault' => TRUE, 'Location' => 'https://sp.example.org/ACS', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', - ), - array( + ], + [ 'index' => 2, 'Location' => 'https://sp.example.org/ACS', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', - ), - ), + ], + ], This endpoint format allows for specifying multiple endpoints with different bindings. It can also be used to specify the ResponseLocation attribute on endpoints, e.g. on `SingleLogoutService`: - 'SingleLogoutService' => array( - array( + 'SingleLogoutService' => [ + [ 'Location' => 'https://sp.example.org/LogoutRequest', 'ResponseLocation' => 'https://sp.example.org/LogoutResponse', 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', - ), - ), + ], + ], diff --git a/docs/simplesamlphp-metadata-extensions-attributes.md b/docs/simplesamlphp-metadata-extensions-attributes.md index 7e3c1c0bccccc91098d294970d10c410547331d1..832bc9c7d99106362f7cf65d34ccddb118524338 100644 --- a/docs/simplesamlphp-metadata-extensions-attributes.md +++ b/docs/simplesamlphp-metadata-extensions-attributes.md @@ -19,14 +19,14 @@ The `metadata/saml20-idp-hosted.php` entries are used to define the metadata extension items. An example of this is: <?php - $metadata['entity-id-1'] = array( + $metadata['entity-id-1'] = [ /* ... */ - 'EntityAttributes' => array( - 'urn:simplesamlphp:v1:simplesamlphp' => array('is', 'really', 'cool'), - '{urn:simplesamlphp:v1}foo' => array('bar'), - ), + 'EntityAttributes' => [ + 'urn:simplesamlphp:v1:simplesamlphp' => ['is', 'really', 'cool'], + '{urn:simplesamlphp:v1}foo' => ['bar'], + ], /* ... */ - ); + ]; The OASIS specification primarily defines how to include arbitrary `Attribute` and `Assertion` elements within the metadata for an IdP. @@ -43,9 +43,9 @@ metadata. Each item in the `EntityAttributes` array defines a new array. Each item in this array produces a separte `<AttributeValue>` element within the `<Attribute>` element. - 'EntityAttributes' => array( - 'urn:simplesamlphp:v1:simplesamlphp' => array('is', 'really', 'cool'), - ), + 'EntityAttributes' => [ + 'urn:simplesamlphp:v1:simplesamlphp' => ['is', 'really', 'cool'], + ], This generates: @@ -58,9 +58,9 @@ This generates: Each `<Attribute>` element requires a `NameFormat` attribute. This is specified using curly braces at the beginning of the key name: - 'EntityAttributes' => array( - '{urn:simplesamlphp:v1}foo' => array('bar'), - ), + 'EntityAttributes' => [ + '{urn:simplesamlphp:v1}foo' => ['bar'], + ], This generates: @@ -76,17 +76,17 @@ Generated XML Metadata Examples If given the following configuration... - $metadata['https://www.example.com/saml/saml2/idp/metadata.php'] = array( + $metadata['https://www.example.com/saml/saml2/idp/metadata.php'] = [ 'host' => 'www.example.com', 'certificate' => 'example.com.crt', 'privatekey' => 'example.com.pem', 'auth' => 'example-userpass', - 'EntityAttributes' => array( - 'urn:simplesamlphp:v1:simplesamlphp' => array('is', 'really', 'cool'), - '{urn:simplesamlphp:v1}foo' => array('bar'), - ), - ); + 'EntityAttributes' => [ + 'urn:simplesamlphp:v1:simplesamlphp' => ['is', 'really', 'cool'], + '{urn:simplesamlphp:v1}foo' => ['bar'], + ], + ]; ... will generate the following XML metadata: diff --git a/docs/simplesamlphp-metadata-extensions-rpi.md b/docs/simplesamlphp-metadata-extensions-rpi.md index 4799de19bb347347794dbf86222e071aa5e93a93..a6dc868e772c3da16b1524074eecc539b17c5e64 100644 --- a/docs/simplesamlphp-metadata-extensions-rpi.md +++ b/docs/simplesamlphp-metadata-extensions-rpi.md @@ -59,54 +59,54 @@ Examples Service Provider: - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', 'entityID' => NULL, ... - 'RegistrationInfo' => array( + 'RegistrationInfo' => [ 'authority' => 'urn:mace:sp.example.org', 'instant' => '2008-01-17T11:28:03.577Z', - 'policies' => array('en' => 'http://sp.example.org/policy', 'es' => 'http://sp.example.org/politica'), - ), - ), + 'policies' => ['en' => 'http://sp.example.org/policy', 'es' => 'http://sp.example.org/politica'], + ], + ], Identity Provider: - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ 'host' => '__DEFAULT__', ... - 'RegistrationInfo' => array( + 'RegistrationInfo' => [ 'authority' => 'urn:mace:idp.example.org', 'instant' => '2008-01-17T11:28:03.577Z', - ), - ); + ], + ]; `aggregator` module: - $config = array( - 'aggregators' => array( + $config = [ + 'aggregators' => [ ... - ), + ], 'maxDuration' => 60*60*24*5, 'reconstruct' => FALSE, ... - 'RegistrationInfo' => array( + 'RegistrationInfo' => [ 'authority' => 'urn:mace:example.federation', 'instant' => '2008-01-17T11:28:03Z', - 'policies' => array('en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'), - ), - ); + 'policies' => ['en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'], + ], + ]; `aggregator2` module: - $config = array( - 'example.org' => array( - 'sources' => array( + $config = [ + 'example.org' => [ + 'sources' => [ ... - ), - 'RegistrationInfo' => array( + ], + 'RegistrationInfo' => [ 'authority' => 'urn:mace:example.federation', - 'policies' => array('en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'), - ), - ), - ); + 'policies' => ['en' => 'http://example.org/federation_policy', 'es' => 'https://example.org/politica_federacion'], + ], + ], + ]; diff --git a/docs/simplesamlphp-metadata-extensions-ui.md b/docs/simplesamlphp-metadata-extensions-ui.md index f9627b93e6206bc0c53e26c5e091058335c640ef..10dd3aba08de0354cc3da718aed118717aeef3d3 100644 --- a/docs/simplesamlphp-metadata-extensions-ui.md +++ b/docs/simplesamlphp-metadata-extensions-ui.md @@ -23,72 +23,72 @@ the relevant entry in `authsources.php`. An example for an IdP: <?php - $metadata['entity-id-1'] = array( + $metadata['entity-id-1'] = [ /* ... */ - 'UIInfo' => array( - 'DisplayName' => array( + 'UIInfo' => [ + 'DisplayName' => [ 'en' => 'English name', 'es' => 'Nombre en Español', - ), - 'Description' => array( + ], + 'Description' => [ 'en' => 'English description', 'es' => 'DescripciĂłn en Español', - ), - 'InformationURL' => array( + ], + 'InformationURL' => [ 'en' => 'http://example.com/info/en', 'es' => 'http://example.com/info/es', - ), - 'PrivacyStatementURL' => array( + ], + 'PrivacyStatementURL' => [ 'en' => 'http://example.com/privacy/en', 'es' => 'http://example.com/privacy/es', - ), - 'Keywords' => array( - 'en' => array('communication', 'federated session'), - 'es' => array('comunicaciĂłn', 'sesiĂłn federated'), - ), - 'Logo' => array( - array( + ], + 'Keywords' => [ + 'en' => ['communication', 'federated session'], + 'es' => ['comunicaciĂłn', 'sesiĂłn federated'], + ], + 'Logo' => [ + [ 'url' => 'http://example.com/logo1.png', 'height' => 200, 'width' => 400, 'lang' => 'en', - ), - array( + ], + [ 'url' => 'http://example.com/logo2.png', 'height' => 201, 'width' => 401, - ), - ), - ), - 'DiscoHints' => array( - 'IPHint' => array('130.59.0.0/16', '2001:620::0/96'), - 'DomainHint' => array('example.com', 'www.example.com'), - 'GeolocationHint' => array('geo:47.37328,8.531126', 'geo:19.34343,12.342514'), - ), + ], + ], + ], + 'DiscoHints' => [ + 'IPHint' => ['130.59.0.0/16', '2001:620::0/96'], + 'DomainHint' => ['example.com', 'www.example.com'], + 'GeolocationHint' => ['geo:47.37328,8.531126', 'geo:19.34343,12.342514'], + ], /* ... */ - ); + ]; And for an SP it could look like this: <?php - $config = array( + $config = [ - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', - 'UIInfo' => array( - 'DisplayName' => array( + 'UIInfo' => [ + 'DisplayName' => [ 'en' => 'English name', 'es' => 'Nombre en Español' - ), - 'Description' => array( + ], + 'Description' => [ 'en' => 'English description', 'es' => 'DescripciĂłn en Español' - ), - ), + ], + ], /* ... */ - ), - ); + ], + ]; The OASIS specification primarily defines how an entity can communicate metadata related to IdP or service discovery and identification. There @@ -106,52 +106,52 @@ about an IdP or SP. These properties are all children of the `UIInfo` key. *Note*: Most elements are localized strings that specify the language using the array key as the language-code: - 'DisplayName' => array( + 'DisplayName' => [ 'en' => 'English name', 'es' => 'Nombre en Español', - ), + ], `DisplayName` : The localized list of names for this entity - 'DisplayName' => array( + 'DisplayName' => [ 'en' => 'English name', 'es' => 'Nombre en Español', - ), + ], `Description` : The localized list of statements used to describe this entity - 'Description' => array( + 'Description' => [ 'en' => 'English description', 'es' => 'DescripciĂłn en Español', - ), + ], `InformationURL` : A localized list of URLs where more information about the entity is located. - 'InformationURL' => array( + 'InformationURL' => [ 'en' => 'http://example.com/info/en', 'es' => 'http://example.com/info/es', - ), + ], `PrivacyStatementURL` : A localized list of URLs where the entity's privacy statement is located. - 'PrivacyStatementURL' => array( + 'PrivacyStatementURL' => [ 'en' => 'http://example.com/privacy/en', 'es' => 'http://example.com/privacy/es', - ), + ], `Keywords` : A localized list of keywords used to describe the entity - 'Keywords' => array( - 'en' => array('communication', 'federated session'), - 'es' => array('comunicaciĂłn', 'sesiĂłn federated'), - ), + 'Keywords' => [ + 'en' => ['communication', 'federated session'], + 'es' => ['comunicaciĂłn', 'sesiĂłn federated'], + ], : *Note*: The `+` (plus) character is forbidden by specification from being part of a Keyword. @@ -159,19 +159,19 @@ using the array key as the language-code: `Logo` : The logos used to represent the entity - 'Logo' => array( - array( + 'Logo' => [ + [ 'url' => 'http://example.com/logo1.png', 'height' => 200, 'width' => 400, 'lang' => 'en', - ), - array( + ], + [ 'url' => 'http://example.com/logo2.png', 'height' => 201, 'width' => 401, - ), - ), + ], + ], : An optional `lang` key containing a language-code is supported for localized logos. @@ -188,20 +188,20 @@ key. : This is a list of both IPv4 and IPv6 addresses in CIDR notation services by or associated with this entity. - 'IPHint' => array('130.59.0.0/16', '2001:620::0/96'), + 'IPHint' => ['130.59.0.0/16', '2001:620::0/96'], `DomainHint` : This specifies a list of domain names serviced by or associated with this entity. - 'DomainHint' => array('example.com', 'www.example.com'), + 'DomainHint' => ['example.com', 'www.example.com'], `GeolocationHint` : This specifies a list of geographic coordinates associated with, or serviced by, the entity. Coordinates are given in URI form using the geo URI scheme [RFC5870](http://www.ietf.org/rfc/rfc5870.txt). - 'GeolocationHint' => array('geo:47.37328,8.531126', 'geo:19.34343,12.342514'), + 'GeolocationHint' => ['geo:47.37328,8.531126', 'geo:19.34343,12.342514'], Generated XML Metadata Examples @@ -209,52 +209,52 @@ Generated XML Metadata Examples If given the following configuration... - $metadata['https://www.example.com/saml/saml2/idp/metadata.php'] = array( + $metadata['https://www.example.com/saml/saml2/idp/metadata.php'] = [ 'host' => 'www.example.com', 'certificate' => 'example.com.crt', 'privatekey' => 'example.com.pem', 'auth' => 'example-userpass', - 'UIInfo' => array( - 'DisplayName' => array( + 'UIInfo' => [ + 'DisplayName' => [ 'en' => 'English name', 'es' => 'Nombre en Español', - ), - 'Description' => array( + ], + 'Description' => [ 'en' => 'English description', 'es' => 'DescripciĂłn en Español', - ), - 'InformationURL' => array( + ], + 'InformationURL' => [ 'en' => 'http://example.com/info/en', 'es' => 'http://example.com/info/es', - ), - 'PrivacyStatementURL' => array( + ], + 'PrivacyStatementURL' => [ 'en' => 'http://example.com/privacy/en', 'es' => 'http://example.com/privacy/es', - ), - 'Keywords' => array( - 'en' => array('communication', 'federated session'), - 'es' => array('comunicaciĂłn', 'sesiĂłn federated'), - ), - 'Logo' => array( - array( + ], + 'Keywords' => [ + 'en' => ['communication', 'federated session'], + 'es' => ['comunicaciĂłn', 'sesiĂłn federated'], + ], + 'Logo' => [ + [ 'url' => 'http://example.com/logo1.png', 'height' => 200, 'width' => 400, - ), - array( + ], + [ 'url' => 'http://example.com/logo2.png', 'height' => 201, 'width' => 401, - ), - ), - ), - 'DiscoHints' => array( - 'IPHint' => array('130.59.0.0/16', '2001:620::0/96'), - 'DomainHint' => array('example.com', 'www.example.com'), - 'GeolocationHint' => array('geo:47.37328,8.531126', 'geo:19.34343,12.342514'), - ), - ); + ], + ], + ], + 'DiscoHints' => [ + 'IPHint' => ['130.59.0.0/16', '2001:620::0/96'], + 'DomainHint' => ['example.com', 'www.example.com'], + 'GeolocationHint' => ['geo:47.37328,8.531126', 'geo:19.34343,12.342514'], + ], + ]; ... will generate the following XML metadata: diff --git a/docs/simplesamlphp-metadata-pdostoragehandler.md b/docs/simplesamlphp-metadata-pdostoragehandler.md index 82656fb09be835821cfcf385c543c3f7f1d902e9..9724a6d2e0c60ad36c535a0f3139d9cd7a18ef09 100644 --- a/docs/simplesamlphp-metadata-pdostoragehandler.md +++ b/docs/simplesamlphp-metadata-pdostoragehandler.md @@ -35,10 +35,10 @@ You will first need to configure a PDO metadata source. Here is an example of flatfile plus PDO: - 'metadata.sources' => array( - array('type' => 'flatfile'), - array('type' => 'pdo'), - ), + 'metadata.sources' => [ + ['type' => 'flatfile'], + ['type' => 'pdo'], + ], diff --git a/docs/simplesamlphp-modules.md b/docs/simplesamlphp-modules.md index 300cfb8022fa41456b89c4613d5913ffca713717..ed0df99828b979396e83715f80337c86592c6a10 100644 --- a/docs/simplesamlphp-modules.md +++ b/docs/simplesamlphp-modules.md @@ -150,26 +150,26 @@ authentication source. A typical configuration entry for an authentication source looks like this: - 'example-static' => array( + 'example-static' => [ /* This maps to modules/exampleauth/lib/Auth/Source/Static.php */ 'exampleauth:Static', /* The following is configuration which is passed on to * the exampleauth:Static authentication source. */ 'uid' => 'testuser', - 'eduPersonAffiliation' => array('member', 'employee'), - 'cn' => array('Test User'), - ), + 'eduPersonAffiliation' => ['member', 'employee'], + 'cn' => ['Test User'], + ], To use this authentication source in a SAML 2.0 IdP, set the `auth`-option of the IdP to `'example-static'`: - '__DYNAMIC:1__' => array( + '__DYNAMIC:1__' => [ 'host' => '__DEFAULT__', 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', 'auth' => 'example-static', - ), + ], ### Creating authentication sources diff --git a/docs/simplesamlphp-reference-idp-hosted.md b/docs/simplesamlphp-reference-idp-hosted.md index fc134dded9a92947516ccd57e6054e61eccbb41c..276d9b7f66c5bb354a9ad3b141ad11eb210af78a 100644 --- a/docs/simplesamlphp-reference-idp-hosted.md +++ b/docs/simplesamlphp-reference-idp-hosted.md @@ -9,14 +9,14 @@ Both files have the following format: <?php /* The index of the array is the entity ID of this IdP. */ - $metadata['entity-id-1'] = array( + $metadata['entity-id-1'] = [ 'host' => 'idp.example.org', /* Configuration options for the first IdP. */ - ); - $metadata['entity-id-2'] = array( + ]; + $metadata['entity-id-2'] = [ 'host' => '__DEFAULT__', /* Configuration options for the default IdP. */ - ); + ]; /* ... */ The entity ID should be an URI. It can, also be on the form @@ -54,33 +54,33 @@ Common options : Specify contacts in addition to the technical contact configured through config/config.php. For example, specifying a support contact: - 'contacts' => array( - array( + 'contacts' => [ + [ 'contactType' => 'support', 'emailAddress' => 'support@example.org', 'givenName' => 'John', 'surName' => 'Doe', 'telephoneNumber' => '+31(0)12345678', 'company' => 'Example Inc.', - ), - ), + ], + ], : If you have support for a trust framework that requires extra attributes on the contact person element in your IdP metadata (for example, SIRTFI), you can specify an array of attributes on a contact. - 'contacts' => array( - array( + 'contacts' => [ + [ 'contactType' => 'other', 'emailAddress' => 'mailto:abuse@example.org', 'givenName' => 'John', 'surName' => 'Doe', 'telephoneNumber' => '+31(0)12345678', 'company' => 'Example Inc.', - 'attributes' => array( + 'attributes' => [ 'xmlns:remd' => 'http://refeds.org/metadata', 'remd:contactType' => 'http://refeds.org/metadata/contactType/security', - ), - ), - ), + ], + ], + ], `host` : The hostname for this IdP. One IdP can also have the `host`-option @@ -96,10 +96,10 @@ Common options : This option can be translated into multiple languages by specifying the value as an array of language-code to translated name: - 'OrganizationName' => array( + 'OrganizationName' => [ 'en' => 'Example organization', 'no' => 'Eksempel organisation', - ), + ], : *Note*: If you specify this option, you must also specify the `OrganizationURL` option. @@ -222,8 +222,11 @@ The following SAML 2.0 options are available: : Note that this option can be set for each SP in the [SP-remote metadata](./simplesamlphp-reference-sp-remote). `NameIDFormat` -: The format of the NameID supported by this IdP. Defaults to the `transient` format if unspecified. - This parameter can be configured in multiple places, and the actual value used is fetched from metadata with +: The format(s) of the NameID supported by this IdP, as either an array or a string. If an array is given, the first + value is used as the default if the incoming request does not specify a preference. Defaults to the `transient` + format if unspecified. + +: This parameter can be configured in multiple places, and the actual value used is fetched from metadata with the following priority: : 1. SP Remote Metadata @@ -243,7 +246,7 @@ The following SAML 2.0 options are available: you should configure [NameID generation filters](./saml:nameid) on your IdP. -: Note that the value set here will be added to the metadata generated for this IdP, +: Note that the value(s) set here will be added to the metadata generated for this IdP, in the `NameIDFormat` element. `RegistrationInfo` @@ -427,7 +430,7 @@ These are some examples of IdP metadata * We use the '__DYNAMIC:1__' entity ID so that the entity ID * will be autogenerated. */ - $metadata['__DYNAMIC:1__'] = array( + $metadata['__DYNAMIC:1__'] = [ /* * We use '__DEFAULT__' as the hostname so we won't have to * enter a hostname. @@ -443,4 +446,4 @@ These are some examples of IdP metadata * from config/authsources.php. */ 'auth' => 'example-userpass', - ); + ]; diff --git a/docs/simplesamlphp-reference-idp-remote.md b/docs/simplesamlphp-reference-idp-remote.md index 7908ebc3966748e4cce3b5bb1fe91ab56b610391..9d46826b0303e86e0198907e9497b98705b3edc4 100644 --- a/docs/simplesamlphp-reference-idp-remote.md +++ b/docs/simplesamlphp-reference-idp-remote.md @@ -7,12 +7,12 @@ This is a reference for metadata options available for `metadata/saml20-idp-remo <?php /* The index of the array is the entity ID of this IdP. */ - $metadata['entity-id-1'] = array( + $metadata['entity-id-1'] = [ /* Configuration options for the first IdP. */ - ); - $metadata['entity-id-2'] = array( + ]; + $metadata['entity-id-2'] = [ /* Configuration options for the second IdP. */ - ); + ]; /* ... */ @@ -50,10 +50,10 @@ The following options are common between both the SAML 2.0 protocol and Shibbole : This option can be translated into multiple languages by specifying the value as an array of language-code to translated name: - 'OrganizationName' => array( + 'OrganizationName' => [ 'en' => 'Example organization', 'no' => 'Eksempel organisation', - ), + ], : *Note*: If you specify this option, you must also specify the `OrganizationURL` option. @@ -80,10 +80,10 @@ The following options are common between both the SAML 2.0 protocol and Shibbole : This option can be translated into multiple languages by specifying the value as an array of language-code to translated name: - 'name' => array( + 'name' => [ 'en' => 'A service', 'no' => 'En tjeneste', - ), + ], `scope` : An array with scopes valid for this IdP. @@ -104,6 +104,15 @@ SAML 2.0 options The following SAML 2.0 options are available: +`disable_scoping` +: Whether sending of samlp:Scoping elements in authentication requests should be suppressed. The default value is `FALSE`. + When set to `TRUE`, no scoping elements will be sent. This does not comply with the SAML2 specification, but allows + interoperability with ADFS which [does not support Scoping elements](https://docs.microsoft.com/en-za/azure/active-directory/develop/active-directory-single-sign-on-protocol-reference#scoping). + +: Note that this option also exists in the SP configuration. This + entry in the IdP-remote metadata overrides the option in the + [SP configuration](./saml:sp). + `encryption.blacklisted-algorithms` : Blacklisted encryption algorithms. This is an array containing the algorithm identifiers. diff --git a/docs/simplesamlphp-reference-sp-remote.md b/docs/simplesamlphp-reference-sp-remote.md index 2eb7efd320ad19b3eff355fe6e75b078ccee9882..51b5df4e509661c508c93ff236e20d4e585a5416 100644 --- a/docs/simplesamlphp-reference-sp-remote.md +++ b/docs/simplesamlphp-reference-sp-remote.md @@ -9,12 +9,12 @@ Both files have the following format: <?php /* The index of the array is the entity ID of this SP. */ - $metadata['entity-id-1'] = array( + $metadata['entity-id-1'] = [ /* Configuration options for the first SP. */ - ); - $metadata['entity-id-2'] = array( + ]; + $metadata['entity-id-2'] = [ /* Configuration options for the second SP. */ - ); + ]; /* ... */ @@ -54,10 +54,10 @@ and Shibboleth 1.3 protocol: : This option can be translated into multiple languages by specifying the value as an array of language-code to translated name: - 'name' => array( + 'name' => [ 'en' => 'A service', 'no' => 'En tjeneste', - ), + ], `OrganizationName` : The name of the organization responsible for this SPP. @@ -65,10 +65,10 @@ and Shibboleth 1.3 protocol: : This option can be translated into multiple languages by specifying the value as an array of language-code to translated name: - 'OrganizationName' => array( + 'OrganizationName' => [ 'en' => 'Example organization', 'no' => 'Eksempel organisation', - ), + ], : *Note*: If you specify this option, you must also specify the `OrganizationURL` option. @@ -174,8 +174,10 @@ The following SAML 2.0 options are available: `FALSE`. `NameIDFormat` -: The `NameIDFormat` this SP should receive. The three most commonly - used values are: +: The `NameIDFormat` this SP should receive. This may be specified as either a string or an array, but if an array + is given, the first format specified will be the one requested during an authentication request. + +: The three most commonly used values are: : 1. `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` 2. `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent` @@ -270,6 +272,7 @@ The following SAML 2.0 options are available: the `attributes` array). For more advanced control over `NameID`, including the ability to specify any attribute regardless of the set sent to the SP, see the [NameID processing filters](./saml:nameid). + Note that the value of the attribute is collected **after** authproc-filters have run. : Typical values can be `mail` for when using the `email` format, and `eduPersonTargetedID` when using the `persistent` format. @@ -371,12 +374,13 @@ relevant for this sp. The final list is the concatenation of the list given as parameter to InitSSO (at the sp), the list configured at the sp and the list configured at the ipd (here) for this sp. The intersection of the final list and the idps configured at the at this idp will be -presented to the user at the discovery service if neccessary. If only one +presented to the user at the discovery service if neccessary. If only one idp is in the intersection the discoveryservice will go directly to the idp. **Example: Configuration for scoping** - 'IDPList' => array('https://idp1.wayf.dk', 'https://idp2.wayf.dk'), + + 'IDPList' => ['https://idp1.wayf.dk', 'https://idp2.wayf.dk'], Shibboleth 1.3 options diff --git a/docs/simplesamlphp-scoping.md b/docs/simplesamlphp-scoping.md index 3124122ed0d4bb0c3ecf2d65292ba4a6b371b4f9..c821b30e7926bf56fbffb5f217ae14643a2c99f8 100644 --- a/docs/simplesamlphp-scoping.md +++ b/docs/simplesamlphp-scoping.md @@ -55,11 +55,11 @@ The ProxyCount and IDPList option can be specified in the following places: Example configuration: # Add the IDPList - 'IDPList' => array( + 'IDPList' => [ 'IdPEntityID1', 'IdPEntityID2', 'IdPEntityID3', - ), + ], # Set ProxyCount 'ProxyCount' => 2, diff --git a/docs/simplesamlphp-sp-api.md b/docs/simplesamlphp-sp-api.md index cc43e4bcd8d18f70c562e263f7f5a8cf5e4c11f3..07c851f9d2c73a46daafead3f5b79cf474273a50 100644 --- a/docs/simplesamlphp-sp-api.md +++ b/docs/simplesamlphp-sp-api.md @@ -42,7 +42,7 @@ Check whether the user is authenticated with this authentication source. `requireAuth` ------------- - void requireAuth(array $params = array()) + void requireAuth(array $params = []) Make sure that the user is authenticated. This function will only return if the user is authenticated. @@ -65,17 +65,17 @@ See the documentation for the `login`-function for a description of the paramete * Return the user to the frontpage after authentication, don't post * the current POST data. */ - $auth->requireAuth(array( + $auth->requireAuth([ 'ReturnTo' => 'https://sp.example.org/', 'KeepPost' => FALSE, - )); + ]); print("Hello, authenticated user!"); `login` ------------- - void login(array $params = array()) + void login(array $params = []) Start a login operation. This function will always start a new authentication process. @@ -108,10 +108,10 @@ The [`saml:SP`](./saml:sp) authentication source also defines some parameters. ### Example # Send a passive authentication request. - $auth->login(array( + $auth->login([ 'isPassive' => TRUE, 'ErrorURL' => 'https://.../error_handler.php', - )); + ]); `logout` @@ -149,11 +149,11 @@ Logout, and redirect to the specified URL. Same as the previous, but check the result of the logout operation afterwards. - $auth->logout(array( + $auth->logout([ 'ReturnTo' => 'https://sp.example.org/logged_out.php', 'ReturnStateParam' => 'LogoutState', 'ReturnStateStage' => 'MyLogoutState', - )); + ]); And in logged_out.php: @@ -178,10 +178,10 @@ If the user isn't authenticated, an empty array will be returned. The attributes will be returned as an associative array with the name of the attribute as the key and the value as an array of one or more strings: - array( - 'uid' => array('testuser'), - 'eduPersonAffiliation' => array('student', 'member'), - ) + [ + 'uid' => ['testuser'], + 'eduPersonAffiliation' => ['student', 'member'], + ] ### Example diff --git a/docs/simplesamlphp-sp-migration.md b/docs/simplesamlphp-sp-migration.md deleted file mode 100644 index 92187b802ebccd51be22412e4aa67db448953618..0000000000000000000000000000000000000000 --- a/docs/simplesamlphp-sp-migration.md +++ /dev/null @@ -1,286 +0,0 @@ -Migrating to the `saml` module -============================== - -<!-- {{TOC}} --> - -This document describes how you can migrate your code to use the `saml` module for authentication against SAML 2.0 and SAML 1.1 IdPs. -It assumes that you have previously set up a SP by using redirects to `saml2/sp/initSSO.php`. - -The steps we are going to follow are: - -1. Create a new authentication source. -2. Add the metadata for this authentication source to the IdP. -3. Test the new authentication source. -4. Convert the application to use the new API. -5. Test the application. -6. Remove the old metadata from the IdP. -7. Disable the old SAML 2 SP. - - -Create a new authentication source ----------------------------------- - -In this step we are going to create an authentication source which uses the `saml` module for authentication. -To do this, we open `config/authsources.php`. Create the file if it does not exist. -If you create the file, it should look like this: - - <?php - $config = array( - /* Here we can add entries for authentication sources we want to use. */ - ); - - -We are going to add an entry to this file. -The entry should look something like this: - - 'default-sp' => array( - 'saml:SP', - - /* - * The entity ID of this SP. - * Can be NULL/unset, in which case an entity ID is generated based on the metadata URL. - */ - 'entityID' => NULL, - - /* - * The entity ID of the IdP this should SP should contact. - * Can be NULL/unset, in which case the user will be shown a list of available IdPs. - */ - 'idp' => NULL, - - /* Here you can add other options to the SP. */ - ), - -`default-sp` is the name of the authentication source. -It is used to refer to this authentication source when we use it. -`saml:SP` tells SimpleSAMLphp that authentication with this authentication source is handled by the `saml` module. - -The `idp` option should be set to the same value that is set in `default-saml20-idp` in `config.php`. - -To ease migration, you probably want the entity ID on the new SP to be different than on the old SP. -This makes it possible to have both the old and the new SP active on the IdP at the same time. - -You can also add other options this authentication source. -See the [`saml:SP`](./saml:sp) documentation for more information. - - -Add the metadata for this authentication source to the IdP ----------------------------------------------------------- - -After adding the authentication source on the SP, you need to register the metadata on the IdP. -To retrieve the metadata, open the frontpage of your SimpleSAMLphp installation, and go to the federation tab. -You should have a list of metadata entries, and one will be marked with the name of the new authentication source. -In our case, that was `default-sp`. - -Click the `Show metadata` link, and you will arrive on a web page with the metadata for that service provider. -How you proceed from here depends on which IdP you are connecting to. - -If you use a SimpleSAMLphp IdP, you can use the metadata in the flat file format at the bottom of the page. -That metadata should be added to `saml20-sp-remote.php` on the IdP. -For other IdPs you probably want to use the XML metadata. - - -Test the new authentication source ----------------------------------- - -You should now be able to log in using the new authentication source. -Go to the frontpage of your SimpleSAMLphp installation and open the authentication tab. -There you will find a link to test authentication sources. -Click that link, and select the name of your authentication source (`default-sp` in our case). - -You should be able to log in using that authentication source, and receive the attributes from the IdP. - - -Convert the application to use the new API ------------------------------------------- - -This section will go through some common changes that you need to do when you are using SimpleSAMLphp from a different application. - -### `_include.php` - -You should also no longer include `.../simplesamlphp/www/_include.php`. -Instead, you should include `.../simplesamlphp/lib/_autoload.php`. - -This means that you replace lines like: - - require_once('.../simplesamlphp/www/_include.php'); - -with: - - require_once('.../simplesamlphp/lib/_autoload.php'); - -`_autoload.php` will register an autoloader function for the SimpleSAMLphp classes. -This makes it possible to access the classes from your application. -`_include.php` does the same, but also has some side-effects that you may not want in your application. - -If you load any SimpleSAMLphp class files directly, you should remove those lines. -That means that you should remove lines like the following: - - require_once('SimpleSAML/Utilities.php'); - require_once('SimpleSAML/Session.php'); - require_once('SimpleSAML/XHTML/Template.php'); - - -### Authentication API - -There is a new authentication API in SimpleSAMLphp which can be used to authenticate against authentication sources. -This API is designed to handle the common operations. - - -#### Overview - -This is a quick overview of the API: - - /* Get a reference to our authentication source. */ - $as = new \SimpleSAML\Auth\Simple('default-sp'); - - /* Require the user to be authentcated. */ - $as->requireAuth(); - /* When that function returns, we have an authenticated user. */ - - /* - * Retrieve attributes of the user. - * - * Note: If the user isn't authenticated when getAttributes() is - * called, an empty array will be returned. - */ - $attributes = $as->getAttributes(); - - /* Log the user out. */ - $as->logout(); - - -#### `$config` and `$session` - -Generally, if you have: - - $config = \SimpleSAML\Configuration::getInstance(); - $session = \SimpleSAML\Session::getSessionFromRequest(); - -you should replace it with this single line: - - $as = new \SimpleSAML\Auth\Simple('default-sp'); - - -#### Requiring authentication - -Blocks of code like the following: - - /* Check if valid local session exists.. */ - if (!isset($session) || !$session->isValid('saml2') ) { - \SimpleSAML\Utilities::redirect( - '/' . $config->getBaseURL() . - 'saml2/sp/initSSO.php', - array('RelayState' => \SimpleSAML\Utilities::selfURL()) - ); - } - -should be replaced with a single call to `requireAuth()`: - - $as->requireAuth(); - - -#### Fetching attributes - -Where you previously called: - - $session->getAttributes(); - -you should now call: - - $as->getAttributes(); - - -#### Logging out - -Redirecting to the initSLO-script: - - \SimpleSAML\Utilities::redirect( - '/' . $config->getBaseURL() . - 'saml2/sp/initSLO.php', - array('RelayState' => \SimpleSAML\Utilities::selfURL()) - ); - -should be replaced with a call to `logout()`: - - $as->logout(); - -If you want to return to a specific URL after logging out, you should include that URL as a parameter to the logout function: - - $as->logout('https://example.org/'); - -Please make sure the URL is trusted. If you obtain the URL from the user input, make sure it is trusted before -calling $as->logout(), by using the \SimpleSAML\Utilities::checkURLAllowed() method. - - -#### Login link - -If you have any links to the initSSO-script, those links must be replaced with links to a new script. -The URL to the new script is `https://.../simplesaml/module.php/core/as_login.php`. -It has two mandatory parameters: - - * `AuthId`: The id of the authentication source. - * `ReturnTo`: The URL the user should be redirected to after authentication. - - -#### Logout link - -Any links to the initSLO-script must be replaced with links to a new script. -The URL to the new script is `https://.../simplesaml/module.php/core/as_logout.php`. -It has two mandatory parameters: - - * `AuthId`: The id of the authentication source. - * `ReturnTo`: The URL the user should be redirected to after logout. - - -Test the application --------------------- - -How you test the application is highly dependent on the application, but here are the elements you should test: - - -### SP initiated login - -Make sure that it is still possible to log into the application. - - -### IdP initiated login - -If you use a SimpleSAMLphp IdP, and you want users to be able to bookmark the login page, you need to test IdP initiated login. -To test IdP initiated login from a SimpleSAMLphp IdP, you can access: - - https://.../simplesaml/saml2/idp/SSOService.php?spentityid=<entity ID of your SP>&RelayState=<URL the user should be sent to after login> - -Note that the RelayState parameter is only supported if the IdP runs version 1.5 of SimpleSAMLphp. -If it isn't supported by the IdP, you need to configure the `RelayState` option in the authentication source configuration. - - -### SP initiated logout - -Make sure that logging out of your application also logs out of the IdP. -If this does not work, users who log out of your application can log in again without entering any username or password. - - -### IdP initiated logout - -This is used by the IdP if the user logs out of a different SP connected to the IdP. -In this case, the user should also be logged out of your application. - -The easiest way to test this is if you have two SPs connected to the IdP. -You can then log out of one SP and check that you are also logged out of the other. - - -Remove the old metadata from the IdP ------------------------------------- - -Once the new SP works correctly, you can remove the metadata for the old SP from the IdP. -How you do that depends on the IdP. -If you are running a SimpleSAMLphp IdP, you can remove the entry for the old SP in `metadata/saml20-sp-remote.php`. - - -Disable the old SAML 2 SP -------------------------- - -You may also want to disable the old SP code in SimpleSAMLphp. -To do that, open `config/config.php`, and change the `enable.saml20-sp` option to `FALSE`. - diff --git a/docs/simplesamlphp-sp.md b/docs/simplesamlphp-sp.md index 453b9b525101a2b2b10c3008c8de62df75a82b4e..24530e6a5f2ec63e050391e7e5009589174bcfaf 100644 --- a/docs/simplesamlphp-sp.md +++ b/docs/simplesamlphp-sp.md @@ -22,26 +22,26 @@ The SP is configured by an entry in `config/authsources.php`. This is a minimal `authsources.php` for a SP: <?php - $config = array( + $config = [ /* This is the name of this authentication source, and will be used to access it later. */ - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', - ), - ); + ], + ]; For more information about additional options available for the SP, see the [`saml:SP` reference](./saml:sp). If you want multiple Service Providers in the same site and installation, you can add more entries in the `authsources.php` configuration. If so remember to set the EntityID explicitly. Here is an example: - 'sp1' => array( + 'sp1' => [ 'saml:SP', 'entityID' => 'https://sp1.example.org/', - ), - 'sp2' => array( + ], + 'sp2' => [ 'saml:SP', 'entityID' => 'https://sp2.example.org/', - ), + ], ### Enabling a certificate for your Service Provider @@ -55,11 +55,11 @@ Create a self-signed certificate in the `cert/` directory. Then edit your `authsources.php` entry, and add references to your certificate: - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', 'privatekey' => 'saml.pem', 'certificate' => 'saml.crt', - ), + ], Adding IdPs to the SP @@ -69,11 +69,11 @@ The service provider you are configuring needs to know about the identity provid This is a minimal example of a `metadata/saml20-idp-remote.php` metadata file: <?php - $metadata['https://example.com'] = array( + $metadata['https://example.com'] = [ 'SingleSignOnService' => 'https://example.com/simplesaml/saml2/idp/SSOService.php', 'SingleLogoutService' => 'https://example.com/simplesaml/saml2/idp/SingleLogoutService.php', 'certificate' => 'example.pem', - ); + ]; `example.pem` under your `cert/` directory contains the certificate the identity provider uses for signing assertions. @@ -91,9 +91,9 @@ An option in the authentication source allows you to configure which IdP should This is the `idp` option. <?php - $config = array( + $config = [ - 'default-sp' => array( + 'default-sp' => [ 'saml:SP', /* @@ -101,8 +101,8 @@ This is the `idp` option. * Can be NULL/unset, in which case the user will be shown a list of available IdPs. */ 'idp' => 'https://idp.example.com', - ), - ); + ], + ]; Exchange metadata with the IdP @@ -180,9 +180,9 @@ Each attribute name can be used as an index into $attributes to obtain the value We can also request authentication with a specific IdP: - $as->login(array( + $as->login([ 'saml:idp' => 'https://idp.example.org/', - )); + ]); Other options are also available. Take a look in the documentation for the [SP module](./saml:sp) for a list of all parameters. diff --git a/docs/simplesamlphp-upgrade-notes-1.15.md b/docs/simplesamlphp-upgrade-notes-1.15.md index a4ffd2483d3c320b80ac1e00607b8c154b033cda..f540193fb4e3891b0ab1d67bfaf1d4418590ee99 100644 --- a/docs/simplesamlphp-upgrade-notes-1.15.md +++ b/docs/simplesamlphp-upgrade-notes-1.15.md @@ -26,3 +26,7 @@ full certificate in `certData` instead. The `core:AttributeRealm` authproc filter has been deprecated. Please use `core:ScopeFromAttribute`, which is a generalised version of this. + +simpleSAMLphp will now send the eduPersonTargetedID attribute in the correct +NameID XML form, instead of the incorrect simple string. It will also refuse +to parse an assertion with an eduPersonTargetedID in 'string' format. diff --git a/docs/simplesamlphp-upgrade-notes-1.17.md b/docs/simplesamlphp-upgrade-notes-1.17.md new file mode 100644 index 0000000000000000000000000000000000000000..32a2dae1c7931343013fa49a1a6c4580bd71cbe6 --- /dev/null +++ b/docs/simplesamlphp-upgrade-notes-1.17.md @@ -0,0 +1,30 @@ +Upgrade notes for SimpleSAMLphp 1.17 +==================================== + +The minimum PHP version required is now PHP 5.5. + +All (remaining) classes have been changed to namespaces. There are mappings +from the legacy names so calling code should remain working. Custom code +(e.g. modules) that test for class names, e.g. when catching specific +exceptions, may need to be changed. + +The code, config and documentation have switched to using the modern PHP +array syntax. This should not have an impact as both will remain working +equally, but the code examples and config templates look slightly different. +The following are equivalent: + + // Old style array syntax + $config = array( + 'authproc' => array( + 60 => 'class:etc' + ), + 'other example' => 1 + ); + + // Current style array syntax + $config = [ + 'authproc' => [ + 60 => 'class:etc' + ], + 'other example' => 1 + ]; diff --git a/lib/SimpleSAML/Auth/Default.php b/lib/SimpleSAML/Auth/Default.php index 234f97f6ebd9b941a195e86085f0564f16ef7f5a..86c7465cd51706c59d2b46c3bbc51de9da27eb23 100644 --- a/lib/SimpleSAML/Auth/Default.php +++ b/lib/SimpleSAML/Auth/Default.php @@ -23,7 +23,7 @@ class DefaultAuth $authId, $return, $errorURL = null, - array $params = array() + array $params = [] ) { $as = self::getAuthSource($authId); @@ -64,7 +64,7 @@ class DefaultAuth $session->doLogout($authority); $state['\SimpleSAML\Auth\DefaultAuth.ReturnURL'] = $returnURL; - $state['LogoutCompletedHandler'] = array(get_class(), 'logoutCompleted'); + $state['LogoutCompletedHandler'] = [get_class(), 'logoutCompleted']; $as = Source::getById($authority); if ($as === null) { diff --git a/lib/SimpleSAML/Auth/LDAP.php b/lib/SimpleSAML/Auth/LDAP.php index 9f57a7eb2d12d610a644eb2e38c3591fd9681a45..c83d221f9c73d69869edf334a97e77f16a96121a 100644 --- a/lib/SimpleSAML/Auth/LDAP.php +++ b/lib/SimpleSAML/Auth/LDAP.php @@ -205,6 +205,7 @@ class LDAP return new Error\AuthSource('ldap', $description); } } + return new \Exception('Unknown LDAP error.'); } @@ -254,11 +255,11 @@ class LDAP // Search using generated filter Logger::debug('Library - LDAP search(): Searching base ('.$scope.') \''.$base.'\' for \''.$filter.'\''); if ($scope === 'base') { - $result = @ldap_read($this->ldap, $base, $filter, array(), 0, 0, $this->timeout, LDAP_DEREF_NEVER); + $result = @ldap_read($this->ldap, $base, $filter, [], 0, 0, $this->timeout, LDAP_DEREF_NEVER); } elseif ($scope === 'onelevel') { - $result = @ldap_list($this->ldap, $base, $filter, array(), 0, 0, $this->timeout, LDAP_DEREF_NEVER); + $result = @ldap_list($this->ldap, $base, $filter, [], 0, 0, $this->timeout, LDAP_DEREF_NEVER); } else { - $result = @ldap_search($this->ldap, $base, $filter, array(), 0, 0, $this->timeout, LDAP_DEREF_NEVER); + $result = @ldap_search($this->ldap, $base, $filter, [], 0, 0, $this->timeout, LDAP_DEREF_NEVER); } if ($result === false) { @@ -385,7 +386,7 @@ class LDAP public function searchformultiple( $bases, $filters, - $attributes = array(), + $attributes = [], $and = true, $escape = true, $scope = 'subtree' @@ -607,7 +608,7 @@ class LDAP } else { // Get all attributes... // TODO: Verify that this originally was the intended behaviour. Could $attributes be a string? - $attributes = array(); + $attributes = []; } Logger::debug('Library - LDAP getAttributes(): Getting '.$description.' from DN \''.$dn.'\''); @@ -629,14 +630,14 @@ class LDAP } // Parsing each found attribute into our result set - $result = array(); // Recycling $result... Possibly bad practice. + $result = []; // Recycling $result... Possibly bad practice. for ($i = 0; $i < $attributes['count']; $i++) { // Ignore attributes that exceed the maximum allowed size $name = $attributes[$i]; $attribute = $attributes[$name]; // Deciding whether to base64 encode - $values = array(); + $values = []; for ($j = 0; $j < $attribute['count']; $j++) { $value = $attribute[$j]; @@ -727,7 +728,7 @@ class LDAP * @param string|array $values Array of values to escape * @return array Array $values, but escaped */ - public static function escape_filter_value($values = array(), $singleValue = true) + public static function escape_filter_value($values = [], $singleValue = true) { // Parameter validation $values = \SimpleSAML\Utils\Arrays::arrayize($values); diff --git a/lib/SimpleSAML/Auth/ProcessingChain.php b/lib/SimpleSAML/Auth/ProcessingChain.php index 9ccda2ceab8ec2426405f53d14fe8d81e48d2803..9f7daf3a3b2bb55cf4576fa3935c1003a269b293 100644 --- a/lib/SimpleSAML/Auth/ProcessingChain.php +++ b/lib/SimpleSAML/Auth/ProcessingChain.php @@ -52,7 +52,7 @@ class ProcessingChain assert(is_array($idpMetadata)); assert(is_array($spMetadata)); - $this->filters = array(); + $this->filters = []; $config = \SimpleSAML\Configuration::getInstance(); $configauthproc = $config->getArray('authproc.'.$mode, null); @@ -101,7 +101,7 @@ class ProcessingChain } } /* $i now points to the filter which should preceede the current filter. */ - array_splice($target, $i + 1, 0, array($filter)); + array_splice($target, $i + 1, 0, [$filter]); } } @@ -116,11 +116,11 @@ class ProcessingChain { assert(is_array($filterSrc)); - $parsedFilters = array(); + $parsedFilters = []; foreach ($filterSrc as $priority => $filter) { if (is_string($filter)) { - $filter = array('class' => $filter); + $filter = ['class' => $filter]; } if (!is_array($filter)) { @@ -255,7 +255,7 @@ class ProcessingChain * in $state['ReturnURL']. */ $id = State::saveState($state, self::COMPLETED_STAGE); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($state['ReturnURL'], array(self::AUTHPARAM => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($state['ReturnURL'], [self::AUTHPARAM => $id]); } else { /* Pass the state to the function defined in $state['ReturnCall']. */ @@ -316,7 +316,7 @@ class ProcessingChain * * @param string $id The state identifier. * @see State::parseStateID() - * @return Array The state referenced by the $id parameter. + * @return array The state referenced by the $id parameter. */ public static function fetchProcessedState($id) { diff --git a/lib/SimpleSAML/Auth/Simple.php b/lib/SimpleSAML/Auth/Simple.php index 7110074055b036318348b4c3219cdf4a2aaebf41..ffaa0cc92a2921fcd53cc9f472cde8fba3a64dbf 100644 --- a/lib/SimpleSAML/Auth/Simple.php +++ b/lib/SimpleSAML/Auth/Simple.php @@ -98,7 +98,7 @@ class Simple * * @param array $params Various options to the authentication request. See the documentation. */ - public function requireAuth(array $params = array()) + public function requireAuth(array $params = []) { if ($this->session->isValid($this->authSource)) { // Already authenticated @@ -123,7 +123,7 @@ class Simple * * @param array $params Various options to the authentication request. */ - public function login(array $params = array()) + public function login(array $params = []) { if (array_key_exists('KeepPost', $params)) { $keepPost = (bool) $params['KeepPost']; @@ -191,9 +191,9 @@ class Simple } if (is_string($params)) { - $params = array( + $params = [ 'ReturnTo' => $params, - ); + ]; } assert(is_array($params)); @@ -211,7 +211,7 @@ class Simple $this->session->doLogout($this->authSource); - $params['LogoutCompletedHandler'] = array(get_class(), 'logoutCompleted'); + $params['LogoutCompletedHandler'] = [get_class(), 'logoutCompleted']; $as = Source::getById($this->authSource); if ($as !== null) { @@ -239,7 +239,7 @@ class Simple call_user_func($state['ReturnCallback'], $state); assert(false); } else { - $params = array(); + $params = []; if (isset($state['ReturnStateParam']) || isset($state['ReturnStateStage'])) { assert(isset($state['ReturnStateParam'], $state['ReturnStateStage'])); $stateID = State::saveState($state, $state['ReturnStateStage']); @@ -262,7 +262,7 @@ class Simple { if (!$this->isAuthenticated()) { // Not authenticated - return array(); + return []; } // Authenticated @@ -320,10 +320,10 @@ class Simple $returnTo = HTTP::getSelfURL(); } - $login = Module::getModuleURL('core/as_login.php', array( + $login = Module::getModuleURL('core/as_login.php', [ 'AuthId' => $this->authSource, 'ReturnTo' => $returnTo, - )); + ]); return $login; } @@ -345,10 +345,10 @@ class Simple $returnTo = HTTP::getSelfURL(); } - $logout = Module::getModuleURL('core/as_logout.php', array( + $logout = Module::getModuleURL('core/as_logout.php', [ 'AuthId' => $this->authSource, 'ReturnTo' => $returnTo, - )); + ]); return $logout; } diff --git a/lib/SimpleSAML/Auth/Source.php b/lib/SimpleSAML/Auth/Source.php index a7dc11633aadc599a99c7b1daf8de1b297fd7f22..9cd8486415c308341b93a76a550d4d7ae8fe03f1 100644 --- a/lib/SimpleSAML/Auth/Source.php +++ b/lib/SimpleSAML/Auth/Source.php @@ -55,7 +55,7 @@ abstract class Source $config = \SimpleSAML\Configuration::getConfig('authsources.php'); - $ret = array(); + $ret = []; $sources = $config->getOptions(); foreach ($sources as $id) { @@ -160,25 +160,25 @@ abstract class Source * @param array $params Extra information about the login. Different authentication requestors may provide different * information. Optional, will default to an empty array. */ - public function initLogin($return, $errorURL = null, array $params = array()) + public function initLogin($return, $errorURL = null, array $params = []) { assert(is_string($return) || is_array($return)); assert(is_string($errorURL) || $errorURL === null); - $state = array_merge($params, array( + $state = array_merge($params, [ '\SimpleSAML\Auth\DefaultAuth.id' => $this->authId, // TODO: remove in 2.0 '\SimpleSAML\Auth\Source.id' => $this->authId, '\SimpleSAML\Auth\DefaultAuth.Return' => $return, // TODO: remove in 2.0 '\SimpleSAML\Auth\Source.Return' => $return, '\SimpleSAML\Auth\DefaultAuth.ErrorURL' => $errorURL, // TODO: remove in 2.0 '\SimpleSAML\Auth\Source.ErrorURL' => $errorURL, - 'LoginCompletedHandler' => array(get_class(), 'loginCompleted'), - 'LogoutCallback' => array(get_class(), 'logoutCallback'), - 'LogoutCallbackState' => array( + 'LoginCompletedHandler' => [get_class(), 'loginCompleted'], + 'LogoutCallback' => [get_class(), 'logoutCallback'], + 'LogoutCallbackState' => [ '\SimpleSAML\Auth\DefaultAuth.logoutSource' => $this->authId, // TODO: remove in 2.0 '\SimpleSAML\Auth\Source.logoutSource' => $this->authId, - ), - )); + ], + ]); if (is_string($return)) { $state['\SimpleSAML\Auth\DefaultAuth.ReturnURL'] = $return; // TODO: remove in 2.0 @@ -297,7 +297,7 @@ abstract class Source self::validateSource($config, $authId); $id = $config[0]; - $info = array('AuthId' => $authId); + $info = ['AuthId' => $authId]; $authSource = null; unset($config[0]); @@ -426,15 +426,15 @@ abstract class Source if (array_key_exists('LogoutCallbackState', $state)) { $callbackState = $state['LogoutCallbackState']; } else { - $callbackState = array(); + $callbackState = []; } $id = strlen($this->authId).':'.$this->authId.$assoc; - $data = array( + $data = [ 'callback' => $callback, 'state' => $callbackState, - ); + ]; $session = \SimpleSAML\Session::getSessionFromRequest(); $session->setData( diff --git a/lib/SimpleSAML/Auth/State.php b/lib/SimpleSAML/Auth/State.php index 44454b41ff6f379eea5f2eb782dbf6143b548f89..8ee2986db0612988e7fcd8fa3154c7be6935adc4 100644 --- a/lib/SimpleSAML/Auth/State.php +++ b/lib/SimpleSAML/Auth/State.php @@ -103,7 +103,7 @@ class State public static function getPersistentAuthData(array $state) { // save persistent authentication data - $persistent = array(); + $persistent = []; if (array_key_exists('PersistentAuthData', $state)) { foreach ($state['PersistentAuthData'] as $key) { @@ -114,14 +114,14 @@ class State } // add those that should always be included - $mandatory = array( + $mandatory = [ 'Attributes', 'Expire', 'LogoutState', 'AuthInstant', 'RememberMe', 'saml:sp:NameID' - ); + ]; foreach ($mandatory as $key) { if (isset($state[$key])) { $persistent[$key] = $state[$key]; @@ -352,7 +352,7 @@ class State // Redirect to the exception handler \SimpleSAML\Utils\HTTP::redirectTrustedURL( $state[self::EXCEPTION_HANDLER_URL], - array(self::EXCEPTION_PARAM => $id) + [self::EXCEPTION_PARAM => $id] ); } elseif (array_key_exists(self::EXCEPTION_HANDLER_FUNC, $state)) { // Call the exception handler @@ -415,6 +415,6 @@ class State if (count($tmp) === 2) { $url = $tmp[1]; } - return array('id' => $id, 'url' => $url); + return ['id' => $id, 'url' => $url]; } } diff --git a/lib/SimpleSAML/Bindings/Shib13/Artifact.php b/lib/SimpleSAML/Bindings/Shib13/Artifact.php index 83df98925eae345cfb143987e1744e40a28dab3d..3ce30d977fbb3d902817729e0a071af86eb85864 100644 --- a/lib/SimpleSAML/Bindings/Shib13/Artifact.php +++ b/lib/SimpleSAML/Bindings/Shib13/Artifact.php @@ -33,7 +33,7 @@ class Artifact // We need to process the query string manually, to capture all SAMLart parameters - $artifacts = array(); + $artifacts = []; $elements = explode('&', $_SERVER['QUERY_STRING']); foreach ($elements as $element) { @@ -142,7 +142,7 @@ class Artifact $url = $idpMetadata->getDefaultEndpoint( 'ArtifactResolutionService', - array('urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding') + ['urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding'] ); $url = $url['Location']; @@ -164,21 +164,21 @@ class Artifact $spKeyCertFile = Config::getCertPath($spMetadata->getString('privatekey')); - $opts = array( - 'ssl' => array( + $opts = [ + 'ssl' => [ 'verify_peer' => true, 'cafile' => $file, 'local_cert' => $spKeyCertFile, 'capture_peer_cert' => true, 'capture_peer_chain' => true, - ), - 'http' => array( + ], + 'http' => [ 'method' => 'POST', 'content' => $request, 'header' => 'SOAPAction: http://www.oasis-open.org/committees/security'."\r\n". 'Content-Type: text/xml', - ), - ); + ], + ]; // Fetch the artifact $response = HTTP::fetch($url, $opts); diff --git a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php index 97d004c7179475dd155cf850f56589891edecf14..893682c1b8569bb0eb2e619f4f38a1b453e79c73 100644 --- a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php +++ b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php @@ -88,11 +88,11 @@ class HTTPPost $signResponse = true; } - $signer = new Signer(array( + $signer = new Signer([ 'privatekey_array' => $privatekey, 'publickey_array' => $publickey, 'id' => ($signResponse ? 'ResponseID' : 'AssertionID'), - )); + ]); if ($idpmd->hasValue('certificatechain')) { $signer->addCertificate($idpmd->getString('certificatechain')); @@ -113,10 +113,10 @@ class HTTPPost XML::debugSAMLMessage($response, 'out'); - HTTP::submitPOSTData($shire, array( + HTTP::submitPOSTData($shire, [ 'TARGET' => $relayState, 'SAMLResponse' => base64_encode($response), - )); + ]); } diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php index 48dc325c52402515da6ebc96a3c7a220eacb6818..f9275d521f0704d3d2499c47b920976f9aac161d 100644 --- a/lib/SimpleSAML/Configuration.php +++ b/lib/SimpleSAML/Configuration.php @@ -25,7 +25,7 @@ class Configuration implements Utils\ClearableState * * @var array */ - private static $instance = array(); + private static $instance = []; /** @@ -36,7 +36,7 @@ class Configuration implements Utils\ClearableState * * @var array */ - private static $configDirs = array(); + private static $configDirs = []; /** @@ -46,7 +46,7 @@ class Configuration implements Utils\ClearableState * * @var array */ - private static $loadedConfigs = array(); + private static $loadedConfigs = []; /** @@ -125,8 +125,8 @@ class Configuration implements Utils\ClearableState try { require($filename); } catch (\ParseError $e) { - self::$loadedConfigs[$filename] = self::loadFromArray(array(), '[ARRAY]', 'simplesaml'); - throw new Error\ConfigurationError($e->getMessage(), $filename, array()); + self::$loadedConfigs[$filename] = self::loadFromArray([], '[ARRAY]', 'simplesaml'); + throw new Error\ConfigurationError($e->getMessage(), $filename, []); } } else { require($filename); @@ -163,7 +163,7 @@ class Configuration implements Utils\ClearableState throw new Error\ConfigurationError('Missing configuration file', $filename); } else { // file does not exist, but is optional, so return an empty configuration object without saving it - $cfg = new Configuration(array(), $filename); + $cfg = new Configuration([], $filename); $cfg->filename = $filename; return $cfg; } @@ -842,7 +842,7 @@ class Configuration implements Utils\ClearableState } if (!in_array($ret, $allowedValues, true)) { - $strValues = array(); + $strValues = []; foreach ($allowedValues as $av) { $strValues[] = var_export($av, true); } @@ -918,7 +918,7 @@ class Configuration implements Utils\ClearableState } if (!is_array($ret)) { - $ret = array($ret); + $ret = [$ret]; } return $ret; @@ -1040,7 +1040,7 @@ class Configuration implements Utils\ClearableState ); } - $out = array(); + $out = []; foreach ($ret as $index => $config) { $newLoc = $this->location.'['.var_export($name, true).']['. var_export($index, true).']'; @@ -1132,14 +1132,14 @@ class Configuration implements Utils\ClearableState if (!array_key_exists($endpointType, $this->configuration)) { // no endpoints of the given type - return array(); + return []; } $eps = $this->configuration[$endpointType]; if (is_string($eps)) { // for backwards-compatibility - $eps = array($eps); + $eps = [$eps]; } elseif (!is_array($eps)) { throw new \Exception($loc.': Expected array or string.'); } @@ -1150,10 +1150,10 @@ class Configuration implements Utils\ClearableState if (is_string($ep)) { // for backwards-compatibility - $ep = array( + $ep = [ 'Location' => $ep, 'Binding' => $this->getDefaultBinding($endpointType), - ); + ]; $responseLocation = $this->getString($endpointType.'Response', null); if ($responseLocation !== null) { $ep['ResponseLocation'] = $responseLocation; @@ -1286,7 +1286,7 @@ class Configuration implements Utils\ClearableState $loc = $this->location.'['.var_export($name, true).']'; if (is_string($ret)) { - $ret = array('en' => $ret,); + $ret = ['en' => $ret]; } if (!is_array($ret)) { @@ -1327,7 +1327,7 @@ class Configuration implements Utils\ClearableState assert(is_string($prefix)); if ($this->hasValue($prefix.'keys')) { - $ret = array(); + $ret = []; foreach ($this->getArray($prefix.'keys') as $key) { if ($use !== null && isset($key[$use]) && !$key[$use]) { continue; @@ -1342,14 +1342,14 @@ class Configuration implements Utils\ClearableState } elseif ($this->hasValue($prefix.'certData')) { $certData = $this->getString($prefix.'certData'); $certData = preg_replace('/\s+/', '', $certData); - return array( - array( + return [ + [ 'encryption' => true, 'signing' => true, 'type' => 'X509Certificate', 'X509Certificate' => $certData, - ), - ); + ], + ]; } elseif ($this->hasValue($prefix.'certificate')) { $file = $this->getString($prefix.'certificate'); $file = Utils\Config::getCertPath($file); @@ -1368,18 +1368,18 @@ class Configuration implements Utils\ClearableState } $certData = preg_replace('/\s+/', '', $matches[1]); - return array( - array( + return [ + [ 'encryption' => true, 'signing' => true, 'type' => 'X509Certificate', 'X509Certificate' => $certData, - ), - ); + ], + ]; } elseif ($required === true) { throw new \SimpleSAML\Error\Exception($this->location.': Missing certificate in metadata.'); } else { - return array(); + return []; } } @@ -1390,8 +1390,8 @@ class Configuration implements Utils\ClearableState */ public static function clearInternalState() { - self::$configDirs = array(); - self::$instance = array(); - self::$loadedConfigs = array(); + self::$configDirs = []; + self::$instance = []; + self::$loadedConfigs = []; } } diff --git a/lib/SimpleSAML/Database.php b/lib/SimpleSAML/Database.php index aee9e27258955ef902988863b20f9918e3fb60ee..94c9b788f14ec3e53f0162cf8f5c0e210cfb3929 100644 --- a/lib/SimpleSAML/Database.php +++ b/lib/SimpleSAML/Database.php @@ -22,7 +22,7 @@ class Database /** * This variable holds the instance of the session - Singleton approach. */ - private static $instance = array(); + private static $instance = []; /** * PDO Object for the Master database server @@ -32,7 +32,7 @@ class Database /** * Array of PDO Objects for configured database slaves */ - private $dbSlaves = array(); + private $dbSlaves = []; /** * Prefix to apply to the tables @@ -75,9 +75,9 @@ class Database */ private function __construct($config) { - $driverOptions = $config->getArray('database.driver_options', array()); + $driverOptions = $config->getArray('database.driver_options', []); if ($config->getBoolean('database.persistent', true)) { - $driverOptions = array(\PDO::ATTR_PERSISTENT => true); + $driverOptions = [\PDO::ATTR_PERSISTENT => true]; } // connect to the master @@ -89,7 +89,7 @@ class Database ); // connect to any configured slaves - $slaves = $config->getArray('database.slaves', array()); + $slaves = $config->getArray('database.slaves', []); foreach ($slaves as $slave) { array_push( $this->dbSlaves, @@ -115,16 +115,16 @@ class Database */ private static function generateInstanceId($config) { - $assembledConfig = array( - 'master' => array( + $assembledConfig = [ + 'master' => [ 'database.dsn' => $config->getString('database.dsn'), 'database.username' => $config->getString('database.username', null), 'database.password' => $config->getString('database.password', null), 'database.prefix' => $config->getString('database.prefix', ''), 'database.persistent' => $config->getBoolean('database.persistent', false), - ), - 'slaves' => $config->getArray('database.slaves', array()), - ); + ], + 'slaves' => $config->getArray('database.slaves', []), + ]; return sha1(serialize($assembledConfig)); } @@ -252,7 +252,7 @@ class Database * * @return int The number of rows affected by the query. */ - public function write($stmt, $params = array()) + public function write($stmt, $params = []) { $db = $this->dbMaster; @@ -273,7 +273,7 @@ class Database * * @return \PDOStatement|bool object */ - public function read($stmt, $params = array()) + public function read($stmt, $params = []) { $db = $this->getSlave(); diff --git a/lib/SimpleSAML/Error/Assertion.php b/lib/SimpleSAML/Error/Assertion.php index 7a5cb2dfaf990a70ad13da0d46a3b41b5b92eeec..c16f61164ceb5a1afb84f91bd9a7762b15e6449c 100644 --- a/lib/SimpleSAML/Error/Assertion.php +++ b/lib/SimpleSAML/Error/Assertion.php @@ -59,7 +59,7 @@ class Assertion extends Exception assert_options(ASSERT_WARNING, 0); assert_options(ASSERT_QUIET_EVAL, 0); - assert_options(ASSERT_CALLBACK, array('\SimpleSAML\Error\Assertion', 'onAssertion')); + assert_options(ASSERT_CALLBACK, ['\SimpleSAML\Error\Assertion', 'onAssertion']); } diff --git a/lib/SimpleSAML/Error/AuthSource.php b/lib/SimpleSAML/Error/AuthSource.php index 6db18812164ec06b994d7860c1324bc131daec9c..e075aa7bc45a5036300550bdd440de478acaae1a 100644 --- a/lib/SimpleSAML/Error/AuthSource.php +++ b/lib/SimpleSAML/Error/AuthSource.php @@ -37,11 +37,11 @@ class AuthSource extends Error $this->authsource = $authsource; $this->reason = $reason; parent::__construct( - array( + [ 'AUTHSOURCEERROR', '%AUTHSOURCE%' => htmlspecialchars(var_export($this->authsource, true)), '%REASON%' => htmlspecialchars(var_export($this->reason, true)) - ), + ], $cause ); diff --git a/lib/SimpleSAML/Error/BadRequest.php b/lib/SimpleSAML/Error/BadRequest.php index 41bf65c1f98c0653960b9fb124c92591bd80f18e..1deb08c0bf3e9c3d2b9982868454168fc76dc29a 100644 --- a/lib/SimpleSAML/Error/BadRequest.php +++ b/lib/SimpleSAML/Error/BadRequest.php @@ -30,7 +30,7 @@ class BadRequest extends Error assert(is_string($reason)); $this->reason = $reason; - parent::__construct(array('BADREQUEST', '%REASON%' => $this->reason)); + parent::__construct(['BADREQUEST', '%REASON%' => $this->reason]); $this->httpCode = 400; } diff --git a/lib/SimpleSAML/Error/ConfigurationError.php b/lib/SimpleSAML/Error/ConfigurationError.php index 47dd0ccc9859d9c7e9b558a6e2472403980438b0..128093dad543d0991272cae7d353fc9156bfe442 100644 --- a/lib/SimpleSAML/Error/ConfigurationError.php +++ b/lib/SimpleSAML/Error/ConfigurationError.php @@ -37,7 +37,7 @@ class ConfigurationError extends Error { $file_str = ''; $reason_str = '.'; - $params = array('CONFIG'); + $params = ['CONFIG']; if ($file !== null) { $params['%FILE%'] = $file; $basepath = dirname(dirname(dirname(dirname(__FILE__)))).'/'; diff --git a/lib/SimpleSAML/Error/CriticalConfigurationError.php b/lib/SimpleSAML/Error/CriticalConfigurationError.php index 1e67a1e80d9dd7f6caee13706da426b66100bf71..d41367fbf051cd6800045888928c134a47551798 100644 --- a/lib/SimpleSAML/Error/CriticalConfigurationError.php +++ b/lib/SimpleSAML/Error/CriticalConfigurationError.php @@ -28,12 +28,12 @@ class CriticalConfigurationError extends ConfigurationError * * @var array */ - private static $minimum_config = array( + private static $minimum_config = [ 'logging.handler' => 'errorlog', 'logging.level' => \SimpleSAML\Logger::DEBUG, 'errorreporting' => false, 'debug' => true, - ); + ]; /** diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php index 9632df87de26b5b874bd03b5050aa72dae4ad633..0d8d011a0b659ded18caa3023e504d0968fcff65 100644 --- a/lib/SimpleSAML/Error/Error.php +++ b/lib/SimpleSAML/Error/Error.php @@ -79,7 +79,7 @@ class Error extends Exception unset($this->parameters[0]); $this->errorCode = $errorCode[0]; } else { - $this->parameters = array(); + $this->parameters = []; $this->errorCode = $errorCode; } @@ -165,30 +165,7 @@ class Error extends Exception */ protected function setHTTPCode() { - // Some mostly used HTTP codes - $httpCodesMap = array( - 400 => 'HTTP/1.0 400 Bad Request', - 403 => 'HTTP/1.0 403 Forbidden', - 404 => 'HTTP/1.0 404 Not Found', - 405 => 'HTTP/1.0 405 Method Not Allowed', - 500 => 'HTTP/1.0 500 Internal Server Error', - 501 => 'HTTP/1.0 501 Method Not Implemented', - 503 => 'HTTP/1.0 503 Service Temporarily Unavailable', - ); - - $httpCode = $this->httpCode; - - if (function_exists('http_response_code')) { - http_response_code($httpCode); - return; - } - - if (!array_key_exists($this->httpCode, $httpCodesMap)) { - $httpCode = 500; - \SimpleSAML\Logger::warning('HTTP response code not defined: '.var_export($this->httpCode, true)); - } - - header($httpCodesMap[$httpCode]); + http_response_code($this->httpCode); } @@ -219,7 +196,7 @@ class Error extends Exception } else { $referer = 'unknown'; } - $errorData = array( + $errorData = [ 'exceptionMsg' => $emsg, 'exceptionTrace' => $etrace, 'reportId' => $reportId, @@ -227,7 +204,7 @@ class Error extends Exception 'url' => \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), 'version' => $config->getVersion(), 'referer' => $referer, - ); + ]; $session->setData('core:errorreport', $reportId, $errorData); return $errorData; @@ -249,7 +226,7 @@ class Error extends Exception $errorData = $this->saveError(); $config = \SimpleSAML\Configuration::getInstance(); - $data = array(); + $data = []; $data['showerrors'] = $config->getBoolean('showerrors', true); $data['error'] = $errorData; $data['errorCode'] = $this->errorCode; diff --git a/lib/SimpleSAML/Error/ErrorCodes.php b/lib/SimpleSAML/Error/ErrorCodes.php index e3586589474e97cae23e8285b22c63b06e10eaa5..d15f8c46ff268d03933ec39b011f03f3547fac90 100644 --- a/lib/SimpleSAML/Error/ErrorCodes.php +++ b/lib/SimpleSAML/Error/ErrorCodes.php @@ -18,7 +18,7 @@ class ErrorCodes */ final public static function defaultGetAllErrorCodeTitles() { - return array( + return [ 'ACSPARAMS' => \SimpleSAML\Locale\Translate::noop('{errors:title_ACSPARAMS}'), 'ARSPARAMS' => \SimpleSAML\Locale\Translate::noop('{errors:title_ARSPARAMS}'), 'AUTHSOURCEERROR' => \SimpleSAML\Locale\Translate::noop('{errors:title_AUTHSOURCEERROR}'), @@ -52,7 +52,7 @@ class ErrorCodes 'UNKNOWNCERT' => \SimpleSAML\Locale\Translate::noop('{errors:title_UNKNOWNCERT}'), 'USERABORTED' => \SimpleSAML\Locale\Translate::noop('{errors:title_USERABORTED}'), 'WRONGUSERPASS' => \SimpleSAML\Locale\Translate::noop('{errors:title_WRONGUSERPASS}'), - ); + ]; } @@ -76,7 +76,7 @@ class ErrorCodes */ final public static function defaultGetAllErrorCodeDescriptions() { - return array( + return [ 'ACSPARAMS' => \SimpleSAML\Locale\Translate::noop('{errors:descr_ACSPARAMS}'), 'ARSPARAMS' => \SimpleSAML\Locale\Translate::noop('{errors:descr_ARSPARAMS}'), 'AUTHSOURCEERROR' => \SimpleSAML\Locale\Translate::noop('{errors:descr_AUTHSOURCEERROR}'), @@ -110,7 +110,7 @@ class ErrorCodes 'UNKNOWNCERT' => \SimpleSAML\Locale\Translate::noop('{errors:descr_UNKNOWNCERT}'), 'USERABORTED' => \SimpleSAML\Locale\Translate::noop('{errors:descr_USERABORTED}'), 'WRONGUSERPASS' => \SimpleSAML\Locale\Translate::noop('{errors:descr_WRONGUSERPASS}'), - ); + ]; } /** @@ -135,10 +135,10 @@ class ErrorCodes */ public static function getAllErrorCodeMessages() { - return array( + return [ 'title' => self::getAllErrorCodeTitles(), 'descr' => self::getAllErrorCodeDescriptions(), - ); + ]; } @@ -181,9 +181,9 @@ class ErrorCodes */ public static function getErrorCodeMessage($errorCode) { - return array( + return [ 'title' => self::getErrorCodeTitle($errorCode), 'descr' => self::getErrorCodeDescription($errorCode), - ); + ]; } } diff --git a/lib/SimpleSAML/Error/Exception.php b/lib/SimpleSAML/Error/Exception.php index 8a3b199aad3407357465a966af283e3721febb32..5ab59f4821213500199c53e50b15968bc3e58124 100644 --- a/lib/SimpleSAML/Error/Exception.php +++ b/lib/SimpleSAML/Error/Exception.php @@ -80,7 +80,7 @@ class Exception extends \Exception */ protected function initBacktrace(\Exception $exception) { - $this->backtrace = array(); + $this->backtrace = []; // position in the top function on the stack $pos = $exception->getFile().':'.$exception->getLine(); @@ -148,9 +148,9 @@ class Exception extends \Exception */ public function format($anonymize = false) { - $ret = array( + $ret = [ $this->getClass().': '.$this->getMessage(), - ); + ]; return array_merge($ret, $this->formatBacktrace($anonymize)); } @@ -166,7 +166,7 @@ class Exception extends \Exception */ public function formatBacktrace($anonymize = false) { - $ret = array(); + $ret = []; $basedir = \SimpleSAML\Configuration::getInstance()->getBaseDir(); $e = $this; @@ -197,7 +197,7 @@ class Exception extends \Exception protected function logBacktrace($level = \SimpleSAML\Logger::DEBUG) { // see if debugging is enabled for backtraces - $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', array('backtraces' => false)); + $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', ['backtraces' => false]); if (!(in_array('backtraces', $debug, true) // implicitly enabled || (array_key_exists('backtraces', $debug) && $debug['backtraces'] === true) @@ -210,13 +210,13 @@ class Exception extends \Exception $backtrace = $this->formatBacktrace(); - $callback = array('\SimpleSAML\Logger'); - $functions = array( + $callback = ['\SimpleSAML\Logger']; + $functions = [ \SimpleSAML\Logger::ERR => 'error', \SimpleSAML\Logger::WARNING => 'warning', \SimpleSAML\Logger::INFO => 'info', \SimpleSAML\Logger::DEBUG => 'debug', - ); + ]; $callback[] = $functions[$level]; foreach ($backtrace as $line) { @@ -234,13 +234,13 @@ class Exception extends \Exception */ public function log($default_level) { - $fn = array( + $fn = [ \SimpleSAML\Logger::ERR => 'logError', \SimpleSAML\Logger::WARNING => 'logWarning', \SimpleSAML\Logger::INFO => 'logInfo', \SimpleSAML\Logger::DEBUG => 'logDebug', - ); - call_user_func(array($this, $fn[$default_level]), $default_level); + ]; + call_user_func([$this, $fn[$default_level]], $default_level); } diff --git a/lib/SimpleSAML/Error/MetadataNotFound.php b/lib/SimpleSAML/Error/MetadataNotFound.php index 93e086c14e75116ef4e9dafab5091ba8e46abdbe..47636bc215e7029b885a330342cd31561cc56076 100644 --- a/lib/SimpleSAML/Error/MetadataNotFound.php +++ b/lib/SimpleSAML/Error/MetadataNotFound.php @@ -20,9 +20,9 @@ class MetadataNotFound extends Error assert(is_string($entityId)); $this->includeTemplate = 'core:no_metadata.tpl.php'; - parent::__construct(array( + parent::__construct([ 'METADATANOTFOUND', '%ENTITYID%' => htmlspecialchars(var_export($entityId, true)) - )); + ]); } } diff --git a/lib/SimpleSAML/Error/NotFound.php b/lib/SimpleSAML/Error/NotFound.php index 79f6049221186ec8e24e59bf21c4a40e39d8d714..0e618526962b0a596948e394b1f04abf046c1298 100644 --- a/lib/SimpleSAML/Error/NotFound.php +++ b/lib/SimpleSAML/Error/NotFound.php @@ -32,10 +32,10 @@ class NotFound extends Error $url = \SimpleSAML\Utils\HTTP::getSelfURL(); if ($reason === null) { - parent::__construct(array('NOTFOUND', '%URL%' => $url)); + parent::__construct(['NOTFOUND', '%URL%' => $url]); $this->message = "The requested page '$url' could not be found."; } else { - parent::__construct(array('NOTFOUNDREASON', '%URL%' => $url, '%REASON%' => $reason)); + parent::__construct(['NOTFOUNDREASON', '%URL%' => $url, '%REASON%' => $reason]); $this->message = "The requested page '$url' could not be found. ".$reason; } @@ -65,8 +65,8 @@ class NotFound extends Error */ public function format($anonymize = false) { - return array( + return [ $this->getClass().': '.$this->getMessage(), - ); + ]; } } diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php index 6110df9c7abad24956ff47c8e434bf31609744fb..70db63b4c4284b55ef2a02edc277d0b0fc4a5b1d 100644 --- a/lib/SimpleSAML/IdP.php +++ b/lib/SimpleSAML/IdP.php @@ -19,7 +19,7 @@ class IdP * * @var array */ - private static $idpCache = array(); + private static $idpCache = []; /** * The identifier for this IdP. @@ -204,7 +204,7 @@ class IdP } elseif ($spMetadata->hasValue('OrganizationDisplayName')) { return $spMetadata->getLocalizedString('OrganizationDisplayName'); } else { - return array('en' => $spEntityId); + return ['en' => $spEntityId]; } } @@ -307,7 +307,7 @@ class IdP if (isset($state['SPMetadata'])) { $spMetadata = $state['SPMetadata']; } else { - $spMetadata = array(); + $spMetadata = []; } if (isset($state['core:SP'])) { @@ -322,7 +322,7 @@ class IdP $pc = new Auth\ProcessingChain($idpMetadata, $spMetadata, 'idp'); - $state['ReturnCall'] = array('\SimpleSAML\IdP', 'postAuthProc'); + $state['ReturnCall'] = ['\SimpleSAML\IdP', 'postAuthProc']; $state['Destination'] = $spMetadata; $state['Source'] = $idpMetadata; @@ -403,7 +403,7 @@ class IdP } $state['IdPMetadata'] = $this->getConfig()->toArray(); - $state['ReturnCallback'] = array('\SimpleSAML\IdP', 'postAuth'); + $state['ReturnCallback'] = ['\SimpleSAML\IdP', 'postAuth']; try { if ($needAuth) { @@ -485,12 +485,12 @@ class IdP if ($assocId !== null) { $this->terminateAssociation($assocId); $session = Session::getSessionFromRequest(); - $session->deleteData('core:idp-ssotime', $this->id.':'.$state['saml:SPEntityId']); + $session->deleteData('core:idp-ssotime', $this->id.';'.$state['saml:SPEntityId']); } // terminate the local session $id = Auth\State::saveState($state, 'core:Logout:afterbridge'); - $returnTo = Module::getModuleURL('core/idp/resumelogout.php', array('id' => $id)); + $returnTo = Module::getModuleURL('core/idp/resumelogout.php', ['id' => $id]); $this->authSource->logout($returnTo); @@ -535,10 +535,10 @@ class IdP { assert(is_string($url)); - $state = array( - 'Responder' => array('\SimpleSAML\IdP', 'finishLogoutRedirect'), + $state = [ + 'Responder' => ['\SimpleSAML\IdP', 'finishLogoutRedirect'], 'core:Logout:URL' => $url, - ); + ]; $this->handleLogoutRequest($state, null); assert(false); diff --git a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php index 08c47aedbdd997c9f27577f66e8714085deb2804..b2d808cc29363bc5e1f5f37add2264b9ea783f76 100644 --- a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php +++ b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php @@ -56,7 +56,7 @@ class IFrameLogoutHandler implements LogoutHandlerInterface if (!is_null($assocId)) { $spName = $this->idp->getSPName($assocId); if ($spName === null) { - $spName = array('en' => $assocId); + $spName = ['en' => $assocId]; } $state['core:Logout-IFrame:From'] = $spName; @@ -64,9 +64,9 @@ class IFrameLogoutHandler implements LogoutHandlerInterface $state['core:Logout-IFrame:From'] = null; } - $params = array( + $params = [ 'id' => \SimpleSAML\Auth\State::saveState($state, 'core:Logout-IFrame'), - ); + ]; if (isset($state['core:Logout-IFrame:InitType'])) { $params['type'] = $state['core:Logout-IFrame:InitType']; } diff --git a/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php b/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php index 37218ea88bb41ef8d6a549fe7f0d11fe74972b80..32652b5617a747437bc331e86870fbdc5a3a5f81 100644 --- a/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php +++ b/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php @@ -53,7 +53,7 @@ class TraditionalLogoutHandler implements LogoutHandlerInterface try { $idp = \SimpleSAML\IdP::getByState($association); - $url = call_user_func(array($association['Handler'], 'getLogoutURL'), $idp, $association, $relayState); + $url = call_user_func([$association['Handler'], 'getLogoutURL'], $idp, $association, $relayState); HTTP::redirectTrustedURL($url); } catch (\Exception $e) { Logger::warning('Unable to initialize logout to '.var_export($id, true).'.'); diff --git a/lib/SimpleSAML/Locale/Language.php b/lib/SimpleSAML/Locale/Language.php index 56bf91b400f1bcc55e936e1a4fe4b2949721df0a..94a1c0bf42b82c26d347d2aff62d0c7c0edbe994 100644 --- a/lib/SimpleSAML/Locale/Language.php +++ b/lib/SimpleSAML/Locale/Language.php @@ -18,7 +18,7 @@ class Language /** * This is the default language map. It is used to map languages codes from the user agent to other language codes. */ - private static $defaultLanguageMap = array('nb' => 'no'); + private static $defaultLanguageMap = ['nb' => 'no']; /** * The configuration to use. @@ -77,7 +77,7 @@ class Language * * @var array */ - private $language_names = array( + private $language_names = [ 'no' => 'BokmĂĄl', // Norwegian BokmĂĄl 'nn' => 'Nynorsk', // Norwegian Nynorsk 'se' => 'Sámegiella', // Northern Sami @@ -118,17 +118,19 @@ class Language 'ro' => 'RomâneČ™te', // Romanian 'eu' => 'Euskara', // Basque 'af' => 'Afrikaans', // Afrikaans - ); + 'zu' => 'IsiZulu', // Zulu + 'xh' => 'isiXhosa', // Xhosa + ]; /** * A mapping of SSP languages to locales * * @var array */ - private $languagePosixMapping = array( + private $languagePosixMapping = [ 'no' => 'nb_NO', 'nn' => 'nn_NO', - ); + ]; /** @@ -143,7 +145,7 @@ class Language $this->defaultLanguage = $this->configuration->getString('language.default', 'en'); $this->languageParameterName = $this->configuration->getString('language.parameter.name', 'language'); $this->customFunction = $this->configuration->getArray('language.get_language_function', null); - $this->rtlLanguages = $this->configuration->getArray('language.rtl', array()); + $this->rtlLanguages = $this->configuration->getArray('language.rtl', []); if (isset($_GET[$this->languageParameterName])) { $this->setLanguage( $_GET[$this->languageParameterName], @@ -160,8 +162,8 @@ class Language */ private function getInstalledLanguages() { - $configuredAvailableLanguages = $this->configuration->getArray('language.available', array('en')); - $availableLanguages = array(); + $configuredAvailableLanguages = $this->configuration->getArray('language.available', ['en']); + $availableLanguages = []; foreach ($configuredAvailableLanguages as $code) { if (array_key_exists($code, $this->language_names) && isset($this->language_names[$code])) { $availableLanguages[] = $code; @@ -378,7 +380,7 @@ class Language public static function getLanguageCookie() { $config = \SimpleSAML\Configuration::getInstance(); - $availableLanguages = $config->getArray('language.available', array('en')); + $availableLanguages = $config->getArray('language.available', ['en']); $name = $config->getString('language.cookie.name', 'language'); if (isset($_COOKIE[$name])) { @@ -404,20 +406,20 @@ class Language $language = strtolower($language); $config = \SimpleSAML\Configuration::getInstance(); - $availableLanguages = $config->getArray('language.available', array('en')); + $availableLanguages = $config->getArray('language.available', ['en']); if (!in_array($language, $availableLanguages, true) || headers_sent()) { return; } $name = $config->getString('language.cookie.name', 'language'); - $params = array( + $params = [ 'lifetime' => ($config->getInteger('language.cookie.lifetime', 60 * 60 * 24 * 900)), 'domain' => ($config->getString('language.cookie.domain', null)), 'path' => ($config->getString('language.cookie.path', '/')), 'secure' => ($config->getBoolean('language.cookie.secure', false)), 'httponly' => ($config->getBoolean('language.cookie.httponly', false)), - ); + ]; HTTP::setCookie($name, $language, $params, false); } diff --git a/lib/SimpleSAML/Locale/Localization.php b/lib/SimpleSAML/Locale/Localization.php index bbf64ae6ac9f758a9eaa29709a19c851d737560e..9a4543d37ae95fc21553d8653eaf39867440179d 100644 --- a/lib/SimpleSAML/Locale/Localization.php +++ b/lib/SimpleSAML/Locale/Localization.php @@ -54,7 +54,7 @@ class Localization * * @var array */ - private $localeDomainMap = array(); + private $localeDomainMap = []; /** * Pointer to currently active translator diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php index 7bffffedf1d5cefe41ad7f09c589eb9ea701f44b..2b577fdc56a326a11ac249ed2c510c45672d2b64 100644 --- a/lib/SimpleSAML/Locale/Translate.php +++ b/lib/SimpleSAML/Locale/Translate.php @@ -24,14 +24,14 @@ class Translate * * @var array */ - private $langtext = array(); + private $langtext = []; /** * Associative array of dictionaries. * * @var array */ - private $dictionaries = array(); + private $dictionaries = []; /** * The default dictionary. @@ -201,7 +201,7 @@ class Translate { // normalize attribute name $normName = strtolower($name); - $normName = str_replace(array(":", "-"), "_", $normName); + $normName = str_replace([":", "-"], "_", $normName); // check for an extra dictionary $extraDict = $this->configuration->getString('attributes.extradictionary', null); @@ -258,11 +258,11 @@ class Translate */ public function t( $tag, - $replacements = array(), + $replacements = [], // TODO: remove this for 2.0. Assume true $fallbackdefault = true, // TODO: remove this for 2.0 - $oldreplacements = array(), + $oldreplacements = [], // TODO: remove this for 2.0 $striptags = false ) { @@ -353,7 +353,7 @@ class Translate public function includeInlineTranslation($tag, $translation) { if (is_string($translation)) { - $translation = array('en' => $translation); + $translation = ['en' => $translation]; } elseif (!is_array($translation)) { throw new \Exception("Inline translation should be string or array. Is ".gettype($translation)." now!"); } @@ -401,7 +401,7 @@ class Translate if (empty($lang)) { \SimpleSAML\Logger::error('Invalid dictionary definition file ['.$definitionFile.']'); - return array(); + return []; } $translationFile = $filename.'.translation.json'; @@ -434,7 +434,7 @@ class Translate return $lang; } - return array(); + return []; } /** @@ -463,7 +463,7 @@ class Translate \SimpleSAML\Logger::error( $_SERVER['PHP_SELF'].' - Template: Could not find dictionary file at ['.$filename.']' ); - return array(); + return []; } /** @@ -538,10 +538,10 @@ class Translate $langcfg = $sspcfg->getConfigItem('language', null); $priorities = []; if ($langcfg instanceof \SimpleSAML\Configuration) { - $priorities = $langcfg->getArray('priorities', array()); + $priorities = $langcfg->getArray('priorities', []); } - if ( !empty($priorities[$context['currentLanguage']]) ) { + if (!empty($priorities[$context['currentLanguage']])) { foreach ($priorities[$context['currentLanguage']] as $lang) { if (isset($translations[$lang])) { return $translations[$lang]; diff --git a/lib/SimpleSAML/Logger.php b/lib/SimpleSAML/Logger.php index 3c569a1faf9eee0c94975ade725f50e0ede194db..c18276ec04a58f081e16054c4b23ceca44090c1e 100644 --- a/lib/SimpleSAML/Logger.php +++ b/lib/SimpleSAML/Logger.php @@ -30,14 +30,14 @@ class Logger /** * @var array */ - private static $capturedLog = array(); + private static $capturedLog = []; /** * Array with messages logged before the logging handler was initialized. * * @var array */ - private static $earlyLog = array(); + private static $earlyLog = []; /** * List of log levels. @@ -46,7 +46,7 @@ class Logger * * @var array */ - private static $logLevelStack = array(); + private static $logLevelStack = []; /** * The current mask of log levels disabled. @@ -305,7 +305,7 @@ class Logger assert(is_int($mask)); $currentEnabled = error_reporting(); - self::$logLevelStack[] = array($currentEnabled, self::$logMask); + self::$logLevelStack[] = [$currentEnabled, self::$logMask]; $currentEnabled &= ~$mask; error_reporting($currentEnabled); @@ -336,11 +336,11 @@ class Logger private static function defer($level, $message, $stats) { // save the message for later - self::$earlyLog[] = array('level' => $level, 'string' => $message, 'statsLog' => $stats); + self::$earlyLog[] = ['level' => $level, 'string' => $message, 'statsLog' => $stats]; // register a shutdown handler if needed if (!self::$shutdownRegistered) { - register_shutdown_function(array('SimpleSAML\Logger', 'flush')); + register_shutdown_function(['SimpleSAML\Logger', 'flush']); self::$shutdownRegistered = true; } } @@ -352,11 +352,11 @@ class Logger self::$loggingHandler = false; // a set of known logging handlers - $known_handlers = array( + $known_handlers = [ 'syslog' => 'SimpleSAML\Logger\SyslogLoggingHandler', 'file' => 'SimpleSAML\Logger\FileLoggingHandler', 'errorlog' => 'SimpleSAML\Logger\ErrorLogLoggingHandler', - ); + ]; // get the configuration $config = Configuration::getInstance(); @@ -429,8 +429,8 @@ class Logger $string = implode(",", $string); } - $formats = array('%trackid', '%msg', '%srcip', '%stat'); - $replacements = array(self::$trackid, $string, $_SERVER['REMOTE_ADDR']); + $formats = ['%trackid', '%msg', '%srcip', '%stat']; + $replacements = [self::$trackid, $string, $_SERVER['REMOTE_ADDR']]; $stat = ''; if ($statsLog) { diff --git a/lib/SimpleSAML/Logger/ErrorLogLoggingHandler.php b/lib/SimpleSAML/Logger/ErrorLogLoggingHandler.php index 9af1f63bc7caf1f8ef8cc36e56af63e83e2b71aa..355fe24d1d262b0cefbf1c36b35a692701b107bc 100644 --- a/lib/SimpleSAML/Logger/ErrorLogLoggingHandler.php +++ b/lib/SimpleSAML/Logger/ErrorLogLoggingHandler.php @@ -17,7 +17,7 @@ class ErrorLogLoggingHandler implements LoggingHandlerInterface /** * This array contains the mappings from syslog log level to names. */ - private static $levelNames = array( + private static $levelNames = [ Logger::EMERG => 'EMERG', Logger::ALERT => 'ALERT', Logger::CRIT => 'CRIT', @@ -26,7 +26,7 @@ class ErrorLogLoggingHandler implements LoggingHandlerInterface Logger::NOTICE => 'NOTICE', Logger::INFO => 'INFO', Logger::DEBUG => 'DEBUG', - ); + ]; /** * The name of this process. @@ -72,8 +72,8 @@ class ErrorLogLoggingHandler implements LoggingHandlerInterface $levelName = sprintf('UNKNOWN%d', $level); } - $formats = array('%process', '%level'); - $replacements = array($this->processname, $levelName); + $formats = ['%process', '%level']; + $replacements = [$this->processname, $levelName]; $string = str_replace($formats, $replacements, $string); $string = preg_replace('/%\w+(\{[^\}]+\})?/', '', $string); $string = trim($string); diff --git a/lib/SimpleSAML/Logger/FileLoggingHandler.php b/lib/SimpleSAML/Logger/FileLoggingHandler.php index beb9e27bbac46b69ced81cfa42f5426eb03b7986..8e9202f55d6b289c52c1129dcbb9c9fda008a97d 100644 --- a/lib/SimpleSAML/Logger/FileLoggingHandler.php +++ b/lib/SimpleSAML/Logger/FileLoggingHandler.php @@ -25,7 +25,7 @@ class FileLoggingHandler implements LoggingHandlerInterface * This array contains the mappings from syslog log levels to names. Copied more or less directly from * SimpleSAML\Logger\ErrorLogLoggingHandler. */ - private static $levelNames = array( + private static $levelNames = [ Logger::EMERG => 'EMERGENCY', Logger::ALERT => 'ALERT', Logger::CRIT => 'CRITICAL', @@ -34,7 +34,7 @@ class FileLoggingHandler implements LoggingHandlerInterface Logger::NOTICE => 'NOTICE', Logger::INFO => 'INFO', Logger::DEBUG => 'DEBUG', - ); + ]; protected $processname = null; protected $format; @@ -92,10 +92,10 @@ class FileLoggingHandler implements LoggingHandlerInterface $levelName = self::$levelNames[$level]; } - $formats = array('%process', '%level'); - $replacements = array($this->processname, $levelName); + $formats = ['%process', '%level']; + $replacements = [$this->processname, $levelName]; - $matches = array(); + $matches = []; if (preg_match('/%date(?:\{([^\}]+)\})?/', $this->format, $matches)) { $format = "%b %d %H:%M:%S"; if (isset($matches[1])) { diff --git a/lib/SimpleSAML/Logger/SyslogLoggingHandler.php b/lib/SimpleSAML/Logger/SyslogLoggingHandler.php index 0330c3d134b53c8a7fd32ae846eaf2195814d9bd..8d6e21a396fa899d3bd095adba6bece993fef95d 100644 --- a/lib/SimpleSAML/Logger/SyslogLoggingHandler.php +++ b/lib/SimpleSAML/Logger/SyslogLoggingHandler.php @@ -64,8 +64,8 @@ class SyslogLoggingHandler implements LoggingHandlerInterface } } - $formats = array('%process', '%level'); - $replacements = array('', $level); + $formats = ['%process', '%level']; + $replacements = ['', $level]; $string = str_replace($formats, $replacements, $string); $string = preg_replace('/%\w+(\{[^\}]+\})?/', '', $string); $string = trim($string); diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php index 0d82d5e329d3355140348c457075a3c0609fb273..227022c201de7e5c42803353c83d12eb5e7f71e8 100644 --- a/lib/SimpleSAML/Memcache.php +++ b/lib/SimpleSAML/Memcache.php @@ -60,7 +60,7 @@ class Memcache if ($serializedInfo === false) { // either the server is down, or we don't have the value stored on that server $mustUpdate = true; - $up = $server->getstats(); + $up = $server->getStats(); if ($up !== false) { $allDown = false; } @@ -150,10 +150,10 @@ class Memcache public static function set($key, $value, $expire = null) { Logger::debug("saving key $key to memcache"); - $savedInfo = array( + $savedInfo = [ 'timestamp' => microtime(true), 'data' => $value - ); + ]; if ($expire === null) { $expire = self::getExpireTime(); @@ -358,7 +358,7 @@ class Memcache } // initialize the servers-array - self::$serverGroups = array(); + self::$serverGroups = []; // load the configuration $config = Configuration::getInstance(); @@ -448,7 +448,7 @@ class Memcache */ public static function getStats() { - $ret = array(); + $ret = []; foreach (self::getMemcacheServers() as $sg) { $stats = method_exists($sg, 'getExtendedStats') ? $sg->getExtendedStats() : $sg->getStats(); @@ -475,7 +475,7 @@ class Memcache */ public static function getRawStats() { - $ret = array(); + $ret = []; foreach (self::getMemcacheServers() as $sg) { $stats = method_exists($sg, 'getExtendedStats') ? $sg->getExtendedStats() : $sg->getStats(); diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php index 426d3cc630f9c8c4af0c60e6853c13cca2f5841f..f39c2c0478aa20531702b53795bc3293d855b317 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php @@ -2,6 +2,8 @@ namespace SimpleSAML\Metadata; +use SimpleSAML\Utils\ClearableState; + /** * This file defines a class for metadata handling. * @@ -9,7 +11,7 @@ namespace SimpleSAML\Metadata; * @package SimpleSAMLphp */ -class MetaDataStorageHandler +class MetaDataStorageHandler implements ClearableState { /** * This static variable contains a reference to the current @@ -60,7 +62,7 @@ class MetaDataStorageHandler // for backwards compatibility, and to provide a default configuration if ($sourcesConfig === null) { $type = $config->getString('metadata.handler', 'flatfile'); - $sourcesConfig = array(array('type' => $type)); + $sourcesConfig = [['type' => $type]]; } try { @@ -140,7 +142,7 @@ class MetaDataStorageHandler { assert(is_string($set)); - $result = array(); + $result = []; foreach ($this->sources as $source) { $srcList = $source->getMetadataSet($set); @@ -335,7 +337,7 @@ class MetaDataStorageHandler assert(is_string($sha1)); assert(is_string($set)); - $result = array(); + $result = []; foreach ($this->sources as $source) { $srcList = $source->getMetadataSet($set); @@ -358,4 +360,14 @@ class MetaDataStorageHandler return null; } + + /** + * Clear any metadata cached. + * Allows for metadata configuration to be changed and reloaded during a given request. Most useful + * when running phpunit tests and needing to alter config.php and metadata sources between test cases + */ + public static function clearInternalState() + { + self::$metadataHandler = null; + } } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php index 6901c15a39dbd8f10f8b7d3e8ec64a54021a4258..2d7883b8c96cfaefc228266581498b5115ca23d3 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php @@ -27,7 +27,7 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource * * @var array */ - private $cachedMetadata = array(); + private $cachedMetadata = []; /** @@ -78,7 +78,7 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource return null; } - $metadata = array(); + $metadata = []; include($metadatasetfile); @@ -107,7 +107,7 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource $metadataSet = $this->load($set); if ($metadataSet === null) { - $metadataSet = array(); + $metadataSet = []; } // add the entity id of an entry to each entry in the metadata diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php index e5d18276496e9619f77927681d4e4a70937bbf8d..0645a0bec5485e5fb918a6cbba22c5f327b7e3e6 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php @@ -27,12 +27,12 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource /** * This is an associative array which stores the different metadata sets we have loaded. */ - private $cachedMetadata = array(); + private $cachedMetadata = []; /** * All the metadata sets supported by this MetaDataStorageHandler */ - public $supportedSets = array( + public $supportedSets = [ 'adfs-idp-hosted', 'adfs-sp-remote', 'saml20-idp-hosted', @@ -44,7 +44,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource 'shib13-sp-remote', 'wsfed-idp-remote', 'wsfed-sp-hosted' - ); + ]; /** @@ -90,7 +90,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource $stmt = $this->db->read("SELECT entity_id, entity_data FROM $tableName"); if ($stmt->execute()) { - $metadata = array(); + $metadata = []; while ($d = $stmt->fetch()) { $data = json_decode($d['entity_data'], true); @@ -127,7 +127,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource $metadataSet = $this->load($set); if ($metadataSet === null) { - $metadataSet = array(); + $metadataSet = []; } foreach ($metadataSet as $entityId => &$entry) { @@ -164,7 +164,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource $stmt = $this->db->read( "SELECT entity_id, entity_data FROM $tableName WHERE entity_id=:entityId", - array('entityId' => $entityId) + ['entityId' => $entityId] ); if ($stmt->execute()) { $rowCount = 0; @@ -237,17 +237,17 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource $metadata = $this->db->read( "SELECT entity_id, entity_data FROM $tableName WHERE entity_id = :entity_id", - array( + [ 'entity_id' => $index, - ) + ] ); $retrivedEntityIDs = $metadata->fetch(); - $params = array( + $params = [ 'entity_id' => $index, 'entity_data' => json_encode($entityData), - ); + ]; if ($retrivedEntityIDs !== false && count($retrivedEntityIDs) > 0) { $rows = $this->db->write( diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php index 9adae2f0b471460424b2f85f7397fb09278b7cd2..8c050775678d401067097278739cb1e4915680ec 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php @@ -74,7 +74,7 @@ class MetaDataStorageHandlerSerialize extends MetaDataStorageSource */ public function getMetadataSets() { - $ret = array(); + $ret = []; $dh = @opendir($this->directory); if ($dh === false) { @@ -120,7 +120,7 @@ class MetaDataStorageHandlerSerialize extends MetaDataStorageSource { assert(is_string($set)); - $ret = array(); + $ret = []; $dir = $this->directory.'/'.rawurlencode($set); if (!is_dir($dir)) { diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php index 56ea35515b5b690f6261bf4dfea889f4511eeb97..9430781b6c1d02d2d6edbb451ec990183e8915f6 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php @@ -48,11 +48,11 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource } - $SP1x = array(); - $IdP1x = array(); - $SP20 = array(); - $IdP20 = array(); - $AAD = array(); + $SP1x = []; + $IdP1x = []; + $SP20 = []; + $IdP20 = []; + $AAD = []; if (isset($src)) { $entities = SAMLParser::parseDescriptorsFile($src); @@ -88,13 +88,13 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource } } - $this->metadata = array( + $this->metadata = [ 'shib13-sp-remote' => $SP1x, 'shib13-idp-remote' => $IdP1x, 'saml20-sp-remote' => $SP20, 'saml20-idp-remote' => $IdP20, 'attributeauthority-remote' => $AAD, - ); + ]; } @@ -113,6 +113,6 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource } // we don't have this metadata set - return array(); + return []; } } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php index c692b4a709cf4c172d122a6efee798a6bc8293ca..76aeabb635076f76ca54c640aea061331c20d866 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php @@ -32,7 +32,7 @@ abstract class MetaDataStorageSource { assert(is_array($sourcesConfig)); - $sources = array(); + $sources = []; foreach ($sourcesConfig as $sourceConfig) { if (!is_array($sourceConfig)) { @@ -111,7 +111,7 @@ abstract class MetaDataStorageSource */ public function getMetadataSet($set) { - return array(); + return []; } @@ -176,7 +176,7 @@ abstract class MetaDataStorageSource $metadataSet = $this->getMetadataSet($set); foreach ($metadataSet as $index => $entry) { - $cidrHints = array(); + $cidrHints = []; // support hint.cidr for idp discovery if (array_key_exists('hint.cidr', $entry) && is_array($entry['hint.cidr'])) { diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index 48e1f9454fb006b9428ea2e4bf84ef514a3c44a0..2e56c1bfde365f323287d41531753a6456ba74d7 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -328,7 +328,7 @@ class SAMLBuilder { assert(is_bool($indexed)); - $ret = array(); + $ret = []; foreach ($endpoints as &$ep) { if ($indexed) { @@ -387,7 +387,7 @@ class SAMLBuilder \SAML2\XML\md\SPSSODescriptor $spDesc, \SimpleSAML\Configuration $metadata ) { - $attributes = $metadata->getArray('attributes', array()); + $attributes = $metadata->getArray('attributes', []); $name = $metadata->getLocalizedString('name', null); if ($name === null || count($attributes) == 0) { @@ -395,7 +395,7 @@ class SAMLBuilder return; } - $attributesrequired = $metadata->getArray('attributes.required', array()); + $attributesrequired = $metadata->getArray('attributes.required', []); /* * Add an AttributeConsumingService element with information as name and description and list @@ -410,7 +410,7 @@ class SAMLBuilder } $attributeconsumer->ServiceName = $name; - $attributeconsumer->ServiceDescription = $metadata->getLocalizedString('description', array()); + $attributeconsumer->ServiceDescription = $metadata->getLocalizedString('description', []); $nameFormat = $metadata->getString('attributes.NameFormat', \SAML2\Constants::NAMEFORMAT_UNSPECIFIED); foreach ($attributes as $friendlyName => $attribute) { @@ -473,7 +473,7 @@ class SAMLBuilder * @param array $metadata The metadata. * @param array $protocols The protocols supported. Defaults to \SAML2\Constants::NS_SAMLP. */ - public function addMetadataSP20($metadata, $protocols = array(\SAML2\Constants::NS_SAMLP)) + public function addMetadataSP20($metadata, $protocols = [\SAML2\Constants::NS_SAMLP]) { assert(is_array($metadata)); assert(is_array($protocols)); @@ -501,14 +501,14 @@ class SAMLBuilder $e->SingleLogoutService = self::createEndpoints($metadata->getEndpoints('SingleLogoutService'), false); - $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', array()); + $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', []); $endpoints = $metadata->getEndpoints('AssertionConsumerService'); - foreach ($metadata->getArrayizeString('AssertionConsumerService.artifact', array()) as $acs) { - $endpoints[] = array( + foreach ($metadata->getArrayizeString('AssertionConsumerService.artifact', []) as $acs) { + $endpoints[] = [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'Location' => $acs, - ); + ]; } $e->AssertionConsumerService = self::createEndpoints($endpoints, true); @@ -516,7 +516,7 @@ class SAMLBuilder $this->entityDescriptor->RoleDescriptor[] = $e; - foreach ($metadata->getArray('contacts', array()) as $contact) { + foreach ($metadata->getArray('contacts', []) as $contact) { if (array_key_exists('contactType', $contact) && array_key_exists('emailAddress', $contact)) { $this->addContact($contact['contactType'], \SimpleSAML\Utils\Config\Metadata::getContact($contact)); } @@ -559,13 +559,13 @@ class SAMLBuilder $e->SingleLogoutService = self::createEndpoints($metadata->getEndpoints('SingleLogoutService'), false); - $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', array()); + $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', []); $e->SingleSignOnService = self::createEndpoints($metadata->getEndpoints('SingleSignOnService'), false); $this->entityDescriptor->RoleDescriptor[] = $e; - foreach ($metadata->getArray('contacts', array()) as $contact) { + foreach ($metadata->getArray('contacts', []) as $contact) { if (array_key_exists('contactType', $contact) && array_key_exists('emailAddress', $contact)) { $this->addContact($contact['contactType'], \SimpleSAML\Utils\Config\Metadata::getContact($contact)); } @@ -591,14 +591,14 @@ class SAMLBuilder $this->addCertificate($e, $metadata); - $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', array()); + $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', []); $endpoints = $metadata->getEndpoints('AssertionConsumerService'); - foreach ($metadata->getArrayizeString('AssertionConsumerService.artifact', array()) as $acs) { - $endpoints[] = array( + foreach ($metadata->getArrayizeString('AssertionConsumerService.artifact', []) as $acs) { + $endpoints[] = [ 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01', 'Location' => $acs, - ); + ]; } $e->AssertionConsumerService = self::createEndpoints($endpoints, true); @@ -627,7 +627,7 @@ class SAMLBuilder $this->addCertificate($e, $metadata); - $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', array()); + $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', []); $e->SingleSignOnService = self::createEndpoints($metadata->getEndpoints('SingleSignOnService'), false); @@ -650,7 +650,7 @@ class SAMLBuilder $metadata = \SimpleSAML\Configuration::loadFromArray($metadata, $metadata['entityid']); $e = new \SAML2\XML\md\AttributeAuthorityDescriptor(); - $e->protocolSupportEnumeration = $metadata->getArray('protocols', array(\SAML2\Constants::NS_SAMLP)); + $e->protocolSupportEnumeration = $metadata->getArray('protocols', [\SAML2\Constants::NS_SAMLP]); $this->addExtensions($metadata, $e); $this->addCertificate($e, $metadata); @@ -661,7 +661,7 @@ class SAMLBuilder false ); - $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', array()); + $e->NameIDFormat = $metadata->getArrayizeString('NameIDFormat', []); $this->entityDescriptor->RoleDescriptor[] = $e; } @@ -684,7 +684,7 @@ class SAMLBuilder { assert(is_string($type)); assert(is_array($details)); - assert(in_array($type, array('technical', 'support', 'administrative', 'billing', 'other'), true)); + assert(in_array($type, ['technical', 'support', 'administrative', 'billing', 'other'], true)); // TODO: remove this check as soon as getContact() is called always before calling this function $details = \SimpleSAML\Utils\Config\Metadata::getContact($details); @@ -709,7 +709,7 @@ class SAMLBuilder if (isset($details['emailAddress'])) { $eas = $details['emailAddress']; if (!is_array($eas)) { - $eas = array($eas); + $eas = [$eas]; } foreach ($eas as $ea) { $e->EmailAddress[] = $ea; @@ -719,7 +719,7 @@ class SAMLBuilder if (isset($details['telephoneNumber'])) { $tlfNrs = $details['telephoneNumber']; if (!is_array($tlfNrs)) { - $tlfNrs = array($tlfNrs); + $tlfNrs = [$tlfNrs]; } foreach ($tlfNrs as $tlfNr) { $e->TelephoneNumber[] = $tlfNr; @@ -739,7 +739,7 @@ class SAMLBuilder */ private function addX509KeyDescriptor(\SAML2\XML\md\RoleDescriptor $rd, $use, $x509data) { - assert(in_array($use, array('encryption', 'signing'), true)); + assert(in_array($use, ['encryption', 'signing'], true)); assert(is_string($x509data)); $keyDescriptor = \SAML2\Utils::createKeyDescriptor($x509data); diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php index e1acd3cfce01eef9adf47ebd1f3e9a5cbf46841e..bd8725198b1d6388ef626c915bee42aca96212a0 100644 --- a/lib/SimpleSAML/Metadata/SAMLParser.php +++ b/lib/SimpleSAML/Metadata/SAMLParser.php @@ -23,19 +23,19 @@ class SAMLParser * * @var string[] */ - private static $SAML1xProtocols = array( + private static $SAML1xProtocols = [ 'urn:oasis:names:tc:SAML:1.0:protocol', 'urn:oasis:names:tc:SAML:1.1:protocol', - ); + ]; /** * This is the list with the SAML 2.0 protocol. * * @var string[] */ - private static $SAML20Protocols = array( + private static $SAML20Protocols = [ 'urn:oasis:names:tc:SAML:2.0:protocol', - ); + ]; /** * This is the entity id we find in the metadata. @@ -71,7 +71,7 @@ class SAMLParser * * @var array */ - private $attributeAuthorityDescriptors = array(); + private $attributeAuthorityDescriptors = []; /** * This is an associative array with the organization name for this entity. The key of @@ -80,7 +80,7 @@ class SAMLParser * * @var string[] */ - private $organizationName = array(); + private $organizationName = []; /** * This is an associative array with the organization display name for this entity. The key of @@ -89,7 +89,7 @@ class SAMLParser * * @var string[] */ - private $organizationDisplayName = array(); + private $organizationDisplayName = []; /** * This is an associative array with the organization URI for this entity. The key of @@ -97,14 +97,14 @@ class SAMLParser * * @var string[] */ - private $organizationURL = array(); + private $organizationURL = []; /** * This is an array of the Contact Persons of this entity. * * @var array[] */ - private $contacts = array(); + private $contacts = []; /** * @var array @@ -132,7 +132,7 @@ class SAMLParser * * @var \SAML2\SignedElementHelper[] */ - private $validators = array(); + private $validators = []; /** * The original EntityDescriptor element for this entity, as a base64 encoded string. @@ -153,13 +153,13 @@ class SAMLParser private function __construct( \SAML2\XML\md\EntityDescriptor $entityElement, $maxExpireTime, - array $validators = array(), - array $parentExtensions = array() + array $validators = [], + array $parentExtensions = [] ) { assert($maxExpireTime === null || is_int($maxExpireTime)); - $this->spDescriptors = array(); - $this->idpDescriptors = array(); + $this->spDescriptors = []; + $this->idpDescriptors = []; $e = $entityElement->toXML(); $e = $e->ownerDocument->saveXML($e); @@ -271,7 +271,7 @@ class SAMLParser public static function parseElement($entityElement) { assert($entityElement instanceof \SAML2\XML\md\EntityDescriptor); - return new SAMLParser($entityElement, null, array()); + return new SAMLParser($entityElement, null, []); } @@ -373,14 +373,14 @@ class SAMLParser private static function processDescriptorsElement( $element, $maxExpireTime = null, - array $validators = array(), - array $parentExtensions = array() + array $validators = [], + array $parentExtensions = [] ) { assert($maxExpireTime === null || is_int($maxExpireTime)); if ($element instanceof \SAML2\XML\md\EntityDescriptor) { $ret = new SAMLParser($element, $maxExpireTime, $validators, $parentExtensions); - $ret = array($ret->getEntityId() => $ret); + $ret = [$ret->getEntityId() => $ret]; /** @var SAMLParser[] $ret */ return $ret; } @@ -392,7 +392,7 @@ class SAMLParser $validators[] = $element; - $ret = array(); + $ret = []; foreach ($element->children as $child) { $ret += self::processDescriptorsElement($child, $expTime, $validators, $extensions); } @@ -439,7 +439,7 @@ class SAMLParser private function getMetadataCommon() { - $ret = array(); + $ret = []; $ret['entityid'] = $this->entityId; $ret['entityDescriptor'] = $this->entityDescriptor; @@ -836,7 +836,7 @@ class SAMLParser { assert($expireTime === null || is_int($expireTime)); - $ret = array(); + $ret = []; $expireTime = self::getExpireTime($element, $expireTime); @@ -848,7 +848,7 @@ class SAMLParser $ret['protocols'] = $element->protocolSupportEnumeration; // process KeyDescriptor elements - $ret['keys'] = array(); + $ret['keys'] = []; foreach ($element->KeyDescriptor as $kd) { $key = self::parseKeyDescriptor($kd); if ($key !== null) { @@ -999,16 +999,16 @@ class SAMLParser * * @return array An associative array with the extensions parsed. */ - private static function processExtensions($element, $parentExtensions = array()) + private static function processExtensions($element, $parentExtensions = []) { - $ret = array( - 'scope' => array(), - 'tags' => array(), - 'EntityAttributes' => array(), - 'RegistrationInfo' => array(), - 'UIInfo' => array(), - 'DiscoHints' => array(), - ); + $ret = [ + 'scope' => [], + 'tags' => [], + 'EntityAttributes' => [], + 'RegistrationInfo' => [], + 'UIInfo' => [], + 'DiscoHints' => [], + ]; // Some extensions may get inherited from a parent element if (($element instanceof \SAML2\XML\md\EntityDescriptor || $element instanceof \SAML2\XML\md\EntitiesDescriptor) @@ -1052,7 +1052,7 @@ class SAMLParser $name = '{'.$attr->NameFormat.'}'.$attr->Name; } - $values = array(); + $values = []; foreach ($attr->AttributeValue as $attrvalue) { $values[] = $attrvalue->getString(); } @@ -1088,11 +1088,11 @@ class SAMLParser ) { continue; } - $logo = array( + $logo = [ 'url' => $uiItem->url, 'height' => $uiItem->height, 'width' => $uiItem->width, - ); + ]; if (!empty($uiItem->lang)) { $logo['lang'] = $uiItem->lang; } @@ -1119,7 +1119,7 @@ class SAMLParser $name = $attribute->getAttribute('Name'); $values = array_map( - array('\SimpleSAML\Utils\XML', 'getDOMText'), + ['\SimpleSAML\Utils\XML', 'getDOMText'], \SimpleSAML\Utils\XML::getDOMChildren($attribute, 'AttributeValue', '@saml2') ); @@ -1157,7 +1157,7 @@ class SAMLParser private function processContactPerson(\SAML2\XML\md\ContactPerson $element) { - $contactPerson = array(); + $contactPerson = []; if (!empty($element->contactType)) { $contactPerson['contactType'] = $element->contactType; } @@ -1196,8 +1196,8 @@ class SAMLParser $sp['description'] = $element->ServiceDescription; $format = null; - $sp['attributes'] = array(); - $sp['attributes.required'] = array(); + $sp['attributes'] = []; + $sp['attributes.required'] = []; foreach ($element->RequestedAttribute as $child) { $attrname = $child->Name; $sp['attributes'][] = $attrname; @@ -1249,7 +1249,7 @@ class SAMLParser */ private static function parseGenericEndpoint(\SAML2\XML\md\EndpointType $element) { - $ep = array(); + $ep = []; $ep['Binding'] = $element->Binding; $ep['Location'] = $element->Location; @@ -1279,7 +1279,7 @@ class SAMLParser */ private static function extractEndpoints(array $endpoints) { - $ret = array(); + $ret = []; foreach ($endpoints as $ep) { $ret[] = self::parseGenericEndpoint($ep); } @@ -1304,7 +1304,7 @@ class SAMLParser */ private static function parseKeyDescriptor(\SAML2\XML\md\KeyDescriptor $kd) { - $r = array(); + $r = []; if ($kd->use === 'encryption') { $r['encryption'] = true; @@ -1340,13 +1340,13 @@ class SAMLParser * * @param $protocols Array with the protocols we accept. * - * @return Array with SP descriptors which supports one of the given protocols. + * @return array with SP descriptors which supports one of the given protocols. */ private function getSPDescriptors($protocols) { assert(is_array($protocols)); - $ret = array(); + $ret = []; foreach ($this->spDescriptors as $spd) { $sharedProtocols = array_intersect($protocols, $spd['protocols']); @@ -1364,13 +1364,13 @@ class SAMLParser * * @param $protocols Array with the protocols we accept. * - * @return Array with IdP descriptors which supports one of the given protocols. + * @return array with IdP descriptors which supports one of the given protocols. */ private function getIdPDescriptors($protocols) { assert(is_array($protocols)); - $ret = array(); + $ret = []; foreach ($this->idpDescriptors as $idpd) { $sharedProtocols = array_intersect($protocols, $idpd['protocols']); @@ -1435,7 +1435,7 @@ class SAMLParser $certData = file_get_contents($certFile); foreach ($this->validators as $validator) { - $key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, array('type' => 'public')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, ['type' => 'public']); $key->loadKey($certData); try { if ($validator->validate($key)) { @@ -1466,7 +1466,7 @@ class SAMLParser $fingerprint = strtolower(str_replace(":", "", $fingerprint)); - $candidates = array(); + $candidates = []; foreach ($this->validators as $validator) { foreach ($validator->getValidatingCertificates() as $cert) { $fp = strtolower(sha1(base64_decode($cert))); diff --git a/lib/SimpleSAML/Metadata/Signer.php b/lib/SimpleSAML/Metadata/Signer.php index 1cb042017596e56b6b0930292371652b7816243a..98806d56211f41baa0de73066681e07c8623549b 100644 --- a/lib/SimpleSAML/Metadata/Signer.php +++ b/lib/SimpleSAML/Metadata/Signer.php @@ -43,10 +43,10 @@ class Signer ); } - $ret = array( + $ret = [ 'privatekey' => $entityMetadata['metadata.sign.privatekey'], 'certificate' => $entityMetadata['metadata.sign.certificate'] - ); + ]; if (array_key_exists('metadata.sign.privatekey_pass', $entityMetadata)) { $ret['privatekey_pass'] = $entityMetadata['metadata.sign.privatekey_pass']; @@ -67,7 +67,7 @@ class Signer ' must also be specified.' ); } - $ret = array('privatekey' => $privatekey, 'certificate' => $certificate); + $ret = ['privatekey' => $privatekey, 'certificate' => $certificate]; $privatekey_pass = $config->getString('metadata.sign.privatekey_pass', null); if ($privatekey_pass !== null) { @@ -92,10 +92,10 @@ class Signer ); } - $ret = array( + $ret = [ 'privatekey' => $entityMetadata['privatekey'], 'certificate' => $entityMetadata['certificate'] - ); + ]; if (array_key_exists('privatekey_pass', $entityMetadata)) { $ret['privatekey_pass'] = $entityMetadata['privatekey_pass']; @@ -173,12 +173,12 @@ class Signer $alg = $config->getString('metadata.sign.algorithm', XMLSecurityKey::RSA_SHA256); } - $supported_algs = array( + $supported_algs = [ XMLSecurityKey::RSA_SHA1, XMLSecurityKey::RSA_SHA256, XMLSecurityKey::RSA_SHA384, XMLSecurityKey::RSA_SHA512, - ); + ]; if (!in_array($alg, $supported_algs, true)) { throw new \SimpleSAML\Error\CriticalConfigurationError("Unknown signature algorithm '$alg'"); @@ -198,10 +198,10 @@ class Signer $digest = XMLSecurityDSig::SHA1; } - return array( + return [ 'algorithm' => $alg, 'digest' => $digest, - ); + ]; } @@ -254,7 +254,7 @@ class Signer $signature_cf = self::getMetadataSigningAlgorithm($config, $entityMetadata, $type); // load the private key - $objKey = new XMLSecurityKey($signature_cf['algorithm'], array('type' => 'private')); + $objKey = new XMLSecurityKey($signature_cf['algorithm'], ['type' => 'private']); if (array_key_exists('privatekey_pass', $keyCertFiles)) { $objKey->passphrase = $keyCertFiles['privatekey_pass']; } @@ -269,10 +269,10 @@ class Signer $objXMLSecDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N); $objXMLSecDSig->addReferenceList( - array($rootNode), + [$rootNode], $signature_cf['digest'], - array('http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N), - array('id_name' => 'ID') + ['http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N], + ['id_name' => 'ID'] ); $objXMLSecDSig->sign($objKey); diff --git a/lib/SimpleSAML/Metadata/Sources/MDQ.php b/lib/SimpleSAML/Metadata/Sources/MDQ.php index bb0b053f8462eaa7418426ead3a50fdd080699ca..413846427709d87e28bfeebec1b4148ba0b85fb9 100644 --- a/lib/SimpleSAML/Metadata/Sources/MDQ.php +++ b/lib/SimpleSAML/Metadata/Sources/MDQ.php @@ -104,7 +104,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource public function getMetadataSet($set) { // we don't have this metadata set - return array(); + return []; } diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php index 775a585cf0cfbce13a3309888cc6ed1180d8953e..2b6604ad02de8ca5820af353f97520bc6b33ed28 100644 --- a/lib/SimpleSAML/Module.php +++ b/lib/SimpleSAML/Module.php @@ -61,14 +61,14 @@ class Module * * @var array */ - public static $modules = array(); + public static $modules = []; /** * A cache containing specific information for modules, like whether they are enabled or not, or their hooks. * * @var array */ - public static $module_info = array(); + public static $module_info = []; /** @@ -103,7 +103,7 @@ class Module public static function isModuleEnabled($module) { $config = Configuration::getOptionalConfig(); - return self::isModuleEnabledWithConf($module, $config->getArray('module.enable', array())); + return self::isModuleEnabledWithConf($module, $config->getArray('module.enable', [])); } @@ -429,7 +429,7 @@ class Module * * @return string The absolute URL to the given resource. */ - public static function getModuleURL($resource, array $parameters = array()) + public static function getModuleURL($resource, array $parameters = []) { assert(is_string($resource)); assert($resource[0] !== '/'); @@ -459,10 +459,10 @@ class Module $hook_dir = self::getModuleDir($module).'/hooks'; if (!is_dir($hook_dir)) { - return array(); + return []; } - $hooks = array(); + $hooks = []; $files = scandir($hook_dir); foreach ($files as $file) { if ($file[0] === '.') { @@ -474,7 +474,7 @@ class Module } $hook_name = $matches[1]; $hook_func = $module.'_hook_'.$hook_name; - $hooks[$hook_name] = array('file' => $hook_dir.'/'.$file, 'func' => $hook_func); + $hooks[$hook_name] = ['file' => $hook_dir.'/'.$file, 'func' => $hook_func]; } return $hooks; } @@ -495,7 +495,7 @@ class Module assert(is_string($hook)); $modules = self::getModules(); - $config = Configuration::getOptionalConfig()->getArray('module.enable', array()); + $config = Configuration::getOptionalConfig()->getArray('module.enable', []); sort($modules); foreach ($modules as $module) { if (!self::isModuleEnabledWithConf($module, $config)) { diff --git a/lib/SimpleSAML/Session.php b/lib/SimpleSAML/Session.php index 5be8582993024bcf07cea709ebb16c72817e4856..62b0a52e3bf0d50a8c131bce0c4a582cc016c7d6 100644 --- a/lib/SimpleSAML/Session.php +++ b/lib/SimpleSAML/Session.php @@ -38,7 +38,7 @@ class Session implements \Serializable, Utils\ClearableState * * @var array */ - private static $sessions = array(); + private static $sessions = []; /** @@ -108,7 +108,7 @@ class Session implements \Serializable, Utils\ClearableState * * @var array */ - private $dataStore = array(); + private $dataStore = []; /** * The list of IdP-SP associations. @@ -118,7 +118,7 @@ class Session implements \Serializable, Utils\ClearableState * * @var array */ - private $associations = array(); + private $associations = []; /** * The authentication token. @@ -136,7 +136,7 @@ class Session implements \Serializable, Utils\ClearableState * * @var array Associative array of associative arrays. */ - private $authData = array(); + private $authData = []; /** @@ -498,7 +498,7 @@ class Session implements \Serializable, Utils\ClearableState // we already have a shutdown callback registered for this object, no need to add another one return; } - $this->callback_registered = header_register_callback(array($this, 'save')); + $this->callback_registered = header_register_callback([$this, 'save']); } /** @@ -567,7 +567,7 @@ class Session implements \Serializable, Utils\ClearableState } $this->rememberMeExpire = $expire; - $cookieParams = array('expire' => $this->rememberMeExpire); + $cookieParams = ['expire' => $this->rememberMeExpire]; $this->updateSessionCookies($cookieParams); } @@ -596,7 +596,7 @@ class Session implements \Serializable, Utils\ClearableState } if ($data === null) { - $data = array(); + $data = []; } $data['Authority'] = $authority; @@ -771,7 +771,7 @@ class Session implements \Serializable, Utils\ClearableState $sessionHandler->setCookie($sessionHandler->getSessionCookieName(), $this->sessionId, $params); } - $params = array_merge($sessionHandler->getCookieParams(), is_array($params) ? $params : array()); + $params = array_merge($sessionHandler->getCookieParams(), is_array($params) ? $params : []); if ($this->authToken !== null) { Utils\HTTP::setCookie( @@ -815,11 +815,11 @@ class Session implements \Serializable, Utils\ClearableState { assert(isset($this->authData[$authority])); - $logout_handler = array($classname, $functionname); + $logout_handler = [$classname, $functionname]; if (!is_callable($logout_handler)) { throw new \Exception( - 'Logout handler is not a vaild function: '.$classname.'::'. + 'Logout handler is not a valid function: '.$classname.'::'. $functionname ); } @@ -893,14 +893,14 @@ class Session implements \Serializable, Utils\ClearableState $expires = time() + $timeout; } - $dataInfo = array( + $dataInfo = [ 'expires' => $expires, 'timeout' => $timeout, 'data' => $data - ); + ]; if (!array_key_exists($type, $this->dataStore)) { - $this->dataStore[$type] = array(); + $this->dataStore[$type] = []; } $this->dataStore[$type][$id] = $dataInfo; @@ -984,10 +984,10 @@ class Session implements \Serializable, Utils\ClearableState assert(is_string($type)); if (!array_key_exists($type, $this->dataStore)) { - return array(); + return []; } - $ret = array(); + $ret = []; foreach ($this->dataStore[$type] as $id => $info) { $ret[$id] = $info['data']; } @@ -1041,11 +1041,11 @@ class Session implements \Serializable, Utils\ClearableState assert(isset($association['Handler'])); if (!isset($this->associations)) { - $this->associations = array(); + $this->associations = []; } if (!isset($this->associations[$idp])) { - $this->associations[$idp] = array(); + $this->associations[$idp] = []; } $this->associations[$idp][$association['id']] = $association; @@ -1067,11 +1067,11 @@ class Session implements \Serializable, Utils\ClearableState assert(is_string($idp)); if (!isset($this->associations)) { - $this->associations = array(); + $this->associations = []; } if (!isset($this->associations[$idp])) { - return array(); + return []; } foreach ($this->associations[$idp] as $id => $assoc) { @@ -1141,7 +1141,7 @@ class Session implements \Serializable, Utils\ClearableState */ public function getAuthorities() { - $authorities = array(); + $authorities = []; foreach (array_keys($this->authData) as $authority) { if ($this->isValid($authority)) { $authorities[] = $authority; diff --git a/lib/SimpleSAML/SessionHandler.php b/lib/SimpleSAML/SessionHandler.php index 25f4ab580a4b67f53b49f3f5ef4b43c4e2ca62ed..f8e0236f5b887a13970fccb338aab6a716e21b7b 100644 --- a/lib/SimpleSAML/SessionHandler.php +++ b/lib/SimpleSAML/SessionHandler.php @@ -149,12 +149,12 @@ abstract class SessionHandler { $config = Configuration::getInstance(); - return array( + return [ 'lifetime' => $config->getInteger('session.cookie.lifetime', 0), 'path' => $config->getString('session.cookie.path', '/'), 'domain' => $config->getString('session.cookie.domain', null), 'secure' => $config->getBoolean('session.cookie.secure', false), 'httponly' => true, - ); + ]; } } diff --git a/lib/SimpleSAML/SessionHandlerPHP.php b/lib/SimpleSAML/SessionHandlerPHP.php index b83b6bffadca59fdc94a4d3ac5e5734e52197ca0..554605b98737957d27e7790e6a21ec29dc084401 100644 --- a/lib/SimpleSAML/SessionHandlerPHP.php +++ b/lib/SimpleSAML/SessionHandlerPHP.php @@ -34,7 +34,7 @@ class SessionHandlerPHP extends SessionHandler * * @var array */ - private $previous_session = array(); + private $previous_session = []; /** @@ -147,7 +147,7 @@ class SessionHandlerPHP extends SessionHandler $this->previous_session['cookie_params']['httponly'] ); session_id($this->previous_session['id']); - $this->previous_session = array(); + $this->previous_session = []; $this->sessionStart(); /* diff --git a/lib/SimpleSAML/Stats.php b/lib/SimpleSAML/Stats.php index 5a1dbf47fea703bbf92b4481365595fac05b595b..8c2987c828d08ffb09d18075fcc5cc41ad3b2e14 100644 --- a/lib/SimpleSAML/Stats.php +++ b/lib/SimpleSAML/Stats.php @@ -52,9 +52,9 @@ class Stats { $config = \SimpleSAML\Configuration::getInstance(); - $outputCfgs = $config->getConfigList('statistics.out', array()); + $outputCfgs = $config->getConfigList('statistics.out', []); - self::$outputs = array(); + self::$outputs = []; foreach ($outputCfgs as $cfg) { self::$outputs[] = self::createOutput($cfg); } @@ -69,7 +69,7 @@ class Stats * * @return void|boolean False if output is not enabled, void otherwise. */ - public static function log($event, array $data = array()) + public static function log($event, array $data = []) { assert(is_string($event)); assert(!isset($data['op'])); diff --git a/lib/SimpleSAML/Store/Redis.php b/lib/SimpleSAML/Store/Redis.php index 1841670ba8b1f7dfdebad3352a834816bbce320f..9091ddd631ebb9fffa80c48706fa73919f2d9af8 100644 --- a/lib/SimpleSAML/Store/Redis.php +++ b/lib/SimpleSAML/Store/Redis.php @@ -33,14 +33,14 @@ class Redis extends Store $prefix = $config->getString('store.redis.prefix', 'SimpleSAMLphp'); $redis = new \Predis\Client( - array( + [ 'scheme' => 'tcp', 'host' => $host, 'port' => $port, - ), - array( + ], + [ 'prefix' => $prefix, - ) + ] ); } diff --git a/lib/SimpleSAML/Store/SQL.php b/lib/SimpleSAML/Store/SQL.php index 50d23f5d475a8ae9993288f8972d06e760e8f5b5..72bb84248cefd72baf526943579cbafedca2e982 100644 --- a/lib/SimpleSAML/Store/SQL.php +++ b/lib/SimpleSAML/Store/SQL.php @@ -80,7 +80,7 @@ class SQL extends Store */ private function initTableVersionTable() { - $this->tableVersions = array(); + $this->tableVersions = []; try { $fetchTableVersion = $this->pdo->query('SELECT _name, _version FROM '.$this->prefix.'_tableVersion'); @@ -115,13 +115,13 @@ class SQL extends Store * Queries for updates, grouped by version. * New updates can be added as a new array in this array */ - $table_updates = array( - array( + $table_updates = [ + [ 'CREATE TABLE '.$this->prefix. '_kvstore (_type VARCHAR(30) NOT NULL, _key VARCHAR(50) NOT NULL, _value '.$text_t. ' NOT NULL, _expire TIMESTAMP, PRIMARY KEY (_key, _type))', 'CREATE INDEX '.$this->prefix.'_kvstore_expire ON '.$this->prefix.'_kvstore (_expire)' - ), + ], /** * This upgrade removes the default NOT NULL constraint on the _expire field in MySQL. * Because SQLite does not support field alterations, the approach is to: @@ -131,7 +131,7 @@ class SQL extends Store * Rename the new table correctly * Readd the index */ - array( + [ 'CREATE TABLE '.$this->prefix. '_kvstore_new (_type VARCHAR(30) NOT NULL, _key VARCHAR(50) NOT NULL, _value '.$text_t. ' NOT NULL, _expire TIMESTAMP NULL, PRIMARY KEY (_key, _type))', @@ -139,8 +139,8 @@ class SQL extends Store 'DROP TABLE '.$this->prefix.'_kvstore', 'ALTER TABLE '.$this->prefix.'_kvstore_new RENAME TO '.$this->prefix.'_kvstore', 'CREATE INDEX '.$this->prefix.'_kvstore_expire ON '.$this->prefix.'_kvstore (_expire)' - ) - ); + ] + ]; $latest_version = count($table_updates); @@ -193,8 +193,8 @@ class SQL extends Store $this->insertOrUpdate( $this->prefix.'_tableVersion', - array('_name'), - array('_name' => $name, '_version' => $version) + ['_name'], + ['_name' => $name, '_version' => $version] ); $this->tableVersions[$name] = $version; } @@ -246,8 +246,8 @@ class SQL extends Store } } - $updateCols = array(); - $condCols = array(); + $updateCols = []; + $condCols = []; foreach ($data as $col => $value) { $tmp = $col.' = :'.$col; @@ -272,7 +272,7 @@ class SQL extends Store Logger::debug('store.sql: Cleaning key-value store.'); $query = 'DELETE FROM '.$this->prefix.'_kvstore WHERE _expire < :now'; - $params = array('now' => gmdate('Y-m-d H:i:s')); + $params = ['now' => gmdate('Y-m-d H:i:s')]; $query = $this->pdo->prepare($query); $query->execute($params); @@ -298,7 +298,7 @@ class SQL extends Store $query = 'SELECT _value FROM '.$this->prefix. '_kvstore WHERE _type = :type AND _key = :key AND (_expire IS NULL OR _expire > :now)'; - $params = array('type' => $type, 'key' => $key, 'now' => gmdate('Y-m-d H:i:s')); + $params = ['type' => $type, 'key' => $key, 'now' => gmdate('Y-m-d H:i:s')]; $query = $this->pdo->prepare($query); $query->execute($params); @@ -351,14 +351,14 @@ class SQL extends Store $value = serialize($value); $value = rawurlencode($value); - $data = array( + $data = [ '_type' => $type, '_key' => $key, '_value' => $value, '_expire' => $expire, - ); + ]; - $this->insertOrUpdate($this->prefix.'_kvstore', array('_type', '_key'), $data); + $this->insertOrUpdate($this->prefix.'_kvstore', ['_type', '_key'], $data); } @@ -377,10 +377,10 @@ class SQL extends Store $key = sha1($key); } - $data = array( + $data = [ '_type' => $type, '_key' => $key, - ); + ]; $query = 'DELETE FROM '.$this->prefix.'_kvstore WHERE _type=:_type AND _key=:_key'; $query = $this->pdo->prepare($query); diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php index 0a830bb44b0fcc583a19d698a2736c794da3e846..c6e04223e9baf472b6a5909d01bce4043ca676ce 100644 --- a/lib/SimpleSAML/Utilities.php +++ b/lib/SimpleSAML/Utilities.php @@ -191,7 +191,7 @@ class Utilities } - private static function doRedirect($url, $parameters = array()) + private static function doRedirect($url, $parameters = []) { assert(is_string($url)); assert(!empty($url)); @@ -253,7 +253,7 @@ class Utilities * @deprecated 1.12.0 This method will be removed from the API. Instead, use the redirectTrustedURL() or * redirectUntrustedURL() functions accordingly. */ - public static function redirect($url, $parameters = array(), $allowed_redirect_hosts = null) + public static function redirect($url, $parameters = [], $allowed_redirect_hosts = null) { assert(is_string($url)); assert(strlen($url) > 0); @@ -272,7 +272,7 @@ class Utilities * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectTrustedURL() * instead. */ - public static function redirectTrustedURL($url, $parameters = array()) + public static function redirectTrustedURL($url, $parameters = []) { \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, $parameters); } @@ -282,7 +282,7 @@ class Utilities * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectUntrustedURL() * instead. */ - public static function redirectUntrustedURL($url, $parameters = array()) + public static function redirectUntrustedURL($url, $parameters = []) { \SimpleSAML\Utils\HTTP::redirectUntrustedURL($url, $parameters); } @@ -562,17 +562,17 @@ class Utilities assert(is_array($post)); $postId = \SimpleSAML\Utils\Random::generateID(); - $postData = array( + $postData = [ 'post' => $post, 'url' => $destination, - ); + ]; $session = \SimpleSAML\Session::getSessionFromRequest(); $session->setData('core_postdatalink', $postId, $postData); $redirInfo = base64_encode(\SimpleSAML\Utils\Crypto::aesEncrypt($session->getSessionId().':'.$postId)); - $url = \SimpleSAML\Module::getModuleURL('core/postredirect.php', array('RedirInfo' => $redirInfo)); + $url = \SimpleSAML\Module::getModuleURL('core/postredirect.php', ['RedirInfo' => $redirInfo]); $url = preg_replace("#^https:#", "http:", $url); return $url; @@ -665,7 +665,7 @@ class Utilities /** * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::fetch() instead. */ - public static function fetch($path, $context = array(), $getHeaders = false) + public static function fetch($path, $context = [], $getHeaders = false) { return \SimpleSAML\Utils\HTTP::fetch($path, $context, $getHeaders); } diff --git a/lib/SimpleSAML/Utils/Arrays.php b/lib/SimpleSAML/Utils/Arrays.php index 0a5129230b98a50eac339225f2fb72ad0b441ed4..c27b198eb0284d72b69d013325ad924bdfa05498 100644 --- a/lib/SimpleSAML/Utils/Arrays.php +++ b/lib/SimpleSAML/Utils/Arrays.php @@ -23,7 +23,7 @@ class Arrays */ public static function arrayize($data, $index = 0) { - return (is_array($data)) ? $data : array($index => $data); + return (is_array($data)) ? $data : [$index => $data]; } @@ -42,7 +42,7 @@ class Arrays return false; } - $ret = array(); + $ret = []; foreach ($array as $k1 => $a2) { if (!is_array($a2)) { return false; @@ -50,7 +50,7 @@ class Arrays foreach ($a2 as $k2 => $v) { if (!array_key_exists($k2, $ret)) { - $ret[$k2] = array(); + $ret[$k2] = []; } $ret[$k2][$k1] = $v; } diff --git a/lib/SimpleSAML/Utils/Attributes.php b/lib/SimpleSAML/Utils/Attributes.php index f06efbfd628e92ebf2d1e1c49c4b9fad227fa2bd..88c87f1aa26a271f0f473062ace38c1c22029c07 100644 --- a/lib/SimpleSAML/Utils/Attributes.php +++ b/lib/SimpleSAML/Utils/Attributes.php @@ -85,7 +85,7 @@ class Attributes ); } - $newAttrs = array(); + $newAttrs = []; foreach ($attributes as $name => $values) { if (!is_string($name)) { throw new \InvalidArgumentException('Invalid attribute name: "'.print_r($name, true).'".'); @@ -127,6 +127,6 @@ class Attributes $defaultns = substr($name, 0, $slash); $name = substr($name, $slash + 1); } - return array(htmlspecialchars($defaultns), htmlspecialchars($name)); + return [htmlspecialchars($defaultns), htmlspecialchars($name)]; } } diff --git a/lib/SimpleSAML/Utils/Auth.php b/lib/SimpleSAML/Utils/Auth.php index 93dd529228871ca8e70b0f1d69ff41347bd8983d..7cff78b27c038d68e6aa07774197015dcf74bf82 100644 --- a/lib/SimpleSAML/Utils/Auth.php +++ b/lib/SimpleSAML/Utils/Auth.php @@ -28,7 +28,7 @@ class Auth $returnTo = HTTP::getSelfURL(); } - return Module::getModuleURL('core/login-admin.php', array('ReturnTo' => $returnTo)); + return Module::getModuleURL('core/login-admin.php', ['ReturnTo' => $returnTo]); } diff --git a/lib/SimpleSAML/Utils/Config/Metadata.php b/lib/SimpleSAML/Utils/Config/Metadata.php index 5cecde3001ddb7a7eae9cb81a636111eb726c50f..b306d200c1e8b332b622bbfab2bd66782a1ce571 100644 --- a/lib/SimpleSAML/Utils/Config/Metadata.php +++ b/lib/SimpleSAML/Utils/Config/Metadata.php @@ -35,7 +35,7 @@ class Metadata * @var array The valid configuration options for a contact configuration array. * @see "Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0", section 2.3.2.2. */ - public static $VALID_CONTACT_OPTIONS = array( + public static $VALID_CONTACT_OPTIONS = [ 'contactType', 'emailAddress', 'givenName', @@ -43,20 +43,20 @@ class Metadata 'telephoneNumber', 'company', 'attributes', - ); + ]; /** * @var array The valid types of contact for a contact configuration array. * @see "Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0", section 2.3.2.2. */ - public static $VALID_CONTACT_TYPES = array( + public static $VALID_CONTACT_TYPES = [ 'technical', 'support', 'administrative', 'billing', 'other', - ); + ]; /** diff --git a/lib/SimpleSAML/Utils/Crypto.php b/lib/SimpleSAML/Utils/Crypto.php index 7a6ea922eaa3560a0b651eca118c90de5df03808..dece1961c5b20f664509b951a7aba740b3908dda 100644 --- a/lib/SimpleSAML/Utils/Crypto.php +++ b/lib/SimpleSAML/Utils/Crypto.php @@ -220,9 +220,9 @@ class Crypto throw new Error\Exception('Unable to load private key from file "'.$file.'"'); } - $ret = array( + $ret = [ 'PEM' => $data, - ); + ]; if ($metadata->hasValue($prefix.'privatekey_pass')) { $ret['password'] = $metadata->getString($prefix.'privatekey_pass'); @@ -286,11 +286,11 @@ class Crypto "-----END CERTIFICATE-----\n"; $certFingerprint = strtolower(sha1(base64_decode($certData))); - return array( + return [ 'certData' => $certData, 'PEM' => $pem, - 'certFingerprint' => array($certFingerprint), - ); + 'certFingerprint' => [$certFingerprint], + ]; } // no valid key found } elseif ($metadata->hasValue($prefix.'certFingerprint')) { @@ -307,7 +307,7 @@ class Crypto * We can't build a full certificate from a fingerprint, and may as well return an array with only the * fingerprint(s) immediately. */ - return array('certFingerprint' => $fps); + return ['certFingerprint' => $fps]; } // no public key/certificate available diff --git a/lib/SimpleSAML/Utils/HTTP.php b/lib/SimpleSAML/Utils/HTTP.php index dc7a192898965673443ac8bb6899ae96febc6190..da6ec639da285f10a7410622069284e41361c61f 100644 --- a/lib/SimpleSAML/Utils/HTTP.php +++ b/lib/SimpleSAML/Utils/HTTP.php @@ -40,7 +40,7 @@ class HTTP // encrypt the session ID and the random ID $info = base64_encode(Crypto::aesEncrypt($session_id.':'.$id)); - $url = Module::getModuleURL('core/postredirect.php', array('RedirInfo' => $info)); + $url = Module::getModuleURL('core/postredirect.php', ['RedirInfo' => $info]); return preg_replace('#^https:#', 'http:', $url); } @@ -146,7 +146,7 @@ class HTTP * @author Mads Freek Petersen * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> */ - private static function redirect($url, $parameters = array()) + private static function redirect($url, $parameters = []) { if (!is_string($url) || empty($url) || !is_array($parameters)) { throw new \InvalidArgumentException('Invalid input parameters.'); @@ -220,10 +220,10 @@ class HTTP { // generate a random ID to avoid replay attacks $id = Random::generateID(); - $postData = array( + $postData = [ 'post' => $data, 'url' => $destination, - ); + ]; // save the post data to the session, tied to the random ID $session->setData('core_postdatalink', $id, $postData); @@ -253,13 +253,13 @@ class HTTP $queryStart = strpos($url, '?'); if ($queryStart === false) { - $oldQuery = array(); + $oldQuery = []; $url .= '?'; } else { /** @var string|false $oldQuery */ $oldQuery = substr($url, $queryStart + 1); if ($oldQuery === false) { - $oldQuery = array(); + $oldQuery = []; } else { $oldQuery = self::parseQueryString($oldQuery); } @@ -300,7 +300,7 @@ class HTTP $url = Module::getModuleURL('core/no_cookie.php'); if ($retryURL !== null) { - $url = self::addURLParameters($url, array('retryURL' => $retryURL)); + $url = self::addURLParameters($url, ['retryURL' => $retryURL]); } self::redirectTrustedURL($url); } @@ -333,7 +333,7 @@ class HTTP // get the white list of domains if ($trustedSites === null) { - $trustedSites = Configuration::getInstance()->getValue('trusted.url.domains', array()); + $trustedSites = Configuration::getInstance()->getValue('trusted.url.domains', []); } // validates the URL's host is among those allowed @@ -407,7 +407,7 @@ class HTTP * @author Olav Morken, UNINETT AS <olav.morken@uninett.no> * @author Marco Ferrante, University of Genova <marco@csita.unige.it> */ - public static function fetch($url, $context = array(), $getHeaders = false) + public static function fetch($url, $context = [], $getHeaders = false) { if (!is_string($url)) { throw new \InvalidArgumentException('Invalid input parameters.'); @@ -442,10 +442,10 @@ class HTTP // extract the hostname $hostname = parse_url($url, PHP_URL_HOST); if (!empty($hostname)) { - $context['ssl'] = array( + $context['ssl'] = [ 'SNI_server_name' => $hostname, 'SNI_enabled' => true, - ); + ]; } else { Logger::warning('Invalid URL format or local URL used through a proxy'); } @@ -463,10 +463,10 @@ class HTTP // data and headers if ($getHeaders) { if (isset($http_response_header)) { - $headers = array(); + $headers = []; foreach ($http_response_header as $h) { if (preg_match('@^HTTP/1\.[01]\s+\d{3}\s+@', $h)) { - $headers = array(); // reset + $headers = []; // reset $headers[0] = $h; continue; } @@ -479,7 +479,7 @@ class HTTP // no HTTP headers, probably a different protocol, e.g. file $headers = null; } - return array($data, $headers); + return [$data, $headers]; } return $data; @@ -501,12 +501,12 @@ class HTTP { if (!array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) { // no Accept-Language header, return an empty set - return array(); + return []; } $languages = explode(',', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])); - $ret = array(); + $ret = []; foreach ($languages as $l) { $opts = explode(';', $l); @@ -638,16 +638,16 @@ class HTTP /** * Retrieve the first element of the URL path. * - * @param boolean $trailingslash Whether to add a trailing slash to the element or not. Defaults to true. + * @param boolean $leadingSlash Whether to add a leading slash to the element or not. Defaults to true. * - * @return string The first element of the URL path, with an optional, trailing slash. + * @return string The first element of the URL path, with an optional, leading slash. * * @author Andreas Solberg, UNINETT AS <andreas.solberg@uninett.no> */ - public static function getFirstPathElement($trailingslash = true) + public static function getFirstPathElement($leadingSlash = true) { if (preg_match('|^/(.*?)/|', $_SERVER['SCRIPT_NAME'], $matches)) { - return ($trailingslash ? '/' : '').$matches[1]; + return ($leadingSlash ? '/' : '').$matches[1]; } return ''; } @@ -681,7 +681,7 @@ class HTTP // post the data directly $session = Session::getSessionFromRequest(); $id = self::savePOSTData($session, $destination, $data); - $url = Module::getModuleURL('core/postredirect.php', array('RedirId' => $id)); + $url = Module::getModuleURL('core/postredirect.php', ['RedirId' => $id]); } return $url; @@ -919,7 +919,7 @@ class HTTP throw new \InvalidArgumentException('Invalid input parameters.'); } - $res = array(); + $res = []; if (empty($query_string)) { return $res; } @@ -960,7 +960,7 @@ class HTTP * * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> */ - public static function redirectTrustedURL($url, $parameters = array()) + public static function redirectTrustedURL($url, $parameters = []) { if (!is_string($url) || !is_array($parameters)) { throw new \InvalidArgumentException('Invalid input parameters.'); @@ -992,7 +992,7 @@ class HTTP * * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> */ - public static function redirectUntrustedURL($url, $parameters = array()) + public static function redirectUntrustedURL($url, $parameters = []) { if (!is_string($url) || !is_array($parameters)) { throw new \InvalidArgumentException('Invalid input parameters.'); @@ -1115,7 +1115,7 @@ class HTTP throw new \InvalidArgumentException('Invalid input parameters.'); } - $default_params = array( + $default_params = [ 'lifetime' => 0, 'expire' => null, 'path' => '/', @@ -1123,7 +1123,7 @@ class HTTP 'secure' => false, 'httponly' => true, 'raw' => false, - ); + ]; if ($params !== null) { $params = array_merge($default_params, $params); diff --git a/lib/SimpleSAML/Utils/HttpAdapter.php b/lib/SimpleSAML/Utils/HttpAdapter.php index 71c611508ba17ea4351eb840a2bf7c95fa22ea4e..b82392076342830ed41121630c09ef287210a96e 100644 --- a/lib/SimpleSAML/Utils/HttpAdapter.php +++ b/lib/SimpleSAML/Utils/HttpAdapter.php @@ -52,7 +52,7 @@ class HttpAdapter /** * @see HTTP::fetch() */ - public function fetch($url, $context = array(), $getHeaders = false) + public function fetch($url, $context = [], $getHeaders = false) { return HTTP::fetch($url, $context, $getHeaders); } @@ -172,7 +172,7 @@ class HttpAdapter /** * @see HTTP::redirectTrustedURL() */ - public function redirectTrustedURL($url, $parameters = array()) + public function redirectTrustedURL($url, $parameters = []) { HTTP::redirectTrustedURL($url, $parameters); } @@ -180,7 +180,7 @@ class HttpAdapter /** * @see HTTP::redirectUntrustedURL() */ - public function redirectUntrustedURL($url, $parameters = array()) + public function redirectUntrustedURL($url, $parameters = []) { HTTP::redirectUntrustedURL($url, $parameters); } diff --git a/lib/SimpleSAML/Utils/Net.php b/lib/SimpleSAML/Utils/Net.php index 96526ad68349438dd947424d32624eb0e633dfd6..02619d2215f88f34ca19579bc744dd7bc982912f 100644 --- a/lib/SimpleSAML/Utils/Net.php +++ b/lib/SimpleSAML/Utils/Net.php @@ -35,8 +35,8 @@ class Net list ($net, $mask) = explode('/', $cidr); $mask = intval($mask); - $ip_ip = array(); - $ip_net = array(); + $ip_ip = []; + $ip_net = []; if (strstr($ip, ':') || strstr($net, ':')) { // Validate IPv6 with inet_pton, convert to hex with bin2hex // then store as a long with hexdec diff --git a/lib/SimpleSAML/Utils/XML.php b/lib/SimpleSAML/Utils/XML.php index 96be4c3de0b52ffe7cc4945be3afa44862913fc6..9b1f37766c0f24c75f8e654164f45b5bf151dfc7 100644 --- a/lib/SimpleSAML/Utils/XML.php +++ b/lib/SimpleSAML/Utils/XML.php @@ -34,7 +34,7 @@ class XML */ public static function checkSAMLMessage($message, $type) { - $allowed_types = array('saml20', 'saml11', 'saml-meta'); + $allowed_types = ['saml20', 'saml11', 'saml-meta']; if (!(is_string($message) && in_array($type, $allowed_types, true))) { throw new \InvalidArgumentException('Invalid input parameters.'); } @@ -45,7 +45,7 @@ class XML } // see if debugging is enabled for XML validation - $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', array('validatexml' => false)); + $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', ['validatexml' => false]); $enabled = \SimpleSAML\Configuration::getInstance()->getBoolean('debug.validatexml', false); if (!(in_array('validatexml', $debug, true) // implicitly enabled @@ -99,7 +99,7 @@ class XML } // see if debugging is enabled for SAML messages - $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', array('saml' => false)); + $debug = \SimpleSAML\Configuration::getInstance()->getArrayize('debug', ['saml' => false]); if (!(in_array('saml', $debug, true) // implicitly enabled || (array_key_exists('saml', $debug) && $debug['saml'] === true) @@ -163,8 +163,8 @@ class XML // check what this element contains $fullText = ''; // all text in this element - $textNodes = array(); // text nodes which should be deleted - $childNodes = array(); // other child nodes + $textNodes = []; // text nodes which should be deleted + $childNodes = []; // other child nodes for ($i = 0; $i < $root->childNodes->length; $i++) { /** @var \DOMElement $child */ $child = $root->childNodes->item($i); @@ -285,7 +285,7 @@ class XML throw new \InvalidArgumentException('Invalid input parameters.'); } - $ret = array(); + $ret = []; for ($i = 0; $i < $element->childNodes->length; $i++) { /** @var \DOMElement $child */ @@ -366,7 +366,7 @@ class XML // check if the namespace is a shortcut, and expand it if it is if ($nsURI[0] === '@') { // the defined shortcuts - $shortcuts = array( + $shortcuts = [ '@ds' => 'http://www.w3.org/2000/09/xmldsig#', '@md' => 'urn:oasis:names:tc:SAML:2.0:metadata', '@saml1' => 'urn:oasis:names:tc:SAML:1.0:assertion', @@ -375,7 +375,7 @@ class XML '@saml2' => 'urn:oasis:names:tc:SAML:2.0:assertion', '@saml2p' => 'urn:oasis:names:tc:SAML:2.0:protocol', '@shibmd' => 'urn:mace:shibboleth:metadata:1.0', - ); + ]; // check if it is a valid shortcut if (!array_key_exists($nsURI, $shortcuts)) { diff --git a/lib/SimpleSAML/XHTML/EMail.php b/lib/SimpleSAML/XHTML/EMail.php index 3e880f1a857e322af093d09874dcc162f057947d..a9e239029b44de780c892dbb55e7ef35bda688e2 100644 --- a/lib/SimpleSAML/XHTML/EMail.php +++ b/lib/SimpleSAML/XHTML/EMail.php @@ -17,7 +17,7 @@ class EMail private $from = null; private $replyto = null; private $subject = null; - private $headers = array(); + private $headers = []; /** diff --git a/lib/SimpleSAML/XHTML/IdPDisco.php b/lib/SimpleSAML/XHTML/IdPDisco.php index 0cf77f0d6b4011a9debb89a7d462e3dad4013d61..51449f95f970297a48f2fe11bfe1278ac43a04f9 100644 --- a/lib/SimpleSAML/XHTML/IdPDisco.php +++ b/lib/SimpleSAML/XHTML/IdPDisco.php @@ -94,7 +94,7 @@ class IdPDisco * * @var array */ - protected $scopedIDPList = array(); + protected $scopedIDPList = []; /** * The URL the user should be redirected to after choosing an IdP. @@ -214,13 +214,13 @@ class IdPDisco { $prefixedName = 'idpdisco_'.$this->instance.'_'.$name; - $params = array( + $params = [ // we save the cookies for 90 days 'lifetime' => (60 * 60 * 24 * 90), // the base path for cookies. This should be the installation directory for SimpleSAMLphp 'path' => $this->config->getBasePath(), 'httponly' => false, - ); + ]; \SimpleSAML\Utils\HTTP::setCookie($prefixedName, $value, $params, false); } @@ -290,7 +290,7 @@ class IdPDisco * back. Therefore we do some quick and dirty parsing of the query string. */ $qstr = $_SERVER['QUERY_STRING']; - $matches = array(); + $matches = []; if (preg_match('/(?:^|&)idp_([^=]+)=/', $qstr, $matches)) { return $this->validateIdP(urldecode($matches[1])); } @@ -459,7 +459,7 @@ class IdPDisco */ protected function getIdPList() { - $idpList = array(); + $idpList = []; foreach ($this->metadataSets as $metadataSet) { $newList = $this->metadata->getList($metadataSet); /* @@ -512,23 +512,23 @@ class IdPDisco */ protected function start() { - $idp = $this->getTargetIdp(); + $idp = $this->getTargetIdP(); if ($idp !== null) { $extDiscoveryStorage = $this->config->getString('idpdisco.extDiscoveryStorage', null); if ($extDiscoveryStorage !== null) { $this->log('Choice made ['.$idp.'] (Forwarding to external discovery storage)'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($extDiscoveryStorage, array( + \SimpleSAML\Utils\HTTP::redirectTrustedURL($extDiscoveryStorage, [ 'entityID' => $this->spEntityId, 'IdPentityID' => $idp, 'returnIDParam' => $this->returnIdParam, 'isPassive' => 'true', 'return' => $this->returnURL - )); + ]); } else { $this->log( 'Choice made ['.$idp.'] (Redirecting the user back. returnIDParam='.$this->returnIdParam.')' ); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($this->returnURL, array($this->returnIdParam => $idp)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($this->returnURL, [$this->returnIdParam => $idp]); } } @@ -567,7 +567,7 @@ class IdPDisco ); \SimpleSAML\Utils\HTTP::redirectTrustedURL( $this->returnURL, - array($this->returnIdParam => $idpintersection[0]) + [$this->returnIdParam => $idpintersection[0]] ); } @@ -595,31 +595,34 @@ class IdPDisco $tryLanguages = [0 => $language, 1 => $defaultLanguage, 2 => $fallbackLanguage]; $newlist = []; - foreach($idpList as $entityid => $data) { + foreach ($idpList as $entityid => $data) { $newlist[$entityid]['entityid'] = $entityid; - foreach ( $tryLanguages as $lang ) { - if ( $name = $this->getEntityDisplayName($data, $lang) ) { + foreach ($tryLanguages as $lang) { + if ($name = $this->getEntityDisplayName($data, $lang)) { $newlist[$entityid]['name'] = $name; continue; } } - if ( empty($newlist[$entityid]['name']) ) { + if (empty($newlist[$entityid]['name'])) { $newlist[$entityid]['name'] = $entityid; } - foreach ( $tryLanguages as $lang ) { - if ( !empty($data['description'][$lang]) ) { + foreach ($tryLanguages as $lang) { + if (!empty($data['description'][$lang])) { $newlist[$entityid]['description'] = $data['description'][$lang]; continue; } } - if ( !empty($data['icon']) ) { + if (!empty($data['icon'])) { $newlist[$entityid]['icon'] = $data['icon']; $newlist[$entityid]['iconurl'] = \SimpleSAML\Utils\HTTP::resolveURL($data['icon']); } } - usort($newlist, function($idpentry1, $idpentry2) { - return strcasecmp($idpentry1['name'],$idpentry2['name']); - }); + usort( + $newlist, + function ($idpentry1, $idpentry2) { + return strcasecmp($idpentry1['name'], $idpentry2['name']); + } + ); $t->data['idplist'] = $newlist; $t->data['preferredidp'] = $preferredIdP; @@ -633,11 +636,11 @@ class IdPDisco private function getEntityDisplayName(array $idpData, $language) { - if(isset($idpData['UIInfo']['DisplayName'][$language]) ) { + if (isset($idpData['UIInfo']['DisplayName'][$language])) { return $idpData['UIInfo']['DisplayName'][$language]; - } elseif ( isset($idpData['name'][$language]) ) { + } elseif (isset($idpData['name'][$language])) { return $idpData['name'][$language]; - } elseif ( isset($idpData['OrganizationDisplayName'][$language]) ) { + } elseif (isset($idpData['OrganizationDisplayName'][$language])) { return $idpData['OrganizationDisplayName'][$language]; } return null; diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php index ef9e0e6b788478d43beb97f0ce2eaaa765dc0159..7ebb84b26c3266f73a2f974746708a72376886c0 100644 --- a/lib/SimpleSAML/XHTML/Template.php +++ b/lib/SimpleSAML/XHTML/Template.php @@ -20,7 +20,7 @@ class Template extends Response * * @var array */ - public $data = array(); + public $data = []; /** * A translator instance configured to work with this template. @@ -183,7 +183,7 @@ class Template extends Response /** * Set up the places where twig can look for templates. * - * @return \Twig_Loader_Filesystem The twig template loader or false if the template does not exist. + * @return TemplateLoader The twig template loader or false if the template does not exist. * @throws \Twig_Error_Loader In case a failure occurs. */ private function setupTwigTemplatepaths() @@ -195,23 +195,25 @@ class Template extends Response $this->twig_template = ($namespace !== null) ? '@'.$namespace.'/'.$filename : $filename; $loader = new TemplateLoader(); $templateDirs = $this->findThemeTemplateDirs(); - if ($this->module) { - $templateDirs[] = array($this->module => TemplateLoader::getModuleTemplateDir($this->module)); + if ($this->module && $this->module != 'core') { + $templateDirs[] = [$this->module => TemplateLoader::getModuleTemplateDir($this->module)]; } if ($this->theme['module']) { try { - $templateDirs[] = array( + $templateDirs[] = [ $this->theme['module'] => TemplateLoader::getModuleTemplateDir($this->theme['module']) - ); + ]; } catch (\InvalidArgumentException $e) { // either the module is not enabled or it has no "templates" directory, ignore } } + $templateDirs[] = ['core' => TemplateLoader::getModuleTemplateDir('core')]; + // default, themeless templates are checked last - $templateDirs[] = array( + $templateDirs[] = [ \Twig_Loader_Filesystem::MAIN_NAMESPACE => $this->configuration->resolvePath('templates') - ); + ]; foreach ($templateDirs as $entry) { $loader->addPath($entry[key($entry)], key($entry)); } @@ -241,20 +243,20 @@ class Template extends Response $this->localization->addModuleDomain($this->theme['module']); } - $options = array( + $options = [ 'cache' => $cache, 'auto_reload' => $auto_reload, - 'translation_function' => array('\SimpleSAML\Locale\Translate', 'translateSingularNativeGettext'), - 'translation_function_plural' => array('\SimpleSAML\Locale\Translate', 'translatePluralNativeGettext'), - ); + 'translation_function' => ['\SimpleSAML\Locale\Translate', 'translateSingularNativeGettext'], + 'translation_function_plural' => ['\SimpleSAML\Locale\Translate', 'translatePluralNativeGettext'], + ]; // set up translation if ($this->localization->i18nBackend === \SimpleSAML\Locale\Localization::GETTEXT_I18N_BACKEND) { - $options['translation_function'] = array('\SimpleSAML\Locale\Translate', 'translateSingularGettext'); - $options['translation_function_plural'] = array( + $options['translation_function'] = ['\SimpleSAML\Locale\Translate', 'translateSingularGettext']; + $options['translation_function_plural'] = [ '\SimpleSAML\Locale\Translate', 'translatePluralGettext' - ); + ]; } // TODO: add a branch for the old SimpleSAMLphp backend $twig = new Twig_Environment($loader, $options); @@ -281,8 +283,8 @@ class Template extends Response $twig->addFilter( new \Twig_SimpleFilter( 'translateFromArray', - array('\SimpleSAML\Locale\Translate', 'translateFromArray'), - array('needs_context' => true) + ['\SimpleSAML\Locale\Translate', 'translateFromArray'], + ['needs_context' => true] ) ); @@ -302,7 +304,7 @@ class Template extends Response { if ($this->theme['module'] === null) { // no module involved - return array(); + return []; } // setup directories & namespaces @@ -312,10 +314,10 @@ class Template extends Response // no subdirectories in the theme directory, nothing to do here // this is probably wrong, log a message \SimpleSAML\Logger::warning('Empty theme directory for theme "'.$this->theme['name'].'".'); - return array(); + return []; } - $themeTemplateDirs = array(); + $themeTemplateDirs = []; foreach ($subdirs as $entry) { // discard anything that's not a directory. Expression is negated to profit from lazy evaluation if (!($entry !== '.' && $entry !== '..' && is_dir($themeDir.'/'.$entry))) { @@ -324,7 +326,7 @@ class Template extends Response // set correct name for the default namespace $ns = ($entry === 'default') ? \Twig_Loader_Filesystem::MAIN_NAMESPACE : $entry; - $themeTemplateDirs[] = array($ns => $themeDir.'/'.$entry); + $themeTemplateDirs[] = [$ns => $themeDir.'/'.$entry]; } return $themeTemplateDirs; } @@ -383,7 +385,7 @@ class Template extends Response $langmap = null; if (count($languages) > 1) { $parameterName = $this->getTranslator()->getLanguage()->getLanguageParameterName(); - $langmap = array(); + $langmap = []; foreach ($languages as $lang => $current) { $lang = strtolower($lang); $langname = $this->translator->getLanguage()->getLanguageLocalizedName($lang); @@ -391,13 +393,13 @@ class Template extends Response if (!$current) { $url = htmlspecialchars(\SimpleSAML\Utils\HTTP::addURLParameters( '', - array($parameterName => $lang) + [$parameterName => $lang] )); } - $langmap[$lang] = array( + $langmap[$lang] = [ 'name' => $langname, 'url' => $url, - ); + ]; } } return $langmap; @@ -492,7 +494,7 @@ class Template extends Response private function findModuleAndTemplateName($template) { $tmp = explode(':', $template, 2); - return (count($tmp) === 2) ? array($tmp[0], $tmp[1]) : array(null, $tmp[0]); + return (count($tmp) === 2) ? [$tmp[0], $tmp[1]] : [null, $tmp[0]]; } @@ -779,9 +781,9 @@ class Template extends Response */ public function t( $tag, - $replacements = array(), + $replacements = [], $fallbackdefault = true, - $oldreplacements = array(), + $oldreplacements = [], $striptags = false ) { return $this->translator->t($tag, $replacements, $fallbackdefault, $oldreplacements, $striptags); diff --git a/lib/SimpleSAML/XHTML/TemplateLoader.php b/lib/SimpleSAML/XHTML/TemplateLoader.php index ffa7e4a96064f63eaddd731344a4bde1a8bb5fe8..c5090d5544612a05e68270e28eda74e57310b352 100644 --- a/lib/SimpleSAML/XHTML/TemplateLoader.php +++ b/lib/SimpleSAML/XHTML/TemplateLoader.php @@ -39,11 +39,11 @@ class TemplateLoader extends \Twig\Loader\FilesystemLoader if (strpos($name, ':')) { // we have our old SSP format list($namespace, $shortname) = explode(':', $name, 2); - $shortname = strtr($shortname, array( + $shortname = strtr($shortname, [ '.tpl.php' => '.twig', '.php' => '.twig', - )); - return array($namespace, $shortname); + ]); + return [$namespace, $shortname]; } return [$default, $name]; } diff --git a/lib/SimpleSAML/XML/Errors.php b/lib/SimpleSAML/XML/Errors.php index 351ca009ff1130158e48088cd31a6042a7202d4e..6f6d228ef34432187b2bcf481e66b1df82a3854f 100644 --- a/lib/SimpleSAML/XML/Errors.php +++ b/lib/SimpleSAML/XML/Errors.php @@ -19,7 +19,7 @@ class Errors /** * @var array This is an stack of error logs. The topmost element is the one we are currently working on. */ - private static $errorStack = array(); + private static $errorStack = []; /** * @var bool This is the xml error state we had before we began logging. @@ -66,7 +66,7 @@ class Errors } // Add a new level to the error stack - self::$errorStack[] = array(); + self::$errorStack[] = []; } @@ -81,7 +81,7 @@ class Errors // Check whether the error access functions are present if (!function_exists('libxml_use_internal_errors')) { // Pretend that no errors occurred - return array(); + return []; } // Add any errors which may have occurred diff --git a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php index 6c4fe7c7b8a710c7460a72fef0bfe74064fe7fdb..221951d9b777e5b71f8513890582afec4acc852d 100644 --- a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php +++ b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php @@ -41,7 +41,7 @@ class AuthnRequest $desturl = $idpmetadata->getDefaultEndpoint( 'SingleSignOnService', - array('urn:mace:shibboleth:1.0:profiles:AuthnRequest') + ['urn:mace:shibboleth:1.0:profiles:AuthnRequest'] ); $desturl = $desturl['Location']; diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php index e6d1a20add1607f2015837ddb0391f8c8aece29a..8b6c1fb6e3686a77638c6ddc625f649000a27bab 100644 --- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php +++ b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php @@ -91,7 +91,7 @@ class AuthnResponse } // Validate the signature - $this->validator = new Validator($this->dom, array('ResponseID', 'AssertionID')); + $this->validator = new Validator($this->dom, ['ResponseID', 'AssertionID']); // Get the issuer of the response $issuer = $this->getIssuer(); @@ -102,7 +102,7 @@ class AuthnResponse $publicKeys = $md->getPublicKeys('signing'); if (!empty($publicKeys)) { - $certFingerprints = array(); + $certFingerprints = []; foreach ($publicKeys as $key) { if ($key['type'] !== 'X509Certificate') { continue; @@ -204,14 +204,14 @@ class AuthnResponse public function getAttributes() { $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); - $md = $metadata->getMetadata($this->getIssuer(), 'shib13-idp-remote'); + $md = $metadata->getMetaData($this->getIssuer(), 'shib13-idp-remote'); $base64 = isset($md['base64attributes']) ? $md['base64attributes'] : false; if (!($this->dom instanceof \DOMDocument)) { - return array(); + return []; } - $attributes = array(); + $attributes = []; $assertions = $this->doXPathQuery('/shibp:Response/shib:Assertion'); @@ -255,7 +255,7 @@ class AuthnResponse } if (!array_key_exists($name, $attributes)) { - $attributes[$name] = array(); + $attributes[$name] = []; } if ($base64) { @@ -287,7 +287,7 @@ class AuthnResponse public function getNameID() { - $nameID = array(); + $nameID = []; $query = '/shibp:Response/shib:Assertion/shib:AuthenticationStatement/shib:Subject/shib:NameIdentifier'; $nodelist = $this->doXPathQuery($query); @@ -320,7 +320,7 @@ class AuthnResponse } elseif ($idp->hasValue('scopedattributes')) { $scopedAttributes = $idp->getArray('scopedattributes'); } else { - $scopedAttributes = array(); + $scopedAttributes = []; } $id = Random::generateID(); diff --git a/lib/SimpleSAML/XML/Signer.php b/lib/SimpleSAML/XML/Signer.php index ae79c8a1d7d7aec99c79abc731d5a1ce37a81de9..26f46ab62f3163f6a47896a6edafdf7b3c8e1e0b 100644 --- a/lib/SimpleSAML/XML/Signer.php +++ b/lib/SimpleSAML/XML/Signer.php @@ -39,7 +39,7 @@ class Signer /** * @var array Extra certificates which should be included in the response. */ - private $extraCertificates = array(); + private $extraCertificates = []; /** @@ -58,7 +58,7 @@ class Signer * * @param array $options Associative array with options for the constructor. Defaults to an empty array. */ - public function __construct($options = array()) + public function __construct($options = []) { assert(is_array($options)); @@ -84,7 +84,7 @@ class Signer } if (array_key_exists('id', $options)) { - $this->setIdAttribute($options['id']); + $this->setIDAttribute($options['id']); } } @@ -102,7 +102,7 @@ class Signer assert(is_array($privatekey)); assert(array_key_exists('PEM', $privatekey)); - $this->privateKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, array('type' => 'private')); + $this->privateKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, ['type' => 'private']); if (array_key_exists('password', $privatekey)) { $this->privateKey->passphrase = $privatekey['password']; } @@ -143,7 +143,7 @@ class Signer throw new \Exception('Unable to read private key file "'.$keyFile.'".'); } - $privatekey = array('PEM' => $keyData); + $privatekey = ['PEM' => $keyData]; if ($pass !== null) { $privatekey['password'] = $pass; } @@ -284,15 +284,15 @@ class Signer $objXMLSecDSig = new XMLSecurityDSig(); $objXMLSecDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N); - $options = array(); + $options = []; if (!empty($this->idAttrName)) { $options['id_name'] = $this->idAttrName; } $objXMLSecDSig->addReferenceList( - array($node), + [$node], XMLSecurityDSig::SHA256, - array('http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N), + ['http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N], $options ); diff --git a/lib/SimpleSAML/XML/Validator.php b/lib/SimpleSAML/XML/Validator.php index bbf6acdf3622627aae696634796ddbede6505737..8dd46f8971c6c1bfd63fd17ed9f8e1db15428875 100644 --- a/lib/SimpleSAML/XML/Validator.php +++ b/lib/SimpleSAML/XML/Validator.php @@ -52,9 +52,9 @@ class Validator if ($publickey === null) { $publickey = false; } elseif (is_string($publickey)) { - $publickey = array( + $publickey = [ 'PEM' => $publickey, - ); + ]; } else { assert($publickey === false || is_array($publickey)); } @@ -249,7 +249,7 @@ class Validator } if (!is_array($fingerprints)) { - $fingerprints = array($fingerprints); + $fingerprints = [$fingerprints]; } // Normalize the fingerprints @@ -327,7 +327,7 @@ class Validator while (openssl_error_string() !== false) { } - $res = openssl_x509_checkpurpose($certificate, X509_PURPOSE_ANY, array($caFile)); + $res = openssl_x509_checkpurpose($certificate, X509_PURPOSE_ANY, [$caFile]); $errors = ''; // Log errors @@ -361,11 +361,11 @@ class Validator assert(is_string($certificate)); assert(is_string($caFile)); - $command = array( + $command = [ 'openssl', 'verify', '-CAfile', $caFile, '-purpose', 'any', - ); + ]; $cmdline = ''; foreach ($command as $c) { @@ -373,10 +373,10 @@ class Validator } $cmdline .= '2>&1'; - $descSpec = array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - ); + $descSpec = [ + 0 => ['pipe', 'r'], + 1 => ['pipe', 'w'], + ]; $process = proc_open($cmdline, $descSpec, $pipes); if (!is_resource($process)) { throw new \Exception('Failed to execute verification command: '.$cmdline); diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php index 1df2e4acc80392574874f0e73d74d8337f90dc7c..41ca267a9eb9604a18c4e8817456e2383aaa11df 100644 --- a/lib/_autoload_modules.php +++ b/lib/_autoload_modules.php @@ -33,7 +33,7 @@ function temporaryLoader($class) $original = $class; // list of classes that have been renamed or moved - $renamed = array( + $renamed = [ 'SimpleSAML_Metadata_MetaDataStorageHandlerMDX' => 'SimpleSAML_Metadata_Sources_MDQ', 'SimpleSAML_Logger_LoggingHandlerSyslog' => 'SimpleSAML_Logger_SyslogLoggingHandler', 'SimpleSAML_Logger_LoggingHandlerErrorLog' => 'SimpleSAML_Logger_ErrorLogLoggingHandler', @@ -42,7 +42,7 @@ function temporaryLoader($class) 'SimpleSAML_IdP_LogoutHandler' => 'SimpleSAML_IdP_LogoutHandlerInterface', 'SimpleSAML_IdP_LogoutIFrame' => 'SimpleSAML_IdP_IFrameLogoutHandler', 'SimpleSAML_IdP_LogoutTraditional' => 'SimpleSAML_IdP_TraditionalLogoutHandler', - ); + ]; if (array_key_exists($class, $renamed)) { // the class has been renamed, try to load it and create an alias $class = $renamed[$class]; diff --git a/locales/xh/LC_MESSAGES/messages.po b/locales/xh/LC_MESSAGES/messages.po new file mode 100644 index 0000000000000000000000000000000000000000..46368da9b27ce4506e1a9b4da8925b9f7debc114 --- /dev/null +++ b/locales/xh/LC_MESSAGES/messages.po @@ -0,0 +1,684 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 15:07+0200\n" +"PO-Revision-Date: 2018-11-15 15:07+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{login:next}" +msgstr "Okulandelayo" + +msgid "{errors:title_METADATANOTFOUND}" +msgstr "Imetadata ayifunyenwanga" + +msgid "{errors:descr_GENERATEAUTHNRESPONSE}" +msgstr "" +"Xa lo mboneleli wesazisi ezama ukuyila impendulo yongqinisiso, kwenzeke " +"impazamo." + +msgid "{errors:descr_METADATA}" +msgstr "" +"Kukho ulungiselelo olungachanekanga oluthile lofakelo lwakho lwe-" +"SimpleSAMLphp. Ukuba ngaba ungumlawuli wale nkonzo, ufanele uqinisekise " +"ulungiselelo lwakho lweempawu-ngcaciso zefayile lusetwe " +"ngokuchanekileyo." + +msgid "{errors:descr_NOSTATE}" +msgstr "Inkcazelo yobume ilahlekile, yaye akukho ndlela yokuqalisa isicelo" + +msgid "{attributes:attribute_postaladdress}" +msgstr "Idilesi yeposi" + +msgid "{errors:title_SSOPARAMS}" +msgstr "Akukho sicelo se-SAML sinikelweyo" + +msgid "{attributes:attribute_ou}" +msgstr "Iyunithi yombutho" + +msgid "{status:header_wsfed}" +msgstr "Umzekelo weDemo we-WS-Fed SP" + +msgid "{errors:descr_CASERROR}" +msgstr "Impazamo xa kunxibelelwana neseva ye-CAS." + +msgid "{attributes:attribute_noreduorgnin}" +msgstr "Inombolo yenkampani" + +msgid "{attributes:attribute_homephone}" +msgstr "Umnxeba wasekhaya" + +msgid "{errors:title_SLOSERVICEPARAMS}" +msgstr "Akukho myalezo we-SAML unikelweyo" + +msgid "{attributes:attribute_uid}" +msgstr "I-ID yomsebenzisi" + +msgid "{login:error_nopassword}" +msgstr "" +"Uthumele into kwikhasi lokungena, kodwa ngesizathu esithile iphaswedi " +"ayithunyelwanga. Nceda uzame kwakhona." + +msgid "{status:intro}" +msgstr "" +"Molo, eli likhasi lobume be-SimpleSAMLphp. Apha ungabona ukuba ngaba " +"iseshoni yakho iphelelwe lixesha, iza kuhlala ixesha elide kangakanani " +"ngaphambi kokuba iphelelwe nazo zonke iimpawu ezincanyathiselweyo " +"kwiseshoni yakho." + +msgid "{status:authData_header}" +msgstr "Ungqinisiso lweNgcombolo" + +msgid "{attributes:attribute_facsimiletelephonenumber}" +msgstr "Inombolo yefeksi" + +msgid "{errors:title_BADREQUEST}" +msgstr "Kufunyenwe isicelo esibi" + +msgid "{login:login_button}" +msgstr "Ngena" + +msgid "{status:validfor}" +msgstr "Iseshoni yakho iza kusebenza kangangemizuzu e-%SECONDS% ukususela ngoku." + +msgid "{status:header_shib}" +msgstr "Idemo ye-Shibboleth" + +msgid "{disco:icon_prefered_idp}" +msgstr "[Ukhetho olukhethwayo]" + +msgid "{errors:descr_BADREQUEST}" +msgstr "Kukho impazamo kwisicelo kweli khasi. Isizathu sesi: %REASON%" + +msgid "{attributes:attribute_homepostaladdress}" +msgstr "Idilesi yeposi yasekhaya" + +msgid "{login:help_header}" +msgstr "Ncedani! Andiyikhumbuli iphaswedi yam." + +msgid "{logout:return}" +msgstr "Buyela kwinkonzo" + +msgid "{errors:title_METADATA}" +msgstr "Impazamo ilayisha imetadata" + +msgid "{errors:title_LOGOUTREQUEST}" +msgstr "Impazamo iprosesa iSicelo Sokuphuma" + +msgid "{attributes:attribute_schacuserprivateattribute}" +msgstr "Iimpawu zenkcazelo yangasese" + +msgid "{logout:hold}" +msgstr "Ibanjiwe" + +msgid "{errors:title_LDAPERROR}" +msgstr "Impazamo ye-LDAP" + +msgid "{errors:descr_AUTHSOURCEERROR}" +msgstr "Impazamo yongqinisiso kumthombo %AUTHSOURCE%. Isizathu sesi: %REASON%" + +msgid "{logout:logout_all}" +msgstr "Ewe, zonke iinkonzo" + +msgid "{errors:descr_CREATEREQUEST}" +msgstr "Kwenzeke impazamo xa kuzanywa ukuyilwa isicelo se-SAML." + +msgid "{login:help_desk_link}" +msgstr "Ikhasi lekhaya ledesika yoncedo" + +msgid "{attributes:attribute_cn}" +msgstr "Igama eliqhelekileyo" + +msgid "{errors:debuginfo_header}" +msgstr "Inkcazelo yokulungisa" + +msgid "{errors:title_NOACCESS}" +msgstr "Akukho fikelelo" + +msgid "{errors:title_INVALIDCERT}" +msgstr "Isatifikethi esingasebenziyo" + +msgid "{errors:title_WRONGUSERPASS}" +msgstr "Igama lomsebenzisi okanye iphaswedi engachanekanga" + +msgid "{status:authData_summary}" +msgstr "Cofa ukuze ubone uNgqinisiso lweNgcombolo" + +msgid "{errors:howto_header}" +msgstr "Indlela yokufumana uncedo" + +msgid "{disco:login_at}" +msgstr "Ungeno ngo-" + +msgid "{disco:select}" +msgstr "Khetha" + +msgid "{disco:remember}" +msgstr "Khumbula ukhetho lwam" + +msgid "{general:remember}" +msgstr "Khumbula" + +msgid "{attributes:attribute_edupersonprincipalname}" +msgstr "Igama elingundoqo lomntu kwinkampani yekhaya" + +msgid "{errors:title_PROCESSASSERTION}" +msgstr "Impazamo iprosesa impendulo esuka kuMboneleli Wesazisi" + +msgid "{errors:descr_NOTFOUND}" +msgstr "Ikhasi elinikelweyo alifunyenwanga. I-URL ngu: %URL%" + +msgid "{errors:descr_NOACCESS}" +msgstr "" +"Le ndawo yokuphela ayenziwanga yasebenza. Jonga ukhetho lokwenza isebenze" +" kulungiselelo lwakho lwe-SimpleSAMLphp." + +msgid "{errors:descr_NORELAYSTATE}" +msgstr "" +"Umqalisi wesi sicelo akanikelanga ngepharamitha ye-RelayState apho " +"kufanele kuyiwe khona." + +msgid "{status:subject_format}" +msgstr "Ufomatho" + +msgid "{errors:descr_NOTVALIDCERT}" +msgstr "Awukhange uzise isatifikethi esisebenzayo." + +msgid "{errors:title_NOTFOUND}" +msgstr "Ikhasi alifunyenwanga" + +msgid "{logout:completed}" +msgstr "Igqityiwe" + +msgid "{status:subject_header}" +msgstr "Umbandela we-SAML" + +msgid "{attributes:attribute_schachomeorganization}" +msgstr "Igama ledomeyini yombutho wekhaya" + +msgid "{errors:descr_LOGOUTINFOLOST}" +msgstr "" +"Inkcazelo malunga nomsebenzi wokuphuma wangoku ilahlekile. Ufanele " +"ubuyele kwinkonzo ubuzama ukuphuma kuyo uzame ukuphuma kwakhona. Le " +"mpazamo inokubangelwa kukuphelelwa kwenkcazelo yokuphuma. Inkcazelo " +"yokuphuma igcinwa ixesha elithile - ngokuqhelekileyo iiyure eziliqela. " +"Oku kuthatha ixesha elide kunawo nawuphi na umsebenzi wokuphuma ofanele " +"ulithathe, ngoko le mpazamo isenokubonisa enye impazamo ngolungiselelo. " +"Ukuba ingxaki iyaqhubeka, qhagamshela umboneleli wenkonzo wakho." + +msgid "{attributes:attribute_noredupersonlin}" +msgstr "Inombolo yesazisi yasekuhlaleni" + +msgid "{status:subject_notset}" +msgstr "ayikasetwa" + +msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" +msgstr "Impazamo efunyenwe kuMboneleli Wesazisi" + +msgid "{disco:selectidp}" +msgstr "Khetha umboneleli wesazisi wakho" + +msgid "{attributes:attribute_edupersonorgdn}" +msgstr "Igama elahlukileyo (DN) lenkampani yekhaya yomntu" + +msgid "{errors:title_NOTSET}" +msgstr "Iphaswedi ayisetwanga" + +msgid "{attributes:attribute_edupersonaffiliation}" +msgstr "Indima" + +msgid "{login:user_pass_text}" +msgstr "" +"Inkonzo icele ukuba uzingqinisise. Nceda ungenise igama lomsebenzisi " +"nephaswedi yakho kwifomu ngezantsi." + +msgid "{logout:logout_only}" +msgstr "Hayi, kuphela %SP%" + +msgid "{login:username}" +msgstr "Igama lomsebenzisi" + +msgid "{attributes:attribute_edupersonprimaryorgunitdn}" +msgstr "Igama elahlukileyo (DN) leYunithi Yenkampani yokuqala yomntu" + +msgid "{errors:error_header}" +msgstr "Impazamo ye-SimpleSAMLphp" + +msgid "{general:no_cancel}" +msgstr "Hayi, rhoxisa" + +msgid "{status:header_diagnostics}" +msgstr "Uhlalutyo lwe-SimpleSAMLphp" + +msgid "{errors:descr_SSOPARAMS}" +msgstr "" +"Ufikelele i-intafeyisi ye-Single Sign On Service, kodwa awukhange unikele" +" iMpendulo Yongqinisiso ye-SAML. Nceda uqaphele ukuba le ndawo yokuphela " +"ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." + +msgid "{login:contact_info}" +msgstr "Inkcazelo yoqhagamshelwano:" + +msgid "{errors:errorreport_header}" +msgstr "Ingxelo yempazamo ithunyelwe" + +msgid "{errors:title_USERABORTED}" +msgstr "Ungqinisiso luyekiwe" + +msgid "{errors:descr_PROCESSAUTHNREQUEST}" +msgstr "" +"Lo Mboneleli Wesazisi ufumene Isicelo Songqinisiso esisuka kuMboneleli " +"Wenkonzo, kodwa kwenzeke impazamo xa kuzanywa ukuprosesa isicelo." + +msgid "{attributes:attribute_mobile}" +msgstr "Imobhayili" + +msgid "{login:remember_me}" +msgstr "Ndikhumbule" + +msgid "{disco:previous_auth}" +msgstr "Kwixesha elidlulileyo ukhethe ukungqinisisa ngo-" + +msgid "{attributes:attribute_l}" +msgstr "Indawo" + +msgid "{general:yes_continue}" +msgstr "Ewe, qhubeka" + +msgid "{attributes:attribute_organisationname}" +msgstr "Igama lombutho" + +msgid "{login:remember_username}" +msgstr "Khumbula igama lomsebenzisi lam" + +msgid "{errors:title_ACSPARAMS}" +msgstr "Akukho mpendulo ye-SAML inikelweyo" + +msgid "{login:user_pass_header}" +msgstr "Ngenisa igama lomsebenzisi nephaswedi yakho" + +msgid "{attributes:attribute_jpegphoto}" +msgstr "Ifoto ye-JPEG" + +msgid "{logout:logging_out_from}" +msgstr "Iphuma kwezi nkonzo zilandelayo:" + +msgid "{general:yes}" +msgstr "Ewe" + +msgid "{errors:title_CASERROR}" +msgstr "Impazamo ye-CAS" + +msgid "{errors:descr_LDAPERROR}" +msgstr "" +"I-LDAP ngumvimba wengcombolo yomsebenzisi, yaye xa uzame ukungena, " +"kufuneka siqhagamshele uvimba wengcombolo we-LDAP. Kwenzeke impazamo xa " +"besiyizama." + +msgid "{errors:debuginfo_text}" +msgstr "" +"Inkcazelo yokulungisa engezantsi isenokuba ibangela umdla kumlawuli / " +"idesika yoncedo:" + +msgid "{attributes:attribute_edupersontargetedid}" +msgstr "Igama elingelolakhe elingatshintshiyo elingqale kwinkonzo" + +msgid "{errors:descr_NOTFOUNDREASON}" +msgstr "" +"Ikhasi elinikelweyo alifunyenwanga. Isizathu sesi: %REASON% I-URL ngu: " +"%URL%" + +msgid "{attributes:attribute_noredupersonbirthdate}" +msgstr "Umhla wokuzalwa" + +msgid "{logout:success}" +msgstr "Uphume ngokuyimpumelelo kuzo zonke iinkonzo ezidweliswe ngasentla." + +msgid "{login:error_wrongpassword}" +msgstr "Igama lomsebenzisi okanye iphaswedi engachanekanga." + +msgid "{attributes:attribute_edupersonprimaryaffiliation}" +msgstr "Indima eyintloko" + +msgid "{attributes:attribute_sn}" +msgstr "Ifani" + +msgid "{login:error_header}" +msgstr "Impazamo" + +msgid "{logout:logged_out_text}" +msgstr "Uphumile." + +msgid "{errors:title_GENERATEAUTHNRESPONSE}" +msgstr "Ayikwazanga ukuyila impendulo yongqinisiso" + +msgid "{errors:descr_UNKNOWNCERT}" +msgstr "Ungqinisiso lusilele: isatifikerthi esithunyelwe yibhrawuza yakho asaziwa" + +msgid "{attributes:attribute_noredupersonnin}" +msgstr "Inombolo yesazisi eyabelwe ngamagunya oluntu" + +msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" +msgstr "" +"Umboneleli Wesazisi uphendule ngempazamo. (Ikhowudi yobume kwiMpendulo " +"ye-SAML ayiphumelelanga)" + +msgid "{general:service_provider}" +msgstr "Umboneleli Wenkonzo" + +msgid "{attributes:attribute_edupersonnickname}" +msgstr "Isiteketiso" + +msgid "{errors:descr_DISCOPARAMS}" +msgstr "Iipharamitha ezithunyelwe kwinkonzo yofumaniso azihambelani neenkcukacha." + +msgid "{status:header_saml20_sp}" +msgstr "Umzekelo weDemo we-SAML 2.0 SP" + +msgid "{attributes:attribute_edupersonorgunitdn}" +msgstr "Igama elahlukileyo (DN) leyunithi yenkampani yekhaya yomntu" + +msgid "{errors:descr_INVALIDCERT}" +msgstr "" +"Ungqinisiso lusilele: isatifikethi esithunyelwe yibhrawuza yakho " +"asisebenzi okanye asikwazi ukufundwa" + +msgid "{login:change_home_org_button}" +msgstr "Khetha umbutho wekhaya" + +msgid "{attributes:attribute_eduorglegalname}" +msgstr "Igama elisemthethweni lenkampani" + +msgid "{status:logout}" +msgstr "Phuma" + +msgid "{errors:descr_NOTSET}" +msgstr "" +"Iphaswedi ekulungiselelo (auth.adminpassword) ayitshintshwanga ukusuka " +"kwixabiso lesiseko. Nceda uhlele ifayile yolungiselelo." + +msgid "{attributes:attribute_givenname}" +msgstr "Igama elinikiweyo" + +msgid "{errors:title_AUTHSOURCEERROR}" +msgstr "Impazamo yomthombo wongqinisiso" + +msgid "{attributes:attribute_manager}" +msgstr "Umanejala" + +msgid "{attributes:attribute_edupersonentitlement}" +msgstr "Ilungelo ngokuphathelele inkonzo" + +msgid "{errors:title_UNHANDLEDEXCEPTION}" +msgstr "Isinxaxhi esingasingathwanga" + +msgid "{errors:report_header}" +msgstr "Chaza iimpazamo" + +msgid "{errors:descr_LOGOUTREQUEST}" +msgstr "Kwenzeke impazamo ngoxa kuproseswa isiCelo Sokuphuma." + +msgid "{attributes:attribute_postalcode}" +msgstr "Ikhowudi yeposi" + +msgid "{attributes:attribute_street}" +msgstr "Istrato" + +msgid "{errors:title_NOTVALIDCERT}" +msgstr "Isatifikethi esingasebenziyo" + +msgid "{errors:descr_MEMCACHEDOWN}" +msgstr "" +"Ingcombolo yeseshoni yakho ayikwazi ukubuyiselwa okwangoku ngenxa " +"yeengxaki zobugcisa. Nceda uzame kwakhona kwimizuzu embalwa." + +msgid "{errors:report_submit}" +msgstr "Thumela ingxelo yempazamo" + +msgid "{logout:incapablesps}" +msgstr "" +"Inkonzo enye okanye ezingakumbi ongeneyo kuzo <i>azikuxhasi ukuphuma</i>." +" Ukuqinisekisa zonke iiseshoni zakho zivaliwe, ukhuthazwa <i>uvale " +"ibhrawuza yewebhu</i>." + +msgid "{errors:title_CONFIG}" +msgstr "Impazamo yolungiselelo" + +msgid "{errors:report_trackid}" +msgstr "" +"Ukuba ngaba uchaza le mpazamo, nceda kananjalo uchaze le nombolo " +"yolandelelo eyenza kube lula ukufumana iseshoni yakho kwiincwadi " +"ezifumaneka kumlawuli wesistim:" + +msgid "{attributes:attribute_displayname}" +msgstr "Igama lomboniso" + +msgid "{attributes:attribute_eduorghomepageuri}" +msgstr "Ikhasi lekhaya Lenkampani" + +msgid "{login:change_home_org_title}" +msgstr "Tshintsha umbutho wakho wekhaya" + +msgid "{attributes:attribute_edupersonorcid}" +msgstr "Isazisi se-ORCID" + +msgid "{errors:title_UNKNOWNCERT}" +msgstr "Isatifikethi esingaziwayo" + +msgid "{general:no}" +msgstr "Hayi" + +msgid "{errors:title_NOCERT}" +msgstr "Akukho satifikethi" + +msgid "{errors:descr_UNHANDLEDEXCEPTION}" +msgstr "Isinxaxhi esingasingathwanga silahliwe." + +msgid "{attributes:attribute_title}" +msgstr "Isibizo" + +msgid "{attributes:attribute_dc}" +msgstr "Ikhomponenti yedomeyin (DC)" + +msgid "{errors:title_CREATEREQUEST}" +msgstr "Impazamo nokuyila isicelo" + +msgid "{errors:descr_SLOSERVICEPARAMS}" +msgstr "" +"Ufikelele i-intafeyisi ye-SingleLogoutService, kodwa awukhange unikele " +"i-SAML LogoutRequest okanye i-LogoutResponse. Nceda uqaphele ukuba le " +"ndawo yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." + +msgid "{errors:descr_PROCESSASSERTION}" +msgstr "Asiyamkelanga impendulo ethunyelwe ukusuka kuMboneleli Wesazisi." + +msgid "{disco:selectidp_full}" +msgstr "Nceda ukhethe umboneleli wesazisi apho ufuna ukungqinisisa:" + +msgid "{attributes:attribute_edupersonassurance}" +msgstr "Iprofayile yokuqinisekisa isazisi" + +msgid "{attributes:attribute_ismemberof}" +msgstr "Ubulungu beqela" + +msgid "{logout:failedsps}" +msgstr "" +"Awukwazi ukuphuma kwinkonzo enye okanye ezingakumbi. Ukuqinisekisa zonke " +"iiseshoni zakho zivaliwe, ukhuthazwa <i>uvale ibhrawuza yewebhu</i>." + +msgid "{login:change_home_org_text}" +msgstr "" +"Uye wakhetha u-<b>%HOMEORG%</b> njengombutho wakho wekhaya. Ukuba oku " +"akuchanekanga usenokukhetha omnye." + +msgid "{login:processing}" +msgstr "Iyaprosesa..." + +msgid "{logout:default_link_text}" +msgstr "Buyela emva kwikhasi lofakelo le-SimpleSAMLphp" + +msgid "{errors:descr_CONFIG}" +msgstr "I-SimpleSAMLphp ibonakala ingalungiselelwanga kakuhle." + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Ulwimi olukhethayo" + +msgid "{errors:title_DISCOPARAMS}" +msgstr "Isicelo esibi kwinkonzo yofumaniso" + +msgid "{status:attributes_header}" +msgstr "Iimpawu zakho" + +msgid "{errors:descr_WRONGUSERPASS}" +msgstr "" +"Kusenokwenzeka akukho msebenzisi unegama lomsebenzisi elinikelweyo " +"ofunyenweyo, okanye iphaswedi oyinikeleyo ayichanekanga. Nceda ujonge " +"igama lomsebenzisi uzame kwakhona." + +msgid "{status:sessionsize}" +msgstr "Ubukhulu beseshoni: %SIZE%" + +msgid "{errors:title_LOGOUTINFOLOST}" +msgstr "Inkcazelo yokuphuma ilahlekile" + +msgid "{errors:title_NORELAYSTATE}" +msgstr "Akukho RelayState" + +msgid "{logout:also_from}" +msgstr "Kananjalo ungene kwezi nkonzo:" + +msgid "{logout:logout_all_question}" +msgstr "Ngaba ufuna ukuphuma kuzo zonke iinkonzo ezingasentla?" + +msgid "{attributes:attribute_o}" +msgstr "Igama lombutho" + +msgid "{logout:loggedoutfrom}" +msgstr "Ngoku uphume ngokuyimpumelelo kwi-%SP%." + +msgid "{errors:title_NOTFOUNDREASON}" +msgstr "Ikhasi alifunyenwanga" + +msgid "{errors:descr_USERABORTED}" +msgstr "Ungqinisiso luyekiswe ngumsebenzisi" + +msgid "{errors:report_email}" +msgstr "Idilesi ye-imeyile:" + +msgid "{login:organization}" +msgstr "Umbutho" + +msgid "{errors:descr_ACSPARAMS}" +msgstr "" +"Ufikelele i-intafeyisi ye-Assertion Consumer Service, kodwa awukhange " +"unikele iMpendulo Yongqinisiso ye-SAML. Nceda uqaphele ukuba le ndawo " +"yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." + +msgid "{errors:descr_NOCERT}" +msgstr "" +"Ungqinisiso lusilele: ibhrawuza yakho ayithumelanga nasiphi na " +"isatifikethi" + +msgid "{errors:descr_ARSPARAMS}" +msgstr "" +"Ufikelele i-intafeyisi ye-Artifact Resolution Service, kodwa awukhange " +"unikrele umyalezo we-SAML ArtifactResolve. Nceda uqaphele ukuba le ndawo " +"yokuphela ayilungiselelwanga ukuba ifikelelwe ngokuthe ngqo." + +msgid "{attributes:attribute_edupersonscopedaffiliation}" +msgstr "Indima kumbutho wasekhaya" + +msgid "{errors:title_MEMCACHEDOWN}" +msgstr "Ayikwazi ukubuyisela ingcombolo yeseshoni" + +msgid "{status:some_error_occurred}" +msgstr "Kwenzeke impazamo ethile" + +msgid "{errors:errorreport_text}" +msgstr "Ingxelo yempazamo ithunyelwe kubalawuli." + +msgid "{errors:title_ARSPARAMS}" +msgstr "Akukho myalezo we-SAML unikelweyo" + +msgid "{login:help_desk_email}" +msgstr "Thumela i-imeyile kwidesika yoncedo" + +msgid "{errors:title_PROCESSAUTHNREQUEST}" +msgstr "Impazamo iprosesa isicelo esisuka kuMboneleli Wenkonzo" + +msgid "{errors:descr_METADATANOTFOUND}" +msgstr "Ayikwazi ukufumana iimpawu-ngcaciso zefayile ze-%ENTITYID%" + +msgid "{errors:title_NOSTATE}" +msgstr "Inkcazelo yobume ilahlekile" + +msgid "{logout:title}" +msgstr "Uphumile" + +msgid "{errors:report_explain}" +msgstr "Cacisa ukuba wenze ntoni xa bekusenzeka le mpazamo..." + +msgid "{attributes:attribute_telephonenumber}" +msgstr "Inombolo yomnxeba" + +msgid "{attributes:attribute_edupersonuniqueid}" +msgstr "" +"I-ID yomntu enganakuphinda yabelwe, ebhalwe ngegama lobuxoki eqhubekayo " +"kwinkampani yekhaya" + +msgid "{logout:failed}" +msgstr "Ukuphuma kusilele" + +msgid "{login:password}" +msgstr "Iphaswedi" + +msgid "{login:help_text}" +msgstr "" +"Ngaphandle kwegama lomsebenzisi nephaswedi yakho awukwazi ukuzingqinisisa" +" ukuze ufumane ufikelelo kwinkonzo. Kusenokuba ukho umntu onokukunceda. " +"Qhagamshelana nedesika yoncedo kumbutho wakho!" + +msgid "{logout:no}" +msgstr "Hayi" + +msgid "{errors:howto_text}" +msgstr "" +"Le mpazamo kusenokwenzeka ingenxa yendlela yokwenza engalindelekanga " +"okanye ulungiselelo olungachanekanga lwe-SimpleSAMLphp. Qhagamshelana " +"nomlawuli wale nkonzo yokungena, uze umthumele umyalezo wempazamo " +"ongentla." + +msgid "{attributes:attribute_userpassword}" +msgstr "Iheshi yephaswedi yomsebenzisi" + +msgid "{errors:report_text}" +msgstr "" +"Unokhetho lokuthumela idilesi yeimeyile yakho, ukuze abalawuli bakwazi " +"ukukuqhagamshela ukuba banemibuzo engakumbi malunga nomba wakho:" + +msgid "{attributes:attribute_mail}" +msgstr "Iposi" + +msgid "{logout:progress}" +msgstr "Iyaphuma..." + +msgid "{attributes:attribute_labeleduri}" +msgstr "I-URI eneleyibheli" + +msgid "{login:select_home_org}" +msgstr "Khetha umbutho wakho wekhaya" + +msgid "{attributes:attribute_noredupersonlegalname}" +msgstr "Igama elisemthethweni" + +msgid "{attributes:attribute_postofficebox}" +msgstr "Ibhokisi yaseposini" + diff --git a/locales/zu/LC_MESSAGES/messages.po b/locales/zu/LC_MESSAGES/messages.po new file mode 100644 index 0000000000000000000000000000000000000000..52b41aa0fffb73d3b659d36d34888a4375695f9f --- /dev/null +++ b/locales/zu/LC_MESSAGES/messages.po @@ -0,0 +1,689 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 15:07+0200\n" +"PO-Revision-Date: 2018-11-15 15:07+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{login:next}" +msgstr "Okulandelayo" + +msgid "{errors:title_METADATANOTFOUND}" +msgstr "Imethadatha ayitholakalanga" + +msgid "{errors:descr_GENERATEAUTHNRESPONSE}" +msgstr "" +"Ngenkathi lo mhlinzeki kamazisi ezama ukwakha impendulo yokuqinisekisa, " +"kuvele iphutha." + +msgid "{errors:descr_METADATA}" +msgstr "" +"Kukhona umiso olungafanele kukufaka kwakho kwe-SimpleSAMLphp. Uma " +"ungumlawuli wale sevisi, kufanele wenze isiqiniseko sokuthi umiso lwakho " +"lwemethadatha lumiswe ngendlela efanele." + +msgid "{errors:descr_NOSTATE}" +msgstr "" +"Ulwazi lwesifunda lulahlekile, futhi ayikho indlela yokuqala kabusha " +"isicelo" + +msgid "{attributes:attribute_postaladdress}" +msgstr "Ikheli leposi" + +msgid "{errors:title_SSOPARAMS}" +msgstr "Asikho isicelo se-SAML esinikeziwe" + +msgid "{attributes:attribute_ou}" +msgstr "Iyunithi yenhlangano" + +msgid "{status:header_wsfed}" +msgstr "Isibonelo Sedemo ye-WS-Fed SP" + +msgid "{errors:descr_CASERROR}" +msgstr "Iphutha ngenkathi kuxhunyanwa neseva ye-CAS." + +msgid "{attributes:attribute_noreduorgnin}" +msgstr "Inombolo yenhlangano" + +msgid "{attributes:attribute_homephone}" +msgstr "Ucingo lwasekhaya" + +msgid "{errors:title_SLOSERVICEPARAMS}" +msgstr "Awukho umlayezo we-SAML onikeziwe" + +msgid "{attributes:attribute_uid}" +msgstr "I-ID yomsebenzisi" + +msgid "{login:error_nopassword}" +msgstr "" +"Uthumele okuthile ekhasini lokungena, kodwa ngasizathu simbe iphasiwedi " +"ayizange ithunyelwe. Sicela uzame futhi." + +msgid "{status:intro}" +msgstr "" +"Sawubona, leli ikhasi lesimo se-SimpleSAMLphp. Lapha ungakwazi ukubona " +"ukuthi iseshini yakho iphelelwe isikhathi yini, ukuthi ihlala isikhathi " +"eside kangakanani ngaphambi kokuthi iphelelwe isikhathi kanye nazo zonke " +"izici ezihambisana neseshini yakho." + +msgid "{status:authData_header}" +msgstr "I-AuthData" + +msgid "{attributes:attribute_facsimiletelephonenumber}" +msgstr "Inombolo yefeksi" + +msgid "{errors:title_BADREQUEST}" +msgstr "Kutholwe umlayezo ongalungile" + +msgid "{login:login_button}" +msgstr "Ngena" + +msgid "{status:validfor}" +msgstr "Iseshini yakho isebenza imizuzwana engu-%SECONDS% ukusuka manje." + +msgid "{status:header_shib}" +msgstr "Idemo ye-Shibboleth" + +msgid "{disco:icon_prefered_idp}" +msgstr "[Ukukhetha okuncanyelwayo]" + +msgid "{errors:descr_BADREQUEST}" +msgstr "Kukhona iphutha kusicelo saleli khasi. Isizathu besithi: %REASON%" + +msgid "{attributes:attribute_homepostaladdress}" +msgstr "Ikheli leposi lasekhaya" + +msgid "{login:help_header}" +msgstr "Siza! Angiyikhumbuli iphasiwedi yami." + +msgid "{logout:return}" +msgstr "Buyela kusevisi" + +msgid "{errors:title_METADATA}" +msgstr "Iphutha lokulayisha imethadatha" + +msgid "{errors:title_LOGOUTREQUEST}" +msgstr "Iphutha lokucubungula Isicelo Sokuphuma" + +msgid "{attributes:attribute_schacuserprivateattribute}" +msgstr "Izingxenye zolwazi oluyimfihlo" + +msgid "{logout:hold}" +msgstr "Imisiwe" + +msgid "{errors:title_LDAPERROR}" +msgstr "Iphutha le-LDAP" + +msgid "{errors:descr_AUTHSOURCEERROR}" +msgstr "" +"Iphutha lokuqinisekisa kumthombo othi %AUTHSOURCE%. Isizathu besithi: " +"%REASON%" + +msgid "{logout:logout_all}" +msgstr "Yebo, wonke amasevisi" + +msgid "{errors:descr_CREATEREQUEST}" +msgstr "Kuvele iphutha ngenkathi izama ukwakha isicelo se-SAML." + +msgid "{login:help_desk_link}" +msgstr "Ikhasi lasekhaya ledeski losizo" + +msgid "{attributes:attribute_cn}" +msgstr "Igama elivamile" + +msgid "{errors:debuginfo_header}" +msgstr "Ulwazi lokususwa kwephutha" + +msgid "{errors:title_NOACCESS}" +msgstr "Akukho ukufinyelela" + +msgid "{errors:title_INVALIDCERT}" +msgstr "Isifiketi esingalungile" + +msgid "{errors:title_WRONGUSERPASS}" +msgstr "Igama lomsebenzisi elingalungile noma iphasiwedi" + +msgid "{status:authData_summary}" +msgstr "Qhafaza ukuze ubuke i-AuthData" + +msgid "{errors:howto_header}" +msgstr "Indlela yokuthola usizo" + +msgid "{disco:login_at}" +msgstr "Ngena kokuthi" + +msgid "{disco:select}" +msgstr "Khetha" + +msgid "{disco:remember}" +msgstr "Khumbula ukukhetha kwami" + +msgid "{general:remember}" +msgstr "Khumbula" + +msgid "{attributes:attribute_edupersonprincipalname}" +msgstr "Igama eliyinhloko lomuntu enhlanganweni yasekhaya" + +msgid "{errors:title_PROCESSASSERTION}" +msgstr "Iphutha lokucubungula impendulo esuka Kumhlinzeki Kamazisi" + +msgid "{errors:descr_NOTFOUND}" +msgstr "Ikhasi elinikeziwe alitholakalanga. I-URL ibithi: %URL%" + +msgid "{errors:descr_NOACCESS}" +msgstr "" +"Lesi siphetho asivunyelwe. Hlola izinketho zokuvumela kumiso lwakho lwe-" +"SimpleSAMLphp." + +msgid "{errors:descr_NORELAYSTATE}" +msgstr "" +"Umqalisi walesi sicelo akazange ahlinzeke ngepharamitha ye-RelayState " +"ebonisa ukuthi kufanele uye kuphi ngokulandelayo." + +msgid "{status:subject_format}" +msgstr "Ifomethi" + +msgid "{errors:descr_NOTVALIDCERT}" +msgstr "Awuzange wethule isitifiketi esilungile." + +msgid "{errors:title_NOTFOUND}" +msgstr "Ikhasi alitholakali" + +msgid "{logout:completed}" +msgstr "Kuqedile" + +msgid "{status:subject_header}" +msgstr "Isihloko Se-SAML" + +msgid "{attributes:attribute_schachomeorganization}" +msgstr "Igama lesizinda senhlangano yasekhaya" + +msgid "{errors:descr_LOGOUTINFOLOST}" +msgstr "" +"Ulwazi olumayelana nomsebenzi wokuphuma wamanje lulahlekile. Kufanele " +"ubuyele kusevisi obuzama ukuphuma kuyo futhi uzame ukuphuma futhi. Leli " +"phutha lingabangelwa ukuphelelwa isikhathi kolwazi lokuphuma. Ulwazi " +"lokuphuma lugcinwa isikhathi esilinganiselwe - ngokuvamile amahora " +"ambalwa. Lokhu kude kunanoma yimuphi umsebenzi wokuphuma ovamile, ngakho " +"leli phutha lingase libonise elinye iphutha ngomiso. Uma inkinga " +"iphikelela, thinta umhlinzeki wakho wesevisi." + +msgid "{attributes:attribute_noredupersonlin}" +msgstr "Inombolo kamazisi yasendaweni" + +msgid "{status:subject_notset}" +msgstr "akusethiwe" + +msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" +msgstr "Iphutha litholwe ukusuka Kumhlinzeki Kamazisi" + +msgid "{disco:selectidp}" +msgstr "Khetha umhlinzeki wakho kamazisi" + +msgid "{attributes:attribute_edupersonorgdn}" +msgstr "Igama elihloniphekile (I-DN) lenhlangano yasekhaya yomuntu" + +msgid "{errors:title_NOTSET}" +msgstr "Iphasiwedi ayisethiwe" + +msgid "{attributes:attribute_edupersonaffiliation}" +msgstr "Indima" + +msgid "{login:user_pass_text}" +msgstr "" +"Isevisi icele ukuthi uziqinisekise. Sicela ufake igama lakho lomsebenzisi" +" nephasiwedi ngohlobo olungezansi." + +msgid "{logout:logout_only}" +msgstr "Cha, ku-%SP% kuphela" + +msgid "{login:username}" +msgstr "Igama lomsebenzisi" + +msgid "{attributes:attribute_edupersonprimaryorgunitdn}" +msgstr "Igama elihloniphekile (I-DN) Leyunithi Yenhlangano eyinhloko yomuntu" + +msgid "{errors:error_header}" +msgstr "Iphutha le-SimpleSAMLphp" + +msgid "{general:no_cancel}" +msgstr "Cha, khansela" + +msgid "{status:header_diagnostics}" +msgstr "Ukuhlonzwa Kwe-SimpleSAMLphp" + +msgid "{errors:descr_SSOPARAMS}" +msgstr "" +"Ufinyelele ukusebenzisana Kwesevisi Yokubhalisa Okukodwa, kodwa awuzange " +"uhlinzeke Ngempendulo Yokuqinisekisa ye-SAML. Sicela uphawule ukuthi " +"isiphetho asihloselwe ukufinyelelwa ngokuqondile." + +msgid "{login:contact_info}" +msgstr "Ulwazi lokuxhumana:" + +msgid "{errors:errorreport_header}" +msgstr "Umbiko wephutha uthunyelwe" + +msgid "{errors:title_USERABORTED}" +msgstr "Ukuqinisekisa kuyekisiwe" + +msgid "{errors:descr_PROCESSAUTHNREQUEST}" +msgstr "" +"Lo Mhlinzeki Kamazisi uthole Isicelo Sokuqinisekisa ukusuka Kumhlinzeki " +"Wesevisi, kodw,a kuvele iphutha ngenkathi ezama ukucubungula isicelo." + +msgid "{attributes:attribute_mobile}" +msgstr "Imobhayili" + +msgid "{login:remember_me}" +msgstr "Ngikhumbule" + +msgid "{disco:previous_auth}" +msgstr "Ngaphambilini ukhethe ukuqinisekisa kokuthi" + +msgid "{attributes:attribute_l}" +msgstr "Indawo" + +msgid "{general:yes_continue}" +msgstr "Yebo, qhubeka" + +msgid "{attributes:attribute_organisationname}" +msgstr "Igama lenhlangano" + +msgid "{login:remember_username}" +msgstr "Khumbula igama lami lomsebenzisi" + +msgid "{errors:title_ACSPARAMS}" +msgstr "Ayikho impendulo ye-SAML enikeziwe" + +msgid "{login:user_pass_header}" +msgstr "Faka igama lakho lomsebenzisi nephasiwedi" + +msgid "{attributes:attribute_jpegphoto}" +msgstr "Isithombe se-JPEG" + +msgid "{logout:logging_out_from}" +msgstr "Iyaphuma kumasevisi alandelayo:" + +msgid "{general:yes}" +msgstr "Yebo" + +msgid "{errors:title_CASERROR}" +msgstr "Iphutha Le-CAS" + +msgid "{errors:descr_LDAPERROR}" +msgstr "" +"I-LDAP iyidathabheyisi yomsebenzisi, futhi lapho uzama ukungena, sidinga " +"ukuthinta idathabheyisi ye-LDAP. Kuvele iphutha ngesikhathi siyizama " +"ngalesi sikhathi." + +msgid "{errors:debuginfo_text}" +msgstr "" +"Ulwazi lokususwa kwephutha olungezansi lungase lukhange kumlawuli / " +"ideski losizo:" + +msgid "{attributes:attribute_edupersontargetedid}" +msgstr "Isibizo esingashintshi esiqondene nesevisi" + +msgid "{errors:descr_NOTFOUNDREASON}" +msgstr "" +"Ikhasi elinikeziwe alitholakalanga. Isizathu besithi: %REASON% I-URL " +"ibithi: %URL%" + +msgid "{attributes:attribute_noredupersonbirthdate}" +msgstr "Usuku lokuzalwa" + +msgid "{logout:success}" +msgstr "Uphume ngempumelelo kuwo wonke amasevisi abhalwe ngenhla." + +msgid "{login:error_wrongpassword}" +msgstr "Igama lomsebenzisi noma iphasiwedi engalungile." + +msgid "{attributes:attribute_edupersonprimaryaffiliation}" +msgstr "Indima eyinhloko" + +msgid "{attributes:attribute_sn}" +msgstr "Isibongo" + +msgid "{login:error_header}" +msgstr "Iphutha" + +msgid "{logout:logged_out_text}" +msgstr "Usuphumile." + +msgid "{errors:title_GENERATEAUTHNRESPONSE}" +msgstr "Ayikwazanga ukwakha impendulo yokuqinisekisa" + +msgid "{errors:descr_UNKNOWNCERT}" +msgstr "" +"Ukuqinisekisa kuhlulekile: isitifiketi esithunyelwe isiphequluli sakho " +"asaziwa" + +msgid "{attributes:attribute_noredupersonnin}" +msgstr "Inombolo kamazisi eyabelwe amagunya omphakathi" + +msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" +msgstr "" +"Umhlinzeki Womazisi uphendule ngephutha. (Ikhodi yesimo Sempendulo ye-" +"SAML ayizange iphumelele)" + +msgid "{general:service_provider}" +msgstr "Umhlinzeki Wesevisi" + +msgid "{attributes:attribute_edupersonnickname}" +msgstr "Isidlaliso" + +msgid "{errors:descr_DISCOPARAMS}" +msgstr "Amapharamitha athunyelwe kusevisi yokuthola abengavumelani nezici." + +msgid "{status:header_saml20_sp}" +msgstr "Isampula Ledemo Ye-SAML 2.0 SP" + +msgid "{attributes:attribute_edupersonorgunitdn}" +msgstr "Igama elihloniphekile (I-DN) leyunithi yenhlangano yasekhaya yomuntu" + +msgid "{errors:descr_INVALIDCERT}" +msgstr "" +"Ukuqinisekisa kuhlulekile: isitifiketi esithunyelwe isiphequluli sakho " +"asivumelekile noma asikwazi ukufundwa" + +msgid "{login:change_home_org_button}" +msgstr "Khetha inhlangano yasekhaya" + +msgid "{attributes:attribute_eduorglegalname}" +msgstr "Igama elisemthethweni lenhlangano" + +msgid "{status:logout}" +msgstr "Phuma" + +msgid "{errors:descr_NOTSET}" +msgstr "" +"Iphasiwedi kumiso (auth.adminpassword) ayishintshiwe kunani " +"elizenzakalelayo. Sicela uhlele ifayela lomiso." + +msgid "{attributes:attribute_givenname}" +msgstr "Igama lokuzalwa" + +msgid "{errors:title_AUTHSOURCEERROR}" +msgstr "Iphutha lomthombo wokuqinisekisa" + +msgid "{attributes:attribute_manager}" +msgstr "Umphathi" + +msgid "{attributes:attribute_edupersonentitlement}" +msgstr "Ilungelo eliphathelene nesevisi" + +msgid "{errors:title_UNHANDLEDEXCEPTION}" +msgstr "Okuhlukile okungasingathiwe" + +msgid "{errors:report_header}" +msgstr "Amaphutha ombiko" + +msgid "{errors:descr_LOGOUTREQUEST}" +msgstr "Kuvele iphutha ngenkathi izama ukucubungula Isicelo Sokuphuma." + +msgid "{attributes:attribute_postalcode}" +msgstr "Ikhodi yeposi" + +msgid "{attributes:attribute_street}" +msgstr "Umgwaqo" + +msgid "{errors:title_NOTVALIDCERT}" +msgstr "Isitifiketi esingalungile" + +msgid "{errors:descr_MEMCACHEDOWN}" +msgstr "" +"Idatha yeseshini yakho ayikwazi ukubuyiswa njengamanje ngenxa yezinkinga " +"zobuchwepheshe. Sicela uzame futhi emizuzwini embalwa." + +msgid "{errors:report_submit}" +msgstr "Thumela umbiko wephutha" + +msgid "{logout:incapablesps}" +msgstr "" +"Isevisi eyodwa noma ngaphezulu ongene kuyo <i>ayikusekeli ukuphuma</i>. " +"Ukuze wenze isiqiniseko sokuthi wonke amaseshini akho avaliwe, ukhuthazwa" +" ukuthi <i>uvale isiphequluli sakho sewebhu</i>." + +msgid "{errors:title_CONFIG}" +msgstr "Iphutha lomiso" + +msgid "{errors:report_trackid}" +msgstr "" +"Uma ubika leli phutha, sicela futhi ubike le nombolo yokulandelela eyenza" +" kube nokwenzeka ukuthola iseshini yakho kumalogi atholakalayo kumlawuli " +"wesistimu:" + +msgid "{attributes:attribute_displayname}" +msgstr "Igama lesibonisi" + +msgid "{attributes:attribute_eduorghomepageuri}" +msgstr "Ikhasi lasekhaya lenhlangano" + +msgid "{login:change_home_org_title}" +msgstr "Shintsha inhlangano yakho yasekhaya" + +msgid "{attributes:attribute_edupersonorcid}" +msgstr "Isihlonzi se-ORCID" + +msgid "{errors:title_UNKNOWNCERT}" +msgstr "Isitifiketi esingaziwa" + +msgid "{general:no}" +msgstr "Cha" + +msgid "{errors:title_NOCERT}" +msgstr "Asikho isitifiketi" + +msgid "{errors:descr_UNHANDLEDEXCEPTION}" +msgstr "Okuhlukile okungasingathiwe kulahliwe." + +msgid "{attributes:attribute_title}" +msgstr "Isiqu" + +msgid "{attributes:attribute_dc}" +msgstr "Ingxenye yesizinda (I-DC)" + +msgid "{errors:title_CREATEREQUEST}" +msgstr "Iphutha lokwakha isicelo" + +msgid "{errors:descr_SLOSERVICEPARAMS}" +msgstr "" +"Ufinyelele ukusebenzisana kwe-SingleLogoutService, kodwa awuzange " +"uhlinzeke nge-SAML LogoutRequest noma i-LogoutResponse. Sicela uphawule " +"ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile." + +msgid "{errors:descr_PROCESSASSERTION}" +msgstr "Asizange samukele impendulo ethunyelwe ukusuka Kumhlinzeki Kamazisi." + +msgid "{disco:selectidp_full}" +msgstr "Sicela ukhethe umhlinzeki kamazisi lapho ofuna ukuqinisekisa khona:" + +msgid "{attributes:attribute_edupersonassurance}" +msgstr "Iphrofayela yokuqinisekisa umazisi" + +msgid "{attributes:attribute_ismemberof}" +msgstr "Ubulungu beqembu" + +msgid "{logout:failedsps}" +msgstr "" +"Ayikwazi ukuphuma kusevisi eyodwa noma ngaphezulu. Ukuze wenze " +"isiqiniseko sokuthi wonke amaseshini akho avaliwe, ukhuthazwa ukuthi " +"<i>uvale isiphequluli sakho sewebhu</i>." + +msgid "{login:change_home_org_text}" +msgstr "" +"Ukhethe okuthi <b>%HOMEORG%</b> njengenhlangano yakho yasekhaya. Uma " +"lokhu kungalungile ungase ukhethe enye." + +msgid "{login:processing}" +msgstr "Iyacubungula..." + +msgid "{logout:default_link_text}" +msgstr "Buyela emuva ekhasini lokufaka le-SimpleSAMLphp" + +msgid "{errors:descr_CONFIG}" +msgstr "I-SimpleSAMLphp ibonakala ingamisiwe ngendlela efanele." + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Ulimi oluncanyelwayo" + +msgid "{errors:title_DISCOPARAMS}" +msgstr "Isicelo esingalungile sesevisi yokuthola" + +msgid "{status:attributes_header}" +msgstr "Izici zakho" + +msgid "{errors:descr_WRONGUSERPASS}" +msgstr "" +"Kungenzeka ukuthi akekho umsebenzisi onegama lomsebenzisi otholiwe, noma " +"iphasiwedi oyinikezile ayilungile. Sicela uhlole igama lomsebenzisi bese " +"uzame futhi." + +msgid "{status:sessionsize}" +msgstr "Usayizi weseshini: %SIZE%" + +msgid "{errors:title_LOGOUTINFOLOST}" +msgstr "Ulwazi lokuphuma lulahlekile" + +msgid "{errors:title_NORELAYSTATE}" +msgstr "Ayikho I-RelayState" + +msgid "{logout:also_from}" +msgstr "Ungenile futhi kulawa masevisi:" + +msgid "{logout:logout_all_question}" +msgstr "Ingabe ufuna ukuphuma kuwo wonke amasevisi angenhla?" + +msgid "{attributes:attribute_o}" +msgstr "Igama lenhlangano" + +msgid "{logout:loggedoutfrom}" +msgstr "Usuphume ngempumelelo kokuthi %SP%." + +msgid "{errors:title_NOTFOUNDREASON}" +msgstr "Ikhasi alitholakali" + +msgid "{errors:descr_USERABORTED}" +msgstr "Ukuqinisekisa kuyekiswe umsebenzisi" + +msgid "{errors:report_email}" +msgstr "Ikheli le-imeyili:" + +msgid "{login:organization}" +msgstr "Inhlangano" + +msgid "{errors:descr_ACSPARAMS}" +msgstr "" +"Ufinyelele ukusebenzisana Kwesevisi Yomthengi Yesimemezelo, kodwa " +"awuzange uhlinzeke Ngempendulo Yokuqinisekisa ye-SAML. Sicela uphawule " +"ukuthi isiphetho asihloselwe ukufinyelelwa ngokuqondile." + +msgid "{errors:descr_NOCERT}" +msgstr "" +"Ukuqinisekisa kuhlulekile: isiphequluli sakho asizange sithumele noma " +"yisiphi isitifiketi" + +msgid "{errors:descr_ARSPARAMS}" +msgstr "" +"Ufinyelele ukusebenzisana Kwesevisi Yokucaciswa Kobuciko, kodwa awuzange " +"uhlinzeke umlayezo we-SAML ArtifactResolve. Sicela uphawule ukuthi " +"isiphetho asihloselwe ukufinyelelwa ngokuqondile." + +msgid "{attributes:attribute_edupersonscopedaffiliation}" +msgstr "Indima enhlanganweni yasekhaya" + +msgid "{errors:title_MEMCACHEDOWN}" +msgstr "Ayikwazi ukubuyisela idatha yeseshini" + +msgid "{status:some_error_occurred}" +msgstr "Kuvele iphutha elithile" + +msgid "{errors:errorreport_text}" +msgstr "Umbiko wephutha uthunyelwe kubalawuli." + +msgid "{errors:title_ARSPARAMS}" +msgstr "Awukho umlayezo we-SAML onikeziwe" + +msgid "{login:help_desk_email}" +msgstr "Thumela i-imeyili edeskini losizo" + +msgid "{errors:title_PROCESSAUTHNREQUEST}" +msgstr "Iphutha lokucubungula isicelo esisuka Kumhlinzeki Wesevisi" + +msgid "{errors:descr_METADATANOTFOUND}" +msgstr "Ayikwazi ukuthola imethadatha yokuthi %ENTITYID%" + +msgid "{errors:title_NOSTATE}" +msgstr "Ulwazi lwesifunda lulahlekile" + +msgid "{logout:title}" +msgstr "Uphume ngemvume" + +msgid "{errors:report_explain}" +msgstr "Chaza ukuthi yini oyenzile ngenkathi kuvela leli phutha..." + +msgid "{attributes:attribute_telephonenumber}" +msgstr "Inombolo yocingo" + +msgid "{attributes:attribute_edupersonuniqueid}" +msgstr "" +"I-ID yesibizo ephikelelayo, engakwazi ukwabelwa kabusha yomuntu " +"yenhlangano yasekhaya" + +msgid "{logout:failed}" +msgstr "Ukuphuma kuhlulekile" + +msgid "{login:password}" +msgstr "Iphasiwedi" + +msgid "{login:help_text}" +msgstr "" +"Ngaphandle kwegama lakho lomsebenzisi nephasiwedi awukwazi " +"ukuziqinisekisa ukuze ufinyelele isevisi. Kungase kube khona ozokusiza. " +"Thinta ideski losizo enhlanganweni yakho!" + +msgid "{logout:no}" +msgstr "Cha" + +msgid "{errors:howto_text}" +msgstr "" +"Leli phutha kungenzeka ukuthi libangelwa indlela yokuziphatha " +"engalindelwe noma umiso olungafanele lwe-SimpleSAMLphp. Thinta umlawuli " +"wale sevisi yokungena, bese umthumela umlayezo wephutha ongenhla." + +msgid "{attributes:attribute_userpassword}" +msgstr "Uheshi wephasiwedi yomsebenzisi" + +msgid "{errors:report_text}" +msgstr "" +"Faka ngokuzithandela ikheli lakho le-imeyili, ukuze abalawuli bakwazi " +"ukukuthinta ngemibuzo eyengeziwe mayelana nenkinga yakho:" + +msgid "{attributes:attribute_mail}" +msgstr "Imeyili" + +msgid "{logout:progress}" +msgstr "Iyaphuma..." + +msgid "{attributes:attribute_labeleduri}" +msgstr "I-URI Enelebula" + +msgid "{login:select_home_org}" +msgstr "Khetha inhlangano yakho yasekhaya" + +msgid "{attributes:attribute_noredupersonlegalname}" +msgstr "Igama elisemthethweni" + +msgid "{attributes:attribute_postofficebox}" +msgstr "Ibhokisi lehhovisi leposi" + diff --git a/metadata-templates/adfs-idp-hosted.php b/metadata-templates/adfs-idp-hosted.php index 895dd23c43956dfd4cfb35f224939803a5388fc7..dd81340695659141227cedfe84a77bbf0dbb82d1 100644 --- a/metadata-templates/adfs-idp-hosted.php +++ b/metadata-templates/adfs-idp-hosted.php @@ -1,12 +1,12 @@ <?php -$metadata['__DYNAMIC:1__'] = array( +$metadata['__DYNAMIC:1__'] = [ 'host' => '__DEFAULT__', 'privatekey' => 'server.pem', 'certificate' => 'server.crt', 'auth' => 'example-userpass', - 'authproc' => array( + 'authproc' => [ // Convert LDAP names to WS-Fed Claims. - 100 => array('class' => 'core:AttributeMap', 'name2claim'), - ), -); + 100 => ['class' => 'core:AttributeMap', 'name2claim'], + ], +]; diff --git a/metadata-templates/adfs-sp-remote.php b/metadata-templates/adfs-sp-remote.php index c72f51442808cd2845543d0b1aa29056957900d2..ec2d79c9167c4fc39ba90a5d7f26d10a9cc30d38 100644 --- a/metadata-templates/adfs-sp-remote.php +++ b/metadata-templates/adfs-sp-remote.php @@ -1,12 +1,12 @@ <?php -$metadata['urn:federation:localhost'] = array( +$metadata['urn:federation:localhost'] = [ 'prp' => 'https://localhost/adfs/ls/', 'simplesaml.nameidattribute' => 'uid', - 'authproc' => array( - 50 => array( + 'authproc' => [ + 50 => [ 'class' => 'core:AttributeLimit', 'cn', 'mail', 'uid', 'eduPersonAffiliation', - ), - ), -); + ], + ], +]; diff --git a/metadata-templates/saml20-idp-hosted.php b/metadata-templates/saml20-idp-hosted.php index 431e6e9094d79fed769f2a47faf0f2c841cef464..ecb05ce111e82712e65647eeb6f039f43b80fc1b 100644 --- a/metadata-templates/saml20-idp-hosted.php +++ b/metadata-templates/saml20-idp-hosted.php @@ -5,7 +5,7 @@ * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-hosted */ -$metadata['__DYNAMIC:1__'] = array( +$metadata['__DYNAMIC:1__'] = [ /* * The hostname of the server (VHOST) that will use this SAML entity. * @@ -26,10 +26,10 @@ $metadata['__DYNAMIC:1__'] = array( /* Uncomment the following to use the uri NameFormat on attributes. */ /* 'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri', - 'authproc' => array( + 'authproc' => [ // Convert LDAP names to oids. - 100 => array('class' => 'core:AttributeMap', 'name2oid'), - ), + 100 => ['class' => 'core:AttributeMap', 'name2oid'], + ], */ /* @@ -39,13 +39,13 @@ $metadata['__DYNAMIC:1__'] = array( * for more information. */ /* - 'RegistrationInfo' => array( + 'RegistrationInfo' => [ 'authority' => 'urn:mace:example.org', 'instant' => '2008-01-17T11:28:03Z', - 'policies' => array( + 'policies' => [ 'en' => 'http://example.org/policy', 'es' => 'http://example.org/politica', - ), - ), + ], + ], */ -); +]; diff --git a/metadata-templates/saml20-idp-remote.php b/metadata-templates/saml20-idp-remote.php index 49f44f02848603cd54b9b63e4cd3d56ae507bdd8..d390647e6c4492223c149a1812c3f3409280d130 100644 --- a/metadata-templates/saml20-idp-remote.php +++ b/metadata-templates/saml20-idp-remote.php @@ -4,7 +4,5 @@ * * Remember to remove the IdPs you don't use from this file. * - * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote + * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote */ - - diff --git a/metadata-templates/saml20-sp-remote.php b/metadata-templates/saml20-sp-remote.php index c0f8b02bb5c233b7271482da50d180c187d245b2..a9940e8202da870bfc23199c7794c18b60454452 100644 --- a/metadata-templates/saml20-sp-remote.php +++ b/metadata-templates/saml20-sp-remote.php @@ -8,25 +8,25 @@ /* * Example SimpleSAMLphp SAML 2.0 SP */ -$metadata['https://saml2sp.example.org'] = array( +$metadata['https://saml2sp.example.org'] = [ 'AssertionConsumerService' => 'https://saml2sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', 'SingleLogoutService' => 'https://saml2sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp', -); +]; /* * This example shows an example config that works with G Suite (Google Apps) for education. - * What is important is that you have an attribute in your IdP that maps to the local part of the email address - * at G Suite. In example, if your Google account is foo.com, and you have a user that has an email john@foo.com, then you + * What is important is that you have an attribute in your IdP that maps to the local part of the email address at + * G Suite. In example, if your Google account is foo.com, and you have a user that has an email john@foo.com, then you * must set the simplesaml.nameidattribute to be the name of an attribute that for this user has the value of 'john'. */ -$metadata['google.com'] = array( +$metadata['google.com'] = [ 'AssertionConsumerService' => 'https://www.google.com/a/g.feide.no/acs', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 'simplesaml.nameidattribute' => 'uid', 'simplesaml.attributes' => false, -); +]; -$metadata['https://legacy.example.edu'] = array( +$metadata['https://legacy.example.edu'] = [ 'AssertionConsumerService' => 'https://legacy.example.edu/saml/acs', /* * Currently, SimpleSAMLphp defaults to the SHA-256 hashing algorithm. @@ -38,4 +38,4 @@ $metadata['https://legacy.example.edu'] = array( * http://csrc.nist.gov/publications/nistpubs/800-131A/sp800-131A.pdf */ //'signature.algorithm' => 'http://www.w3.org/2000/09/xmldsig#rsa-sha1', -); +]; diff --git a/metadata-templates/shib13-idp-hosted.php b/metadata-templates/shib13-idp-hosted.php index 56b04828422233f8cf400254f915d0d88c1094a1..28ccc42b33fd334964f13c7289a54a6c9f26dcc0 100644 --- a/metadata-templates/shib13-idp-hosted.php +++ b/metadata-templates/shib13-idp-hosted.php @@ -5,7 +5,7 @@ * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-hosted */ -$metadata['__DYNAMIC:1__'] = array( +$metadata['__DYNAMIC:1__'] = [ /* * The hostname of the server (VHOST) that will use this SAML entity. * @@ -22,4 +22,4 @@ $metadata['__DYNAMIC:1__'] = array( * 'config/authsources.php'. */ 'auth' => 'example-userpass', -); +]; diff --git a/metadata-templates/shib13-idp-remote.php b/metadata-templates/shib13-idp-remote.php index 0757aa83bea4b8e0c65e0e629cea9c5cd311dc61..69c1ef324edad0fc605baf4fc95963e1dbca1cb4 100644 --- a/metadata-templates/shib13-idp-remote.php +++ b/metadata-templates/shib13-idp-remote.php @@ -8,8 +8,8 @@ */ /* -$metadata['theproviderid-of-the-idp'] = array( +$metadata['theproviderid-of-the-idp'] = [ 'SingleSignOnService' => 'https://idp.example.org/shibboleth-idp/SSO', 'certificate' => 'example.pem', -); +]; */ diff --git a/metadata-templates/shib13-sp-hosted.php b/metadata-templates/shib13-sp-hosted.php index 38536ceb0432bf30ee91a9bab7cb93635cf80852..e3581c9b864459d0927a6f2d5d7369ff53dadcd3 100644 --- a/metadata-templates/shib13-sp-hosted.php +++ b/metadata-templates/shib13-sp-hosted.php @@ -8,6 +8,6 @@ /* * Example of hosted Shibboleth 1.3 SP. */ -$metadata['__DYNAMIC:1__'] = array( +$metadata['__DYNAMIC:1__'] = [ 'host' => '__DEFAULT__', -); +]; diff --git a/metadata-templates/shib13-sp-remote.php b/metadata-templates/shib13-sp-remote.php index 73df2dae9ef191587bb45c968a44f4266b87441c..f60174e28841f75a9cbf426621ca25e10abb4d0a 100644 --- a/metadata-templates/shib13-sp-remote.php +++ b/metadata-templates/shib13-sp-remote.php @@ -8,9 +8,8 @@ /* * This is just an example: */ -$metadata['https://sp.shiblab.feide.no'] = array( +$metadata['https://sp.shiblab.feide.no'] = [ 'AssertionConsumerService' => 'http://sp.shiblab.feide.no/Shibboleth.sso/SAML/POST', 'audience' => 'urn:mace:feide:shiblab', 'base64attributes' => false, -); - +]; diff --git a/metadata-templates/wsfed-idp-remote.php b/metadata-templates/wsfed-idp-remote.php index a6d20ef4adf4b4d2259f8c578e425dc53b8f8dbf..214679ce372f8325c64acc281c047c28055adb59 100644 --- a/metadata-templates/wsfed-idp-remote.php +++ b/metadata-templates/wsfed-idp-remote.php @@ -3,7 +3,7 @@ * WS-Federation remote IdP metadata for SimpleSAMLphp. */ -$metadata['urn:federation:pingfederate:localhost'] = array( +$metadata['urn:federation:pingfederate:localhost'] = [ 'prp' => 'https://localhost:9031/idp/prp.wsf', 'certificate' => 'pingfed-localhost.pem', -); +]; diff --git a/metadata-templates/wsfed-sp-hosted.php b/metadata-templates/wsfed-sp-hosted.php index 17e3e12527e30a2b1ddbc254c409927b4c6fe801..5ebdf21c197003673ea2fcf394cd43e9db10f8ad 100644 --- a/metadata-templates/wsfed-sp-hosted.php +++ b/metadata-templates/wsfed-sp-hosted.php @@ -6,6 +6,6 @@ * - host */ -$metadata['__DYNAMIC:1__'] = array( +$metadata['__DYNAMIC:1__'] = [ 'host' => '__DEFAULT__', -); +]; diff --git a/modules/adfs/lib/IdP/ADFS.php b/modules/adfs/lib/IdP/ADFS.php index 6e79f3e360e2754bfd77f39acef92b3d54d7c8c7..691480b7bf5e20a8cc8568688b1be3b4218c315d 100644 --- a/modules/adfs/lib/IdP/ADFS.php +++ b/modules/adfs/lib/IdP/ADFS.php @@ -23,14 +23,14 @@ class ADFS throw new \SimpleSAML\Error\Error('PROCESSAUTHNREQUEST', $exception); } - $state = array( - 'Responder' => array('\SimpleSAML\Module\adfs\IdP\ADFS', 'sendResponse'), + $state = [ + 'Responder' => ['\SimpleSAML\Module\adfs\IdP\ADFS', 'sendResponse'], 'SPMetadata' => $spMetadata->toArray(), 'ForceAuthn' => false, 'isPassive' => false, 'adfs:wctx' => $requestid, 'adfs:wreply' => false - ); + ]; if (isset($query['wreply']) && !empty($query['wreply'])) { $state['adfs:wreply'] = \SimpleSAML\Utils\HTTP::checkURLAllowed($query['wreply']); @@ -109,18 +109,18 @@ MSG; private static function signResponse($response, $key, $cert, $algo) { $objXMLSecDSig = new XMLSecurityDSig(); - $objXMLSecDSig->idKeys = array('AssertionID'); + $objXMLSecDSig->idKeys = ['AssertionID']; $objXMLSecDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N); $responsedom = \SAML2\DOMDocumentFactory::fromString(str_replace("\r", "", $response)); $firstassertionroot = $responsedom->getElementsByTagName('Assertion')->item(0); $objXMLSecDSig->addReferenceList( - array($firstassertionroot), + [$firstassertionroot], XMLSecurityDSig::SHA256, - array('http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N), - array('id_name' => 'AssertionID') + ['http://www.w3.org/2000/09/xmldsig#enveloped-signature', XMLSecurityDSig::EXC_C14N], + ['id_name' => 'AssertionID'] ); - $objKey = new XMLSecurityKey($algo, array('type' => 'private')); + $objKey = new XMLSecurityKey($algo, ['type' => 'private']); $objKey->loadKey($key, true); $objXMLSecDSig->sign($objKey); if ($cert) { @@ -136,7 +136,7 @@ MSG; { $config = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($config, 'adfs:postResponse.twig'); - $t->data['baseurlpath'] = \SimpleSAML\Module::getModuleUrl('adfs'); + $t->data['baseurlpath'] = \SimpleSAML\Module::getModuleURL('adfs'); $t->data['url'] = $url; $t->data['wresult'] = $wresult; $t->data['wctx'] = $wctx; @@ -168,11 +168,11 @@ MSG; $idpMetadata = $idp->getConfig(); $idpEntityId = $idpMetadata->getString('entityid'); - $idp->addAssociation(array( + $idp->addAssociation([ 'id' => 'adfs:'.$spEntityId, 'Handler' => '\SimpleSAML\Module\adfs\IdP\ADFS', 'adfs:entityID' => $spEntityId, - )); + ]); $assertionLifetime = $spMetadata->getInteger('assertion.lifetime', null); if ($assertionLifetime === null) { @@ -213,9 +213,9 @@ MSG; assert(false); } - $state = array( - 'Responder' => array('\SimpleSAML\Module\adfs\IdP\ADFS', 'sendLogoutResponse'), - ); + $state = [ + 'Responder' => ['\SimpleSAML\Module\adfs\IdP\ADFS', 'sendLogoutResponse'], + ]; $assocId = null; // TODO: verify that this is really no problem for: // a) SSP, because there's no caller SP. diff --git a/modules/adfs/lib/SAML2/XML/fed/SecurityTokenServiceType.php b/modules/adfs/lib/SAML2/XML/fed/SecurityTokenServiceType.php index 30f2f62d420b56d4bc3c96be92a6cfde699cf9a9..55a802d507f38bb9137129f8bd64ee9b5fa7b351 100644 --- a/modules/adfs/lib/SAML2/XML/fed/SecurityTokenServiceType.php +++ b/modules/adfs/lib/SAML2/XML/fed/SecurityTokenServiceType.php @@ -15,7 +15,7 @@ class SecurityTokenServiceType extends \SAML2\XML\md\RoleDescriptor * * @var array */ - public $protocolSupportEnumeration = array(FedConst::NS_FED); + public $protocolSupportEnumeration = [FedConst::NS_FED]; /** * The Location of Services. diff --git a/modules/adfs/www/idp/metadata.php b/modules/adfs/www/idp/metadata.php index b7a0f972193892a4969d133f989c2ca769bb63b1..473af96dc6e9bf81e910b3e0fd4370998798f6fb 100644 --- a/modules/adfs/www/idp/metadata.php +++ b/modules/adfs/www/idp/metadata.php @@ -18,18 +18,18 @@ try { $_GET['idpentityid'] : $metadata->getMetaDataCurrentEntityID('adfs-idp-hosted'); $idpmeta = $metadata->getMetaDataConfig($idpentityid, 'adfs-idp-hosted'); - $availableCerts = array(); + $availableCerts = []; - $keys = array(); + $keys = []; $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, false, 'new_'); if ($certInfo !== null) { $availableCerts['new_idp.crt'] = $certInfo; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => true, 'X509Certificate' => $certInfo['certData'], - ); + ]; $hasNewCert = true; } else { $hasNewCert = false; @@ -37,42 +37,42 @@ try { $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, true); $availableCerts['idp.crt'] = $certInfo; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => ($hasNewCert ? false : true), 'X509Certificate' => $certInfo['certData'], - ); + ]; if ($idpmeta->hasValue('https.certificate')) { $httpsCert = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, true, 'https.'); assert(isset($httpsCert['certData'])); $availableCerts['https.crt'] = $httpsCert; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => false, 'X509Certificate' => $httpsCert['certData'], - ); + ]; } $adfs_service_location = \SimpleSAML\Module::getModuleURL('adfs').'/idp/prp.php'; - $metaArray = array( + $metaArray = [ 'metadata-set' => 'adfs-idp-remote', 'entityid' => $idpentityid, - 'SingleSignOnService' => array( - 0 => array( + 'SingleSignOnService' => [ + 0 => [ 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'Location' => $adfs_service_location - ) - ), - 'SingleLogoutService' => array( - 0 => array( + ] + ], + 'SingleLogoutService' => [ + 0 => [ 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'Location' => $adfs_service_location - ) - ), - ); + ] + ], + ]; if (count($keys) === 1) { $metaArray['certData'] = $keys[0]['X509Certificate']; @@ -125,11 +125,11 @@ try { $metaBuilder->addOrganizationInfo($metaArray); $technicalContactEmail = $config->getString('technicalcontact_email', null); if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') { - $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact(array( + $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact([ 'emailAddress' => $technicalContactEmail, 'name' => $config->getString('technicalcontact_name', null), 'contactType' => 'technical', - ))); + ])); } $output_xhtml = array_key_exists('output', $_GET) && $_GET['output'] == 'xhtml'; $metaxml = $metaBuilder->getEntityDescriptorText($output_xhtml); @@ -147,7 +147,7 @@ try { $t->data['clipboard.js'] = true; $t->data['available_certs'] = $availableCerts; - $certdata = array(); + $certdata = []; foreach (array_keys($availableCerts) as $availableCert) { $certdata[$availableCert]['name'] = $availableCert; $certdata[$availableCert]['url'] = \SimpleSAML\Module::getModuleURL('saml/idp/certs.php'). diff --git a/modules/authX509/lib/Auth/Process/ExpiryWarning.php b/modules/authX509/lib/Auth/Process/ExpiryWarning.php index 6943e6dfd09a923626286f8c61cc9cd19b6ff2a4..1b9c1ca8753b5dc95ae1bb3a6830245a400e45f7 100644 --- a/modules/authX509/lib/Auth/Process/ExpiryWarning.php +++ b/modules/authX509/lib/Auth/Process/ExpiryWarning.php @@ -93,6 +93,6 @@ class ExpiryWarning extends \SimpleSAML\Auth\ProcessingFilter // Save state and redirect $id = \SimpleSAML\Auth\State::saveState($state, 'warning:expire'); $url = \SimpleSAML\Module::getModuleURL('authX509/expirywarning.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/authX509/lib/Auth/Source/X509userCert.php b/modules/authX509/lib/Auth/Source/X509userCert.php index 2771979b8f628a009c512616ce13b4888380f009..4605c0ee97e4b19e95909e81c2ab255ee7922254 100644 --- a/modules/authX509/lib/Auth/Source/X509userCert.php +++ b/modules/authX509/lib/Auth/Source/X509userCert.php @@ -14,13 +14,13 @@ class X509userCert extends \SimpleSAML\Auth\Source /** * x509 attributes to use from the certificate for searching the user in the LDAP directory. */ - private $x509attributes = array('UID' => 'uid'); + private $x509attributes = ['UID' => 'uid']; /** * LDAP attribute containing the user certificate. */ - private $ldapusercert = array('userCertificate;binary'); + private $ldapusercert = ['userCertificate;binary']; /** @@ -159,7 +159,7 @@ class X509userCert extends \SimpleSAML\Auth\Source } - $merged_ldapcerts = array(); + $merged_ldapcerts = []; foreach ($this->ldapusercert as $attr) { $merged_ldapcerts = array_merge($merged_ldapcerts, $ldap_certs[$attr]); } diff --git a/modules/authX509/templates/X509warning.php b/modules/authX509/templates/X509warning.php index a3daa806463d6449fd76aa888f2f7d7d095746e4..a25385ec9a97772712c0d962d28ba87f82089ee6 100644 --- a/modules/authX509/templates/X509warning.php +++ b/modules/authX509/templates/X509warning.php @@ -10,14 +10,14 @@ * @package SimpleSAMLphp */ -$warning = $this->t('{authX509:X509warning:warning}', array( +$warning = $this->t('{authX509:X509warning:warning}', [ '%daysleft%' => htmlspecialchars($this->data['daysleft']), -)); +]); if ($this->data['renewurl']) { - $warning .= " ".$this->t('{authX509:X509warning:renew_url}', array( + $warning .= " ".$this->t('{authX509:X509warning:renew_url}', [ '%renewurl%' => $this->data['renewurl'], - )); + ]); } else { $warning .= " ".$this->t('{authX509:X509warning:renew}'); } diff --git a/modules/authX509/www/expirywarning.php b/modules/authX509/www/expirywarning.php index b5b445ca186e634a5654dfdd6bed6d39afabce7e..7bd36030d44a399fb59d510220078311d564d0a3 100644 --- a/modules/authX509/www/expirywarning.php +++ b/modules/authX509/www/expirywarning.php @@ -24,7 +24,7 @@ $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'authX509:X509warning.php'); $t->data['target'] = \SimpleSAML\Module::getModuleURL('authX509/expirywarning.php'); -$t->data['data'] = array('StateId' => $id); +$t->data['data'] = ['StateId' => $id]; $t->data['daysleft'] = $state['daysleft']; $t->data['renewurl'] = $state['renewurl']; $t->data['errorcodes'] = \SimpleSAML\Error\ErrorCodes::getAllErrorCodeMessages(); diff --git a/modules/authYubiKey/lib/Auth/Process/OTP2YubiPrefix.php b/modules/authYubiKey/lib/Auth/Process/OTP2YubiPrefix.php index 98391a72e1f168fa09f38d69de22709908a7db30..42ef300f39b3c68bdbb23e1a1ae7a89620e707ef 100644 --- a/modules/authYubiKey/lib/Auth/Process/OTP2YubiPrefix.php +++ b/modules/authYubiKey/lib/Auth/Process/OTP2YubiPrefix.php @@ -67,7 +67,7 @@ class OTP2YubiPrefix extends \SimpleSAML\Auth\ProcessingFilter $token_size = 32; $identity = substr($otp, 0, strlen($otp) - $token_size); - $attributes['yubiPrefix'] = array($identity); + $attributes['yubiPrefix'] = [$identity]; \SimpleSAML\Logger::info( 'OTP2YubiPrefix: otp: '.$otp.' identity: '.$identity.' (otp keys: '.implode(',', array_keys($otps)).')' diff --git a/modules/authYubiKey/lib/Auth/Source/YubiKey.php b/modules/authYubiKey/lib/Auth/Source/YubiKey.php index 23ace3a39744a0d8f3890c69c250038d6637774a..65ddf84906d3de16f15fc0f04efc73100fe2cb0e 100644 --- a/modules/authYubiKey/lib/Auth/Source/YubiKey.php +++ b/modules/authYubiKey/lib/Auth/Source/YubiKey.php @@ -107,7 +107,7 @@ class YubiKey extends \SimpleSAML\Auth\Source $id = \SimpleSAML\Auth\State::saveState($state, self::STAGEID); $url = \SimpleSAML\Module::getModuleURL('authYubiKey/yubikeylogin.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('AuthState' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['AuthState' => $id]); } @@ -121,7 +121,7 @@ class YubiKey extends \SimpleSAML\Auth\Source * * @param string $authStateId The identifier of the authentication state. * @param string $otp The one time password entered- - * @return string Error code in the case of an error. + * @return string|null Error code in the case of an error. */ public static function handleLogin($authStateId, $otp) { @@ -158,6 +158,8 @@ class YubiKey extends \SimpleSAML\Auth\Source $state['Attributes'] = $attributes; \SimpleSAML\Auth\Source::completeAuth($state); + + return null; } /** @@ -191,7 +193,7 @@ class YubiKey extends \SimpleSAML\Auth\Source $yubi = new \Auth_Yubico($this->yubi_id, $this->yubi_key); $yubi->verify($otp); $uid = self::getYubiKeyPrefix($otp); - $attributes = array('uid' => array($uid)); + $attributes = ['uid' => [$uid]]; } catch (\Exception $e) { \SimpleSAML\Logger::info( 'YubiKey:'.$this->authId.': Validation error (otp '.$otp.'), debug output: '.$yubi->getLastResponse() diff --git a/modules/authYubiKey/libextinc/Yubico.php b/modules/authYubiKey/libextinc/Yubico.php index e9af3632295130e6e4b23a9b2a496e354868ed61..d6f4c709aafe84ea19f5ff1a6724a8b322d49c59 100644 --- a/modules/authYubiKey/libextinc/Yubico.php +++ b/modules/authYubiKey/libextinc/Yubico.php @@ -136,7 +136,7 @@ class Auth_Yubico // Verify signature if ($this->key <> "") { $rows = explode("\r\n", $responseMsg); - $response = array(); + $response = []; foreach ($rows as $val) { // = is also used in BASE64 encoding so we only replace the first = by # which is not used in BASE64 $val = preg_replace('/=/', '#', $val, 1); diff --git a/modules/authYubiKey/templates/yubikeylogin.twig b/modules/authYubiKey/templates/yubikeylogin.twig index e01432c0103afe8eb9b5ab9e94de38f97e366f51..8fa4385f21dfba30141035b379d0b5793764b82e 100644 --- a/modules/authYubiKey/templates/yubikeylogin.twig +++ b/modules/authYubiKey/templates/yubikeylogin.twig @@ -11,10 +11,8 @@ {% block content %} {% if errorCode != null %} - <div style="border-left: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8; background: #f5f5f5"> - <img src="/{{ baseurlpath }}resources/icons/experience/gtk-dialog-error.48x48.png" class="float-l" style="margin: 15px;" alt=""> - <h2>{{ '{login:error_header}'|trans }}</h2> - <p><span style="text-decoration: bold;">{{ errorTitle }}</p> + <div class="message-box error"> + <h3>{{ errorTitle }}</h3> <p>{{ errorDesc }}</p> </div> {% endif %} diff --git a/modules/authYubiKey/www/yubikeylogin.php b/modules/authYubiKey/www/yubikeylogin.php index 3c432ff8adb94302e482aebecfef55b745bdc206..c484282515376306d2f2ea7b28cd52c3fed4d0c1 100644 --- a/modules/authYubiKey/www/yubikeylogin.php +++ b/modules/authYubiKey/www/yubikeylogin.php @@ -30,7 +30,7 @@ if (array_key_exists('otp', $_REQUEST)) { $t->data['header'] = $translator->t('{authYubiKey:yubikey:header}'); $t->data['autofocus'] = 'otp'; $t->data['errorCode'] = $errorCode; -$t->data['stateParams'] = array('AuthState' => $authStateId); +$t->data['stateParams'] = ['AuthState' => $authStateId]; $t->data['logoUrl'] = \SimpleSAML\Module::getModuleURL('authYubiKey/resources/logo.jpg'); $t->data['devicepicUrl'] = \SimpleSAML\Module::getModuleURL('authYubiKey/resources/yubikey.jpg'); $t->show(); diff --git a/modules/authcrypt/lib/Auth/Source/Hash.php b/modules/authcrypt/lib/Auth/Source/Hash.php index bcca962cefb0746f5ea6995efc9c716fc951675e..aa17adcf68849033f114df0bf76b02e24295d6b0 100644 --- a/modules/authcrypt/lib/Auth/Source/Hash.php +++ b/modules/authcrypt/lib/Auth/Source/Hash.php @@ -37,7 +37,7 @@ class Hash extends \SimpleSAML\Module\core\Auth\UserPassBase // Call the parent constructor first, as required by the interface parent::__construct($info, $config); - $this->users = array(); + $this->users = []; // Validate and parse our configuration foreach ($config as $userpass => $attributes) { diff --git a/modules/authcrypt/lib/Auth/Source/Htpasswd.php b/modules/authcrypt/lib/Auth/Source/Htpasswd.php index 86fcc0b159d52086317da273b6cce966a6c3fe63..03084b08b1a9628d3cd301e1d57ab219a5cb9933 100644 --- a/modules/authcrypt/lib/Auth/Source/Htpasswd.php +++ b/modules/authcrypt/lib/Auth/Source/Htpasswd.php @@ -25,7 +25,7 @@ class Htpasswd extends \SimpleSAML\Module\core\Auth\UserPassBase * * @var array */ - private $attributes = array(); + private $attributes = []; /** @@ -44,7 +44,7 @@ class Htpasswd extends \SimpleSAML\Module\core\Auth\UserPassBase // Call the parent constructor first, as required by the interface parent::__construct($info, $config); - $this->users = array(); + $this->users = []; if (!$htpasswd = file_get_contents($config['htpasswd_file'])) { throw new \Exception('Could not read '.$config['htpasswd_file']); @@ -88,7 +88,7 @@ class Htpasswd extends \SimpleSAML\Module\core\Auth\UserPassBase $crypted = $matches[1]; // This is about the only attribute we can add - $attributes = array_merge(array('uid' => array($username)), $this->attributes); + $attributes = array_merge(['uid' => [$username]], $this->attributes); // Traditional crypt(3) if (\SimpleSAML\Utils\Crypto::secureCompare($crypted, crypt($password, $crypted))) { diff --git a/modules/authfacebook/extlibinc/base_facebook.php b/modules/authfacebook/extlibinc/base_facebook.php index a536be64d1cefb5ff44fc36caff16d35d820f74a..aa1a23efb24e0139820037d699d1809a0d82b509 100644 --- a/modules/authfacebook/extlibinc/base_facebook.php +++ b/modules/authfacebook/extlibinc/base_facebook.php @@ -134,24 +134,24 @@ abstract class BaseFacebook /** * Default options for curl. */ - public static $CURL_OPTS = array( + public static $CURL_OPTS = [ CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_USERAGENT => 'facebook-php-3.2', - ); + ]; /** * Maps aliases to Facebook domains. */ - public static $DOMAIN_MAP = array( + public static $DOMAIN_MAP = [ 'api' => 'https://api.facebook.com/', 'api_video' => 'https://api-video.facebook.com/', 'api_read' => 'https://api-read.facebook.com/', 'graph' => 'https://graph.facebook.com/', 'graph_video' => 'https://graph-video.facebook.com/', 'www' => 'https://www.facebook.com/', - ); + ]; /** * The Application ID. @@ -352,6 +352,8 @@ abstract class BaseFacebook * Extend an access token, while removing the short-lived token that might * have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H * for the workaround. + * + * @return boolean Return true is the access token is set. */ public function setExtendedAccessToken() { @@ -360,12 +362,12 @@ abstract class BaseFacebook // directly, since response isn't JSON format $access_token_response = $this->_oauthRequest( $this->getUrl('graph', '/oauth/access_token'), - $params = array( + $params = [ 'client_id' => $this->getAppId(), 'client_secret' => $this->getAppSecret(), 'grant_type' => 'fb_exchange_token', 'fb_exchange_token' => $this->getAccessToken(), - ) + ] ); } catch (FacebookApiException $e) { // most likely that user very recently revoked authorization @@ -377,7 +379,7 @@ abstract class BaseFacebook return false; } - $response_params = array(); + $response_params = []; parse_str($access_token_response, $response_params); if (!isset($response_params['access_token'])) { @@ -390,6 +392,7 @@ abstract class BaseFacebook 'access_token', $response_params['access_token'] ); + return true; } /** @@ -492,7 +495,7 @@ abstract class BaseFacebook * Retrieve the signed request, either from a request parameter or, * if not present, from a cookie. * - * @return string the signed request, if available, or null otherwise. + * @return array the signed request, if available, or null otherwise. */ public function getSignedRequest() { @@ -589,7 +592,7 @@ abstract class BaseFacebook * @param array $params Provide custom parameters * @return string The URL for the login flow */ - public function getLoginUrl($params = array()) + public function getLoginUrl($params = []) { $this->establishCSRFTokenState(); $currentUrl = $this->getCurrentUrl(); @@ -604,11 +607,11 @@ abstract class BaseFacebook 'www', 'dialog/oauth', array_merge( - array( + [ 'client_id' => $this->getAppId(), 'redirect_uri' => $currentUrl, // possibly overwritten 'state' => $this->state - ), + ], $params ) ); @@ -623,15 +626,15 @@ abstract class BaseFacebook * @param array $params Provide custom parameters * @return string The URL for the logout flow */ - public function getLogoutUrl($params = array()) + public function getLogoutUrl($params = []) { return $this->getUrl( 'www', 'logout.php', - array_merge(array( + array_merge([ 'next' => $this->getCurrentUrl(), 'access_token' => $this->getUserAccessToken(), - ), $params) + ], $params) ); } @@ -646,18 +649,18 @@ abstract class BaseFacebook * @param array $params Provide custom parameters * @return string The URL for the logout flow */ - public function getLoginStatusUrl($params = array()) + public function getLoginStatusUrl($params = []) { return $this->getUrl( 'www', 'extern/login_status.php', - array_merge(array( + array_merge([ 'api_key' => $this->getAppId(), 'no_session' => $this->getCurrentUrl(), 'no_user' => $this->getCurrentUrl(), 'ok_session' => $this->getCurrentUrl(), 'session_version' => 3, - ), $params) + ], $params) ); } @@ -672,7 +675,7 @@ abstract class BaseFacebook if (is_array($args[0])) { return $this->_restserver($args[0]); } else { - return call_user_func_array(array($this, '_graph'), $args); + return call_user_func_array([$this, '_graph'], $args); } } @@ -804,12 +807,12 @@ abstract class BaseFacebook $access_token_response = $this->_oauthRequest( $this->getUrl('graph', '/oauth/access_token'), - $params = array( + $params = [ 'client_id' => $this->getAppId(), 'client_secret' => $this->getAppSecret(), 'redirect_uri' => $redirect_uri, 'code' => $code - ) + ] ); } catch (FacebookApiException $e) { self::errorLog($e->getMessage()); @@ -819,13 +822,13 @@ abstract class BaseFacebook } if (empty($access_token_response)) { - self::errorlog('No access token response'); + self::errorLog('No access token response'); return false; } $response_params = json_decode($access_token_response, true); if (!isset($response_params['access_token'])) { - self::errorlog('No access token in response. ' . $access_token_response); + self::errorLog('No access token in response. '.$access_token_response); return false; } @@ -846,10 +849,13 @@ abstract class BaseFacebook $params['api_key'] = $this->getAppId(); $params['format'] = 'json-strings'; - $result = json_decode($this->_oauthRequest( - $this->getApiUrl($params['method']), - $params - ), true); + $result = json_decode( + $this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ), + true + ); // results are returned, errors are thrown if (is_array($result) && isset($result['error_code'])) { @@ -893,7 +899,7 @@ abstract class BaseFacebook * @return mixed The decoded response object * @throws FacebookApiException */ - protected function _graph($path, $method = 'GET', $params = array()) + protected function _graph($path, $method = 'GET', $params = []) { if (is_array($method) && empty($params)) { $params = $method; @@ -907,10 +913,13 @@ abstract class BaseFacebook $domainKey = 'graph'; } - $result = json_decode($this->_oauthRequest( - $this->getUrl($domainKey, $path), - $params - ), true); + $result = json_decode( + $this->_oauthRequest( + $this->getUrl($domainKey, $path), + $params + ), + true + ); // results are returned, errors are thrown if (is_array($result) && isset($result['error'])) { @@ -979,7 +988,7 @@ abstract class BaseFacebook $existing_headers[] = 'Expect:'; $opts[CURLOPT_HTTPHEADER] = $existing_headers; } else { - $opts[CURLOPT_HTTPHEADER] = array('Expect:'); + $opts[CURLOPT_HTTPHEADER] = ['Expect:']; } curl_setopt_array($ch, $opts); @@ -998,7 +1007,7 @@ abstract class BaseFacebook // fall back to IPv6 and the error EHOSTUNREACH is returned by the // operating system if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) { - $matches = array(); + $matches = []; $regex = '/Failed to connect to ([^:].*): Network is unreachable/'; if (preg_match($regex, curl_error($ch), $matches)) { if (strlen(@inet_pton($matches[1])) === 16) { @@ -1012,13 +1021,13 @@ abstract class BaseFacebook } if ($result === false) { - $e = new FacebookApiException(array( + $e = new FacebookApiException([ 'error_code' => curl_errno($ch), - 'error' => array( + 'error' => [ 'message' => curl_error($ch), 'type' => 'CurlException', - ), - )); + ], + ]); curl_close($ch); throw $e; } @@ -1086,7 +1095,7 @@ abstract class BaseFacebook protected function getApiUrl($method) { static $READ_ONLY_CALLS = - array( + [ 'admin.getallocation' => 1, 'admin.getappproperties' => 1, 'admin.getbannedusers' => 1, @@ -1147,7 +1156,7 @@ abstract class BaseFacebook 'users.isappuser' => 1, 'users.isverified' => 1, 'video.getuploadlimits' => 1 - ); + ]; $name = 'api'; if (isset($READ_ONLY_CALLS[strtolower($method)])) { $name = 'api_read'; @@ -1166,7 +1175,7 @@ abstract class BaseFacebook * * @return string The URL for the given parameters */ - protected function getUrl($name, $path = '', $params = array()) + protected function getUrl($name, $path = '', $params = []) { $url = self::$DOMAIN_MAP[$name]; if ($path) { @@ -1364,18 +1373,18 @@ abstract class BaseFacebook { $cookie_name = $this->getMetadataCookieName(); if (!array_key_exists($cookie_name, $_COOKIE)) { - return array(); + return []; } // The cookie value can be wrapped in "-characters so remove them $cookie_value = trim($_COOKIE[$cookie_name], '"'); if (empty($cookie_value)) { - return array(); + return []; } $parts = explode('&', $cookie_value); - $metadata = array(); + $metadata = []; foreach ($parts as $part) { $pair = explode('=', $part, 2); if (!empty($pair[0])) { diff --git a/modules/authfacebook/lib/Auth/Source/Facebook.php b/modules/authfacebook/lib/Auth/Source/Facebook.php index 86d592458fefbf298dbb65193bb504c667f68e91..a2bee6a7a368d460d2998aef16d72810a834ab97 100644 --- a/modules/authfacebook/lib/Auth/Source/Facebook.php +++ b/modules/authfacebook/lib/Auth/Source/Facebook.php @@ -98,13 +98,13 @@ class Facebook extends \SimpleSAML\Auth\Source \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); $facebook = new Module\authfacebook\Facebook( - array('appId' => $this->api_key, 'secret' => $this->secret), + ['appId' => $this->api_key, 'secret' => $this->secret], $state ); $facebook->destroySession(); $linkback = Module::getModuleURL('authfacebook/linkback.php'); - $url = $facebook->getLoginUrl(array('redirect_uri' => $linkback, 'scope' => $this->req_perms)); + $url = $facebook->getLoginUrl(['redirect_uri' => $linkback, 'scope' => $this->req_perms]); \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); \SimpleSAML\Utils\HTTP::redirectTrustedURL($url); @@ -116,7 +116,7 @@ class Facebook extends \SimpleSAML\Auth\Source assert(is_array($state)); $facebook = new Module\authfacebook\Facebook( - array('appId' => $this->api_key, 'secret' => $this->secret), + ['appId' => $this->api_key, 'secret' => $this->secret], $state ); $uid = $facebook->getUser(); @@ -133,21 +133,21 @@ class Facebook extends \SimpleSAML\Auth\Source throw new \SimpleSAML\Error\AuthSource($this->authId, 'Error getting user profile.'); } - $attributes = array(); + $attributes = []; foreach ($info as $key => $value) { if (is_string($value) && !empty($value)) { - $attributes['facebook.'.$key] = array((string) $value); + $attributes['facebook.'.$key] = [(string) $value]; } } if (array_key_exists('third_party_id', $info)) { - $attributes['facebook_user'] = array($info['third_party_id'].'@facebook.com'); + $attributes['facebook_user'] = [$info['third_party_id'].'@facebook.com']; } else { - $attributes['facebook_user'] = array($uid.'@facebook.com'); + $attributes['facebook_user'] = [$uid.'@facebook.com']; } - $attributes['facebook_targetedID'] = array('http://facebook.com!'.$uid); - $attributes['facebook_cn'] = array($info['name']); + $attributes['facebook_targetedID'] = ['http://facebook.com!'.$uid]; + $attributes['facebook_cn'] = [$info['name']]; \SimpleSAML\Logger::debug('Facebook Returned Attributes: '.implode(", ", array_keys($attributes))); diff --git a/modules/authfacebook/lib/Facebook.php b/modules/authfacebook/lib/Facebook.php index f5d123077db220012ddf6c549c3015e53dec939a..cf68d348a52d3530b98879a284977efc120cbf61 100644 --- a/modules/authfacebook/lib/Facebook.php +++ b/modules/authfacebook/lib/Facebook.php @@ -48,7 +48,7 @@ class Facebook extends \BaseFacebook } } - protected static $kSupportedKeys = array('state', 'code', 'access_token', 'user_id'); + protected static $kSupportedKeys = ['state', 'code', 'access_token', 'user_id']; protected function initSharedSession() { @@ -67,10 +67,10 @@ class Facebook extends \BaseFacebook $base_domain = $this->getBaseDomain(); $this->sharedSessionID = md5(uniqid(mt_rand(), true)); $cookie_value = $this->makeSignedRequest( - array( + [ 'domain' => $base_domain, 'id' => $this->sharedSessionID, - ) + ] ); $_COOKIE[$cookie_name] = $cookie_value; if (!headers_sent()) { @@ -153,7 +153,7 @@ class Facebook extends \BaseFacebook protected function constructSessionVariableName($key) { - $parts = array('authfacebook:authdata:fb', $this->getAppId(), $key); + $parts = ['authfacebook:authdata:fb', $this->getAppId(), $key]; if ($this->sharedSessionID) { array_unshift($parts, $this->sharedSessionID); } diff --git a/modules/authlinkedin/lib/Auth/Source/LinkedIn.php b/modules/authlinkedin/lib/Auth/Source/LinkedIn.php index 672ef7f1555a3a655734edff822bf2ba4078d9db..0716d8663f296366c247fb46ae22801ccab9b6cf 100644 --- a/modules/authlinkedin/lib/Auth/Source/LinkedIn.php +++ b/modules/authlinkedin/lib/Auth/Source/LinkedIn.php @@ -84,9 +84,9 @@ class LinkedIn extends \SimpleSAML\Auth\Source // Get the request token $requestToken = $consumer->getRequestToken( 'https://api.linkedin.com/uas/oauth/requestToken', - array( + [ 'oauth_callback' => \SimpleSAML\Module::getModuleUrl('authlinkedin').'/linkback.php?stateid='.$stateID - ) + ] ); \SimpleSAML\Logger::debug( @@ -119,7 +119,7 @@ class LinkedIn extends \SimpleSAML\Auth\Source $accessToken = $consumer->getAccessToken( 'https://api.linkedin.com/uas/oauth/accessToken', $requestToken, - array('oauth_verifier' => $state['authlinkedin:oauth_verifier']) + ['oauth_verifier' => $state['authlinkedin:oauth_verifier']] ); \SimpleSAML\Logger::debug( @@ -130,7 +130,7 @@ class LinkedIn extends \SimpleSAML\Auth\Source $userdata = $consumer->getUserInfo( 'https://api.linkedin.com/v1/people/~:('.$this->attributes.')', $accessToken, - array('http' => array('header' => 'x-li-format: json')) + ['http' => ['header' => 'x-li-format: json']] ); $attributes = $this->flatten($userdata, 'linkedin.'); @@ -138,8 +138,8 @@ class LinkedIn extends \SimpleSAML\Auth\Source // TODO: pass accessToken: key, secret + expiry as attributes? if (array_key_exists('id', $userdata)) { - $attributes['linkedin_targetedID'] = array('http://linkedin.com!'.$userdata['id']); - $attributes['linkedin_user'] = array($userdata['id'].'@linkedin.com'); + $attributes['linkedin_targetedID'] = ['http://linkedin.com!'.$userdata['id']]; + $attributes['linkedin_user'] = [$userdata['id'].'@linkedin.com']; } \SimpleSAML\Logger::debug('LinkedIn Returned Attributes: '.implode(", ", array_keys($attributes))); @@ -176,12 +176,12 @@ class LinkedIn extends \SimpleSAML\Auth\Source */ protected function flatten($array, $prefix = '') { - $result = array(); + $result = []; foreach ($array as $key => $value) { if (is_array($value)) { $result = $result + $this->flatten($value, $prefix.$key.'.'); } else { - $result[$prefix.$key] = array($value); + $result[$prefix.$key] = [$value]; } } return $result; diff --git a/modules/authorize/dictionaries/Authorize.translation.json b/modules/authorize/dictionaries/Authorize.translation.json index e0aeeed45cb630500743fa9384deab274b99dde1..d3611a83f504cee012b6239dc960d5d48165db8c 100644 --- a/modules/authorize/dictionaries/Authorize.translation.json +++ b/modules/authorize/dictionaries/Authorize.translation.json @@ -31,7 +31,9 @@ "eu": "Sarrera debekatua", "af": "Toegang verbode", "pt-br": "Acesso proibido", - "el": "\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7" + "el": "\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7", + "xh": "Ufikelelo luthintelwe", + "zu": "Ukufinyelela kwenqatshelwe" }, "403_text": { "es": "No tiene los privilegios necesarios para acceder a esta aplicaci\u00f3n. Si considera que esto no es correcto, consulte el administrador.", @@ -64,6 +66,8 @@ "eu": "Ez duzu beharrezko pribilegiorik aplikazio honetan sartzeko. Hau okerra dela baderitzozu, jar zaitez administratzailearekin harremanetan. ", "af": "Jy het nie die nodige regte vir toegang na die aansoek nie. Kontak asseblief die administrateur indien dit inkorrek is.", "pt-br": "Voc\u00ea n\u00e3o tem privil\u00e9gios necess\u00e1rios para acessar esta aplica\u00e7\u00e3o. Entre em contato com o administrador se voc\u00ea achar que isso seja incorreto.", - "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03b1\u03bd \u03b8\u03b5\u03c9\u03c1\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf." + "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03b1 \u03b4\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03ba\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03b1\u03bd \u03b8\u03b5\u03c9\u03c1\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b1\u03c5\u03c4\u03cc \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bb\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf.", + "zu": "Awunawo amalungelo adingekile okufinyelela lolu hlelo. Sicela uthinte umlawuli uma uthola ukuthi lokhu akulona iqiniso.", + "xh": "Awunawo amalungelo afunekayo ukuze ufikelele olu setyenziso. Nceda uqhagamshelane nomlawuli ukuba ngaba ukufumanisa oku kungachanekanga." } } diff --git a/modules/authorize/lib/Auth/Process/Authorize.php b/modules/authorize/lib/Auth/Process/Authorize.php index e546f341782ebd410d9d3c41b70b3d55662e8c7f..151bee965279e0e1156d02daac90c9252a995e1a 100644 --- a/modules/authorize/lib/Auth/Process/Authorize.php +++ b/modules/authorize/lib/Auth/Process/Authorize.php @@ -31,7 +31,7 @@ class Authorize extends \SimpleSAML\Auth\ProcessingFilter * user \ to escape special chars, like '.' etc. * */ - protected $valid_attribute_values = array(); + protected $valid_attribute_values = []; /** * Initialize this filter. @@ -62,7 +62,7 @@ class Authorize extends \SimpleSAML\Auth\ProcessingFilter foreach ($config as $attribute => $values) { if (is_string($values)) { - $values = array($values); + $values = [$values]; } if (!is_array($values)) { throw new \Exception( @@ -99,7 +99,7 @@ class Authorize extends \SimpleSAML\Auth\ProcessingFilter foreach ($patterns as $pattern) { $values = $attributes[$name]; if (!is_array($values)) { - $values = array($values); + $values = [$values]; } foreach ($values as $value) { if ($this->regex) { @@ -137,6 +137,6 @@ class Authorize extends \SimpleSAML\Auth\ProcessingFilter // Save state and redirect to 403 page $id = \SimpleSAML\Auth\State::saveState($request, 'authorize:Authorize'); $url = \SimpleSAML\Module::getModuleURL('authorize/authorize_403.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/authorize/locales/xh/LC_MESSAGES/authorize.po b/modules/authorize/locales/xh/LC_MESSAGES/authorize.po new file mode 100644 index 0000000000000000000000000000000000000000..e9300be062c845804d8e51cc1a1b6c09ffbe4b10 --- /dev/null +++ b/modules/authorize/locales/xh/LC_MESSAGES/authorize.po @@ -0,0 +1,24 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{authorize:Authorize:403_header}" +msgstr "Ufikelelo luthintelwe" + +msgid "{authorize:Authorize:403_text}" +msgstr "" +"Awunawo amalungelo afunekayo ukuze ufikelele olu setyenziso. Nceda " +"uqhagamshelane nomlawuli ukuba ngaba ukufumanisa oku kungachanekanga." + diff --git a/modules/authorize/locales/zu/LC_MESSAGES/authorize.po b/modules/authorize/locales/zu/LC_MESSAGES/authorize.po new file mode 100644 index 0000000000000000000000000000000000000000..f739b05dd448386cc4a3d4b652e3cb46138cbfe3 --- /dev/null +++ b/modules/authorize/locales/zu/LC_MESSAGES/authorize.po @@ -0,0 +1,24 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{authorize:Authorize:403_header}" +msgstr "Ukufinyelela kwenqatshelwe" + +msgid "{authorize:Authorize:403_text}" +msgstr "" +"Awunawo amalungelo adingekile okufinyelela lolu hlelo. Sicela uthinte " +"umlawuli uma uthola ukuthi lokhu akulona iqiniso." + diff --git a/modules/authorize/www/authorize_403.php b/modules/authorize/www/authorize_403.php index 4fe73632e498b5191037b5eb91ec9edf6ec86dfc..4598a66c83673aaaa32f6a2d731d9ae468898a0f 100644 --- a/modules/authorize/www/authorize_403.php +++ b/modules/authorize/www/authorize_403.php @@ -15,7 +15,7 @@ $t = new \SimpleSAML\XHTML\Template($globalConfig, 'authorize:authorize_403.php' if (isset($state['Source']['auth'])) { $t->data['logoutURL'] = \SimpleSAML\Module::getModuleURL( 'core/authenticate.php', - array('as' => $state['Source']['auth']) + ['as' => $state['Source']['auth']] )."&logout"; } header('HTTP/1.0 403 Forbidden'); diff --git a/modules/authtwitter/lib/Auth/Source/Twitter.php b/modules/authtwitter/lib/Auth/Source/Twitter.php index 6b004b6fb0604a63b0aea82f43147e838acca5da..19ff725800132cef6758cdaf9366a9b1a96f0f35 100644 --- a/modules/authtwitter/lib/Auth/Source/Twitter.php +++ b/modules/authtwitter/lib/Auth/Source/Twitter.php @@ -84,10 +84,10 @@ class Twitter extends \SimpleSAML\Auth\Source $consumer = new \SimpleSAML\Module\oauth\Consumer($this->key, $this->secret); // Get the request token - $linkback = \SimpleSAML\Module::getModuleURL('authtwitter/linkback.php', array('AuthState' => $stateID)); + $linkback = \SimpleSAML\Module::getModuleURL('authtwitter/linkback.php', ['AuthState' => $stateID]); $requestToken = $consumer->getRequestToken( 'https://api.twitter.com/oauth/request_token', - array('oauth_callback' => $linkback) + ['oauth_callback' => $linkback] ); \SimpleSAML\Logger::debug("Got a request token from the OAuth service provider [". $requestToken->key."] with the secret [".$requestToken->secret."]"); @@ -98,7 +98,7 @@ class Twitter extends \SimpleSAML\Auth\Source // Authorize the request token $url = 'https://api.twitter.com/oauth/authenticate'; if ($this->force_login) { - $url = \SimpleSAML\Utils\HTTP::addURLParameters($url, array('force_login' => 'true')); + $url = \SimpleSAML\Utils\HTTP::addURLParameters($url, ['force_login' => 'true']); } $consumer->getAuthorizeRequest($url, $requestToken); } @@ -106,7 +106,7 @@ class Twitter extends \SimpleSAML\Auth\Source public function finalStep(&$state) { $requestToken = $state['authtwitter:authdata:requestToken']; - $parameters = array(); + $parameters = []; if (!isset($_REQUEST['oauth_token'])) { throw new \SimpleSAML\Error\BadRequest("Missing oauth_token parameter."); @@ -147,16 +147,16 @@ class Twitter extends \SimpleSAML\Auth\Source ); } - $attributes = array(); + $attributes = []; foreach ($userdata as $key => $value) { if (is_string($value)) { - $attributes['twitter.'.$key] = array((string) $value); + $attributes['twitter.'.$key] = [(string) $value]; } } - $attributes['twitter_at_screen_name'] = array('@'.$userdata['screen_name']); - $attributes['twitter_screen_n_realm'] = array($userdata['screen_name'].'@twitter.com'); - $attributes['twitter_targetedID'] = array('http://twitter.com!'.$userdata['id_str']); + $attributes['twitter_at_screen_name'] = ['@'.$userdata['screen_name']]; + $attributes['twitter_screen_n_realm'] = [$userdata['screen_name'].'@twitter.com']; + $attributes['twitter_targetedID'] = ['http://twitter.com!'.$userdata['id_str']]; $state['Attributes'] = $attributes; } diff --git a/modules/authwindowslive/lib/Auth/Source/LiveID.php b/modules/authwindowslive/lib/Auth/Source/LiveID.php index 45488abe294b68836e8095d9239df47c8e7d1c95..3f4dc5446d3cd64b7020d66f2fd4e821736a2d58 100644 --- a/modules/authwindowslive/lib/Auth/Source/LiveID.php +++ b/modules/authwindowslive/lib/Auth/Source/LiveID.php @@ -76,7 +76,7 @@ class LiveID extends \SimpleSAML\Auth\Source '?client_id='.$this->key. '&response_type=code'. '&response_mode=query'. - '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleUrl('authwindowslive').'/linkback.php'). + '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleURL('authwindowslive').'/linkback.php'). '&state='.urlencode($stateID). '&scope='.urlencode('openid https://graph.microsoft.com/user.read') ; @@ -102,16 +102,16 @@ class LiveID extends \SimpleSAML\Auth\Source '&client_secret='.urlencode($this->secret). '&scope='.urlencode('https://graph.microsoft.com/user.read'). '&grant_type=authorization_code'. - '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleUrl('authwindowslive').'/linkback.php'). + '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleURL('authwindowslive').'/linkback.php'). '&code='.urlencode($state['authwindowslive:verification_code']); - $context = array( - 'http' => array( + $context = [ + 'http' => [ 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postData, - ), - ); + ], + ]; $result = \SimpleSAML\Utils\HTTP::fetch('https://login.microsoftonline.com/common/oauth2/v2.0/token', $context); @@ -130,10 +130,10 @@ class LiveID extends \SimpleSAML\Auth\Source ); // documentation at: http://graph.microsoft.io/en-us/docs/overview/call_api - $opts = array( - 'http' => array('header' => "Accept: application/json\r\nAuthorization: Bearer ". - $response['access_token']."\r\n") - ); + $opts = [ + 'http' => ['header' => "Accept: application/json\r\nAuthorization: Bearer ". + $response['access_token']."\r\n"] + ]; $data = \SimpleSAML\Utils\HTTP::fetch('https://graph.microsoft.com/v1.0/me', $opts); $userdata = json_decode($data, true); @@ -144,13 +144,13 @@ class LiveID extends \SimpleSAML\Auth\Source $userdata['error']['message'] ); } - $attributes = array(); - $attributes['windowslive_targetedID'] = array( + $attributes = []; + $attributes['windowslive_targetedID'] = [ 'https://graph.microsoft.com!'.(!empty($userdata['id']) ? $userdata['id'] : 'unknown') - ); + ]; foreach ($userdata as $key => $value) { if (is_string($value)) { - $attributes['windowslive.'.$key] = array((string) $value); + $attributes['windowslive.'.$key] = [(string) $value]; } } diff --git a/modules/cas/lib/Auth/Source/CAS.php b/modules/cas/lib/Auth/Source/CAS.php index 3ab8cfd7a967eb1043bd1e85a49b48d5fa7fb8cd..08f153c130f4a0ae2b545ba3e950f369f06f9d64 100644 --- a/modules/cas/lib/Auth/Source/CAS.php +++ b/modules/cas/lib/Auth/Source/CAS.php @@ -95,15 +95,15 @@ class CAS extends \SimpleSAML\Auth\Source */ private function casValidate($ticket, $service) { - $url = \SimpleSAML\Utils\HTTP::addURLParameters($this->casConfig['validate'], array( + $url = \SimpleSAML\Utils\HTTP::addURLParameters($this->casConfig['validate'], [ 'ticket' => $ticket, 'service' => $service, - )); + ]); $result = \SimpleSAML\Utils\HTTP::fetch($url); $res = preg_split("/\r?\n/", $result); if (strcmp($res[0], "yes") == 0) { - return array($res[1], array()); + return [$res[1], []]; } else { throw new \Exception("Failed to validate CAS service ticket: $ticket"); } @@ -122,10 +122,10 @@ class CAS extends \SimpleSAML\Auth\Source { $url = \SimpleSAML\Utils\HTTP::addURLParameters( $this->casConfig['serviceValidate'], - array( + [ 'ticket' => $ticket, 'service' => $service, - ) + ] ); $result = \SimpleSAML\Utils\HTTP::fetch($url); @@ -137,7 +137,7 @@ class CAS extends \SimpleSAML\Auth\Source $failure = $xPath->evaluate("/cas:serviceResponse/cas:authenticationFailure"); throw new \Exception("Error when validating CAS service ticket: ".$failure->item(0)->textContent); } else { - $attributes = array(); + $attributes = []; if ($casattributes = $this->casConfig['attributes']) { // Some has attributes in the xml - attributes is a list of XPath expressions to get them foreach ($casattributes as $name => $query) { @@ -149,7 +149,7 @@ class CAS extends \SimpleSAML\Auth\Source } $casusername = $success->item(0)->textContent; - return array($casusername, $attributes); + return [$casusername, $attributes]; } } @@ -178,15 +178,14 @@ class CAS extends \SimpleSAML\Auth\Source /** * Called by linkback, to finish validate/ finish logging in. * @param array $state - * @return array username, casattributes/ldap attributes */ public function finalStep(&$state) { $ticket = $state['cas:ticket']; $stateID = \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); - $service = \SimpleSAML\Module::getModuleURL('cas/linkback.php', array('stateID' => $stateID)); + $service = \SimpleSAML\Module::getModuleURL('cas/linkback.php', ['stateID' => $stateID]); list($username, $casattributes) = $this->casValidation($ticket, $service); - $ldapattributes = array(); + $ldapattributes = []; $config = \SimpleSAML\Configuration::loadFromArray( $this->ldapConfig, @@ -224,9 +223,9 @@ class CAS extends \SimpleSAML\Auth\Source $stateID = \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); - $serviceUrl = \SimpleSAML\Module::getModuleURL('cas/linkback.php', array('stateID' => $stateID)); + $serviceUrl = \SimpleSAML\Module::getModuleURL('cas/linkback.php', ['stateID' => $stateID]); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($this->loginMethod, array('service' => $serviceUrl)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($this->loginMethod, ['service' => $serviceUrl]); } diff --git a/modules/cdc/config-templates/module_cdc.php b/modules/cdc/config-templates/module_cdc.php index 0e5013c87c5d5a489b1ebfec3e3264ac8baa5397..411bbc47110b4581eab72f0174f4edd66da9ff3e 100644 --- a/modules/cdc/config-templates/module_cdc.php +++ b/modules/cdc/config-templates/module_cdc.php @@ -1,7 +1,7 @@ <?php -$config = array( - 'example.org' => array( +$config = [ + 'example.org' => [ /* * The shared key for this CDC server. */ @@ -18,5 +18,5 @@ $config = array( * If this is 0, the cookie will expire when the browser is closed. */ 'cookie.lifetime' => 0, - ), -); + ], +]; diff --git a/modules/cdc/lib/Auth/Process/CDC.php b/modules/cdc/lib/Auth/Process/CDC.php index d16569ef80765634b9cc6650d4c2357ee1db09b0..bf2a669d67ca5b60275cb3c4f26ea71deab7fd29 100644 --- a/modules/cdc/lib/Auth/Process/CDC.php +++ b/modules/cdc/lib/Auth/Process/CDC.php @@ -63,12 +63,12 @@ class CDC extends \SimpleSAML\Auth\ProcessingFilter // Save state and build request $id = \SimpleSAML\Auth\State::saveState($state, 'cdc:resume'); - $returnTo = \SimpleSAML\Module::getModuleURL('cdc/resume.php', array('domain' => $this->domain)); + $returnTo = \SimpleSAML\Module::getModuleURL('cdc/resume.php', ['domain' => $this->domain]); - $params = array( + $params = [ 'id' => $id, 'entityID' => $state['Source']['entityid'], - ); + ]; $this->client->sendRequest($returnTo, 'append', $params); } } diff --git a/modules/cdc/lib/Client.php b/modules/cdc/lib/Client.php index 6af90fa492f49f19d84eb23c2a730305a90e0ec4..609aef63f403f78256597fc3a2e4f6a4d075cfe9 100644 --- a/modules/cdc/lib/Client.php +++ b/modules/cdc/lib/Client.php @@ -58,7 +58,7 @@ class Client * @param string $op The operation we are performing. * @param array $params Additional parameters. */ - public function sendRequest($returnTo, $op, array $params = array()) + public function sendRequest($returnTo, $op, array $params = []) { assert(is_string($returnTo)); assert(is_string($op)); diff --git a/modules/cdc/lib/Server.php b/modules/cdc/lib/Server.php index 7414004b028332947d5445a88d672af3b0e1cb55..affcf668ac241429c7eb933f87bfb48605dac0f1 100644 --- a/modules/cdc/lib/Server.php +++ b/modules/cdc/lib/Server.php @@ -162,9 +162,9 @@ class Server } if (is_string($response)) { - $response = array( + $response = [ 'status' => $response, - ); + ]; } $response['op'] = $op; @@ -212,12 +212,12 @@ class Server */ private function handleDelete(array $request) { - $params = array( + $params = [ 'path' => '/', 'domain' => '.'.$this->domain, 'secure' => true, 'httponly' => false, - ); + ]; \SimpleSAML\Utils\HTTP::setCookie('_saml_idp', null, $params, false); return 'ok'; @@ -234,10 +234,10 @@ class Server { $list = $this->getCDC(); - return array( + return [ 'status' => 'ok', 'cdc' => $list, - ); + ]; } @@ -330,10 +330,10 @@ class Server $signature = $this->calcSignature($message); - $params = array( + $params = [ $parameter => $message, 'Signature' => $signature, - ); + ]; $url = \SimpleSAML\Utils\HTTP::addURLParameters($to, $params); if (strlen($url) < 2048) { @@ -366,7 +366,7 @@ class Server private function getCDC() { if (!isset($_COOKIE['_saml_idp'])) { - return array(); + return []; } $ret = (string) $_COOKIE['_saml_idp']; @@ -376,7 +376,7 @@ class Server if ($idp === false) { // Not properly base64 encoded \SimpleSAML\Logger::warning('CDC - Invalid base64-encoding of CDC entry.'); - return array(); + return []; } } @@ -411,14 +411,16 @@ class Server $cookie = $tmp[1]; } - $params = array( + $params = [ 'lifetime' => $this->cookieLifetime, 'path' => '/', 'domain' => '.'.$this->domain, 'secure' => true, 'httponly' => false, - ); + ]; \SimpleSAML\Utils\HTTP::setCookie('_saml_idp', $cookie, $params, false); + + return '_saml_idp'; } } diff --git a/modules/consent/dictionaries/consent.php b/modules/consent/dictionaries/consent.php index 509d069ad10b3a85403b6af36b8e20c86943f834..90932786ab4f957ea168a9c613f742d863d07907 100644 --- a/modules/consent/dictionaries/consent.php +++ b/modules/consent/dictionaries/consent.php @@ -1,7 +1,7 @@ <?php -$lang = array( - 'yes' => array( +$lang = [ + 'yes' => [ 'no' => 'Ja, fortsett', 'nn' => 'Ja, fortsett', 'da' => 'Ja, jeg accepterer', @@ -20,8 +20,8 @@ $lang = array( 'pt' => 'Sim, Aceito', 'pt-br' => 'Sim, Aceito', 'tr' => 'Evet, devam et', - ), - 'no' => array( + ], + 'no' => [ 'no' => 'Nei, avbryt', 'nn' => 'Nei, avbryt', 'da' => 'Nej, jeg accepterer ikke', @@ -40,8 +40,8 @@ $lang = array( 'pt' => 'NĂŁo aceito', 'pt-br' => 'NĂŁo, nĂŁo aceito', 'tr' => 'Hayır, iptal et', - ), - 'remember' => array( + ], + 'remember' => [ 'no' => 'Godta ogsĂĄ for fremtiden', 'nn' => 'Godta ogsĂĄ for framtida', 'da' => 'Husk samtykke', @@ -60,8 +60,8 @@ $lang = array( 'pt' => 'Lembrar a minha escolha', 'pt-br' => 'Lembrar Consentimento', 'tr' => 'Hatırla', - ), - 'consent_header' => array( + ], + 'consent_header' => [ 'no' => 'Samtykke om overføring av personinformasjon', 'nn' => 'Samtykke til overføring av personinformasjon', 'da' => 'Samtykke til at frigive personlige oplysninger', @@ -77,8 +77,8 @@ $lang = array( 'pl' => 'Zgoda na wysĹ‚anie danych osobistych', 'pt' => 'Consentimento do envio de informação pessoal', 'tr' => 'KiĹźisel bilgilerin verilmesi hakkında onay', - ), - 'consent_accept' => array( + ], + 'consent_accept' => [ 'no' => 'For ĂĄ fullføre innloggingen mĂĄ du godta at opplysningene nedenfor sendes til SPNAME.', 'nn' => 'For ĂĄ fullføra innlogginga mĂĄ du godta at opplysningane under blir sende til SPNAME', 'da' => 'SPNAME kræver at nedenstĂĄende oplysninger overføres fra IDPNAME. Vil du acceptere dette?', @@ -97,8 +97,8 @@ $lang = array( 'pt' => 'O serviço SPNAME necessita que a informação apresentada em baixo seja transferida.', 'pt-br' => 'VocĂŞ está prestes a acessar o serviço SPNAME. O serviço exige que as informações a seguir sejam transferidas do IDPNAME. VocĂŞ aceita isso?', 'tr' => 'SPNAME aĹźağıdaki bilgilerin gönderilmesine ihtiyaç duyuyor.', - ), - 'consent_purpose' => array( + ], + 'consent_purpose' => [ 'no' => 'FormĂĄlet med SPNAME er SPDESC', 'nn' => 'Hensikta med SPNAME er SPDESC', 'da' => 'SPNAME har til formĂĄl at SPDESC', @@ -114,8 +114,8 @@ $lang = array( 'pl' => 'Celem SPNAME jest SPDESC', 'pt' => 'O propĂłsito de SPNAME Ă© SPDESC', 'tr' => 'SPNAME\'in amacı SPDESC\'tir', - ), - 'consent_privacypolicy' => array( + ], + 'consent_privacypolicy' => [ 'no' => 'Personvern for tjenesten', 'nn' => 'Personvern for tenesta', 'da' => 'Tjenestens politik vedrørende personoplysninger', @@ -132,8 +132,8 @@ $lang = array( 'pt' => 'PolĂtica de privacidade do serviço', 'pt-br' => 'PolĂtica de Privacidade deste serviço', 'tr' => 'Servis için gizlilik politikası', - ), - 'consent_attributes_header' => array( + ], + 'consent_attributes_header' => [ 'no' => 'Opplysninger som vil bli sendt til SPNAME', 'nn' => 'Opplysningar som blir sende til SPNAME', 'da' => 'Attributter som bliver sendt til SPNAME', @@ -149,8 +149,8 @@ $lang = array( 'pl' => 'Atrybuty, ktĂłre zostanÄ… przesĹ‚ane do serwisu', 'pt' => 'Informação que irá ser enviada para SPNAME', 'tr' => 'SPNAME\'e gönderilecek bilgiler', - ), - 'show_attributes' => array( + ], + 'show_attributes' => [ 'no' => 'Vis opplysninger', 'nn' => 'Vis opplysingar', 'da' => 'Vis attributter', @@ -166,8 +166,8 @@ $lang = array( 'pl' => 'WyĹ›wietl atrybuty', 'pt' => 'Mostrar atributos', 'tr' => 'Ă–zellikleri göster', - ), - 'show_attribute' => array( + ], + 'show_attribute' => [ 'no' => 'Vis innhold', 'nn' => 'Vis innhald', 'da' => 'Vis indhold', @@ -176,8 +176,8 @@ $lang = array( 'es' => 'Mostrart consentimiento', 'nl' => 'Toon inhoud', 'sl' => 'PrikaĹľi vsebino', - ), - 'login' => array( + ], + 'login' => [ 'no' => 'innlogging', 'nn' => 'Logg inn', 'da' => 'login', @@ -196,8 +196,8 @@ $lang = array( 'pt' => 'Entrar', 'pt-br' => 'login', 'tr' => 'GiriĹź', - ), - 'service_providers_for' => array( + ], + 'service_providers_for' => [ 'no' => 'Tjenesteleverandør for', 'nn' => 'Tenesteleverandørar for', 'da' => 'Tjenesteudbyder for', @@ -216,8 +216,8 @@ $lang = array( 'pt' => 'Fornecedores de Serviço (SP) para', 'pt-br' => 'Provedor de serviços para', 'tr' => 'için Servis SaÄźlayıcılar', - ), - 'service_provider_header' => array( + ], + 'service_provider_header' => [ 'no' => 'Tjenesteleverandør', 'nn' => 'Tenesteleverandør', 'da' => 'Tjenesteudbyder', @@ -236,8 +236,8 @@ $lang = array( 'pt' => 'Fornecedor de Serviço (SP)', 'pt-br' => 'Provedor de Serviços', 'tr' => 'Servis SaÄźlayıcı', - ), - 'status_header' => array( + ], + 'status_header' => [ 'no' => 'Samtykke-status', 'nn' => 'Samtykkestatus', 'da' => 'Samtykke status', @@ -256,8 +256,8 @@ $lang = array( 'pt' => 'Consentimento', 'pt-br' => 'Status do Consentimento', 'tr' => 'Onay durumu', - ), - 'show_hide_attributes' => array( + ], + 'show_hide_attributes' => [ 'no' => 'Vis/skjul opplysninger', 'nn' => 'Vis/skjul opplysningar', 'da' => 'vis/skjul attributter', @@ -276,8 +276,8 @@ $lang = array( 'pt' => 'Mostrar/Ocultar atributos', 'pt-br' => 'mostra/esconder Atributos', 'tr' => 'bilgileri göster/gizle ', - ), - 'noconsent_title' => array( + ], + 'noconsent_title' => [ 'no' => 'Ikke akseptert overføring av informasjon', 'nn' => 'Ikkje akseptert overføring av informasjon', 'da' => 'Manglende samtykke', @@ -294,8 +294,8 @@ $lang = array( 'pt' => 'Consentimento negado', 'pt-br' => 'Nenhum consentimento dado', 'tr' => 'Onay verilmemiĹź', - ), - 'noconsent_text' => array( + ], + 'noconsent_text' => [ 'no' => 'Du har ikke akseptert ĂĄ overlevere opplysninger til tjenesteleverandøren.', 'nn' => 'Du har ikkje akseptert til at dine opplysningar kan sendast til tenesteleverandøren', 'da' => 'Du har ikke givet samtykke til overleveringen af oplysninger til tjenesten', @@ -312,8 +312,8 @@ $lang = array( 'pt' => 'Negou o consentimento para a transferĂŞncia dos seus atributos para o fornecedor de serviço.', 'pt-br' => 'VocĂŞ nĂŁo deu o consentimento para a transferĂŞncia de seus atributos para o provedor de serviços.', 'tr' => 'Bilgilerinizin servis saÄźlayıcıya gönderilmesi için onay vermediniz.', - ), - 'noconsent_return' => array( + ], + 'noconsent_return' => [ 'no' => 'GĂĄ tilbake til aksept-siden med opplysninger', 'nn' => 'GĂĄ tilbake til aksept-sida for overføring av opplysningar', 'da' => 'GĂĄ tilbage', @@ -330,8 +330,8 @@ $lang = array( 'pt' => 'Voltar Ă página de consentimento', 'pt-br' => 'Retornar a página de consentimento', 'tr' => 'Onay sayfasına geri dön', - ), - 'noconsent_goto_about' => array( + ], + 'noconsent_goto_about' => [ 'no' => 'GĂĄ til informasjonsside om tjenesten', 'nn' => 'GĂĄ til informasjonssida for tenesta', 'da' => 'GĂĄ til side med information om tjenesten', @@ -347,8 +347,8 @@ $lang = array( 'pl' => 'PrzejdĹş do strony informacyjnej dla tego serwisu', 'pt' => 'Ir para página de informação do serviço', 'tr' => 'Servis için bilgi sayfasına git', - ), - 'table_caption' => array( + ], + 'table_caption' => [ 'no' => 'Bruker innformasjon', 'da' => 'Bruger information', 'en' => 'User information', @@ -361,8 +361,8 @@ $lang = array( 'hu' => 'FelhasználĂłi informáciĂłk', 'pt' => 'Informação do utilizador', 'tr' => 'Kullanıcı bilgisi', - ), - 'table_summary' => array( + ], + 'table_summary' => [ 'no' => 'Her listes den innformasjonen om deg som blir send til den tjenesten du er i ferd med ĂĄ logge pĂĄ', 'da' => 'Informationer som vil blive sendt til den service du er ved at logge in pĂĄ', 'en' => 'List the information about you that is about to be transmitted to the service you are going to login to', @@ -374,5 +374,5 @@ $lang = array( 'hu' => 'Ezeket az adatokat fogjuk elkĂĽldeni Ă–nrĹ‘l annak a szolgáltatásnak, ahová be kĂván jelentkezni', 'pt' => 'Listar a informação acerca de si que será enviada para o serviço no qual se está autenticar', 'tr' => 'Girmek istediÄźiniz servise gönderilecek bilginizi listeleyin', - ), -); + ], +]; diff --git a/modules/consent/dictionaries/consent.translation.json b/modules/consent/dictionaries/consent.translation.json index e454122655aaada5c7a6e6f8d3120adb31ac6b48..1c3ed122043bf904279d9ad33ba9ce1ca259aafa 100644 --- a/modules/consent/dictionaries/consent.translation.json +++ b/modules/consent/dictionaries/consent.translation.json @@ -33,7 +33,9 @@ "ro": "Da, continu\u0103", "eu": "Bai, jarraitu", "af": "Ja, voortgaan", - "el": "\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae" + "el": "\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae", + "zu": "Yebo, qhubeka", + "xh": "Ewe, qhubeka" }, "no": { "no": "Nei, avbryt", @@ -69,7 +71,9 @@ "ro": "Nu, renun\u021b", "eu": "Ez, utzi", "af": "Nee, kanselleer", - "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b9\u03c8\u03b7" + "el": "\u0391\u03c0\u03cc\u03c1\u03c1\u03b9\u03c8\u03b7", + "xh": "Hayi, rhoxisa", + "zu": "Cha, khansela" }, "remember": { "no": "Godta ogs\u00e5 for fremtiden", @@ -105,7 +109,9 @@ "ro": "\u021aine minte", "eu": "Onespena gogoratu", "af": "Onthou", - "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03c5" + "el": "\u039d\u03b1 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03bc\u03bf\u03c5", + "zu": "Khumbula", + "xh": "Khumbula" }, "consent_accept": { "no": "For \u00e5 fullf\u00f8re innloggingen m\u00e5 du godta at opplysningene nedenfor sendes til SPNAME.", @@ -141,7 +147,9 @@ "ro": "SPNAME solicit\u0103 trimiterea informa\u021biilor de mai jos.", "eu": "Zerbitzuak, hemen agertzen den informazioa lekualdatzea eskatzen du.", "af": "SPNAME vereis dat die inligting hieronder oorgedra word.", - "el": "\u0395\u03ac\u03bd \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5\u002c \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03bf\u03cd\u03bd \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 <b>SPNAME<\/b>. \u03a3\u03c5\u03bc\u03c6\u03c9\u03bd\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03b5\u03bb\u03b5\u03c5\u03b8\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03b1\u03c5\u03c4\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03ac\u03b8\u03b5 \u03c6\u03bf\u03c1\u03ac \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03b8\u03c5\u03bc\u03b5\u03af\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u003b" + "el": "\u0395\u03ac\u03bd \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5\u002c \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03bf\u03cd\u03bd \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 <b>SPNAME<\/b>. \u03a3\u03c5\u03bc\u03c6\u03c9\u03bd\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b1\u03c0\u03b5\u03bb\u03b5\u03c5\u03b8\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03b1\u03c5\u03c4\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03ac\u03b8\u03b5 \u03c6\u03bf\u03c1\u03ac \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03b8\u03c5\u03bc\u03b5\u03af\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u003b", + "xh": "I-SPNAME idinga ukuba inkcazelo engezantsi idluliselwe.", + "zu": "I-SPNAME idinga ukuthi ulwazi olungezansi ludluliswe." }, "login": { "no": "innlogging", @@ -177,7 +185,9 @@ "ro": "autentificare", "eu": "hasi saioa", "af": "meld aan", - "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2" + "el": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2", + "xh": "ngena", + "zu": "ngena" }, "service_providers_for": { "no": "Tjenesteleverand\u00f8r for", @@ -213,7 +223,9 @@ "ro": "Furnizor de servicii pentru", "eu": "Zerbitzu hornitzaileak hontarako: ", "af": "Diens Verskaffers vir", - "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03b9 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b3\u03b9\u03b1" + "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03b9 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b3\u03b9\u03b1", + "zu": "Abahlinzeki Besevisi bokuthi", + "xh": "Umboneleli enkonzo we-" }, "service_provider_header": { "no": "Tjenesteleverand\u00f8r", @@ -249,7 +261,9 @@ "ro": "Furnizor de servicii", "eu": "Zerbitzu hornitzailea", "af": "Diens Verskaffer", - "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2" + "el": "\u03a0\u03ac\u03c1\u03bf\u03c7\u03bf\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2", + "zu": "Umhlinzeki Wesevisi", + "xh": "Umboneleli Wenkonzo" }, "status_header": { "no": "Samtykke-status", @@ -285,7 +299,9 @@ "ro": "Stare acord", "eu": "Onespen egoera", "af": "Toestemming status", - "el": "\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2" + "el": "\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2", + "zu": "Isimo semvume", + "xh": "Ubume bemvume" }, "show_hide_attributes": { "no": "Vis\/skjul opplysninger", @@ -321,7 +337,9 @@ "ro": "arat\u0103\/ascunde atributele", "eu": "erakutsi\/gorde atributuak", "af": "vertoon\/verberg eienskappe", - "el": "\u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7\/\u03b1\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd" + "el": "\u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7\/\u03b1\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd", + "xh": "bonisa/fihla iimpawu", + "zu": "bonisa/fihla izici" }, "consent_privacypolicy": { "no": "Personvern for tjenesten", @@ -356,7 +374,9 @@ "ro": "Politica de confiden\u021bialitate pentru serviciu", "eu": "Zerbitzuarentzako pribatutasun-politika", "af": "Privaatheidsbeleid vir die diens", - "el": "\u03a0\u03bf\u03bb\u03b9\u03c4\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u03b1\u03c0\u03bf\u03c1\u03c1\u03ae\u03c4\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2" + "el": "\u03a0\u03bf\u03bb\u03b9\u03c4\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u03b1\u03c0\u03bf\u03c1\u03c1\u03ae\u03c4\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2", + "zu": "Inqubomgomo yobumfihlo yesevisi", + "xh": "Ipolisi yokugcinwa kwemfihlelo yenkonzo" }, "noconsent_title": { "no": "Ikke akseptert overf\u00f8ring av informasjon", @@ -391,7 +411,9 @@ "ro": "Nu a fost dat acordul (consim\u021b\u0103m\u00e2ntul)", "eu": "Ez da onespena eman", "af": "Geen toestemming is gegee nie", - "el": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2" + "el": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2", + "zu": "Ayikho imvume enikeziwe", + "xh": "Akukho mvume inikelweyo" }, "noconsent_text": { "no": "Du har ikke akseptert \u00e5 overlevere opplysninger til SPNAME.", @@ -426,7 +448,9 @@ "ro": "Nu a\u021bi fost de acord s\u0103 trimite\u021bi atributele c\u0103tre SPNAME.", "eu": "Ez duzu onespena eman zure atributuak zerbitzuari transferitzeko.", "af": "Jy het nie toestemming gegee vir die oordrag van jou eienskappe na SPNAME nie.", - "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b4\u03ce\u03c3\u03b5\u03b9 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03bc\u03cc \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ce\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME" + "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b4\u03ce\u03c3\u03b5\u03b9 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03bc\u03cc \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ce\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME", + "xh": "Awuyinikelanga imvume yokudluliselwa iimpawu zakho kwi-SPNAME.", + "zu": "Awuzange uyinikeze imvume yokudlulisa izici zakho ku-SPNAME." }, "noconsent_return": { "no": "G\u00e5 tilbake til samtykkesiden", @@ -461,7 +485,9 @@ "ru": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f", "eu": "Itzuli onespen orrira", "af": "Keer terug na die toestemmingsbladsy", - "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03ae\u03bb\u03c9\u03c3\u03b7\u03c2 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2" + "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03ae\u03bb\u03c9\u03c3\u03b7\u03c2 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2", + "xh": "Buyela kwikhasi lemvume", + "zu": "Buyela ekhasini lemvume" }, "consent_header": { "no": "Samtykke om overf\u00f8ring av personinformasjon", @@ -496,7 +522,9 @@ "ru": "\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445", "eu": "Informazio pertsonala askatzeko onespena ", "af": "Toestemming mbt. die vrystelling van persoonlike informasie", - "el": "\u0394\u03ae\u03bb\u03c9\u03c3\u03b7 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03bc\u03cc \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ce\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd" + "el": "\u0394\u03ae\u03bb\u03c9\u03c3\u03b7 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03bc\u03cc \u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ce\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "xh": "Imvume malunga nokukhutshwa kwenkcazelo yobuqu", + "zu": "Imvume mayelana nokukhulula ulwazi lomuntu siqu" }, "consent_attributes_header": { "no": "Opplysninger som vil bli sendt til SPNAME", @@ -530,7 +558,9 @@ "ru": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u0430 \u0432 SPNAME ", "eu": "Zerbitzura bidaliko diren atributuak", "af": "Informasie wat gestuur sal word na SPNAME", - "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME" + "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME", + "xh": "Inkcazelo eza kuthunyelwa ku-SPNAME", + "zu": "Ulwazi oluzothunyelwa ku-SPNAME" }, "show_attributes": { "no": "Vis opplysninger", @@ -564,7 +594,9 @@ "ro": "Arat\u0103 atributele", "ru": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b", "eu": "Erakutsi atributuak", - "af": "Vertoon eienskappe" + "af": "Vertoon eienskappe", + "zu": "Bonisa okuqukethwe", + "xh": "Bonisa isiqulatho" }, "noconsent_goto_about": { "no": "G\u00e5 til informasjonsside om tjenesten", @@ -599,7 +631,9 @@ "ru": "\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u0435", "eu": "Joan zerbitzuaren informazio orrira", "af": "Gaan na die informasie bladsy vir die diens", - "el": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1" + "el": "\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1", + "xh": "Yiya kwikhasi lenkcazelo ukuze ufumane inkonzo", + "zu": "Iya ekhasini lolwazi lesevisi" }, "consent_purpose": { "no": "Form\u00e5let med SPNAME er SPDESC", @@ -633,7 +667,9 @@ "ru": "\u0426\u0435\u043b\u044c SPNAME - SPDESC", "eu": "Zerbtizuaren xedea SPDESC da", "af": "Die doel van SPNAME is SPDESC", - "el": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03cc\u03c0\u03c9\u03c2 \u03c0\u03b1\u03c1\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u003a SPDESC" + "el": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03cc\u03c0\u03c9\u03c2 \u03c0\u03b1\u03c1\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u003a SPDESC", + "zu": "Injongo ye-SPNAME yi-SPDESC", + "xh": "Injongo ye-SPNAME yi-SPDESC" }, "table_caption": { "no": "Bruker innformasjon", @@ -667,7 +703,9 @@ "cs": "U\u017eivatelsk\u00e9 informace", "eu": "Erabiltzailearen informazioa", "af": "Gebruiker informasie", - "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7" + "el": "\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "xh": "Inkcazelo yomsebenzisi", + "zu": "Ulwazi lomsebenzisi" }, "table_summary": { "no": "Her listes den innformasjonen om deg som blir send til den tjenesten du er i ferd med \u00e5 logge p\u00e5", @@ -701,7 +739,9 @@ "cs": "Seznam informac\u00ed o v\u00e1s, kter\u00e9 budou p\u0159ed\u00e1ny slu\u017eb\u011b, ke kter\u00e9 se p\u0159ihla\u0161ujete", "eu": "Zu identifikatuko zaren zerbitzura zure ze informazio bidaliko den erakusten du ", "af": "Lys die informasie mbt. jou wat op die punt is om gestuur te word vir die diens waarby jy wil aanmeld.", - "el": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae" + "el": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03bf\u03cd\u03bd \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae", + "zu": "Enza uhlu olumayelana nolwazi lwakho oluzodluliselwa kusevisi ozongena kuyo", + "xh": "Dwelisa inkcazelo engawe eza kudluliselwa kwinkonzo oza kungena kuyo" }, "show_attribute": { "no": "Vis innhold", @@ -734,7 +774,9 @@ "cs": "Zobrazit obsah", "eu": "Erakutsi onespena", "af": "Vertoon inhoud", - "el": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03b5\u03c1\u03b5\u03b9\u03ce\u03bd" + "el": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03b5\u03c1\u03b5\u03b9\u03ce\u03bd", + "zu": "Bonisa izici", + "xh": "Bonisa iimpawu" }, "abort": { "no": "Avbryt innlogging til SPNAME", @@ -757,6 +799,8 @@ "zh-tw": "\u95dc\u65bc\u767b\u5165\u81f3 SPNAME", "da": "Afbryd login til SPNAME", "af": "Kanseleer aanmelding na SPNAME", - "el": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME" + "el": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 SPNAME", + "xh": "Yeka ungeno kwi-SPNAME", + "zu": "Yeka ukungena ku-SPNAME" } } diff --git a/modules/consent/lib/Auth/Process/Consent.php b/modules/consent/lib/Auth/Process/Consent.php index f19c2b20ef0d39d76c0ee08bbf1e00e1e6537145..f5b6bfc8105732dccc4ed98a80cd2075de87afb1 100644 --- a/modules/consent/lib/Auth/Process/Consent.php +++ b/modules/consent/lib/Auth/Process/Consent.php @@ -51,14 +51,14 @@ class Consent extends \SimpleSAML\Auth\ProcessingFilter * * @var array */ - private $hiddenAttributes = array(); + private $hiddenAttributes = []; /** * Attributes which should not require consent * * @var array */ - private $noconsentattributes = array(); + private $noconsentattributes = []; /** * Whether we should show the "about service"-link on the no consent page. @@ -104,7 +104,7 @@ class Consent extends \SimpleSAML\Auth\ProcessingFilter } if (array_key_exists('focus', $config)) { - if (!in_array($config['focus'], array('yes', 'no'), true)) { + if (!in_array($config['focus'], ['yes', 'no'], true)) { throw new \SimpleSAML\Error\Exception( 'Consent: focus must be a string with values `yes` or `no`. '. var_export($config['focus'], true).' given.' @@ -258,7 +258,7 @@ class Consent extends \SimpleSAML\Auth\ProcessingFilter $state['Source'] = $idpmeta; } - $statsData = array('spEntityID' => $spEntityId); + $statsData = ['spEntityID' => $spEntityId]; // Do not use consent if disabled if (isset($state['Source']['consent.disable']) && @@ -344,7 +344,7 @@ class Consent extends \SimpleSAML\Auth\ProcessingFilter // Save state and redirect $id = \SimpleSAML\Auth\State::saveState($state, 'consent:request'); $url = Module::getModuleURL('consent/getconsent.php'); - Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } diff --git a/modules/consent/lib/Consent/Store/Cookie.php b/modules/consent/lib/Consent/Store/Cookie.php index 19ab9b4019d0b1e40ec9131899751fb5a588f8d8..1a878073525be1850ec912ec36d8bf93b7cc7088 100644 --- a/modules/consent/lib/Consent/Store/Cookie.php +++ b/modules/consent/lib/Consent/Store/Cookie.php @@ -160,7 +160,7 @@ class Cookie extends \SimpleSAML\Module\consent\Store { assert(is_string($userId)); - $ret = array(); + $ret = []; $cookieNameStart = '\SimpleSAML\Module\consent:'; $cookieNameStartLen = strlen($cookieNameStart); @@ -277,12 +277,12 @@ class Cookie extends \SimpleSAML\Module\consent\Store assert(is_string($value) || $value === null); $globalConfig = \SimpleSAML\Configuration::getInstance(); - $params = array( + $params = [ 'lifetime' => 7776000, // (90*24*60*60) 'path' => ($globalConfig->getBasePath()), 'httponly' => true, 'secure' => \SimpleSAML\Utils\HTTP::isHTTPS(), - ); + ]; \SimpleSAML\Utils\HTTP::setCookie($name, $value, $params, false); } diff --git a/modules/consent/lib/Consent/Store/Database.php b/modules/consent/lib/Consent/Store/Database.php index 5f5f3b12642ae37976a8e7e160fce7bc09580d02..a681220209b172f4d7bf4f2a3b4772fd9227584b 100644 --- a/modules/consent/lib/Consent/Store/Database.php +++ b/modules/consent/lib/Consent/Store/Database.php @@ -140,14 +140,14 @@ class Database extends \SimpleSAML\Module\consent\Store */ public function __sleep() { - return array( + return [ 'dsn', 'dateTime', 'username', 'password', 'table', 'timeout', - ); + ]; } @@ -174,7 +174,7 @@ class Database extends \SimpleSAML\Module\consent\Store 'UPDATE '.$this->table.' '. 'SET usage_date = '.$this->dateTime.' '. 'WHERE hashed_user_id = ? AND service_id = ? AND attribute = ?', - array($userId, $destinationId, $attributeSet) + [$userId, $destinationId, $attributeSet] ); if ($st === false) { @@ -215,7 +215,7 @@ class Database extends \SimpleSAML\Module\consent\Store 'UPDATE '.$this->table.' '. 'SET consent_date = '.$this->dateTime.', usage_date = '.$this->dateTime.', attribute = ? '. 'WHERE hashed_user_id = ? AND service_id = ?', - array($attributeSet, $userId, $destinationId) + [$attributeSet, $userId, $destinationId] ); if ($st === false) { @@ -232,7 +232,7 @@ class Database extends \SimpleSAML\Module\consent\Store $st = $this->execute( 'INSERT INTO '.$this->table.' ('.'consent_date, usage_date, hashed_user_id, service_id, attribute'. ') '.'VALUES ('.$this->dateTime.', '.$this->dateTime.', ?, ?, ?)', - array($userId, $destinationId, $attributeSet) + [$userId, $destinationId, $attributeSet] ); if ($st !== false) { @@ -259,21 +259,20 @@ class Database extends \SimpleSAML\Module\consent\Store $st = $this->execute( 'DELETE FROM '.$this->table.' WHERE hashed_user_id = ? AND service_id = ?;', - array($userId, $destinationId) + [$userId, $destinationId] ); if ($st === false) { - return; + return 0; } if ($st->rowCount() > 0) { \SimpleSAML\Logger::debug('consent:Database - Deleted consent.'); return $st->rowCount(); - } else { - \SimpleSAML\Logger::warning( - 'consent:Database - Attempted to delete nonexistent consent' - ); } + + \SimpleSAML\Logger::warning('consent:Database - Attempted to delete nonexistent consent'); + return 0; } @@ -290,19 +289,20 @@ class Database extends \SimpleSAML\Module\consent\Store $st = $this->execute( 'DELETE FROM '.$this->table.' WHERE hashed_user_id = ?', - array($userId) + [$userId] ); if ($st === false) { - return; + return 0; } if ($st->rowCount() > 0) { \SimpleSAML\Logger::debug('consent:Database - Deleted ('.$st->rowCount().') consent(s).'); return $st->rowCount(); - } else { - \SimpleSAML\Logger::warning('consent:Database - Attempted to delete nonexistent consent'); } + + \SimpleSAML\Logger::warning('consent:Database - Attempted to delete nonexistent consent'); + return 0; } @@ -319,16 +319,16 @@ class Database extends \SimpleSAML\Module\consent\Store { assert(is_string($userId)); - $ret = array(); + $ret = []; $st = $this->execute( 'SELECT service_id, attribute, consent_date, usage_date FROM '.$this->table. ' WHERE hashed_user_id = ?', - array($userId) + [$userId] ); if ($st === false) { - return array(); + return []; } while ($row = $st->fetch(\PDO::FETCH_NUM)) { @@ -393,13 +393,13 @@ class Database extends \SimpleSAML\Module\consent\Store */ public function getStatistics() { - $ret = array(); + $ret = []; // Get total number of consents - $st = $this->execute('SELECT COUNT(*) AS no FROM '.$this->table, array()); + $st = $this->execute('SELECT COUNT(*) AS no FROM '.$this->table, []); if ($st === false) { - return array(); + return []; } if ($row = $st->fetch(\PDO::FETCH_NUM)) { @@ -410,11 +410,11 @@ class Database extends \SimpleSAML\Module\consent\Store $st = $this->execute( 'SELECT COUNT(*) AS no '. 'FROM (SELECT DISTINCT hashed_user_id FROM '.$this->table.' ) AS foo', - array() + [] ); if ($st === false) { - return array(); + return []; } if ($row = $st->fetch(\PDO::FETCH_NUM)) { @@ -424,11 +424,11 @@ class Database extends \SimpleSAML\Module\consent\Store // Get total number of services that has been given consent to $st = $this->execute( 'SELECT COUNT(*) AS no FROM (SELECT DISTINCT service_id FROM '.$this->table.') AS foo', - array() + [] ); if ($st === false) { - return array(); + return []; } if ($row = $st->fetch(\PDO::FETCH_NUM)) { @@ -450,7 +450,7 @@ class Database extends \SimpleSAML\Module\consent\Store return $this->db; } - $driver_options = array(); + $driver_options = []; if (isset($this->timeout)) { $driver_options[\PDO::ATTR_TIMEOUT] = $this->timeout; } @@ -493,7 +493,7 @@ class Database extends \SimpleSAML\Module\consent\Store { $st = $this->execute( 'SELECT * FROM '.$this->table.' WHERE hashed_user_id = ? AND service_id = ? AND attribute = ?', - array('test', 'test', 'test') + ['test', 'test', 'test'] ); if ($st === false) { diff --git a/modules/consent/lib/Store.php b/modules/consent/lib/Store.php index 528f2ca16f66ee5e90a950952b52d65d52cd15bf..0e7c612b9e8b8e77124523c40122a735f414d4e4 100644 --- a/modules/consent/lib/Store.php +++ b/modules/consent/lib/Store.php @@ -126,7 +126,7 @@ abstract class Store public static function parseStoreConfig($config) { if (is_string($config)) { - $config = array($config); + $config = [$config]; } if (!is_array($config)) { diff --git a/modules/consent/locales/xh/LC_MESSAGES/consent.po b/modules/consent/locales/xh/LC_MESSAGES/consent.po new file mode 100644 index 0000000000000000000000000000000000000000..dc5d79f5eb338c34e689e311ddf26ad23b8c7c3a --- /dev/null +++ b/modules/consent/locales/xh/LC_MESSAGES/consent.po @@ -0,0 +1,82 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{consent:consent:show_attribute}" +msgstr "Bonisa iimpawu" + +msgid "{consent:consent:noconsent_return}" +msgstr "Buyela kwikhasi lemvume" + +msgid "{consent:consent:yes}" +msgstr "Ewe, qhubeka" + +msgid "{consent:consent:service_providers_for}" +msgstr "Umboneleli enkonzo we-" + +msgid "{consent:consent:show_attributes}" +msgstr "Bonisa isiqulatho" + +msgid "{consent:consent:status_header}" +msgstr "Ubume bemvume" + +msgid "{consent:consent:noconsent_title}" +msgstr "Akukho mvume inikelweyo" + +msgid "{consent:consent:show_hide_attributes}" +msgstr "bonisa/fihla iimpawu" + +msgid "{consent:consent:service_provider_header}" +msgstr "Umboneleli Wenkonzo" + +msgid "{consent:consent:noconsent_text}" +msgstr "Awuyinikelanga imvume yokudluliselwa iimpawu zakho kwi-SPNAME." + +msgid "{consent:consent:consent_header}" +msgstr "Imvume malunga nokukhutshwa kwenkcazelo yobuqu" + +msgid "{consent:consent:consent_purpose}" +msgstr "Injongo ye-SPNAME yi-SPDESC" + +msgid "{consent:consent:noconsent_goto_about}" +msgstr "Yiya kwikhasi lenkcazelo ukuze ufumane inkonzo" + +msgid "{consent:consent:table_caption}" +msgstr "Inkcazelo yomsebenzisi" + +msgid "{consent:consent:consent_attributes_header}" +msgstr "Inkcazelo eza kuthunyelwa ku-SPNAME" + +msgid "{consent:consent:abort}" +msgstr "Yeka ungeno kwi-SPNAME" + +msgid "{consent:consent:login}" +msgstr "ngena" + +msgid "{consent:consent:consent_accept}" +msgstr "I-SPNAME idinga ukuba inkcazelo engezantsi idluliselwe." + +msgid "{consent:consent:no}" +msgstr "Hayi, rhoxisa" + +msgid "{consent:consent:consent_privacypolicy}" +msgstr "Ipolisi yokugcinwa kwemfihlelo yenkonzo" + +msgid "{consent:consent:table_summary}" +msgstr "Dwelisa inkcazelo engawe eza kudluliselwa kwinkonzo oza kungena kuyo" + +msgid "{consent:consent:remember}" +msgstr "Khumbula" + diff --git a/modules/consent/locales/zu/LC_MESSAGES/consent.po b/modules/consent/locales/zu/LC_MESSAGES/consent.po new file mode 100644 index 0000000000000000000000000000000000000000..2738559d801f61515fe36ebbf7b0c6abf6204ae0 --- /dev/null +++ b/modules/consent/locales/zu/LC_MESSAGES/consent.po @@ -0,0 +1,84 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{consent:consent:show_attribute}" +msgstr "Bonisa izici" + +msgid "{consent:consent:noconsent_return}" +msgstr "Buyela ekhasini lemvume" + +msgid "{consent:consent:yes}" +msgstr "Yebo, qhubeka" + +msgid "{consent:consent:service_providers_for}" +msgstr "Abahlinzeki Besevisi bokuthi" + +msgid "{consent:consent:show_attributes}" +msgstr "Bonisa okuqukethwe" + +msgid "{consent:consent:status_header}" +msgstr "Isimo semvume" + +msgid "{consent:consent:noconsent_title}" +msgstr "Ayikho imvume enikeziwe" + +msgid "{consent:consent:show_hide_attributes}" +msgstr "bonisa/fihla izici" + +msgid "{consent:consent:service_provider_header}" +msgstr "Umhlinzeki Wesevisi" + +msgid "{consent:consent:noconsent_text}" +msgstr "Awuzange uyinikeze imvume yokudlulisa izici zakho ku-SPNAME." + +msgid "{consent:consent:consent_header}" +msgstr "Imvume mayelana nokukhulula ulwazi lomuntu siqu" + +msgid "{consent:consent:consent_purpose}" +msgstr "Injongo ye-SPNAME yi-SPDESC" + +msgid "{consent:consent:noconsent_goto_about}" +msgstr "Iya ekhasini lolwazi lesevisi" + +msgid "{consent:consent:table_caption}" +msgstr "Ulwazi lomsebenzisi" + +msgid "{consent:consent:consent_attributes_header}" +msgstr "Ulwazi oluzothunyelwa ku-SPNAME" + +msgid "{consent:consent:abort}" +msgstr "Yeka ukungena ku-SPNAME" + +msgid "{consent:consent:login}" +msgstr "ngena" + +msgid "{consent:consent:consent_accept}" +msgstr "I-SPNAME idinga ukuthi ulwazi olungezansi ludluliswe." + +msgid "{consent:consent:no}" +msgstr "Cha, khansela" + +msgid "{consent:consent:consent_privacypolicy}" +msgstr "Inqubomgomo yobumfihlo yesevisi" + +msgid "{consent:consent:table_summary}" +msgstr "" +"Enza uhlu olumayelana nolwazi lwakho oluzodluliselwa kusevisi ozongena " +"kuyo" + +msgid "{consent:consent:remember}" +msgstr "Khumbula" + diff --git a/modules/consent/www/getconsent.php b/modules/consent/www/getconsent.php index 24fe3b52844a7c62a0317b62fb83a26800d678c5..d36e5883c3e3e984713cfe105186988e89601206 100644 --- a/modules/consent/www/getconsent.php +++ b/modules/consent/www/getconsent.php @@ -48,9 +48,9 @@ if (array_key_exists('yes', $_REQUEST)) { \SimpleSAML\Logger::stats('consentResponse rememberNot'); } - $statsInfo = array( + $statsInfo = [ 'remember' => array_key_exists('saveconsent', $_REQUEST), - ); + ]; if (isset($state['Destination']['entityid'])) { $statsInfo['spEntityID'] = $state['Destination']['entityid']; } @@ -89,9 +89,9 @@ foreach ($attributes as $attrkey => $attrval) { unset($attributes[$attrkey]); } } -$para = array( +$para = [ 'attributes' => &$attributes -); +]; // Reorder attributes according to attributepresentation hooks \SimpleSAML\Module::callHooks('attributepresentation', $para); @@ -119,9 +119,9 @@ $translator = $t->getTranslator(); $t->data['srcMetadata'] = $state['Source']; $t->data['dstMetadata'] = $state['Destination']; $t->data['yesTarget'] = \SimpleSAML\Module::getModuleURL('consent/getconsent.php'); -$t->data['yesData'] = array('StateId' => $id); +$t->data['yesData'] = ['StateId' => $id]; $t->data['noTarget'] = \SimpleSAML\Module::getModuleURL('consent/noconsent.php'); -$t->data['noData'] = array('StateId' => $id); +$t->data['noData'] = ['StateId' => $id]; $t->data['attributes'] = $attributes; $t->data['checked'] = $state['consent:checked']; $t->data['stateId'] = $id; @@ -131,18 +131,18 @@ $dstName = htmlspecialchars(is_array($dstName) ? $translator->t($dstName) : $dst $t->data['consent_attributes_header'] = $translator->t( '{consent:consent:consent_attributes_header}', - array('SPNAME' => $dstName, 'IDPNAME' => $srcName) + ['SPNAME' => $dstName, 'IDPNAME' => $srcName] ); $t->data['consent_accept'] = $translator->t( '{consent:consent:consent_accept}', - array('SPNAME' => $dstName, 'IDPNAME' => $srcName) + ['SPNAME' => $dstName, 'IDPNAME' => $srcName] ); if (array_key_exists('descr_purpose', $state['Destination'])) { $t->data['consent_purpose'] = $translator->t( '{consent:consent:consent_purpose}', - array( + [ 'SPNAME' => $dstName, 'SPDESC' => $translator->getPreferredTranslation( \SimpleSAML\Utils\Arrays::arrayize( @@ -150,7 +150,7 @@ if (array_key_exists('descr_purpose', $state['Destination'])) { 'en' ) ), - ) + ] ); } @@ -192,7 +192,7 @@ $t->data['usestorage'] = array_key_exists('consent:store', $state); if (array_key_exists('consent:hiddenAttributes', $state)) { $t->data['hiddenAttributes'] = $state['consent:hiddenAttributes']; } else { - $t->data['hiddenAttributes'] = array(); + $t->data['hiddenAttributes'] = []; } $t->data['attributes_html'] = present_attributes($t, $attributes, ''); @@ -213,7 +213,7 @@ function present_attributes($t, $attributes, $nameParent) { $translator = $t->getTranslator(); - $alternate = array('odd', 'even'); + $alternate = ['odd', 'even']; $i = 0; $summary = 'summary="'.$translator->t('{consent:consent:table_summary}').'"'; diff --git a/modules/consent/www/logout.php b/modules/consent/www/logout.php index 0065cbea172eb3c2625e454e8d1fd339995033a0..f84a51bb246d616206137696002c1cda35aeddf9 100644 --- a/modules/consent/www/logout.php +++ b/modules/consent/www/logout.php @@ -10,7 +10,7 @@ if (!array_key_exists('StateId', $_GET)) { } $state = \SimpleSAML\Auth\State::loadState($_GET['StateId'], 'consent:request'); -$state['Responder'] = array('\SimpleSAML\Module\consent\Logout', 'postLogout'); +$state['Responder'] = ['\SimpleSAML\Module\consent\Logout', 'postLogout']; $idp = \SimpleSAML\IdP::getByState($state); $idp->handleLogoutRequest($state, null); diff --git a/modules/consent/www/noconsent.php b/modules/consent/www/noconsent.php index 544f8bd8c00a15743a34215213fdfef77a62d38d..acd6ffc06514c17430e391d6c03d941593899a2e 100644 --- a/modules/consent/www/noconsent.php +++ b/modules/consent/www/noconsent.php @@ -17,12 +17,12 @@ $state = \SimpleSAML\Auth\State::loadState($id, 'consent:request'); $resumeFrom = \SimpleSAML\Module::getModuleURL( 'consent/getconsent.php', - array('StateId' => $id) + ['StateId' => $id] ); $logoutLink = \SimpleSAML\Module::getModuleURL( 'consent/logout.php', - array('StateId' => $id) + ['StateId' => $id] ); $aboutService = null; @@ -32,7 +32,7 @@ if (!isset($state['consent:showNoConsentAboutService']) || $state['consent:showN } } -$statsInfo = array(); +$statsInfo = []; if (isset($state['Destination']['entityid'])) { $statsInfo['spEntityID'] = $state['Destination']['entityid']; } @@ -57,7 +57,7 @@ $t->data['logoutLink'] = $logoutLink; $dstName = htmlspecialchars(is_array($dstName) ? $translator->t($dstName) : $dstName); -$t->data['noconsent_text'] = $translator->t('{consent:consent:noconsent_text}', array('SPNAME' => $dstName)); -$t->data['noconsent_abort'] = $translator->t('{consent:consent:abort}', array('SPNAME' => $dstName)); +$t->data['noconsent_text'] = $translator->t('{consent:consent:noconsent_text}', ['SPNAME' => $dstName]); +$t->data['noconsent_abort'] = $translator->t('{consent:consent:abort}', ['SPNAME' => $dstName]); $t->show(); diff --git a/modules/consentAdmin/config-templates/module_consentAdmin.php b/modules/consentAdmin/config-templates/module_consentAdmin.php index 02fdf8d42009d69a9128b9e068353b7e02715e8d..9c5420387ecc04b26ade1b5661ce814242359d14 100644 --- a/modules/consentAdmin/config-templates/module_consentAdmin.php +++ b/modules/consentAdmin/config-templates/module_consentAdmin.php @@ -5,22 +5,22 @@ * @author Jacob Christiansen, <jach@wayf.dk> * @package SimpleSAMLphp */ -$config = array( +$config = [ /* * Configuration for the database connection. */ - 'consentadmin' => array( + 'consentadmin' => [ 'consent:Database', 'dsn' => 'mysql:host=DBHOST;dbname=DBNAME', 'username' => 'USERNAME', 'password' => 'PASSWORD', - ), + ], // Hash attributes including values or not 'attributes.hash' => true, // If you set attributes.exclude in the consent module, this must match - // 'attributes.exclude' => array(), + // 'attributes.exclude' => [], // Where to direct the user after logout // REMEMBER to prefix with http:// otherwise the relaystate is only appended @@ -32,4 +32,4 @@ $config = array( // Set authority 'authority' => 'saml2', -); +]; diff --git a/modules/consentAdmin/hooks/hook_frontpage.php b/modules/consentAdmin/hooks/hook_frontpage.php index 792e2ff45cc9f9dbffd8dc8c44c9b15a344def71..87edf27d2e41d58fa57f23c12e697612c2c4b9c6 100644 --- a/modules/consentAdmin/hooks/hook_frontpage.php +++ b/modules/consentAdmin/hooks/hook_frontpage.php @@ -10,8 +10,8 @@ function consentAdmin_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['config'][] = array( + $links['config'][] = [ 'href' => SimpleSAML\Module::getModuleURL('consentAdmin/consentAdmin.php'), 'text' => '{core:frontpage:link_consentAdmin}', - ); + ]; } diff --git a/modules/consentAdmin/templates/consentadmin.php b/modules/consentAdmin/templates/consentadmin.php index b9bc74667a0b53dbee2af90fee0fdf7126a7e7d1..e8c3bcc839735c465ff979ab1a9994eb21c93995 100644 --- a/modules/consentAdmin/templates/consentadmin.php +++ b/modules/consentAdmin/templates/consentadmin.php @@ -83,7 +83,7 @@ TRSTART; <p> <a href=" <?php - echo \SimpleSAML\Module::getModuleURL('consentAdmin/consentAdmin.php', array('logout' => 1)); + echo \SimpleSAML\Module::getModuleURL('consentAdmin/consentAdmin.php', ['logout' => 1]); ?>">Logout</a> </p> diff --git a/modules/consentAdmin/www/consentAdmin.php b/modules/consentAdmin/www/consentAdmin.php index 8591a9c62cb9a2e1813c3161d48a1c644856769d..17a091d0871c7a32efdc150c074f7daaaeb8a3c3 100644 --- a/modules/consentAdmin/www/consentAdmin.php +++ b/modules/consentAdmin/www/consentAdmin.php @@ -23,7 +23,7 @@ function driveProcessingChain( $attributes, $userid, $hashAttributes = false, - $excludeAttributes = array() + $excludeAttributes = [] ) { /* * Create a new processing chain @@ -34,14 +34,14 @@ function driveProcessingChain( * Construct the state. * REMEMBER: Do not set Return URL if you are calling processStatePassive */ - $authProcState = array( + $authProcState = [ 'Attributes' => $attributes, 'Destination' => $sp_metadata, 'SPMetadata' => $sp_metadata, 'Source' => $idp_metadata, 'IdPMetadata' => $idp_metadata, 'isPassive' => true, - ); + ]; /* we're being bridged, so add that info to the state */ if (strpos($source, '-idp-remote|') !== false) { $authProcState['saml:sp:IdP'] = substr($source, strpos($source, '|') + 1); @@ -74,7 +74,7 @@ function driveProcessingChain( \SimpleSAML\Logger::info('consentAdmin: attribute: '.$attribute_hash); // Return values - return array($targeted_id, $attribute_hash, $attributes); + return [$targeted_id, $attribute_hash, $attributes]; } // Get config object @@ -92,7 +92,7 @@ if (array_key_exists('logout', $_REQUEST)) { $hashAttributes = $cA_config->getValue('attributes.hash'); -$excludeAttributes = $cA_config->getValue('attributes.exclude', array()); +$excludeAttributes = $cA_config->getValue('attributes.exclude', []); // Check if valid local session exists $as->requireAuth(); @@ -223,12 +223,12 @@ if ($action !== null && $sp_entityid !== null) { $user_consent_list = $consent_storage->getConsents($hashed_user_id); // Parse list of consents -$user_consent = array(); +$user_consent = []; foreach ($user_consent_list as $c) { $user_consent[$c[0]] = $c[1]; } -$template_sp_content = array(); +$template_sp_content = []; // Init template $template = new \SimpleSAML\XHTML\Template($config, 'consentAdmin:consentadmin.php', 'consentAdmin:consentadmin'); @@ -311,7 +311,7 @@ foreach ($all_sp_metadata as $sp_entityid => $sp_values) { $sp_description = $translator->getPreferredTranslation($translator->getTag('spdescription')); // Fill out array for the template - $sp_list[$sp_entityid] = array( + $sp_list[$sp_entityid] = [ 'spentityid' => $sp_entityid, 'name' => $sp_name, 'description' => $sp_description, @@ -319,7 +319,7 @@ foreach ($all_sp_metadata as $sp_entityid => $sp_values) { 'consentValue' => $sp_entityid, 'attributes_by_sp' => $attributes_new, 'serviceurl' => $sp_service_url, - ); + ]; } $template->data['header'] = 'Consent Administration'; diff --git a/modules/core/dictionaries/cardinality.translation.json b/modules/core/dictionaries/cardinality.translation.json index 9f479dc0fb9c19f913e12cf6f2177b447214ad4b..a0a31ded62938fe619961896976a10ff3e55f53a 100644 --- a/modules/core/dictionaries/cardinality.translation.json +++ b/modules/core/dictionaries/cardinality.translation.json @@ -3,25 +3,32 @@ "af": "Verkeerde Eienskappe", "nl": "Niet de juiste attributen", "es": "Atributos inválidos", - "no": "Ugyldige atributter" - + "no": "Ugyldige atributter", + "zu": "Izici Ezingalungile", + "xh": "Iimpawu Ezingachanekanga" }, "cardinality_text": { "af": "Een of meer van die eienskappe wat deur u identiteits-verskaffer voorsien was, bevat nie die verwagte aantal waardes nie.", "nl": "Één of meer door de Identity Provider geleverde attributen bevat niet het vereiste aantal attributen.", "es": "Uno o más atributos proporcionados por su proveedor de identidad no contiene la cantidad de valores esperada.", - "no": "Én eller flere atributter levert av din identitetsleverandør har ikke sĂĄ mange verdier som forventes." + "no": "Én eller flere atributter levert av din identitetsleverandør har ikke sĂĄ mange verdier som forventes.", + "zu": "Isici esisodwa noma ngaphezulu esinikezwe umhlinzeki wakho kamazisi asizange siqukathe inani lezinombolo ezilindelwe.", + "xh": "Uphawu olunye okanye olungakumbi olunikelwe ngumboonelei wesazisi sakho aluqulethanga inani lamaxabiso alindelekileyo." }, "problematic_attributes": { "af": "Die problematiese eienskap(pe) is:", "nl": "De onjuiste attributen zijn:", "es": "Los atributos problemáticos son:", - "no": "De ugyldige atributter er:" + "no": "De ugyldige atributter er:", + "zu": "Isici(izici) esiyinkinga sithi:", + "xh": "Iimpawu eziyingxaki zezi:" }, "got_want": { "af": "%GOT% waarde ontvang, %WANT% nodig", "nl": "%GOT% ontvangen waarden, %WANT% vereist", "es": "contiene %GOT% valores, se esperaban %WANT%", - "no": "har %GOT% verdier, forventer %WANT%" + "no": "har %GOT% verdier, forventer %WANT%", + "zu": "uthole amanani angu-%GOT%, ufuna %WANT%", + "xh": "kukho amaxabiso e-%GOT%, sifuna %WANT%" } } diff --git a/modules/core/dictionaries/no_cookie.translation.json b/modules/core/dictionaries/no_cookie.translation.json index 56dde57f620bef94a8e16a86d1b10391de81a44a..0da9ef717a3be906e7ef537d8d7ff216618a9c99 100644 --- a/modules/core/dictionaries/no_cookie.translation.json +++ b/modules/core/dictionaries/no_cookie.translation.json @@ -29,7 +29,9 @@ "ru": "\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 cookie-\u0444\u0430\u0439\u043b", "eu": "Cookie-a falta da", "af": "Verlore cookie", - "el": "\u03a0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 cookie" + "el": "\u03a0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 cookie", + "xh": "Ikhuki engekhoyo", + "zu": "Ikhukhi engatholakali" }, "description": { "no": "Du ser ut til \u00e5 ha deaktivert informasjonskapsler. Kontroller innstillingene i nettleseren din og pr\u00f8v igjen.", @@ -61,7 +63,9 @@ "ru": "\u0412\u0438\u0434\u0438\u043c\u043e, \u0432\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 cookies \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.", "eu": "Badirudi zure nabigatzaileko cookie-ak desgaitu dituzula. Mesedez, berrikusi zure nabigatzaileko lehentasunak eta saiatu berriro.", "af": "Dit blyk dat jy cookies in jou webblaaier af geskakel het. Gaan asseblief die stellings in jou webblaaier na en probeer weer.", - "el": "\u0395\u03bd\u03b4\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03c4\u03b1 cookie \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac." + "el": "\u0395\u03bd\u03b4\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03c4\u03b1 cookie \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ad\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03ba\u03b1\u03b9 \u03ba\u03b1\u03b9 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "xh": "Ubonakala uzenze azasebenza iikhuki kwibhrawuza yakho. Nceda ujonge iisetingi ezikwibhrawuza yakho, uzame kwakhona.", + "zu": "Kubonakala sengathi uyekise amakhukhi kusiphequluli sakho. Sicela uhlole amasethingi kusiphequluli sakho, bese uzame futhi." }, "retry": { "no": "Pr\u00f8v igjen", @@ -93,6 +97,8 @@ "ro": "\u00cencearc\u0103 din nou", "eu": "Saiatu berriro", "af": "Probeer weer", - "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac" + "el": "\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac", + "zu": "Zama futhi", + "xh": "Zama kwakhona" } } diff --git a/modules/core/dictionaries/no_metadata.translation.json b/modules/core/dictionaries/no_metadata.translation.json index e580e40c62cf2d831c08a0276f63ec6eee9a2ccf..2ebd8b0f46b5f1476d4fe008678fc3e242073d3f 100644 --- a/modules/core/dictionaries/no_metadata.translation.json +++ b/modules/core/dictionaries/no_metadata.translation.json @@ -28,7 +28,9 @@ "cs": "Metadata nebyla nalezena", "eu": "Ez da aurkitu metadaturik", "af": "Metadata nie gevind nie", - "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1" + "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1", + "zu": "Imethadatha ayitholakali", + "xh": "I-Metadata ayifunyenwanga" }, "not_found_for": { "no": "Vi fant ikke metadataene for:", @@ -59,7 +61,9 @@ "cs": "Nebyla nalezena metadata pro entitu:", "eu": "Ezinezkoa izan da erakunde honentzat metadaturik aurkitzea: ", "af": "Ons was nie in staat om die metadata vir die entiteit op te spoor nie:", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03bf\u03cd\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1:" + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b2\u03c1\u03b5\u03b8\u03bf\u03cd\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1:", + "xh": "Asikwazanga ukufumana imetadata ye-entithi:", + "zu": "Asikwazanga ukuthola imethadatha yenhlangano:" }, "config_problem": { "no": "Dette er sannsynligvis et konfigurasjonsproblem hos enten tjenesteleverand\u00f8ren eller identitetsleverand\u00f8ren.", @@ -90,7 +94,9 @@ "cs": "Toto je pravd\u011bpodobn\u011b konfigura\u010dn\u00ed probl\u00e9m na stran\u011b poskytovatele slu\u017eby nebo poskytovatele identity.", "eu": "Hau ziurrenik konfigurazio arazo bat izango da zerbitzu hornitzailean edota identitate hornitzailean. ", "af": "Di\u00e9 is waarskynlik 'n probleem met die konfigurasie by die diensverskaffer \u00f3f die identiteit verskaffer.", - "el": "\u0391\u03c5\u03c4\u03cc \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2." + "el": "\u0391\u03c5\u03c4\u03cc \u03c5\u03c0\u03bf\u03b4\u03b5\u03b9\u03ba\u03bd\u03cd\u03b5\u03b9 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.", + "xh": "Kusenokwenzeka yingxaki yolungiselelo kumboneleli wenkonzo okanye umboneleli wesazisi.", + "zu": "Lokhu kungenzeka ukuthi kubangelwa inkinga yomiso yomhlinzeki wesevisi noma umhlinzeki kamazisi." }, "suggestion_user_link": { "no": "Hvis du er en bruker som fikk denne feilen etter at du fulgte en link p\u00e5 en nettside, s\u00e5 b\u00f8r du rapportere denne feilen til eieren av den nettsiden.", @@ -121,7 +127,9 @@ "cs": "Pokud jste u\u017eivatel, kter\u00fd obdr\u017eel chybu po n\u00e1sledov\u00e1n\u00ed odkazu na webov\u00e9 str\u00e1nce, m\u011bli byste o t\u00e9to chyb\u011b informovat vlastn\u00edka t\u00e9to str\u00e1nky. ", "eu": "Gune bateko lotura bat jarraituz errore hau jasotzen duen erabiltzaile bat bazara, guneko jabeari eman behar diozu errorearen berri.", "af": "As jy 'n gebruiker is wat na aanleiding van 'n skakel op 'n webwerf hierdie fout ontvang het, moet jy hierdie fout aan die eienaar van die webwerf aan stuur.", - "el": "\u0391\u03bd \u03bb\u03ac\u03b2\u03b1\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ce\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03bd \u03b9\u03c3\u03c4\u03cc\u03c4\u03bf\u03c0\u03bf, \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03bf \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf\u03bd \u03b9\u03b4\u03b9\u03bf\u03ba\u03c4\u03ae\u03c4\u03b7 \u03c4\u03bf\u03c5 \u03b5\u03bd \u03bb\u03cc\u03b3\u03c9 \u03b9\u03c3\u03c4\u03cc\u03c4\u03bf\u03c0\u03bf\u03c5." + "el": "\u0391\u03bd \u03bb\u03ac\u03b2\u03b1\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ce\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03bd \u03b9\u03c3\u03c4\u03cc\u03c4\u03bf\u03c0\u03bf, \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03bf \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf\u03bd \u03b9\u03b4\u03b9\u03bf\u03ba\u03c4\u03ae\u03c4\u03b7 \u03c4\u03bf\u03c5 \u03b5\u03bd \u03bb\u03cc\u03b3\u03c9 \u03b9\u03c3\u03c4\u03cc\u03c4\u03bf\u03c0\u03bf\u03c5.", + "xh": "Ukuba ngaba ungumsebenzisi ofumene le mpazamo emva kokulandela ilinki kwisayithi, ufanele uchaze le mpazamo kumnini walo sayithi.", + "zu": "Uma ungumsebenzisi othole leli phutha ngemva kokulandela ilinki ekusayithi, kufanele ubike leli phutha kumnikazi waleyo sayithi." }, "suggestion_developer": { "no": "Hvis du er en utvikler som setter opp en \"single sign-on\" l\u00f8sning, s\u00e5 har du et problem med metadataoppsettet. Kontroller at metadata er riktig konfigurert hos b\u00e5de identitetsleverand\u00f8ren og tjenesteleverand\u00f8ren.", @@ -152,6 +160,8 @@ "cs": "Pokud jste v\u00fdvoj\u00e1\u0159 nasazuj\u00edc\u00ed \u0159e\u0161en\u00ed jednotn\u00e9ho p\u0159ihla\u0161ov\u00e1n\u00ed, m\u00e1te probl\u00e9m s konfigurac\u00ed metadat. Ov\u011b\u0159te, zda jsou metadata nakonfigurov\u00e1na spr\u00e1vn\u011b jak u poskytovatele identity tak u poskytovatele slu\u017eby.", "eu": "Hasiera-bakarreko sistema bat zabaltzen ari zaren garatzaile bat bazara, arazo bat duzu zure metadatuen kongigurazioarekin. Egiazta ezazu metadatuak zuzen konfiguratuak daudela identitate hornitzailean eta zerbitzu hornitzailean.", "af": "As jy 'n programmeerder is wat die 'single sign-on' oplossing implementeer, het jy 'n probleem met die metadata opset. Bevestig dat die metadata korrek ingestel is op beide die identiteit verskaffer en diensverskaffer.", - "el": "\u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2, \u03c4\u03cc\u03c4\u03b5 \u03b1\u03bd\u03c4\u03b9\u03bc\u03b5\u03c4\u03c9\u03c0\u03af\u03b6\u03b5\u03c4\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd. \u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c9\u03c3\u03c4\u03ac \u03c4\u03cc\u03c3\u03bf \u03c3\u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03cc\u03c3\u03bf \u03ba\u03b1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd." + "el": "\u0395\u03ac\u03bd \u03b5\u03af\u03c3\u03c4\u03b5 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2, \u03c4\u03cc\u03c4\u03b5 \u03b1\u03bd\u03c4\u03b9\u03bc\u03b5\u03c4\u03c9\u03c0\u03af\u03b6\u03b5\u03c4\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd. \u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03c3\u03c9\u03c3\u03c4\u03ac \u03c4\u03cc\u03c3\u03bf \u03c3\u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03cc\u03c3\u03bf \u03ba\u03b1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd.", + "xh": "Ukuba ungumvelisi osebenzisa isisombululo sokusayina ungene kanye, unengxaki nolungiselelo lwe-metadata. Qinisekisa ukuba i-metadata ilungiselelwe ngokuchanekileyo kuzo zombini umbonelei wesazisi nomboneleli wenkonzo.", + "zu": "Uma ungunjiniyela osebenzisa isixazululo sokusayinela ukungena esisodwa, unenkinga ngomiso lwemethadatha. Qinisekisa ukuthi imethadatha imiswe ngendlela efanele kokubili kumhlinzeki womazisi nomhlinzeki wesevisi." } } diff --git a/modules/core/dictionaries/no_state.definition.json b/modules/core/dictionaries/no_state.definition.json index 9ce452a0ccf0b0c3049aff2ccc62696f5bb150e3..b10bbead87cb2c2f92e3d8e100f0f5662e985634 100644 --- a/modules/core/dictionaries/no_state.definition.json +++ b/modules/core/dictionaries/no_state.definition.json @@ -8,6 +8,9 @@ "suggestions": { "en": "Suggestions for resolving this problem:" }, + "suggestion_badlink": { + "en": "Check that the link you used to access the web site is correct." + }, "suggestion_goback": { "en": "Go back to the previous page and try again." }, @@ -17,6 +20,9 @@ "causes": { "en": "This error may be caused by:" }, + "cause_badlink": { + "en": "The link used to get here was bad, perhaps a bookmark." + }, "cause_backforward": { "en": "Using the back and forward buttons in the web browser." }, diff --git a/modules/core/dictionaries/no_state.translation.json b/modules/core/dictionaries/no_state.translation.json index b0ad8c5f644286dd7d8dfe0c95df981c63ad680e..30f0440f6f38d97d0fae0efdf8d57265d3e3062f 100644 --- a/modules/core/dictionaries/no_state.translation.json +++ b/modules/core/dictionaries/no_state.translation.json @@ -26,7 +26,9 @@ "ru": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0443\u0442\u0435\u0440\u044f\u043d\u0430", "cs": "Stavov\u00e1 informace ztracena", "eu": "Egoeraren informazioa galdu da", - "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2" + "el": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2", + "zu": "Ulwazi lwesifunda lulahlekile", + "xh": "Inkcazelo yobume ilahlekile" }, "description": { "no": "Vi kunne ikke finne tilstandsinformasjonen for denne foresp\u00f8rselen.", @@ -55,7 +57,9 @@ "ru": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.", "cs": "Nebylo mo\u017en\u00e9 naj\u00edt stavovou informaci pro sou\u010dasn\u00fd po\u017eadavek.", "eu": "Ez dugu aurkitu egoeraren informaziorik eskaera honentzat.", - "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03c4\u03bf\u03cd\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd \u03b1\u03af\u03c4\u03b7\u03bc\u03b1." + "el": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc \u03bd\u03b1 \u03b5\u03bd\u03c4\u03bf\u03c0\u03b9\u03c3\u03c4\u03bf\u03cd\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd \u03b1\u03af\u03c4\u03b7\u03bc\u03b1.", + "xh": "Asikwazanga ukufumana inkcazelo yobume yesicelo sangoku.", + "zu": "Asikwazanga ukuthola ulwazi lwesifunda lwesicelo samanje." }, "suggestions": { "no": "Forslag for \u00e5 l\u00f8se dette problemet:", @@ -84,7 +88,13 @@ "ru": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:", "cs": "N\u00e1vrhy pro vy\u0159e\u0161en\u00ed tohoto probl\u00e9mu:", "eu": "Arazo hau konpontzeko iradokizunak:", - "el": "\u03a0\u03c1\u03bf\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7 \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2:" + "el": "\u03a0\u03c1\u03bf\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7 \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2:", + "zu": "Iziphakamiso zokuxazulula le nkinga:", + "xh": "Iingcebiso zokulungisa le ngxaki:" + }, + "suggestion_badlink": { + "sv": "Kontrollera att länken du använde för att komma ĂĄt webplatsen är korrekt.", + "nl": "Controleer of u de juiste link gebruikt om de website te benaderen." }, "suggestion_goback": { "no": "G\u00e5 tilbake til forrige side og pr\u00f8v p\u00e5 nytt.", @@ -113,7 +123,9 @@ "ru": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430.", "cs": "J\u00edt zp\u011bt na p\u0159edchoz\u00ed str\u00e1nku a zkusit znovu.", "eu": "Itzul zaitez aurreko orrira eta saiatu berriro", - "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac." + "el": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.", + "zu": "Buyela emuva ekhasini langaphambilini bese uzame futhi.", + "xh": "Buyela emva kwikhasi elidlulileyo uzame kwakhona." }, "suggestion_closebrowser": { "no": "Lukk nettleseren, og pr\u00f8v p\u00e5 nytt.", @@ -142,7 +154,9 @@ "ru": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0431 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u043e\u0432\u0430.", "cs": "Zav\u0159\u00edt webov\u00fd prohl\u00ed\u017ee\u010d a zkusit znovu.", "eu": "Nabigatzailea itxi eta saiatu berriro", - "el": "\u039a\u03bb\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd (web browser) \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac" + "el": "\u039a\u03bb\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd (web browser) \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac", + "zu": "Vala isiphequluli sewebhu, bese uzame futhi.", + "xh": "Vala ibhrawuza yewebhu, uzame kwakhona." }, "causes": { "no": "Denne feilen kan v\u00e6re for\u00e5rsaket av:", @@ -171,7 +185,13 @@ "ru": "\u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430:", "cs": "Tato chyba m\u016f\u017ee b\u00fdt zp\u016fsoben\u00e1:", "eu": "Errore hau honek eragin dezake:", - "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03c1\u03bf\u03ba\u03cd\u03c8\u03b5\u03b9, \u03b5\u03ac\u03bd:" + "el": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03c1\u03bf\u03ba\u03cd\u03c8\u03b5\u03b9, \u03b5\u03ac\u03bd:", + "zu": "Leli phutha kungenzeka libangelwa ukuthi:", + "xh": "Le mpazamo isenokuba ibangelwe:" + }, + "cause_badlink": { + "sv": "Länken till websidan var felaktig, kanske till följd av elak automatisk ifyllning, en trasig länk eller ett trasigt bokmärke.", + "nl": "Verkeerde link gebruikt, bijvoorbeeld een bookmark (bladwijzer)." }, "cause_backforward": { "no": "Bruk av \"frem\"- og \"tilbake\"-knappene i nettleseren.", @@ -187,7 +207,7 @@ "da": "Brug frem- og tilbage-knappen i browseren.", "hr": "Kori\u0161tenjem gumba za prethodnu (back) i sljede\u0107u (forward) stranicu u web pregledniku.", "zh-tw": "\u8acb\u4f7f\u7528\u7db2\u9801\u700f\u89bd\u5668\u4e2d\u7684\u4e0a\u4e00\u9801\u53ca\u4e0b\u4e00\u9801\u3002", - "nl": "Gebruik de Volgende en Terug knoppen in de web browser.", + "nl": "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser.", "et": "brauseri edasi-tagasi nuppude kasutamisest", "he": "\u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05db\u05e4\u05ea\u05d5\u05e8\u05d9 \u05d4\u05d1\u05d0 \u05d5\u05d4\u05e7\u05d5\u05d3\u05dd \u05d1\u05d3\u05e4\u05d3\u05e4\u05df.", "de": "Das Benutzen der Zur\u00fcck- und Vorw\u00e4rts-Schaltfl\u00e4chen im Web-Browser.", @@ -200,7 +220,9 @@ "ru": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \"\u0412\u043f\u0435\u0440\u0435\u0434\" \"\u041d\u0430\u0437\u0430\u0434\" \u0432 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0435.", "cs": "Pou\u017eit\u00edm tla\u010d\u00edtek zp\u011bt a vp\u0159ed ve webv\u00e9m prohl\u00ed\u017ee\u010di.", "eu": "Zure web nabigatzaileko atzera eta aurrera botoiak erabiltzen.", - "el": "\u039c\u03b5\u03c4\u03b1\u03b2\u03ae\u03ba\u03b1\u03c4\u03b5 \u03c0\u03af\u03c3\u03c9 \u03ba\u03b1\u03b9 \u03b5\u03bc\u03c0\u03c1\u03cc\u03c2 \u03c3\u03c4\u03bf \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03cc \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd." + "el": "\u039c\u03b5\u03c4\u03b1\u03b2\u03ae\u03ba\u03b1\u03c4\u03b5 \u03c0\u03af\u03c3\u03c9 \u03ba\u03b1\u03b9 \u03b5\u03bc\u03c0\u03c1\u03cc\u03c2 \u03c3\u03c4\u03bf \u03b9\u03c3\u03c4\u03bf\u03c1\u03b9\u03ba\u03cc \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd.", + "zu": "Ukusebenzisa izinkinobho ezithi emuva naphambili kusiphequluli sewebhu.", + "xh": "Ukusebenzisa amaqhosha okuya emva naphambili kwibhrawuza yewebhu." }, "cause_openbrowser": { "no": "Starte nettleseren med faner lagret fra forrige gang.", @@ -229,7 +251,9 @@ "ru": "\u041e\u0442\u043a\u0440\u044b\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438.", "cs": "Otev\u0159en\u00edm webov\u00e9ho prohl\u00ed\u017ee\u010de se z\u00e1lo\u017ekami z p\u0159edchoz\u00edho sezen\u00ed.", "eu": "Zure web nabigatzailea aurreko saiotik gordeta zeuden fitxekin ireki duzu.", - "el": "\u0391\u03bd\u03bf\u03af\u03be\u03b1\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b1\u03c4\u03b5 \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b5\u03c2 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2." + "el": "\u0391\u03bd\u03bf\u03af\u03be\u03b1\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b1\u03c4\u03b5 \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b5\u03c2 \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2.", + "xh": "Kuvulwe ibhrawuza yewebhu ngeethebhu eziseyivwe kwiseshoni edlulileyo.", + "zu": "Kuvulwe isiphequluli sewebhu ngamathebhu alondolozwe kuseshini yangaphambilini." }, "cause_nocookie": { "no": "At informasjonskapsler ikke er aktivert i nettleseren.", @@ -258,7 +282,9 @@ "ru": "\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b Cookies.", "cs": "Ve webov\u00e9m prohl\u00ed\u017ee\u010di mohou b\u00fdt zak\u00e1z\u00e1ny cookies.", "eu": "Cookie-ak desgaituta egon litezke nabigatzailean.", - "el": "\u0397 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 cookie \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd." + "el": "\u0397 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 cookie \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03b9\u03c3\u03c4\u03bf\u03cd.", + "xh": "Iikhuki zisenokwenziwa zingasebenzi kwibhrawuza yewebhu.", + "zu": "Amakhukhi kungenzeka ukuthi ayekisiwe kusiphequluli sewebhu." }, "report_header": { "no": "Rapporter denne feilen", @@ -287,7 +313,9 @@ "ru": "\u0421\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435", "cs": "Nahl\u00e1sit tuto chybu", "eu": "Errore honen berri eman", - "el": "\u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2" + "el": "\u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2", + "xh": "Chaza le mpazamo", + "zu": "Bika leli phutha" }, "report_text": { "no": "Hvis problemet vedvarer, kan du rapportere det til systemadministratorene.", @@ -316,6 +344,8 @@ "ru": "\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443.", "cs": "Pokud probl\u00e9m p\u0159etrv\u00e1v\u00e1, m\u016f\u017eete ho nahl\u00e1sit spr\u00e1vci.", "eu": "Arazoak bere horretan badirau, sistemaren administratzaileei berri eman diezaiekezu.", - "el": "\u0391\u03bd \u03c4\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03b5\u03be\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af \u03bd\u03b1 \u03c5\u03c6\u03af\u03c3\u03c4\u03b1\u03c4\u03b1\u03b9, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03bf \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf\u03c5\u03c2 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03c4\u03bf\u03c5 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2." + "el": "\u0391\u03bd \u03c4\u03bf \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03b5\u03be\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af \u03bd\u03b1 \u03c5\u03c6\u03af\u03c3\u03c4\u03b1\u03c4\u03b1\u03b9, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03bf \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03c3\u03c4\u03bf\u03c5\u03c2 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03c4\u03bf\u03c5 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2.", + "xh": "Ukuba le ngxaki iyaqhubeka, ungayichaza kubalawuli besistim.", + "zu": "Uma le nkinga iphikelela, ungayibika kubalawuli besistimu." } } diff --git a/modules/core/docs/authproc_languageadaptor.md b/modules/core/docs/authproc_languageadaptor.md index 1464b0540fd36905a3a5e485f065bd4d079d05f0..c6d681db8d651649c4b5788b1e39072ba63e5fe0 100644 --- a/modules/core/docs/authproc_languageadaptor.md +++ b/modules/core/docs/authproc_languageadaptor.md @@ -37,6 +37,6 @@ Custon attribute: 'authproc' => array( 50 => array( 'class' => 'core:LanguageAdaptor', - 'attributename' => 'lang', + 'attributename' => 'lang', ), ), diff --git a/modules/core/docs/authproc_php.md b/modules/core/docs/authproc_php.md index 66968eda1a7b9853c2a3b9eafacb784cd7e0d79b..b913d8fe6d242d613b82afe2d1728ac409c5b174 100644 --- a/modules/core/docs/authproc_php.md +++ b/modules/core/docs/authproc_php.md @@ -1,7 +1,7 @@ `core:PHP` ========== -This is a filter which makes it possible to run arbitrary PHP code to modify the attributes of an user. +This is a filter which makes it possible to run arbitrary PHP code to modify the attributes or state of an user. Parameters ---------- @@ -11,8 +11,14 @@ Parameters It must be `'core:PHP'`. `code` -: The PHP code that should be run. This code will have only one variable available: `$attributes`. +: The PHP code that should be run. This code will have two variables available: + +* `$attributes`. This is an associative array of attributes, and can be modified to add or remove attributes. + +* `$state`. + This is an associative array of request state. It can be modified to adjust data related to the authentication + such as desired NameId, requested Attributes, authnContextRef and many more. Examples -------- @@ -43,3 +49,10 @@ Create a random number variable: ); ', ), + +Force a specific NameIdFormat. Useful if an SP misbehaves and requests (or publishes) an incorrect NameId + + 90 => array( + 'class' => 'core:PHP', + 'code' => '$state["saml:NameIDFormat"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient";' + ), \ No newline at end of file diff --git a/modules/core/hooks/hook_frontpage.php b/modules/core/hooks/hook_frontpage.php index ea7aefd570013d0c1dce3a464a2a990424dabe07..d2b6eef9c0b15aa8d0020dd8cdd29472c1cf2edf 100644 --- a/modules/core/hooks/hook_frontpage.php +++ b/modules/core/hooks/hook_frontpage.php @@ -10,24 +10,24 @@ function core_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['links']['frontpage_welcome'] = array( + $links['links']['frontpage_welcome'] = [ 'href' => SimpleSAML\Module::getModuleURL('core/frontpage_welcome.php'), 'text' => '{core:frontpage:welcome}', 'shorttext' => '{core:frontpage:welcome}', - ); - $links['links']['frontpage_config'] = array( + ]; + $links['links']['frontpage_config'] = [ 'href' => SimpleSAML\Module::getModuleURL('core/frontpage_config.php'), 'text' => '{core:frontpage:configuration}', 'shorttext' => '{core:frontpage:configuration}', - ); - $links['links']['frontpage_auth'] = array( + ]; + $links['links']['frontpage_auth'] = [ 'href' => SimpleSAML\Module::getModuleURL('core/frontpage_auth.php'), 'text' => '{core:frontpage:auth}', 'shorttext' => '{core:frontpage:auth}', - ); - $links['links']['frontpage_federation'] = array( + ]; + $links['links']['frontpage_federation'] = [ 'href' => SimpleSAML\Module::getModuleURL('core/frontpage_federation.php'), 'text' => '{core:frontpage:federation}', 'shorttext' => '{core:frontpage:federation}', - ); + ]; } diff --git a/modules/core/hooks/hook_sanitycheck.php b/modules/core/hooks/hook_sanitycheck.php index 1dd97a96cdcc7289eb224c0b30f19d21c4a9cd7e..ef4af3049f99106c63bac2cbcad9d7f4a9fe578b 100644 --- a/modules/core/hooks/hook_sanitycheck.php +++ b/modules/core/hooks/hook_sanitycheck.php @@ -25,17 +25,17 @@ function core_hook_sanitycheck(&$hookinfo) $hookinfo['info'][] = '[core] In config.php technicalcontact_email is set properly'; } - if (version_compare(phpversion(), '5.4', '>=')) { + if (version_compare(phpversion(), '5.5', '>=')) { $hookinfo['info'][] = '[core] You are running a PHP version suitable for SimpleSAMLphp.'; } else { $hookinfo['errors'][] = '[core] You are running an old PHP installation. '. 'Please check the requirements for your SimpleSAMLphp version and upgrade.'; } - $info = array(); - $mihookinfo = array( + $info = []; + $mihookinfo = [ 'info' => &$info, - ); + ]; $availmodules = SimpleSAML\Module::getModules(); SimpleSAML\Module::callHooks('moduleinfo', $mihookinfo); foreach ($info as $mi => $i) { diff --git a/modules/core/lib/ACL.php b/modules/core/lib/ACL.php index 558bf94795a622bd87a702f41c6d5b3feea3eab1..2c682a3e08d6bfa8aab90ae4eadcdee1f95e8fdf 100644 --- a/modules/core/lib/ACL.php +++ b/modules/core/lib/ACL.php @@ -87,6 +87,7 @@ class ACL return false; } } + return false; } /** @@ -155,7 +156,7 @@ class ACL $attributeName = array_shift($rule); if (!array_key_exists($attributeName, $attributes)) { - $attributeValues = array(); + $attributeValues = []; } else { $attributeValues = $attributes[$attributeName]; } @@ -195,7 +196,7 @@ class ACL $attributeName = array_shift($rule); if (!array_key_exists($attributeName, $attributes)) { - $attributeValues = array(); + $attributeValues = []; } else { $attributeValues = $attributes[$attributeName]; } @@ -236,7 +237,7 @@ class ACL $attributeName = array_shift($rule); if (!array_key_exists($attributeName, $attributes)) { - $attributeValues = array(); + $attributeValues = []; } else { $attributeValues = $attributes[$attributeName]; } @@ -263,7 +264,7 @@ class ACL $attributeName = array_shift($rule); if (!array_key_exists($attributeName, $attributes)) { - $attributeValues = array(); + $attributeValues = []; } else { $attributeValues = $attributes[$attributeName]; } diff --git a/modules/core/lib/Auth/Process/AttributeAdd.php b/modules/core/lib/Auth/Process/AttributeAdd.php index 076287f9f98b4946e026b44d9f7dca07ae9ab8e4..deb3ac310c4f1e8d6d4152080473dacaadc39814 100644 --- a/modules/core/lib/Auth/Process/AttributeAdd.php +++ b/modules/core/lib/Auth/Process/AttributeAdd.php @@ -23,7 +23,7 @@ class AttributeAdd extends \SimpleSAML\Auth\ProcessingFilter * * Assiciative array of arrays. */ - private $attributes = array(); + private $attributes = []; /** * Initialize this filter. @@ -48,7 +48,7 @@ class AttributeAdd extends \SimpleSAML\Auth\ProcessingFilter } if (!is_array($values)) { - $values = array($values); + $values = [$values]; } foreach ($values as $value) { if (!is_string($value)) { diff --git a/modules/core/lib/Auth/Process/AttributeAlter.php b/modules/core/lib/Auth/Process/AttributeAlter.php index d17c74d295466971f803037257a977b49630ddc6..0d181a0d7cd45700556bd4d121cf4c90da087704 100644 --- a/modules/core/lib/Auth/Process/AttributeAlter.php +++ b/modules/core/lib/Auth/Process/AttributeAlter.php @@ -135,7 +135,7 @@ class AttributeAlter extends \SimpleSAML\Auth\ProcessingFilter if ($this->replace) { // replace the whole value foreach ($attributes[$this->subject] as &$value) { - $matches = array(); + $matches = []; if (preg_match($this->pattern, $value, $matches) > 0) { $new_value = $matches[0]; @@ -146,15 +146,15 @@ class AttributeAlter extends \SimpleSAML\Auth\ProcessingFilter if ($this->subject === $this->target) { $value = $new_value; } else { - $attributes[$this->target] = array($new_value); + $attributes[$this->target] = [$new_value]; } } } } elseif ($this->remove) { // remove the whole value - $removedAttrs = array(); + $removedAttrs = []; foreach ($attributes[$this->subject] as $value) { - $matches = array(); + $matches = []; if (preg_match($this->pattern, $value, $matches) > 0) { $removedAttrs[] = $value; } diff --git a/modules/core/lib/Auth/Process/AttributeCopy.php b/modules/core/lib/Auth/Process/AttributeCopy.php index 127eafec6ad2d8d0ad22983ed24edded4325b958..1b54da17ae14826a5c6abe82c83b87fef681c6a3 100644 --- a/modules/core/lib/Auth/Process/AttributeCopy.php +++ b/modules/core/lib/Auth/Process/AttributeCopy.php @@ -23,7 +23,7 @@ class AttributeCopy extends \SimpleSAML\Auth\ProcessingFilter /** * Assosiative array with the mappings of attribute names. */ - private $map = array(); + private $map = []; /** * Initialize this filter, parse configuration diff --git a/modules/core/lib/Auth/Process/AttributeLimit.php b/modules/core/lib/Auth/Process/AttributeLimit.php index f5ba3aaca3b28c9a36e4396a9d1180449bedf2b4..b90d1b0cdedad5ec6f3d34264254d30ec8128744 100644 --- a/modules/core/lib/Auth/Process/AttributeLimit.php +++ b/modules/core/lib/Auth/Process/AttributeLimit.php @@ -14,7 +14,7 @@ class AttributeLimit extends \SimpleSAML\Auth\ProcessingFilter /** * List of attributes which this filter will allow through. */ - private $allowedAttributes = array(); + private $allowedAttributes = []; /** * Whether the 'attributes' option in the metadata takes precedence. @@ -134,7 +134,7 @@ class AttributeLimit extends \SimpleSAML\Auth\ProcessingFilter private function filterAttributeValues(array $values, array $allowedConfigValues) { if (array_key_exists('regex', $allowedConfigValues) && $allowedConfigValues['regex'] === true) { - $matchedValues = array(); + $matchedValues = []; foreach ($allowedConfigValues as $option => $pattern) { if (!is_int($option)) { // Ignore any configuration options in $allowedConfig. e.g. regex=>true diff --git a/modules/core/lib/Auth/Process/AttributeMap.php b/modules/core/lib/Auth/Process/AttributeMap.php index 42ab192631b2b3fed5e3ec4ce40b3e6aac82135e..cedde6877a536992a6b8e6c312f88f1b487efa85 100644 --- a/modules/core/lib/Auth/Process/AttributeMap.php +++ b/modules/core/lib/Auth/Process/AttributeMap.php @@ -14,7 +14,7 @@ class AttributeMap extends \SimpleSAML\Auth\ProcessingFilter /** * Associative array with the mappings of attribute names. */ - private $map = array(); + private $map = []; /** * Should attributes be duplicated or renamed. @@ -35,7 +35,7 @@ class AttributeMap extends \SimpleSAML\Auth\ProcessingFilter parent::__construct($config, $reserved); assert(is_array($config)); - $mapFiles = array(); + $mapFiles = []; foreach ($config as $origName => $newName) { if (is_int($origName)) { @@ -117,7 +117,7 @@ class AttributeMap extends \SimpleSAML\Auth\ProcessingFilter assert(is_array($request)); assert(array_key_exists('Attributes', $request)); - $mapped_attributes = array(); + $mapped_attributes = []; foreach ($request['Attributes'] as $name => $values) { if (array_key_exists($name, $this->map)) { diff --git a/modules/core/lib/Auth/Process/AttributeRealm.php b/modules/core/lib/Auth/Process/AttributeRealm.php index 866dbb0dcfd70cd91530f0c3d6f241aeb3c2ed2e..f6366e9fe66abb5cd0cd219d173dae82ba3cc7fc 100644 --- a/modules/core/lib/Auth/Process/AttributeRealm.php +++ b/modules/core/lib/Auth/Process/AttributeRealm.php @@ -53,6 +53,6 @@ class AttributeRealm extends \SimpleSAML\Auth\ProcessingFilter if (count($decomposed) !== 2) { return; } - $request['Attributes'][$this->attributename] = array($decomposed[1]); + $request['Attributes'][$this->attributename] = [$decomposed[1]]; } } diff --git a/modules/core/lib/Auth/Process/AttributeValueMap.php b/modules/core/lib/Auth/Process/AttributeValueMap.php index 15dce8e16da93f3f09110e2a6c9e54969b578ac6..9979ea66f27b8d5768c89c122ec10dddbc6be795 100644 --- a/modules/core/lib/Auth/Process/AttributeValueMap.php +++ b/modules/core/lib/Auth/Process/AttributeValueMap.php @@ -24,7 +24,7 @@ class AttributeValueMap extends \SimpleSAML\Auth\ProcessingFilter /** * The required $sourceattribute values and target affiliations. */ - private $values = array(); + private $values = []; /** * Whether $sourceattribute should be kept or not. @@ -114,12 +114,12 @@ class AttributeValueMap extends \SimpleSAML\Auth\ProcessingFilter } $sourceattribute = $attributes[$this->sourceattribute]; - $targetvalues = array(); + $targetvalues = []; if (is_array($sourceattribute)) { foreach ($this->values as $value => $values) { if (!is_array($values)) { - $values = array($values); + $values = [$values]; } if (count(array_intersect($values, $sourceattribute)) > 0) { \SimpleSAML\Logger::debug("AttributeValueMap: intersect match for '$value'"); diff --git a/modules/core/lib/Auth/Process/Cardinality.php b/modules/core/lib/Auth/Process/Cardinality.php index 204de7f6f4b06a1cba609e9fc5d5a938d5a115c7..ac4f1aad1edca4ca87a0ab54c71b40fe28fe9902 100644 --- a/modules/core/lib/Auth/Process/Cardinality.php +++ b/modules/core/lib/Auth/Process/Cardinality.php @@ -2,7 +2,7 @@ namespace SimpleSAML\Module\core\Auth\Process; -use SimpleSAML\Utils\HTTPAdapter; +use SimpleSAML\Utils\HttpAdapter; /** * Filter to ensure correct cardinality of attributes @@ -14,10 +14,10 @@ use SimpleSAML\Utils\HTTPAdapter; class Cardinality extends \SimpleSAML\Auth\ProcessingFilter { /** @var array Associative array with the mappings of attribute names. */ - private $cardinality = array(); + private $cardinality = []; /** @var array Entities that should be ignored */ - private $ignoreEntities = array(); + private $ignoreEntities = []; /** @var HTTPAdapter */ private $http; @@ -30,12 +30,12 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter * @param HTTPAdapter $http HTTP utility service (handles redirects). * @throws \SimpleSAML\Error\Exception */ - public function __construct($config, $reserved, HTTPAdapter $http = null) + public function __construct($config, $reserved, HttpAdapter $http = null) { parent::__construct($config, $reserved); assert(is_array($config)); - $this->http = $http ? : new HTTPAdapter(); + $this->http = $http ? : new HttpAdapter(); foreach ($config as $attribute => $rules) { if ($attribute === '%ignoreEntities') { @@ -46,7 +46,7 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter if (!is_string($attribute)) { throw new \SimpleSAML\Error\Exception('Invalid attribute name: '.var_export($attribute, true)); } - $this->cardinality[$attribute] = array('warn' => false); + $this->cardinality[$attribute] = ['warn' => false]; /* allow either positional or name-based parameters */ if (isset($rules[0])) { @@ -118,7 +118,7 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter continue; } if (!is_array($v)) { - $v = array($v); + $v = [$v]; } /* minimum cardinality */ @@ -134,10 +134,10 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter ) ); } else { - $request['core:cardinality:errorAttributes'][$k] = array( + $request['core:cardinality:errorAttributes'][$k] = [ count($v), $this->cardinality[$k]['_expr'] - ); + ]; } continue; } @@ -155,10 +155,10 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter ) ); } else { - $request['core:cardinality:errorAttributes'][$k] = array( + $request['core:cardinality:errorAttributes'][$k] = [ count($v), $this->cardinality[$k]['_expr'] - ); + ]; } continue; } @@ -176,10 +176,10 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter $entityid )); } else { - $request['core:cardinality:errorAttributes'][$k] = array( + $request['core:cardinality:errorAttributes'][$k] = [ 0, $this->cardinality[$k]['_expr'] - ); + ]; } } @@ -187,7 +187,7 @@ class Cardinality extends \SimpleSAML\Auth\ProcessingFilter if (array_key_exists('core:cardinality:errorAttributes', $request)) { $id = \SimpleSAML\Auth\State::saveState($request, 'core:cardinality'); $url = \SimpleSAML\Module::getModuleURL('core/cardinality_error.php'); - $this->http->redirectTrustedURL($url, array('StateId' => $id)); + $this->http->redirectTrustedURL($url, ['StateId' => $id]); return; } } diff --git a/modules/core/lib/Auth/Process/CardinalitySingle.php b/modules/core/lib/Auth/Process/CardinalitySingle.php index ce4b12aac38e058ab61477456ebf3380ebd90c26..ac251319beef8ffe40c2e15e3da4db498bd4798b 100644 --- a/modules/core/lib/Auth/Process/CardinalitySingle.php +++ b/modules/core/lib/Auth/Process/CardinalitySingle.php @@ -17,19 +17,19 @@ use SimpleSAML\Utils\HttpAdapter; class CardinalitySingle extends \SimpleSAML\Auth\ProcessingFilter { /** @var array Attributes that should be single-valued or we generate an error */ - private $singleValued = array(); + private $singleValued = []; /** @var array Attributes for which the first value should be taken */ - private $firstValue = array(); + private $firstValue = []; /** @var array Attributes that can be flattened to a single value */ - private $flatten = array(); + private $flatten = []; /** @var string Separator for flattened value */ private $flattenWith = ';'; /** @var array Entities that should be ignored */ - private $ignoreEntities = array(); + private $ignoreEntities = []; /** @var HTTPAdapter */ private $http; @@ -41,12 +41,12 @@ class CardinalitySingle extends \SimpleSAML\Auth\ProcessingFilter * @param mixed $reserved For future use. * @param HTTPAdapter $http HTTP utility service (handles redirects). */ - public function __construct($config, $reserved, HTTPAdapter $http = null) + public function __construct($config, $reserved, HttpAdapter $http = null) { parent::__construct($config, $reserved); assert(is_array($config)); - $this->http = $http ? : new HTTPAdapter(); + $this->http = $http ? : new HttpAdapter(); if (array_key_exists('singleValued', $config)) { $this->singleValued = $config['singleValued']; @@ -100,15 +100,15 @@ class CardinalitySingle extends \SimpleSAML\Auth\ProcessingFilter } if (in_array($k, $this->singleValued)) { - $request['core:cardinality:errorAttributes'][$k] = array(count($v), '0 ≤ n ≤ 1'); + $request['core:cardinality:errorAttributes'][$k] = [count($v), '0 ≤ n ≤ 1']; continue; } if (in_array($k, $this->firstValue)) { - $request['Attributes'][$k] = array(array_shift($v)); + $request['Attributes'][$k] = [array_shift($v)]; continue; } if (in_array($k, $this->flatten)) { - $request['Attributes'][$k] = array(implode($this->flattenWith, $v)); + $request['Attributes'][$k] = [implode($this->flattenWith, $v)]; continue; } } @@ -117,7 +117,7 @@ class CardinalitySingle extends \SimpleSAML\Auth\ProcessingFilter if (array_key_exists('core:cardinality:errorAttributes', $request)) { $id = \SimpleSAML\Auth\State::saveState($request, 'core:cardinality'); $url = \SimpleSAML\Module::getModuleURL('core/cardinality_error.php'); - $this->http->redirectTrustedURL($url, array('StateId' => $id)); + $this->http->redirectTrustedURL($url, ['StateId' => $id]); return; } } diff --git a/modules/core/lib/Auth/Process/GenerateGroups.php b/modules/core/lib/Auth/Process/GenerateGroups.php index c8069eb311df77dccc1ec8d8ea1a1dd7db7a7d58..ab9d15aad0498e93e46fc9f4e2552455b9529912 100644 --- a/modules/core/lib/Auth/Process/GenerateGroups.php +++ b/modules/core/lib/Auth/Process/GenerateGroups.php @@ -30,11 +30,11 @@ class GenerateGroups extends \SimpleSAML\Auth\ProcessingFilter if (count($config) === 0) { // Use default groups - $this->generateGroupsFrom = array( + $this->generateGroupsFrom = [ 'eduPersonAffiliation', 'eduPersonOrgUnitDN', 'eduPersonEntitlement', - ); + ]; } else { // Validate configuration foreach ($config as $attributeName) { @@ -57,7 +57,7 @@ class GenerateGroups extends \SimpleSAML\Auth\ProcessingFilter assert(is_array($request)); assert(array_key_exists('Attributes', $request)); - $groups = array(); + $groups = []; $attributes = &$request['Attributes']; $realm = self::getRealm($attributes); diff --git a/modules/core/lib/Auth/Process/LanguageAdaptor.php b/modules/core/lib/Auth/Process/LanguageAdaptor.php index bcd4210fb5a99bcfbba2bd74ac69c305b8344a1a..771fb6357216575621aeaa067b77036e77c34e3a 100644 --- a/modules/core/lib/Auth/Process/LanguageAdaptor.php +++ b/modules/core/lib/Auth/Process/LanguageAdaptor.php @@ -62,7 +62,7 @@ class LanguageAdaptor extends \SimpleSAML\Auth\ProcessingFilter \SimpleSAML\Locale\Language::setLanguageCookie($attrlang); } elseif (!isset($attrlang) && isset($lang)) { // Language set in cookie, but not in attribute. Update attribute - $request['Attributes'][$this->langattr] = array($lang); + $request['Attributes'][$this->langattr] = [$lang]; } } } diff --git a/modules/core/lib/Auth/Process/PHP.php b/modules/core/lib/Auth/Process/PHP.php index f3c9a293eefecbdca16227ea71724cbfcf827f92..cd424c76e9a01e1b4705eb217014eab2c9ec5ed1 100644 --- a/modules/core/lib/Auth/Process/PHP.php +++ b/modules/core/lib/Auth/Process/PHP.php @@ -49,9 +49,12 @@ class PHP extends \SimpleSAML\Auth\ProcessingFilter assert(is_array($request)); assert(array_key_exists('Attributes', $request)); - $function = function (/** @scrutinizer ignore-unused */ &$attributes) { + $function = function ( + /** @scrutinizer ignore-unused */ &$attributes, + /** @scrutinizer ignore-unused */ &$state + ) { eval($this->code); }; - $function($request['Attributes']); + $function($request['Attributes'], $request); } } diff --git a/modules/core/lib/Auth/Process/ScopeAttribute.php b/modules/core/lib/Auth/Process/ScopeAttribute.php index 46605783afcfdb66745c556635e2ea426e8a195a..1db7d3c18a1bf3dd3f1f4cc1a3d1cc1bd090d7d7 100644 --- a/modules/core/lib/Auth/Process/ScopeAttribute.php +++ b/modules/core/lib/Auth/Process/ScopeAttribute.php @@ -78,7 +78,7 @@ class ScopeAttribute extends \SimpleSAML\Auth\ProcessingFilter } if (!isset($attributes[$this->targetAttribute])) { - $attributes[$this->targetAttribute] = array(); + $attributes[$this->targetAttribute] = []; } if ($this->onlyIfEmpty && count($attributes[$this->targetAttribute]) > 0) { diff --git a/modules/core/lib/Auth/Process/ScopeFromAttribute.php b/modules/core/lib/Auth/Process/ScopeFromAttribute.php index 8497fbb058c42eb9c469155c8409ff4ba877181c..b043de9fd86a0c58ba16e8d332b730c26ded02f6 100644 --- a/modules/core/lib/Auth/Process/ScopeFromAttribute.php +++ b/modules/core/lib/Auth/Process/ScopeFromAttribute.php @@ -80,7 +80,7 @@ class ScopeFromAttribute extends \SimpleSAML\Auth\ProcessingFilter $scopeIndex = strrpos($sourceAttrVal, '@'); if ($scopeIndex !== false) { - $attributes[$this->targetAttribute] = array(); + $attributes[$this->targetAttribute] = []; $scope = substr($sourceAttrVal, $scopeIndex + 1); $attributes[$this->targetAttribute][] = $scope; \SimpleSAML\Logger::debug('ScopeFromAttribute: Inserted new attribute '. diff --git a/modules/core/lib/Auth/Process/TargetedID.php b/modules/core/lib/Auth/Process/TargetedID.php index 99ebdc04e36d16cb5d892bdfe387a2ca5e3af399..5ea29bec74a42d27d769e0c8c412f99b240761c8 100644 --- a/modules/core/lib/Auth/Process/TargetedID.php +++ b/modules/core/lib/Auth/Process/TargetedID.php @@ -139,7 +139,7 @@ class TargetedID extends \SimpleSAML\Auth\ProcessingFilter $nameId = $uid; } - $state['Attributes']['eduPersonTargetedID'] = array($nameId); + $state['Attributes']['eduPersonTargetedID'] = [$nameId]; } /** diff --git a/modules/core/lib/Auth/Process/WarnShortSSOInterval.php b/modules/core/lib/Auth/Process/WarnShortSSOInterval.php index 6e6d392b9cc998292fc20e577392abad72a4c8fe..1d488b9db935886a2a2e2359ffddaf10ef3e4e56 100644 --- a/modules/core/lib/Auth/Process/WarnShortSSOInterval.php +++ b/modules/core/lib/Auth/Process/WarnShortSSOInterval.php @@ -48,6 +48,6 @@ class WarnShortSSOInterval extends \SimpleSAML\Auth\ProcessingFilter // Save state and redirect $id = \SimpleSAML\Auth\State::saveState($state, 'core:short_sso_interval'); $url = \SimpleSAML\Module::getModuleURL('core/short_sso_interval.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/core/lib/Auth/Source/AdminPassword.php b/modules/core/lib/Auth/Source/AdminPassword.php index e7e11874643880646d18dd2877932d6aa77841ef..45ce4c2696bb2514f9b579fcdf29f8c4dbcc1431 100644 --- a/modules/core/lib/Auth/Source/AdminPassword.php +++ b/modules/core/lib/Auth/Source/AdminPassword.php @@ -60,6 +60,6 @@ class AdminPassword extends \SimpleSAML\Module\core\Auth\UserPassBase if (!\SimpleSAML\Utils\Crypto::pwValid($adminPassword, $password)) { throw new \SimpleSAML\Error\Error('WRONGUSERPASS'); } - return array('user' => array('admin')); + return ['user' => ['admin']]; } } diff --git a/modules/core/lib/Auth/UserPassBase.php b/modules/core/lib/Auth/UserPassBase.php index eb426d19d2af8841b46f57dd62fa3ed2aefd8f12..5f0ee4ffa33040da24c254c4f1ffe34fa691d031 100644 --- a/modules/core/lib/Auth/UserPassBase.php +++ b/modules/core/lib/Auth/UserPassBase.php @@ -217,7 +217,7 @@ abstract class UserPassBase extends \SimpleSAML\Auth\Source * state array as a parameter to the login form. */ $url = \SimpleSAML\Module::getModuleURL('core/loginuserpass.php'); - $params = array('AuthState' => $id); + $params = ['AuthState' => $id]; \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, $params); // The previous function never returns, so this code is never executed. diff --git a/modules/core/lib/Auth/UserPassOrgBase.php b/modules/core/lib/Auth/UserPassOrgBase.php index d7a718cd828724911c7007313c4db02af4d6fb2f..33168524c85c692c1f19fac1b3f08b684e3c3878 100644 --- a/modules/core/lib/Auth/UserPassOrgBase.php +++ b/modules/core/lib/Auth/UserPassOrgBase.php @@ -130,7 +130,7 @@ abstract class UserPassOrgBase extends \SimpleSAML\Auth\Source */ protected function setUsernameOrgMethod($usernameOrgMethod) { - assert(in_array($usernameOrgMethod, array('none', 'allow', 'force'), true)); + assert(in_array($usernameOrgMethod, ['none', 'allow', 'force'], true)); $this->usernameOrgMethod = $usernameOrgMethod; } @@ -205,7 +205,7 @@ abstract class UserPassOrgBase extends \SimpleSAML\Auth\Source $id = \SimpleSAML\Auth\State::saveState($state, self::STAGEID); $url = \SimpleSAML\Module::getModuleURL('core/loginuserpassorg.php'); - $params = array('AuthState' => $id); + $params = ['AuthState' => $id]; \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, $params); } diff --git a/modules/core/lib/Stats/Output/Log.php b/modules/core/lib/Stats/Output/Log.php index 41d04ddf7fc90ec0fec5011839d3deb33e138f8c..e3eff86663cac6955df4ff620944547578e4d415 100644 --- a/modules/core/lib/Stats/Output/Log.php +++ b/modules/core/lib/Stats/Output/Log.php @@ -24,7 +24,7 @@ class Log extends \SimpleSAML\Stats\Output public function __construct(\SimpleSAML\Configuration $config) { $logLevel = $config->getString('level', 'notice'); - $this->logger = array('\SimpleSAML\Logger', $logLevel); + $this->logger = ['\SimpleSAML\Logger', $logLevel]; if (!is_callable($this->logger)) { throw new \Exception('Invalid log level: '.var_export($logLevel, true)); } diff --git a/modules/core/lib/Storage/SQLPermanentStorage.php b/modules/core/lib/Storage/SQLPermanentStorage.php index 46da8682827afe5b5b8235f5ef85c93722ebb59a..4360d5e84ad015e37438810cdc61712a85aef9ee 100644 --- a/modules/core/lib/Storage/SQLPermanentStorage.php +++ b/modules/core/lib/Storage/SQLPermanentStorage.php @@ -73,10 +73,10 @@ class SQLPermanentStorage $query = "INSERT INTO data (key1, key2, type, created, updated, expire, value)". " VALUES(:key1, :key2, :type, :created, :updated, :expire, :value)"; $prepared = $this->db->prepare($query); - $data = array(':key1' => $key1, ':key2' => $key2, + $data = [':key1' => $key1, ':key2' => $key2, ':type' => $type, ':created' => time(), ':updated' => time(), ':expire' => $expire, - ':value' => serialize($value)); + ':value' => serialize($value)]; $prepared->execute($data); $results = $prepared->fetchAll(\PDO::FETCH_ASSOC); return $results; @@ -89,9 +89,9 @@ class SQLPermanentStorage $query = "UPDATE data SET updated = :updated, value = :value, ". "expire = :expire WHERE key1 = :key1 AND key2 = :key2 AND type = :type"; $prepared = $this->db->prepare($query); - $data = array(':key1' => $key1, ':key2' => $key2, + $data = [':key1' => $key1, ':key2' => $key2, ':type' => $type, ':updated' => time(), - ':expire' => $expire, ':value' => serialize($value)); + ':expire' => $expire, ':value' => serialize($value)]; $prepared->execute($data); $results = $prepared->fetchAll(\PDO::FETCH_ASSOC); return $results; @@ -130,7 +130,7 @@ class SQLPermanentStorage { $query = 'SELECT * FROM data WHERE type = :type AND key1 = :key1 AND key2 = :key2 LIMIT 1'; $prepared = $this->db->prepare($query); - $data = array(':type' => $type, ':key1' => $key1, ':key2' => $key2); + $data = [':type' => $type, ':key1' => $key1, ':key2' => $key2]; $prepared->execute($data); $results = $prepared->fetchAll(\PDO::FETCH_ASSOC); return (count($results) == 1); @@ -156,14 +156,14 @@ class SQLPermanentStorage public function getKeys($type = null, $key1 = null, $key2 = null, $whichKey = 'type') { - if (!in_array($whichKey, array('key1', 'key2', 'type'), true)) { + if (!in_array($whichKey, ['key1', 'key2', 'type'], true)) { throw new \Exception('Invalid key type'); } $conditions = $this->getCondition($type, $key1, $key2); $query = 'SELECT DISTINCT :whichKey FROM data WHERE '.$conditions; $prepared = $this->db->prepare($query); - $data = array('whichKey' => $whichKey); + $data = ['whichKey' => $whichKey]; $prepared->execute($data); $results = $prepared->fetchAll(\PDO::FETCH_ASSOC); @@ -171,7 +171,7 @@ class SQLPermanentStorage return null; } - $resarray = array(); + $resarray = []; foreach ($results as $key => $value) { $resarray[] = $value[$whichKey]; } @@ -182,7 +182,7 @@ class SQLPermanentStorage { $query = 'DELETE FROM data WHERE type = :type AND key1 = :key1 AND key2 = :key2'; $prepared = $this->db->prepare($query); - $data = array(':type' => $type, ':key1' => $key1, ':key2' => $key2); + $data = [':type' => $type, ':key1' => $key1, ':key2' => $key2]; $prepared->execute($data); $results = $prepared->fetchAll(\PDO::FETCH_ASSOC); return (count($results) == 1); @@ -192,7 +192,7 @@ class SQLPermanentStorage { $query = "DELETE FROM data WHERE expire IS NOT NULL AND expire < :expire"; $prepared = $this->db->prepare($query); - $data = array(':expire' => time()); + $data = [':expire' => time()]; $prepared->execute($data); return $prepared->rowCount(); } @@ -202,7 +202,7 @@ class SQLPermanentStorage */ private function getCondition($type = null, $key1 = null, $key2 = null) { - $conditions = array(); + $conditions = []; if (!is_null($type)) { $conditions[] = "type = ".$this->db->quote($type); } diff --git a/modules/core/locales/en/LC_MESSAGES/core.po b/modules/core/locales/en/LC_MESSAGES/core.po index 470d08a3df25530f15743a4499ff3e4a06679917..b7c59dcf45e2be9c8bc6c74ce8ca5c2e34e7f0db 100644 --- a/modules/core/locales/en/LC_MESSAGES/core.po +++ b/modules/core/locales/en/LC_MESSAGES/core.po @@ -21,6 +21,9 @@ msgstr "PHP info" msgid "{core:no_state:report_text}" msgstr "If this problem persists, you can report it to the system administrators." +msgid "{core:no_state:cause_badlink}" +msgstr "The link used to get here was bad, perhaps a bookmark." + msgid "{core:no_state:cause_backforward}" msgstr "Using the back and forward buttons in the web browser." @@ -81,6 +84,9 @@ msgstr "Sanity check of your SimpleSAMLphp setup" msgid "{core:frontpage:link_diagnostics}" msgstr "Diagnostics on hostname, port and protocol" +msgid "{core:no_state:suggestion_badlink}" +msgstr "Check that the link you used to access the web site is correct." + msgid "{core:no_state:suggestion_goback}" msgstr "Go back to the previous page and try again." diff --git a/modules/core/locales/nl/LC_MESSAGES/core.po b/modules/core/locales/nl/LC_MESSAGES/core.po index d6404e871148310612fc4a7185ecf0a4ccd2b3b2..425e4712d94cdf946746eff05cd7c8329b226908 100644 --- a/modules/core/locales/nl/LC_MESSAGES/core.po +++ b/modules/core/locales/nl/LC_MESSAGES/core.po @@ -22,7 +22,7 @@ msgid "{core:no_state:report_text}" msgstr "If dit probleem behoud, dan kun je het melden aan de systeem beheerders." msgid "{core:no_state:cause_backforward}" -msgstr "Gebruik de Volgende en Terug knoppen in de web browser." +msgstr "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser." msgid "{core:no_metadata:not_found_for}" msgstr "De metadata voor de volgende entity kon niet gevonden worden:" @@ -60,6 +60,9 @@ msgstr "Installatie van SimpleSAMLphp" msgid "{core:frontpage:link_diagnostics}" msgstr "Inspectie op hostnaam, poort en protocol" +msgid "{core:no_state:suggestion_badlink}" +msgstr "Controleer of u de juiste link gebruikt om de website te benaderen." + msgid "{core:no_state:suggestion_goback}" msgstr "Ga terug naar de vorige pagina, en probeer opnieuw." @@ -211,6 +214,9 @@ msgstr "Federatie" msgid "{core:frontpage:required_radius}" msgstr "Vereist voor Radius" +msgid "{core:no_state:cause_badlink}" +msgstr "Verkeerde link gebruikt, bijvoorbeeld een bookmark (bladwijzer)." + msgid "{core:no_state:cause_openbrowser}" msgstr "Web browser geopend met tabs opgeslagen van de vorige sessie." @@ -348,7 +354,7 @@ msgid "Configure Shibboleth 1.3 SP to work with SimpleSAMLphp IdP" msgstr "Configureer een Shibboleth 1.3 SP voor de SimpleSAMLphp IdP" msgid "Using the back and forward buttons in the web browser." -msgstr "Gebruik de Volgende en Terug knoppen in de web browser." +msgstr "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser." msgid "" "You are running an outdated version of SimpleSAMLphp. Please update to <a" diff --git a/modules/core/locales/xh/LC_MESSAGES/core.po b/modules/core/locales/xh/LC_MESSAGES/core.po new file mode 100644 index 0000000000000000000000000000000000000000..93b8bd5be62877e121a03446b1ef0702944c7880 --- /dev/null +++ b/modules/core/locales/xh/LC_MESSAGES/core.po @@ -0,0 +1,97 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{core:cardinality:cardinality_text}" +msgstr "" +"Uphawu olunye okanye olungakumbi olunikelwe ngumboonelei wesazisi sakho " +"aluqulethanga inani lamaxabiso alindelekileyo." + +msgid "{core:no_metadata:suggestion_developer}" +msgstr "" +"Ukuba ungumvelisi osebenzisa isisombululo sokusayina ungene kanye, " +"unengxaki nolungiselelo lwe-metadata. Qinisekisa ukuba i-metadata " +"ilungiselelwe ngokuchanekileyo kuzo zombini umbonelei wesazisi " +"nomboneleli wenkonzo." + +msgid "{core:no_cookie:retry}" +msgstr "Zama kwakhona" + +msgid "{core:no_cookie:description}" +msgstr "" +"Ubonakala uzenze azasebenza iikhuki kwibhrawuza yakho. Nceda ujonge " +"iisetingi ezikwibhrawuza yakho, uzame kwakhona." + +msgid "{core:cardinality:problematic_attributes}" +msgstr "Iimpawu eziyingxaki zezi:" + +msgid "{core:no_state:cause_nocookie}" +msgstr "Iikhuki zisenokwenziwa zingasebenzi kwibhrawuza yewebhu." + +msgid "{core:no_state:report_header}" +msgstr "Chaza le mpazamo" + +msgid "{core:no_state:causes}" +msgstr "Le mpazamo isenokuba ibangelwe:" + +msgid "{core:no_state:description}" +msgstr "Asikwazanga ukufumana inkcazelo yobume yesicelo sangoku." + +msgid "{core:no_state:report_text}" +msgstr "Ukuba le ngxaki iyaqhubeka, ungayichaza kubalawuli besistim." + +msgid "{core:no_metadata:header}" +msgstr "I-Metadata ayifunyenwanga" + +msgid "{core:no_metadata:config_problem}" +msgstr "" +"Kusenokwenzeka yingxaki yolungiselelo kumboneleli wenkonzo okanye " +"umboneleli wesazisi." + +msgid "{core:no_state:header}" +msgstr "Inkcazelo yobume ilahlekile" + +msgid "{core:no_metadata:suggestion_user_link}" +msgstr "" +"Ukuba ngaba ungumsebenzisi ofumene le mpazamo emva kokulandela ilinki " +"kwisayithi, ufanele uchaze le mpazamo kumnini walo sayithi." + +msgid "{core:no_state:suggestion_goback}" +msgstr "Buyela emva kwikhasi elidlulileyo uzame kwakhona." + +msgid "{core:cardinality:cardinality_header}" +msgstr "Iimpawu Ezingachanekanga" + +msgid "{core:no_state:cause_openbrowser}" +msgstr "Kuvulwe ibhrawuza yewebhu ngeethebhu eziseyivwe kwiseshoni edlulileyo." + +msgid "{core:no_state:suggestion_closebrowser}" +msgstr "Vala ibhrawuza yewebhu, uzame kwakhona." + +msgid "{core:no_metadata:not_found_for}" +msgstr "Asikwazanga ukufumana imetadata ye-entithi:" + +msgid "{core:no_cookie:header}" +msgstr "Ikhuki engekhoyo" + +msgid "{core:cardinality:got_want}" +msgstr "kukho amaxabiso e-%GOT%, sifuna %WANT%" + +msgid "{core:no_state:suggestions}" +msgstr "Iingcebiso zokulungisa le ngxaki:" + +msgid "{core:no_state:cause_backforward}" +msgstr "Ukusebenzisa amaqhosha okuya emva naphambili kwibhrawuza yewebhu." + diff --git a/modules/core/locales/zu/LC_MESSAGES/core.po b/modules/core/locales/zu/LC_MESSAGES/core.po new file mode 100644 index 0000000000000000000000000000000000000000..f4f1555b6492e1110d45f43f6fd8a6e546dd5821 --- /dev/null +++ b/modules/core/locales/zu/LC_MESSAGES/core.po @@ -0,0 +1,98 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{core:cardinality:cardinality_text}" +msgstr "" +"Isici esisodwa noma ngaphezulu esinikezwe umhlinzeki wakho kamazisi " +"asizange siqukathe inani lezinombolo ezilindelwe." + +msgid "{core:no_metadata:suggestion_developer}" +msgstr "" +"Uma ungunjiniyela osebenzisa isixazululo sokusayinela ukungena esisodwa, " +"unenkinga ngomiso lwemethadatha. Qinisekisa ukuthi imethadatha imiswe " +"ngendlela efanele kokubili kumhlinzeki womazisi nomhlinzeki wesevisi." + +msgid "{core:no_cookie:retry}" +msgstr "Zama futhi" + +msgid "{core:no_cookie:description}" +msgstr "" +"Kubonakala sengathi uyekise amakhukhi kusiphequluli sakho. Sicela uhlole " +"amasethingi kusiphequluli sakho, bese uzame futhi." + +msgid "{core:cardinality:problematic_attributes}" +msgstr "Isici(izici) esiyinkinga sithi:" + +msgid "{core:no_state:cause_nocookie}" +msgstr "Amakhukhi kungenzeka ukuthi ayekisiwe kusiphequluli sewebhu." + +msgid "{core:no_state:report_header}" +msgstr "Bika leli phutha" + +msgid "{core:no_state:causes}" +msgstr "Leli phutha kungenzeka libangelwa ukuthi:" + +msgid "{core:no_state:description}" +msgstr "Asikwazanga ukuthola ulwazi lwesifunda lwesicelo samanje." + +msgid "{core:no_state:report_text}" +msgstr "Uma le nkinga iphikelela, ungayibika kubalawuli besistimu." + +msgid "{core:no_metadata:header}" +msgstr "Imethadatha ayitholakali" + +msgid "{core:no_metadata:config_problem}" +msgstr "" +"Lokhu kungenzeka ukuthi kubangelwa inkinga yomiso yomhlinzeki wesevisi " +"noma umhlinzeki kamazisi." + +msgid "{core:no_state:header}" +msgstr "Ulwazi lwesifunda lulahlekile" + +msgid "{core:no_metadata:suggestion_user_link}" +msgstr "" +"Uma ungumsebenzisi othole leli phutha ngemva kokulandela ilinki " +"ekusayithi, kufanele ubike leli phutha kumnikazi waleyo sayithi." + +msgid "{core:no_state:suggestion_goback}" +msgstr "Buyela emuva ekhasini langaphambilini bese uzame futhi." + +msgid "{core:cardinality:cardinality_header}" +msgstr "Izici Ezingalungile" + +msgid "{core:no_state:cause_openbrowser}" +msgstr "" +"Kuvulwe isiphequluli sewebhu ngamathebhu alondolozwe kuseshini " +"yangaphambilini." + +msgid "{core:no_state:suggestion_closebrowser}" +msgstr "Vala isiphequluli sewebhu, bese uzame futhi." + +msgid "{core:no_metadata:not_found_for}" +msgstr "Asikwazanga ukuthola imethadatha yenhlangano:" + +msgid "{core:no_cookie:header}" +msgstr "Ikhukhi engatholakali" + +msgid "{core:cardinality:got_want}" +msgstr "uthole amanani angu-%GOT%, ufuna %WANT%" + +msgid "{core:no_state:suggestions}" +msgstr "Iziphakamiso zokuxazulula le nkinga:" + +msgid "{core:no_state:cause_backforward}" +msgstr "Ukusebenzisa izinkinobho ezithi emuva naphambili kusiphequluli sewebhu." + diff --git a/modules/core/templates/cardinality_error.tpl.php b/modules/core/templates/cardinality_error.tpl.php index 036f06a675a570b72a2633381955d4b71ba53bc0..6dd78aa1b6168858a14063c815525b32fd2cba22 100644 --- a/modules/core/templates/cardinality_error.tpl.php +++ b/modules/core/templates/cardinality_error.tpl.php @@ -25,7 +25,7 @@ foreach ($this->data['cardinalityErrorAttributes'] as $attr => $v) { echo '<dt>'.$attr.'</td><dd>'; echo $this->t( '{core:cardinality:got_want}', - array('%GOT%' => $v[0], '%WANT%' => htmlspecialchars($v[1])) + ['%GOT%' => $v[0], '%WANT%' => htmlspecialchars($v[1])] ); echo '</dd></tr>'; } diff --git a/modules/core/templates/frontpage_federation.tpl.php b/modules/core/templates/frontpage_federation.tpl.php index 2516c065a520eb446bcca15940dab780a52763d1..6bdce021115624cd0b38451de208c217e64dc1a3 100644 --- a/modules/core/templates/frontpage_federation.tpl.php +++ b/modules/core/templates/frontpage_federation.tpl.php @@ -51,7 +51,7 @@ if (is_array($this->data['metaentries']['remote']) && count($this->data['metaent htmlspecialchars( SimpleSAML\Module::getModuleURL( 'core/show_metadata.php', - array('entityid' => $entry['entityid'], 'set' => $setkey) + ['entityid' => $entry['entityid'], 'set' => $setkey] ) ).'">'); if (!empty($entry['name'])) { diff --git a/modules/core/templates/loginuserpass.twig b/modules/core/templates/loginuserpass.twig index f474a339cfe0b82ec00bdbf8eeafbd7a18de1e0b..17646506daa9672b3aff822a2c37d267d1124c32 100644 --- a/modules/core/templates/loginuserpass.twig +++ b/modules/core/templates/loginuserpass.twig @@ -35,11 +35,6 @@ <form class="pure-form pure-form-aligned center-form" action="?" method="post" name="f"> <div class="form-align"> - <div class="show-for-medium v-center-right"> - <img class="pure-img" src="/{{ baseurlpath }}resources/icons/experience/gtk-dialog-authentication.48x48.png" - alt=""/> - </div> - <div class="pure-control-group"> <label for="username">{{ 'Username'|trans }}</label> <input id="username" {{ forceUsername ? 'disabled="disabled"' }} placeholder="{{ username }}" type="text" name="username" class="edge" diff --git a/modules/core/templates/logout-iframe.php b/modules/core/templates/logout-iframe.php index 59e6ae770cbd24e7e1b366dee5deff94e9a6478e..54ca2c1829d135cef464a64a055d7aa965443f67 100644 --- a/modules/core/templates/logout-iframe.php +++ b/modules/core/templates/logout-iframe.php @@ -5,24 +5,24 @@ $type = $this->data['type']; $from = $this->data['from']; $SPs = $this->data['SPs']; -$stateImage = array( +$stateImage = [ 'unsupported' => '/'.$this->data['baseurlpath'].'resources/icons/silk/delete.png', 'completed' => '/'.$this->data['baseurlpath'].'resources/icons/silk/accept.png', 'onhold' => '/'.$this->data['baseurlpath'].'resources/icons/bullet16_grey.png', 'inprogress' => '/'.$this->data['baseurlpath'].'resources/progress.gif', 'failed' => '/'.$this->data['baseurlpath'].'resources/icons/silk/exclamation.png', -); +]; -$stateText = array( +$stateText = [ 'unsupported' => '', 'completed' => $this->t('{logout:completed}'), 'onhold' => '', 'inprogress' => $this->t('{logout:progress}'), 'failed' => $this->t('{logout:failed}'), -); +]; -$spStatus = array(); -$spTimeout = array(); +$spStatus = []; +$spTimeout = []; $nFailed = 0; $nProgress = 0; foreach ($SPs as $assocId => $sp) { @@ -78,7 +78,7 @@ if ($from !== null) { echo '<div><img style="float: left; margin-right: 12px" src="/'.$this->data['baseurlpath']. 'resources/icons/checkmark.48x48.png" alt="Successful logout" />'; echo '<p style="padding-top: 16px; ">'. - $this->t('{logout:loggedoutfrom}', array('%SP%' => '<strong>'.htmlspecialchars($from).'</strong>')).'</p>'; + $this->t('{logout:loggedoutfrom}', ['%SP%' => '<strong>'.htmlspecialchars($from).'</strong>']).'</p>'; echo '<p style="height: 0px; clear: left;"></p></div>'; } @@ -117,7 +117,7 @@ foreach ($SPs as $assocId => $sp) { } if (isset($from)) { - $logoutCancelText = $this->t('{logout:logout_only}', array('%SP%' => htmlspecialchars($from))); + $logoutCancelText = $this->t('{logout:logout_only}', ['%SP%' => htmlspecialchars($from)]); } else { $logoutCancelText = $this->t('{logout:no}'); } diff --git a/modules/core/templates/no_state.tpl.php b/modules/core/templates/no_state.tpl.php index 01ea6db789e94678cd97d8c384909037c5afdf71..1327a4b2dbf7e1b19151e75699517ae65c9c64d1 100644 --- a/modules/core/templates/no_state.tpl.php +++ b/modules/core/templates/no_state.tpl.php @@ -2,12 +2,14 @@ echo '<h3>'.$this->t('{core:no_state:suggestions}').'</h3>'; echo '<ul>'; +echo '<li>'.$this->t('{core:no_state:suggestion_badlink}').'</li>'; echo '<li>'.$this->t('{core:no_state:suggestion_goback}').'</li>'; echo '<li>'.$this->t('{core:no_state:suggestion_closebrowser}').'</li>'; echo '</ul>'; echo '<h3>'.$this->t('{core:no_state:causes}').'</h3>'; echo '<ul>'; +echo '<li>'.$this->t('{core:no_state:cause_badlink}').'</li>'; echo '<li>'.$this->t('{core:no_state:cause_backforward}').'</li>'; echo '<li>'.$this->t('{core:no_state:cause_openbrowser}').'</li>'; echo '<li>'.$this->t('{core:no_state:cause_nocookie}').'</li>'; diff --git a/modules/core/templates/no_state.twig b/modules/core/templates/no_state.twig index b811c102506c386e15a3606a3e796dc56bea93f9..25e8af41778c911e0a6e3e339e8d20fecfa8b443 100644 --- a/modules/core/templates/no_state.twig +++ b/modules/core/templates/no_state.twig @@ -1,11 +1,13 @@ <h3>{{ '{core:no_state:suggestions}'|trans }}</h3> <ul> + <li>{{ '{core:no_state:suggestion_badlink}'|trans }}</li> <li>{{ '{core:no_state:suggestion_goback}'|trans }}</li> <li>{{ '{core:no_state:suggestion_closebrowser}'|trans }}</li> </ul> <h3>{{ '{core:no_state:causes}'|trans }}</h3> <ul> + <li>{{ '{core:no_state:cause_badlink}'|trans }}</li> <li>{{ '{core:no_state:cause_backforward}'|trans }}</li> <li>{{ '{core:no_state:cause_openbrowser}'|trans }}</li> <li>{{ '{core:no_state:cause_nocookie}'|trans }}</li> diff --git a/modules/core/www/as_login.php b/modules/core/www/as_login.php index 14d8b1dc9f5dd7db009607bf417b78517fde0181..d73fa8ca0badc83638f3c4e887ff669536bd9ff0 100644 --- a/modules/core/www/as_login.php +++ b/modules/core/www/as_login.php @@ -17,9 +17,9 @@ if (!isset($_REQUEST['AuthId'])) { /* * Setting up the options for the requireAuth() call later.. */ -$options = array( +$options = [ 'ReturnTo' => \SimpleSAML\Utils\HTTP::checkURLAllowed($_REQUEST['ReturnTo']), -); +]; /* * Allows a saml:idp query string parameter specify the IdP entity ID to be used diff --git a/modules/core/www/authenticate.php b/modules/core/www/authenticate.php index df978a8f1eea7955153cfd41a4c067c92debc3f3..e1484e1fed26af74e45614a8650e3c7ff56b032c 100644 --- a/modules/core/www/authenticate.php +++ b/modules/core/www/authenticate.php @@ -28,11 +28,11 @@ if (array_key_exists(\SimpleSAML\Auth\State::EXCEPTION_PARAM, $_REQUEST)) { } if (!$as->isAuthenticated()) { - $url = \SimpleSAML\Module::getModuleURL('core/authenticate.php', array('as' => $asId)); - $params = array( + $url = \SimpleSAML\Module::getModuleURL('core/authenticate.php', ['as' => $asId]); + $params = [ 'ErrorURL' => $url, 'ReturnTo' => $url, - ); + ]; $as->login($params); } diff --git a/modules/core/www/cardinality_error.php b/modules/core/www/cardinality_error.php index 9c14a82157719bb60a15d71fa5583397ef76f798..b3a3e5b99c17fb4b5a446319cd719b570ac18265 100644 --- a/modules/core/www/cardinality_error.php +++ b/modules/core/www/cardinality_error.php @@ -22,7 +22,7 @@ $t->data['cardinalityErrorAttributes'] = $state['core:cardinality:errorAttribute if (isset($state['Source']['auth'])) { $t->data['LogoutURL'] = \SimpleSAML\Module::getModuleURL( 'core/authenticate.php', - array('as' => $state['Source']['auth']) + ['as' => $state['Source']['auth']] )."&logout"; } header('HTTP/1.0 403 Forbidden'); diff --git a/modules/core/www/cleardiscochoices.php b/modules/core/www/cleardiscochoices.php index afc794a0e3b366b3c83b3fdb1b9e2c8940fe1c34..f997f1607fd7fc080c9caa1797f80220ae784bf3 100644 --- a/modules/core/www/cleardiscochoices.php +++ b/modules/core/www/cleardiscochoices.php @@ -20,7 +20,7 @@ foreach ($_COOKIE as $cookieName => $value) { /* Delete the cookie. We delete it once without the secure flag and once with the secure flag. This * ensures that the cookie will be deleted in any case. */ - \SimpleSAML\Utils\HTTP::setCookie($cookieName, null, array('path' => $cookiePath, 'httponly' => false), false); + \SimpleSAML\Utils\HTTP::setCookie($cookieName, null, ['path' => $cookiePath, 'httponly' => false], false); } // Find where we should go now. diff --git a/modules/core/www/frontpage_auth.php b/modules/core/www/frontpage_auth.php index 0b36c92312b8d5fbca89c7e2b4d77753846af816..a3bf112e150efee435323163208942432d79ee9c 100644 --- a/modules/core/www/frontpage_auth.php +++ b/modules/core/www/frontpage_auth.php @@ -12,24 +12,24 @@ $loginurl = \SimpleSAML\Utils\Auth::getAdminLoginURL(); $isadmin = \SimpleSAML\Utils\Auth::isAdmin(); $logouturl = \SimpleSAML\Utils\Auth::getAdminLogoutURL(); -$links = array(); -$links_welcome = array(); -$links_config = array(); -$links_auth = array(); -$links_federation = array(); +$links = []; +$links_welcome = []; +$links_config = []; +$links_auth = []; +$links_federation = []; -$links_auth[] = array( +$links_auth[] = [ 'href' => 'authenticate.php', 'text' => '{core:frontpage:authtest}', -); +]; -$allLinks = array( +$allLinks = [ 'links' => &$links, 'welcome' => &$links_welcome, 'config' => &$links_config, 'auth' => &$links_auth, 'federation' => &$links_federation, -); +]; \SimpleSAML\Module::callHooks('frontpage', $allLinks); $t = new \SimpleSAML\XHTML\Template($config, 'core:frontpage_auth.tpl.php'); diff --git a/modules/core/www/frontpage_config.php b/modules/core/www/frontpage_config.php index ae7a7d6baf991bb03ae7d7e080c2a6bb1702e22d..02accc6fb8da3ceaa3cf1e30abd9ec4f0af4f2ed 100644 --- a/modules/core/www/frontpage_config.php +++ b/modules/core/www/frontpage_config.php @@ -12,7 +12,7 @@ $loginurl = \SimpleSAML\Utils\Auth::getAdminLoginURL(); $isadmin = \SimpleSAML\Utils\Auth::isAdmin(); $logouturl = \SimpleSAML\Utils\Auth::getAdminLogoutURL(); -$warnings = array(); +$warnings = []; if (!\SimpleSAML\Utils\HTTP::isHTTPS()) { $warnings[] = '{core:frontpage:warnings_https}'; @@ -29,29 +29,29 @@ if (extension_loaded('suhosin')) { } } -$links = array(); -$links_welcome = array(); -$links_config = array(); -$links_auth = array(); -$links_federation = array(); +$links = []; +$links_welcome = []; +$links_config = []; +$links_auth = []; +$links_federation = []; -$links_config[] = array( +$links_config[] = [ 'href' => \SimpleSAML\Utils\HTTP::getBaseURL().'admin/hostnames.php', 'text' => '{core:frontpage:link_diagnostics}' -); +]; -$links_config[] = array( +$links_config[] = [ 'href' => \SimpleSAML\Utils\HTTP::getBaseURL().'admin/phpinfo.php', 'text' => '{core:frontpage:link_phpinfo}' -); +]; -$allLinks = array( +$allLinks = [ 'links' => &$links, 'welcome' => &$links_welcome, 'config' => &$links_config, 'auth' => &$links_auth, 'federation' => &$links_federation, -); +]; \SimpleSAML\Module::callHooks('frontpage', $allLinks); // Check for updates. Store the remote result in the session so we @@ -59,7 +59,7 @@ $allLinks = array( $current = $config->getVersion(); if ($config->getBoolean('admin.checkforupdates', true) && $current !== 'master') { if (!function_exists('curl_init')) { - $warnings[] = [ '{core:frontpage:warnings_curlmissing}' ]; + $warnings[] = ['{core:frontpage:warnings_curlmissing}']; } else { $latest = $session->getData("core:latest_simplesamlphp_version", "version"); @@ -82,62 +82,62 @@ if ($config->getBoolean('admin.checkforupdates', true) && $current !== 'master') if ($latest && version_compare($current, ltrim($latest['tag_name'], 'v'), 'lt')) { $outdated = true; - $warnings[] = array( + $warnings[] = [ '{core:frontpage:warnings_outdated}', - array('%LATEST_URL%' => $latest['html_url']) - ); + ['%LATEST_URL%' => $latest['html_url']] + ]; } } } -$enablematrix = array( +$enablematrix = [ 'saml20idp' => $config->getBoolean('enable.saml20-idp', false), 'shib13idp' => $config->getBoolean('enable.shib13-idp', false), -); - - -$functionchecks = array( - 'time' => array('required', 'Date/Time Extension'), - 'hash' => array('required', 'Hashing function'), - 'gzinflate' => array('required', 'ZLib'), - 'openssl_sign' => array('required', 'OpenSSL'), - 'dom_import_simplexml' => array('required', 'XML DOM'), - 'preg_match' => array('required', 'RegEx support'), - 'json_decode' => array('required', 'JSON support'), - 'class_implements' => array('required', 'Standard PHP Library (SPL)'), - 'mb_strlen' => array('required', 'Multibyte String Extension'), - 'curl_init' => array('optional', 'cURL (required if automatic version checks are used, also by some modules.'), - 'session_start' => array('optional', 'Session Extension (required if PHP sessions are used)'), - 'pdo_drivers' => array('optional', 'PDO Extension (required if a database backend is used)'), -); +]; + + +$functionchecks = [ + 'time' => ['required', 'Date/Time Extension'], + 'hash' => ['required', 'Hashing function'], + 'gzinflate' => ['required', 'ZLib'], + 'openssl_sign' => ['required', 'OpenSSL'], + 'dom_import_simplexml' => ['required', 'XML DOM'], + 'preg_match' => ['required', 'RegEx support'], + 'json_decode' => ['required', 'JSON support'], + 'class_implements' => ['required', 'Standard PHP Library (SPL)'], + 'mb_strlen' => ['required', 'Multibyte String Extension'], + 'curl_init' => ['optional', 'cURL (required if automatic version checks are used, also by some modules.'], + 'session_start' => ['optional', 'Session Extension (required if PHP sessions are used)'], + 'pdo_drivers' => ['optional', 'PDO Extension (required if a database backend is used)'], +]; if (\SimpleSAML\Module::isModuleEnabled('ldap')) { - $functionchecks['ldap_bind'] = array('optional', 'LDAP Extension (required if an LDAP backend is used)'); + $functionchecks['ldap_bind'] = ['optional', 'LDAP Extension (required if an LDAP backend is used)']; } if (\SimpleSAML\Module::isModuleEnabled('radius')) { - $functionchecks['radius_auth_open'] = array('optional', 'Radius Extension (required if a Radius backend is used)'); + $functionchecks['radius_auth_open'] = ['optional', 'Radius Extension (required if a Radius backend is used)']; } -$funcmatrix = array(); -$funcmatrix[] = array( +$funcmatrix = []; +$funcmatrix[] = [ 'required' => 'required', - 'descr' => 'PHP Version >= 5.4. You run: '.phpversion(), - 'enabled' => version_compare(phpversion(), '5.4', '>=') -); + 'descr' => 'PHP Version >= 5.5. You run: '.phpversion(), + 'enabled' => version_compare(phpversion(), '5.5', '>=') +]; foreach ($functionchecks as $func => $descr) { - $funcmatrix[] = array('descr' => $descr[1], 'required' => $descr[0], 'enabled' => function_exists($func)); + $funcmatrix[] = ['descr' => $descr[1], 'required' => $descr[0], 'enabled' => function_exists($func)]; } -$funcmatrix[] = array( +$funcmatrix[] = [ 'required' => 'optional', 'descr' => 'predis/predis (required if the redis data store is used)', 'enabled' => class_exists('\Predis\Client'), -); +]; -$funcmatrix[] = array( +$funcmatrix[] = [ 'required' => 'optional', 'descr' => 'Memcache or Memcached Extension (required if a Memcached backend is used)', 'enabled' => class_exists('Memcache') || class_exists('Memcached'), -); +]; // Some basic configuration checks @@ -146,21 +146,21 @@ if ($config->getString('technicalcontact_email', 'na@example.org') === 'na@examp } else { $mail_ok = true; } -$funcmatrix[] = array( +$funcmatrix[] = [ 'required' => 'recommended', 'descr' => 'technicalcontact_email option set', 'enabled' => $mail_ok -); +]; if ($config->getString('auth.adminpassword', '123') === '123') { $password_ok = false; } else { $password_ok = true; } -$funcmatrix[] = array( +$funcmatrix[] = [ 'required' => 'required', 'descr' => 'auth.adminpassword option set', 'enabled' => $password_ok -); +]; $t = new \SimpleSAML\XHTML\Template($config, 'core:frontpage_config.tpl.php'); $translator = $t->getTranslator(); @@ -189,11 +189,11 @@ $t->data['links_federation'] = $links_federation; $t->data['enablematrix'] = $enablematrix; $t->data['funcmatrix'] = $funcmatrix; -$t->data['requiredmap'] = array( +$t->data['requiredmap'] = [ 'recommended' => $translator->noop('{core:frontpage:recommended}'), 'required' => $translator->noop('{core:frontpage:required}'), 'optional' => $translator->noop('{core:frontpage:optional}'), -); +]; $t->data['version'] = $config->getVersion(); $t->data['directory'] = dirname(dirname(dirname(dirname(__FILE__)))); diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php index 74d5bbb5d554c03fd04d93c1d35802b8c97a126f..267a54a53ff1c0911924375e53cf60a6562d656f 100644 --- a/modules/core/www/frontpage_federation.php +++ b/modules/core/www/frontpage_federation.php @@ -12,42 +12,42 @@ $logouturl = \SimpleSAML\Utils\Auth::getAdminLogoutURL(); $loginurl = \SimpleSAML\Utils\Auth::getAdminLoginURL(); $isadmin = \SimpleSAML\Utils\Auth::isAdmin(); -$links = array(); -$links_welcome = array(); -$links_config = array(); -$links_auth = array(); -$links_federation = array(); +$links = []; +$links_welcome = []; +$links_config = []; +$links_auth = []; +$links_federation = []; if ($config->getBoolean('idpdisco.enableremember', false)) { - $links_federation[] = array( + $links_federation[] = [ 'href' => 'cleardiscochoices.php', 'text' => '{core:frontpage:link_cleardiscochoices}', - ); + ]; } -$links_federation[] = array( +$links_federation[] = [ 'href' => \SimpleSAML\Utils\HTTP::getBaseURL().'admin/metadata-converter.php', 'text' => '{core:frontpage:link_xmlconvert}', -); +]; -$allLinks = array( +$allLinks = [ 'links' => &$links, 'welcome' => &$links_welcome, 'config' => &$links_config, 'auth' => &$links_auth, 'federation' => &$links_federation, -); +]; \SimpleSAML\Module::callHooks('frontpage', $allLinks); -$metadataHosted = array(); +$metadataHosted = []; \SimpleSAML\Module::callHooks('metadata_hosted', $metadataHosted); $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); -$metaentries = array('hosted' => $metadataHosted, 'remote' => array()); +$metaentries = ['hosted' => $metadataHosted, 'remote' => []]; if ($isadmin) { @@ -84,7 +84,7 @@ if ($config->getBoolean('enable.adfs-idp', false) === true) { $metaentries['hosted']['adfs-idp'] = $metadata->getMetaDataCurrent('adfs-idp-hosted'); $metaentries['hosted']['adfs-idp']['metadata-url'] = \SimpleSAML\Module::getModuleURL( 'adfs/idp/metadata.php', - array('output' => 'xhtml') + ['output' => 'xhtml'] ); if ($isadmin) { $metaentries['remote']['adfs-sp-remote'] = $metadata->getList('adfs-sp-remote'); @@ -107,11 +107,11 @@ $language = $translator->getLanguage()->getLanguage(); $fallbackLanguage = 'en'; $defaultLanguage = $config->getString('language.default', $fallbackLanguage); -$translators = array( +$translators = [ 'name' => 'name_translated', 'descr' => 'descr_translated', 'OrganizationDisplayName' => 'organizationdisplayname_translated', -); +]; foreach ($metaentries['hosted'] as $index => $entity) { foreach ($translators as $old => $new) { @@ -121,7 +121,7 @@ foreach ($metaentries['hosted'] as $index => $entity) { $metaentries['hosted'][$index][$new] = $entity[$old][$defaultLanguage]; } elseif (isset($entity[$old][$fallbackLanguage])) { $metaentries['hosted'][$index][$new] = $entity[$old][$fallbackLanguage]; - } + } } } foreach ($metaentries['remote'] as $key => $set) { @@ -141,7 +141,7 @@ foreach ($metaentries['remote'] as $key => $set) { } # look up translated string -$mtype = array( +$mtype = [ 'saml20-sp-remote' => $translator->noop('{admin:metadata_saml20-sp}'), 'saml20-sp-hosted' => $translator->noop('{admin:metadata_saml20-sp}'), 'saml20-idp-remote' => $translator->noop('{admin:metadata_saml20-idp}'), @@ -154,7 +154,7 @@ $mtype = array( 'adfs-sp-hosted' => $translator->noop('{admin:metadata_adfs-sp}'), 'adfs-idp-remote' => $translator->noop('{admin:metadata_adfs-idp}'), 'adfs-idp-hosted' => $translator->noop('{admin:metadata_adfs-idp}'), -); +]; $t->data['pageid'] = 'frontpage_federation'; $t->data['isadmin'] = $isadmin; diff --git a/modules/core/www/frontpage_welcome.php b/modules/core/www/frontpage_welcome.php index 9650fb372a3546a030bd4b515bca5d8af6059977..4dfb4fef195ac8fb0f803e6c2bb2e8e0e4229f81 100644 --- a/modules/core/www/frontpage_welcome.php +++ b/modules/core/www/frontpage_welcome.php @@ -12,24 +12,24 @@ $logouturl = \SimpleSAML\Utils\Auth::getAdminLogoutURL(); $loginurl = \SimpleSAML\Utils\Auth::getAdminLoginURL(); $isadmin = \SimpleSAML\Utils\Auth::isAdmin(); -$links = array(); -$links_welcome = array(); -$links_config = array(); -$links_auth = array(); -$links_federation = array(); +$links = []; +$links_welcome = []; +$links_config = []; +$links_auth = []; +$links_federation = []; -$allLinks = array( +$allLinks = [ 'links' => &$links, 'welcome' => &$links_welcome, 'config' => &$links_config, 'auth' => &$links_auth, 'federation' => &$links_federation, -); +]; -$links_welcome[] = array( +$links_welcome[] = [ 'href' => 'https://simplesamlphp.org/docs/stable/', 'text' => '{core:frontpage:doc_header}', -); +]; \SimpleSAML\Module::callHooks('frontpage', $allLinks); diff --git a/modules/core/www/idp/logout-iframe-done.php b/modules/core/www/idp/logout-iframe-done.php index a01665a646fe8b83f3185aceaac5654454031c91..7725754e48b0e10d2b3e468274b640a42ed41a93 100644 --- a/modules/core/www/idp/logout-iframe-done.php +++ b/modules/core/www/idp/logout-iframe-done.php @@ -10,13 +10,13 @@ $associations = $idp->getAssociations(); if (!isset($_REQUEST['cancel'])) { \SimpleSAML\Logger::stats('slo-iframe done'); - \SimpleSAML\Stats::log('core:idp:logout-iframe:page', array('type' => 'done')); + \SimpleSAML\Stats::log('core:idp:logout-iframe:page', ['type' => 'done']); $SPs = $state['core:Logout-IFrame:Associations']; } else { // user skipped global logout \SimpleSAML\Logger::stats('slo-iframe skip'); - \SimpleSAML\Stats::log('core:idp:logout-iframe:page', array('type' => 'skip')); - $SPs = array(); // no SPs should have been logged out + \SimpleSAML\Stats::log('core:idp:logout-iframe:page', ['type' => 'skip']); + $SPs = []; // no SPs should have been logged out $state['core:Failed'] = true; // mark as partial logout } @@ -49,7 +49,7 @@ foreach ($SPs as $assocId => $sp) { $spId = $assocId; } \SimpleSAML\Logger::stats('slo-iframe-fail '.$spId); - \SimpleSAML\Stats::log('core:idp:logout-iframe:spfail', array('sp' => $spId)); + \SimpleSAML\Stats::log('core:idp:logout-iframe:spfail', ['sp' => $spId]); $state['core:Failed'] = true; } } diff --git a/modules/core/www/idp/logout-iframe-post.php b/modules/core/www/idp/logout-iframe-post.php index 603cb1fb5c33cf630572c7fc4cd14cd15878e360..2081dfe26d69fb87b55b54c814d3bd1d8fe7911d 100644 --- a/modules/core/www/idp/logout-iframe-post.php +++ b/modules/core/www/idp/logout-iframe-post.php @@ -44,12 +44,12 @@ if ($encryptNameId) { $lr->encryptNameId(\SimpleSAML\Module\saml\Message::getEncryptionKey($spMetadata)); } -\SimpleSAML\Stats::log('saml:idp:LogoutRequest:sent', array( +\SimpleSAML\Stats::log('saml:idp:LogoutRequest:sent', [ 'spEntityID' => $association['saml:entityID'], 'idpEntityID' => $idpMetadata->getString('entityid'), -)); +]); -$bindings = array(\SAML2\Constants::BINDING_HTTP_POST); +$bindings = [\SAML2\Constants::BINDING_HTTP_POST]; $dst = $spMetadata->getDefaultEndpoint('SingleLogoutService', $bindings); $binding = \SAML2\Binding::getBinding($dst['Binding']); diff --git a/modules/core/www/idp/logout-iframe.php b/modules/core/www/idp/logout-iframe.php index e844d558e3304c9d5158ea3a50f40e6395926322..27195af6b83b40fc2d7e6be4baee1cf8bbfa64af 100644 --- a/modules/core/www/idp/logout-iframe.php +++ b/modules/core/www/idp/logout-iframe.php @@ -6,7 +6,7 @@ if (!isset($_REQUEST['id'])) { if (isset($_REQUEST['type'])) { $type = (string) $_REQUEST['type']; - if (!in_array($type, array('init', 'js', 'nojs', 'embed'), true)) { + if (!in_array($type, ['init', 'js', 'nojs', 'embed'], true)) { throw new \SimpleSAML\Error\BadRequest('Invalid value for type.'); } } else { @@ -15,7 +15,7 @@ if (isset($_REQUEST['type'])) { if ($type !== 'embed') { \SimpleSAML\Logger::stats('slo-iframe '.$type); - \SimpleSAML\Stats::log('core:idp:logout-iframe:page', array('type' => $type)); + \SimpleSAML\Stats::log('core:idp:logout-iframe:page', ['type' => $type]); } $state = \SimpleSAML\Auth\State::loadState($_REQUEST['id'], 'core:Logout-IFrame'); @@ -55,7 +55,7 @@ if ($type !== 'init') { if (!isset($sp['core:Logout-IFrame:Timeout'])) { if (method_exists($sp['Handler'], 'getAssociationConfig')) { $assocIdP = \SimpleSAML\IdP::getByState($sp); - $assocConfig = call_user_func(array($sp['Handler'], 'getAssociationConfig'), $assocIdP, $sp); + $assocConfig = call_user_func([$sp['Handler'], 'getAssociationConfig'], $assocIdP, $sp); $sp['core:Logout-IFrame:Timeout'] = $assocConfig->getInteger('core:logout-timeout', 5) + time(); } else { $sp['core:Logout-IFrame:Timeout'] = time() + 5; @@ -73,7 +73,7 @@ foreach ($state['core:Logout-IFrame:Associations'] as $assocId => &$sp) { try { $assocIdP = \SimpleSAML\IdP::getByState($sp); - $url = call_user_func(array($sp['Handler'], 'getLogoutURL'), $assocIdP, $sp, null); + $url = call_user_func([$sp['Handler'], 'getLogoutURL'], $assocIdP, $sp, null); $sp['core:Logout-IFrame:URL'] = $url; } catch (\Exception $e) { $sp['core:Logout-IFrame:State'] = 'failed'; @@ -91,7 +91,7 @@ if ($state['core:TerminatedAssocId'] !== null) { } // build an array with information about all services currently logged in -$remaining = array(); +$remaining = []; foreach ($state['core:Logout-IFrame:Associations'] as $association) { $key = sha1($association['id']); $mdset = 'saml20-sp-remote'; @@ -99,7 +99,7 @@ foreach ($state['core:Logout-IFrame:Associations'] as $association) { $mdset = 'adfs-sp-remote'; } - $remaining[$key] = array( + $remaining[$key] = [ 'id' => $association['id'], 'expires_on' => $association['Expires'], 'entityID' => $association['saml:entityID'], @@ -107,7 +107,7 @@ foreach ($state['core:Logout-IFrame:Associations'] as $association) { 'status' => $association['core:Logout-IFrame:State'], 'logoutURL' => $association['core:Logout-IFrame:URL'], 'metadata' => $mdh->getMetaDataConfig($association['saml:entityID'], $mdset)->toArray(), - ); + ]; if (isset($association['core:Logout-IFrame:Timeout'])) { $remaining[$key]['timeout'] = $association['core:Logout-IFrame:Timeout']; } @@ -140,7 +140,7 @@ $t->data['SPs'] = $state['core:Logout-IFrame:Associations']; if ($type !== 'nojs') { /** @deprecated The "jquery" array will be removed in 2.0 */ - $t->data['jquery'] = array('core' => true, 'ui' => false, 'css' => false); + $t->data['jquery'] = ['core' => true, 'ui' => false, 'css' => false]; } $t->show(); diff --git a/modules/core/www/loginuserpass.php b/modules/core/www/loginuserpass.php index c9569dede90c7ee8d0ea7ade1de670edf8ef7798..747506f898d1e969212cd17a2c5acca85e6ffcd9 100644 --- a/modules/core/www/loginuserpass.php +++ b/modules/core/www/loginuserpass.php @@ -42,12 +42,12 @@ if (array_key_exists('password', $_REQUEST)) { $errorCode = null; $errorParams = null; -$queryParams = array(); +$queryParams = []; if (isset($state['error'])) { $errorCode = $state['error']['code']; $errorParams = $state['error']['params']; - $queryParams = array('AuthState' => $authStateId); + $queryParams = ['AuthState' => $authStateId]; } if (!empty($_REQUEST['username']) || !empty($password)) { @@ -85,12 +85,12 @@ if (!empty($_REQUEST['username']) || !empty($password)) { // Login failed. Extract error code and parameters, to display the error $errorCode = $e->getErrorCode(); $errorParams = $e->getParameters(); - $state['error'] = array( + $state['error'] = [ 'code' => $errorCode, 'params' => $errorParams - ); + ]; $authStateId = \SimpleSAML\Auth\State::saveState($state, \SimpleSAML\Module\core\Auth\UserPassBase::STAGEID); - $queryParams = array('AuthState' => $authStateId); + $queryParams = ['AuthState' => $authStateId]; } if (isset($state['error'])) { unset($state['error']); @@ -99,7 +99,7 @@ if (!empty($_REQUEST['username']) || !empty($password)) { $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'core:loginuserpass.php'); -$t->data['stateparams'] = array('AuthState' => $authStateId); +$t->data['stateparams'] = ['AuthState' => $authStateId]; if (array_key_exists('forcedUsername', $state)) { $t->data['username'] = $state['forcedUsername']; $t->data['forceUsername'] = true; diff --git a/modules/core/www/loginuserpassorg.php b/modules/core/www/loginuserpassorg.php index 3b480699bfc8d79a57c94134f7c071b9973ff97a..2b9ec4dba32a09252629180f31d82f4ce349c30d 100644 --- a/modules/core/www/loginuserpassorg.php +++ b/modules/core/www/loginuserpassorg.php @@ -55,12 +55,12 @@ if (array_key_exists('organization', $_REQUEST)) { $errorCode = null; $errorParams = null; -$queryParams = array(); +$queryParams = []; if (isset($state['error'])) { $errorCode = $state['error']['code']; $errorParams = $state['error']['params']; - $queryParams = array('AuthState' => $authStateId); + $queryParams = ['AuthState' => $authStateId]; } if ($organizations === null || !empty($organization)) { @@ -107,15 +107,15 @@ if ($organizations === null || !empty($organization)) { // Login failed. Extract error code and parameters, to display the error $errorCode = $e->getErrorCode(); $errorParams = $e->getParameters(); - $state['error'] = array( + $state['error'] = [ 'code' => $errorCode, 'params' => $errorParams - ); + ]; $authStateId = \SimpleSAML\Auth\State::saveState( $state, \SimpleSAML\Module\core\Auth\UserPassOrgBase::STAGEID ); - $queryParams = array('AuthState' => $authStateId); + $queryParams = ['AuthState' => $authStateId]; } if (isset($state['error'])) { unset($state['error']); @@ -125,7 +125,7 @@ if ($organizations === null || !empty($organization)) { $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'core:loginuserpass.php'); -$t->data['stateparams'] = array('AuthState' => $authStateId); +$t->data['stateparams'] = ['AuthState' => $authStateId]; $t->data['username'] = $username; $t->data['forceUsername'] = false; $t->data['rememberUsernameEnabled'] = $source->getRememberUsernameEnabled(); diff --git a/modules/core/www/short_sso_interval.php b/modules/core/www/short_sso_interval.php index 9844e9c5f3c8b4e0aa29beaf73b4ca4deb515c0d..5a937c66c15c4f48a85d0d107dceeb81edabdbfa 100644 --- a/modules/core/www/short_sso_interval.php +++ b/modules/core/www/short_sso_interval.php @@ -22,7 +22,7 @@ if (array_key_exists('continue', $_REQUEST)) { $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'core:short_sso_interval.php'); $t->data['target'] = \SimpleSAML\Module::getModuleURL('core/short_sso_interval.php'); -$t->data['params'] = array('StateId' => $id); +$t->data['params'] = ['StateId' => $id]; $t->data['trackId'] = $session->getTrackID(); $this->data['header'] = $this->t('{core:short_sso_interval:warning_header}'); $this->data['autofocus'] = 'contbutton'; diff --git a/modules/core/www/show_metadata.php b/modules/core/www/show_metadata.php index 389d12a3309d5818a154b8ced1a79b6ca357f5e2..e8f3bf223e91b45cad24bda780d99983a0e9ef75 100644 --- a/modules/core/www/show_metadata.php +++ b/modules/core/www/show_metadata.php @@ -14,7 +14,7 @@ if (!array_key_exists('set', $_REQUEST)) { } if (!in_array( $_REQUEST['set'], - array('saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote'), + ['saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote'], true )) { throw new Exception('Invalid set'); @@ -22,7 +22,7 @@ if (!in_array( $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); -$m = $metadata->getMetadata($_REQUEST['entityid'], $_REQUEST['set']); +$m = $metadata->getMetaData($_REQUEST['entityid'], $_REQUEST['set']); $t = new \SimpleSAML\XHTML\Template($config, 'core:show_metadata.tpl.php'); $t->data['clipboard.js'] = true; diff --git a/modules/cron/config-templates/module_cron.php b/modules/cron/config-templates/module_cron.php index fe303c9b8d5518eefab4e55812eb808cc1726900..29a35d9e9c535cb80e19c1fea2aea89e6ec7ae9f 100644 --- a/modules/cron/config-templates/module_cron.php +++ b/modules/cron/config-templates/module_cron.php @@ -3,9 +3,9 @@ * Configuration for the Cron module. */ -$config = array( +$config = [ 'key' => 'secret', - 'allowed_tags' => array('daily', 'hourly', 'frequent'), + 'allowed_tags' => ['daily', 'hourly', 'frequent'], 'debug_message' => true, 'sendemail' => true, -); +]; diff --git a/modules/cron/hooks/hook_frontpage.php b/modules/cron/hooks/hook_frontpage.php index 46a7ab954d1c1bac4e9a4100923848b67ee38836..c9e2eb2dcb25e88141556375de42d44841a32a35 100644 --- a/modules/cron/hooks/hook_frontpage.php +++ b/modules/cron/hooks/hook_frontpage.php @@ -10,8 +10,8 @@ function cron_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['config'][] = array( + $links['config'][] = [ 'href' => SimpleSAML\Module::getModuleURL('cron/croninfo.php'), 'text' => '{core:frontpage:link_cron}', - ); + ]; } diff --git a/modules/cron/lib/Cron.php b/modules/cron/lib/Cron.php index 169d248beee8718a5bbbde2a1f945106af2ba0dd..f8bda653b8b23b4dc6061668160c453e8044ba13 100644 --- a/modules/cron/lib/Cron.php +++ b/modules/cron/lib/Cron.php @@ -38,11 +38,11 @@ class Cron throw new \Exception("Invalid cron tag '$tag''"); } - $summary = array(); - $croninfo = array( + $summary = []; + $croninfo = [ 'summary' => &$summary, 'tag' => $tag, - ); + ]; \SimpleSAML\Module::callHooks('cron', $croninfo); diff --git a/modules/cron/templates/croninfo-result.php b/modules/cron/templates/croninfo-result.php index 8cecb58344ca539ae3dcc3c87214d23c6c376396..e4f0dc1695a06d856d5eba5a01732e0810641ca2 100644 --- a/modules/cron/templates/croninfo-result.php +++ b/modules/cron/templates/croninfo-result.php @@ -8,7 +8,7 @@ $this->includeAtTemplateBase('includes/header.php'); <?php echo ' <h1>'.$this->t('cron_report_title').'</h1><p>'.$this->t('ran_text'). - ' '.$this->data['time'].'</p>'.'<p>URL: <tt>'.$this->data['url'].'</tt></p>'. + ' '.$this->data['time'].'</p>'.'<p>URL: <code>'.$this->data['url'].'</code></p>'. '<p>Tag: '.$this->data['tag']."</p>\n\n". '<ul><li>'.join('</li><li>', $this->data['summary']).'</li></ul>'; ?> diff --git a/modules/cron/www/cron.php b/modules/cron/www/cron.php index 4a2ec9ab9ad38faa42d01f986366b35ee1287960..fb930592812ce20bf6370618cdb708677d63cb81 100644 --- a/modules/cron/www/cron.php +++ b/modules/cron/www/cron.php @@ -24,7 +24,7 @@ $summary = $croninfo['summary']; if ($cronconfig->getValue('sendemail', true) && count($summary) > 0) { $message = '<h1>Cron report</h1><p>Cron ran at '.$time.'</p>'. - '<p>URL: <tt>'.$url.'</tt></p>'. + '<p>URL: <code>'.$url.'</code></p>'. '<p>Tag: '.$croninfo['tag']."</p>\n\n". '<ul><li>'.join('</li><li>', $summary).'</li></ul>'; diff --git a/modules/cron/www/croninfo.php b/modules/cron/www/croninfo.php index 8479de13f62472946fea76e52243c93ca012406c..8a0aac4d52a90de827a0344822163813ce15cfc4 100644 --- a/modules/cron/www/croninfo.php +++ b/modules/cron/www/croninfo.php @@ -18,20 +18,20 @@ $cronconfig = \SimpleSAML\Configuration::getConfig('module_cron.php'); $key = $cronconfig->getValue('key', ''); $tags = $cronconfig->getValue('allowed_tags'); -$def = array( +$def = [ 'weekly' => "22 0 * * 0", 'daily' => "02 0 * * *", 'hourly' => "01 * * * *", 'default' => "XXXXXXXXXX", -); +]; -$urls = array(); +$urls = []; foreach ($tags as $tag) { - $urls[] = array( - 'href' => \SimpleSAML\Module::getModuleURL('cron/cron.php', array('key' => $key, 'tag' => $tag)), + $urls[] = [ + 'href' => \SimpleSAML\Module::getModuleURL('cron/cron.php', ['key' => $key, 'tag' => $tag]), 'tag' => $tag, 'int' => (array_key_exists($tag, $def) ? $def[$tag] : $def['default']), - ); + ]; } $t = new \SimpleSAML\XHTML\Template($config, 'cron:croninfo.tpl.php', 'cron:cron'); diff --git a/modules/discopower/config-templates/module_discopower.php b/modules/discopower/config-templates/module_discopower.php index dfac2581765b9ee116b462ed6360e2aa8fe19e85..498cadad83962445faa726abed4e8da675561189 100644 --- a/modules/discopower/config-templates/module_discopower.php +++ b/modules/discopower/config-templates/module_discopower.php @@ -3,7 +3,7 @@ * Configuration for the DiscoPower module. */ -$config = array( +$config = [ // Which tab should be set as default. 0 is the first tab 'defaulttab' => 0, @@ -11,7 +11,7 @@ $config = array( * List a set of tags (Tabs) that should be listed in a specific order. * All other available tabs will be listed after the ones specified below. */ - 'taborder' => array('norway'), + 'taborder' => ['norway'], /* * the 'tab' parameter allows you to limit the tabs to a specific list. (excluding unlisted tags) @@ -42,4 +42,4 @@ $config = array( * Example: 'cdc.lifetime' => 180*24*60*60, // 180 days */ 'cdc.lifetime' => null, -); +]; diff --git a/modules/discopower/dictionaries/tabs.definition.json b/modules/discopower/dictionaries/tabs.definition.json index 51c3ca41b8e19c5ebfb4f101b7a22b025502a804..323a7165c87796ababfc6a6b33b34be6142c504d 100644 --- a/modules/discopower/dictionaries/tabs.definition.json +++ b/modules/discopower/dictionaries/tabs.definition.json @@ -37,5 +37,8 @@ }, "ukacessfederation": { "en": "UK Access Federation" + }, + "incremental_search": { + "en": "Incremental search..." } } diff --git a/modules/discopower/dictionaries/tabs.translation.json b/modules/discopower/dictionaries/tabs.translation.json index 558d2d572f6b39496373e63d7a2c82965bc581b1..cfa48b63ed215f0f4a70ea17b4b030b58f81cd4d 100644 --- a/modules/discopower/dictionaries/tabs.translation.json +++ b/modules/discopower/dictionaries/tabs.translation.json @@ -7,7 +7,9 @@ "gl": "Noruega", "da": "Norge", "af": "Noorwe\u00eb", - "el": "\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1" + "el": "\u039d\u03bf\u03c1\u03b2\u03b7\u03b3\u03af\u03b1", + "xh": "Norowe", + "zu": "ENorway" }, "kalmar": { "es": "Kalmar", @@ -26,7 +28,8 @@ "gl": "Finlandia", "da": "Finland", "af": "Finland", - "el": "\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1" + "el": "\u03a6\u03b9\u03bd\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", + "xh": "Finlend" }, "sweden": { "es": "Suecia", @@ -36,7 +39,9 @@ "gl": "Suecia", "da": "Sverige", "af": "Swede", - "el": "\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1" + "el": "\u03a3\u03bf\u03c5\u03b7\u03b4\u03af\u03b1", + "xh": "Swiden", + "zu": "Sweden" }, "iceland": { "es": "Islandia", @@ -46,7 +51,9 @@ "gl": "Islandia", "da": "Island", "af": "Ysland", - "el": "\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1" + "el": "\u0399\u03c3\u03bb\u03b1\u03bd\u03b4\u03af\u03b1", + "xh": "Ayisilend", + "zu": "I-Iceland" }, "denmark": { "es": "Dinamarca", @@ -56,7 +63,8 @@ "gl": "Dinamarca", "da": "Danmark", "af": "Denmark", - "el": "\u0394\u03b1\u03bd\u03af\u03b1" + "el": "\u0394\u03b1\u03bd\u03af\u03b1", + "xh": "Dominikha" }, "switzerland": { "es": "Suiza", @@ -66,17 +74,19 @@ "gl": "Suiza", "da": "Schweiz", "af": "Switserland", - "el": "\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1" + "el": "\u0395\u03bb\u03b2\u03b5\u03c4\u03af\u03b1", + "xh": "Swizalend", + "zu": "ESwitzerland" }, "greece": { "es": "Grecia", - "ru": "\u0413\u0440\u0435\u0446\u0438\u044f", "nl": "Griekenland", "gl": "Grecia", "ru": "\u0413\u0440\u0435\u0446\u0438\u044f", "da": "Gr\u00e6kenland", "af": "Griekeland", - "el": "\u0395\u03bb\u03bb\u03ac\u03b4\u03b1" + "el": "\u0395\u03bb\u03bb\u03ac\u03b4\u03b1", + "xh": "Grisi" }, "southafrica": { "es": "Sud\u00e1frica", @@ -98,7 +108,9 @@ "gl": "Europa (eduGAIN)", "da": "Europa (eduGAIN)", "af": "Europa (eduGAIN)", - "el": "\u0395\u03c5\u03c1\u03ce\u03c0\u03b7 (eduGAIN)" + "el": "\u0395\u03c5\u03c1\u03ce\u03c0\u03b7 (eduGAIN)", + "xh": "Yurophu (eduGAIN)", + "zu": "IYurophu (eduGAIN)" }, "misc": { "es": "Otros", @@ -108,7 +120,9 @@ "gl": "Miscelanea", "da": "Forskellige", "af": "Verskeie", - "el": "\u0386\u03bb\u03bb\u03bf\u03b9 \u03c6\u03bf\u03c1\u03b5\u03af\u03c2" + "el": "\u0386\u03bb\u03bb\u03bf\u03b9 \u03c6\u03bf\u03c1\u03b5\u03af\u03c2", + "xh": "Ezahlukahlukeneyo", + "zu": "Ezihlukahlukene" }, "incommon": { "es": "InCommon", @@ -125,5 +139,10 @@ "da": "Storbritanniens adgangsf\u00f8deration", "af": "UK Toegangs Federasie", "el": "\u039f\u03bc\u03bf\u03c3\u03c0\u03bf\u03bd\u03b4\u03af\u03b1 UK Access" + }, + "incremental_search": { + "af": "Inkrementele soektog...", + "zu": "Ukucinga okukhulayo...", + "xh": "Ukhangelo oluqhubekayo..." } } diff --git a/modules/discopower/lib/PowerIdPDisco.php b/modules/discopower/lib/PowerIdPDisco.php index 4e7a3914975784d37877f5151811d1d21b92e61e..a0955cb32d320448ab03a89f55a7dd0252d8dfee 100644 --- a/modules/discopower/lib/PowerIdPDisco.php +++ b/modules/discopower/lib/PowerIdPDisco.php @@ -110,19 +110,19 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco */ protected function idplistStructured($list) { - $slist = array(); + $slist = []; $order = $this->discoconfig->getValue('taborder'); if (is_array($order)) { foreach ($order as $oe) { - $slist[$oe] = array(); + $slist[$oe] = []; } } $enableTabs = $this->discoconfig->getValue('tabs', null); foreach ($list as $key => $val) { - $tags = array('misc'); + $tags = ['misc']; if (array_key_exists('tags', $val)) { $tags = $val['tags']; } @@ -135,7 +135,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco } foreach ($slist as $tab => $tbslist) { - uasort($slist[$tab], array('\SimpleSAML\Module\discopower\PowerIdPDisco', 'mcmp')); + uasort($slist[$tab], ['\SimpleSAML\Module\discopower\PowerIdPDisco', 'mcmp']); } return $slist; @@ -203,16 +203,16 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $filter = $spmd['discopower.filter']; if (!array_key_exists('entities.include', $filter)) { - $filter['entities.include'] = array(); + $filter['entities.include'] = []; } if (!array_key_exists('entities.exclude', $filter)) { - $filter['entities.exclude'] = array(); + $filter['entities.exclude'] = []; } if (!array_key_exists('tags.include', $filter)) { - $filter['tags.include'] = array(); + $filter['tags.include'] = []; } if (!array_key_exists('tags.exclude', $filter)) { - $filter['tags.exclude'] = array(); + $filter['tags.exclude'] = []; } $defaultrule = true; @@ -222,7 +222,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $defaultrule = false; } - $returnlist = array(); + $returnlist = []; foreach ($list as $key => $entry) { if ($this->processFilter($filter, $entry, $defaultrule)) { $returnlist[$key] = $entry; @@ -247,7 +247,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $preferredIdP = $this->getRecommendedIdP(); $t = new \SimpleSAML\XHTML\Template($this->config, 'discopower:disco.tpl.php', 'disco'); - $discoPowerTabs = array( + $discoPowerTabs = [ 'denmark' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:denmark}'), 'edugain' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:edugain}'), 'finland' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:finland}'), @@ -261,7 +261,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco 'sweden' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:sweden}'), 'switzerland' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:switzerland}'), 'ukacessfederation' => \SimpleSAML\Locale\Translate::noop('{discopower:tabs:ukacessfederation}'), - ); + ]; $t->data['return'] = $this->returnURL; $t->data['returnIDParam'] = $this->returnIdParam; @@ -299,7 +299,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $t->data['urlpattern'] = htmlspecialchars(\SimpleSAML\Utils\HTTP::getSelfURLNoQuery()); $t->data['rememberenabled'] = $this->config->getBoolean('idpdisco.enableremember', false); $t->data['rememberchecked'] = $this->config->getBoolean('idpdisco.rememberchecked', false); - $t->data['jquery'] = array('core' => true, 'ui' => true); + $t->data['jquery'] = ['core' => true, 'ui' => true]; $t->show(); } @@ -371,7 +371,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco private function getCDC() { if (!isset($_COOKIE['_saml_idp'])) { - return array(); + return []; } $ret = (string) $_COOKIE['_saml_idp']; @@ -380,7 +380,7 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $idp = base64_decode($idp); if ($idp === false) { // not properly base64 encoded - return array(); + return []; } } @@ -427,12 +427,12 @@ class PowerIdPDisco extends \SimpleSAML\XHTML\IdPDisco $newCookie = $tmp[1]; } - $params = array( + $params = [ 'lifetime' => $this->cdcLifetime, 'domain' => $this->cdcDomain, 'secure' => true, 'httponly' => false, - ); + ]; \SimpleSAML\Utils\HTTP::setCookie('_saml_idp', $newCookie, $params, false); } diff --git a/modules/discopower/locales/af/LC_MESSAGES/discopower.po b/modules/discopower/locales/af/LC_MESSAGES/discopower.po index b7e93ff9178dc46086da5c0e371bbb6c484f7eb2..e8349c6886a2af3ff319a233a35a6e2a2a030e07 100644 --- a/modules/discopower/locales/af/LC_MESSAGES/discopower.po +++ b/modules/discopower/locales/af/LC_MESSAGES/discopower.po @@ -5,15 +5,14 @@ msgstr "" "Project-Id-Version: SimpleSAMLphp 1.15\n" "Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" "POT-Creation-Date: 2016-10-12 09:23+0200\n" -"PO-Revision-Date: 2016-10-14 12:14+0200\n" +"PO-Revision-Date: 2018-11-15 15:02+0200\n" "Last-Translator: \n" -"Language: af\n" "Language-Team: \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.3.4\n" +"Generated-By: Babel 1.3\n" msgid "{discopower:tabs:ukacessfederation}" msgstr "UK Toegangs Federasie" @@ -93,3 +92,6 @@ msgstr "Europa (eduGAIN)" msgid "InCommon" msgstr "InCommon" +msgid "{discopower:tabs:incremental_search}" +msgstr "Inkrementele soektog..." + diff --git a/modules/discopower/locales/xh/LC_MESSAGES/discopower.po b/modules/discopower/locales/xh/LC_MESSAGES/discopower.po new file mode 100644 index 0000000000000000000000000000000000000000..6d224162b99d3466231e8dcb9e25e35dfdbe17f8 --- /dev/null +++ b/modules/discopower/locales/xh/LC_MESSAGES/discopower.po @@ -0,0 +1,49 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:48+0200\n" +"PO-Revision-Date: 2018-11-15 15:02+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{discopower:tabs:misc}" +msgstr "Ezahlukahlukeneyo" + +msgid "{discopower:tabs:finland}" +msgstr "Finlend" + +msgid "{discopower:tabs:sweden}" +msgstr "Swiden" + +msgid "{discopower:tabs:southafrica}" +msgstr "uMzantsi Afrika" + +msgid "{discopower:tabs:switzerland}" +msgstr "Swizalend" + +msgid "{discopower:tabs:iceland}" +msgstr "Ayisilend" + +msgid "{discopower:tabs:denmark}" +msgstr "Dominikha" + +msgid "{discopower:tabs:greece}" +msgstr "Grisi" + +msgid "{discopower:tabs:edugain}" +msgstr "Yurophu (eduGAIN)" + +msgid "{discopower:tabs:norway}" +msgstr "Norowe" + +msgid "{discopower:tabs:incremental_search}" +msgstr "Ukhangelo oluqhubekayo..." + diff --git a/modules/discopower/locales/zu/LC_MESSAGES/discopower.po b/modules/discopower/locales/zu/LC_MESSAGES/discopower.po new file mode 100644 index 0000000000000000000000000000000000000000..800d5dc2a5ef7e2268d09171c6e80bd0529c3c0e --- /dev/null +++ b/modules/discopower/locales/zu/LC_MESSAGES/discopower.po @@ -0,0 +1,40 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:48+0200\n" +"PO-Revision-Date: 2018-11-15 14:48+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{discopower:tabs:misc}" +msgstr "Ezihlukahlukene" + +msgid "{discopower:tabs:sweden}" +msgstr "Sweden" + +msgid "{discopower:tabs:incremental_search}" +msgstr "Ukucinga okukhulayo..." + +msgid "{discopower:tabs:southafrica}" +msgstr "iNingizimu Afrika" + +msgid "{discopower:tabs:switzerland}" +msgstr "ESwitzerland" + +msgid "{discopower:tabs:iceland}" +msgstr "I-Iceland" + +msgid "{discopower:tabs:edugain}" +msgstr "IYurophu (eduGAIN)" + +msgid "{discopower:tabs:norway}" +msgstr "ENorway" + diff --git a/modules/discopower/templates/disco.tpl.php b/modules/discopower/templates/disco.tpl.php index 72cad52983d435d67bb21662502f37559ff616d5..1c8ce94546dfb9bdefb7a6f536c25589a7ab353c 100644 --- a/modules/discopower/templates/disco.tpl.php +++ b/modules/discopower/templates/disco.tpl.php @@ -1,15 +1,15 @@ <?php $this->data['header'] = $this->t('selectidp'); -$this->data['jquery'] = array('core' => true, 'ui' => true, 'css' => true); +$this->data['jquery'] = ['core' => true, 'ui' => true, 'css' => true]; $this->data['head'] = '<link rel="stylesheet" media="screen" type="text/css" href="'. - SimpleSAML\Module::getModuleUrl('discopower/assets/css/style.css').'" />'; + SimpleSAML\Module::getModuleURL('discopower/assets/css/style.css').'" />'; $this->data['post'] = '<script type="text/javascript" src="'. - SimpleSAML\Module::getModuleUrl('discopower/assets/js/jquery.livesearch.js').'"></script>'; + SimpleSAML\Module::getModuleURL('discopower/assets/js/jquery.livesearch.js').'"></script>'; $this->data['post'] .= '<script type="text/javascript" src="'. - SimpleSAML\Module::getModuleUrl('discopower/assets/js/quicksilver.js').'"></script>'; + SimpleSAML\Module::getModuleURL('discopower/assets/js/quicksilver.js').'"></script>'; if (!empty($this->data['faventry'])) { $this->data['autofocus'] = 'favouritesubmit'; @@ -73,8 +73,8 @@ if (!empty($this->data['faventry'])) { } ?> -<div id="tabdiv"> - <ul class="tabset_tabs"> +<div id="tabdiv"> + <ul class="tabset_tabs"> <?php $tabs = array_keys($this->data['idplist']); $i = 1; @@ -91,7 +91,7 @@ if (!empty($this->data['faventry'])) { } } ?> - </ul> + </ul> <?php @@ -104,7 +104,7 @@ foreach ($this->data['idplist'] as $tab => $slist) { } if (!empty($slist)) { echo '<div class="inlinesearch">'; - echo '<p>Incremental search...</p>'; + echo '<p>'.htmlspecialchars($this->t('{discopower:tabs:incremental_search}')).'</p>'; echo '<form id="idpselectform" action="?" method="get">'; echo '<input class="inlinesearch" type="text" value="" name="query_'.$tab.'" id="query_'.$tab.'" /></form>'; echo '</div>'; @@ -144,5 +144,5 @@ foreach ($this->data['idplist'] as $tab => $slist) { <?php $this->data['post'] .= '<script type="text/javascript" src="'. - SimpleSAML\Module::getModuleUrl('discopower/js/javascript.js').'"></script>'; + SimpleSAML\Module::getModuleURL('discopower/js/javascript.js').'"></script>'; $this->includeAtTemplateBase('includes/footer.php'); diff --git a/modules/discopower/templates/disco.twig b/modules/discopower/templates/disco.twig index 8e7082304c16f598e75ada0fc0fb0274ef95ee15..45c4071223169b4a00a2a5af079c77703a89a1e0 100644 --- a/modules/discopower/templates/disco.twig +++ b/modules/discopower/templates/disco.twig @@ -19,8 +19,8 @@ <input type="hidden" name="return" value="{{ return|escape('html') }}" /> <input type="hidden" name="returnIDParam" value="{{ returnIDParam|escape('html') }}" /> <input type="hidden" name="idpentityid" value="{{ faventry.entityid|escape('html') }}" /> - <input type="submit" name="formsubmit" id="favouritesubmit" value="{{ '{disco:login_at}'|trans }} {{ faventry.translated|escape('html') }}" /> - </form> + <input type="submit" name="formsubmit" id="favouritesubmit" value="{{ '{disco:login_at}'|trans }} {{ faventry.translated|escape('html') }}" /> + </form> </div> {% endif %} @@ -37,7 +37,7 @@ {% if idps is not empty %} <div id="{{ tab }}" class="tabset_content{% if loop.first %} current{% endif %}"> <div class="inlinesearch"> - <p>Incremental search...</p> + <p>{{ '{discopower:tabs:incremental_search}'|trans }}</p> <form id="idpselectform" method="get"> <input class="inlinesearch" type="text" value="" name="query_{{ tab }}" id="query_{{ tab }}" /> </form> diff --git a/modules/discopower/www/disco.php b/modules/discopower/www/disco.php index 963a9e17b602d08b9d03b4d30f73469b34bc11f0..6a074787153d2076ba1dc7d872f2ad0cfadc50a5 100644 --- a/modules/discopower/www/disco.php +++ b/modules/discopower/www/disco.php @@ -2,7 +2,7 @@ try { $discoHandler = new \SimpleSAML\Module\discopower\PowerIdPDisco( - array('saml20-idp-remote', 'shib13-idp-remote'), + ['saml20-idp-remote', 'shib13-idp-remote'], 'poweridpdisco' ); } catch (\Exception $exception) { diff --git a/modules/exampleattributeserver/www/attributeserver.php b/modules/exampleattributeserver/www/attributeserver.php index 1de9e54b06186977707846db08eea286222365ce..5664e415c640326369489746774d8fde36c44504 100644 --- a/modules/exampleattributeserver/www/attributeserver.php +++ b/modules/exampleattributeserver/www/attributeserver.php @@ -16,17 +16,17 @@ if ($spEntityId === null) { throw new \SimpleSAML\Error\BadRequest('Missing <saml:Issuer> in <samlp:AttributeQuery>.'); } -$idpMetadata = $metadata->getMetadataConfig($idpEntityId, 'saml20-idp-hosted'); +$idpMetadata = $metadata->getMetaDataConfig($idpEntityId, 'saml20-idp-hosted'); $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'saml20-sp-remote'); // The endpoint we should deliver the message to $endpoint = $spMetadata->getString('testAttributeEndpoint'); // The attributes we will return -$attributes = array( - 'name' => array('value1', 'value2', 'value3'), - 'test' => array('test'), -); +$attributes = [ + 'name' => ['value1', 'value2', 'value3'], + 'test' => ['test'], +]; // The name format of the attributes $attributeNameFormat = \SAML2\Constants::NAMEFORMAT_UNSPECIFIED; @@ -38,7 +38,7 @@ if (count($returnAttributes) === 0) { $returnAttributes = $attributes; } elseif ($query->getAttributeNameFormat() !== $attributeNameFormat) { SimpleSAML\Logger::debug('Requested attributes with wrong NameFormat - no attributes returned.'); - $returnAttributes = array(); + $returnAttributes = []; } else { foreach ($returnAttributes as $name => $values) { if (!array_key_exists($name, $attributes)) { @@ -63,7 +63,7 @@ $assertion->setIssuer($idpEntityId); $assertion->setNameId($query->getNameId()); $assertion->setNotBefore(time()); $assertion->setNotOnOrAfter(time() + 300); // 60*5 = 5min -$assertion->setValidAudiences(array($spEntityId)); +$assertion->setValidAudiences([$spEntityId]); $assertion->setAttributes($returnAttributes); $assertion->setAttributeNameFormat($attributeNameFormat); @@ -73,7 +73,7 @@ $sc->SubjectConfirmationData = new \SAML2\XML\saml\SubjectConfirmationData(); $sc->SubjectConfirmationData->NotOnOrAfter = time() + 300; // 60*5 = 5min $sc->SubjectConfirmationData->Recipient = $endpoint; $sc->SubjectConfirmationData->InResponseTo = $query->getId(); -$assertion->setSubjectConfirmation(array($sc)); +$assertion->setSubjectConfirmation([$sc]); \SimpleSAML\Module\saml\Message::addSign($idpMetadata, $spMetadata, $assertion); @@ -82,7 +82,7 @@ $response->setRelayState($query->getRelayState()); $response->setDestination($endpoint); $response->setIssuer($idpEntityId); $response->setInResponseTo($query->getId()); -$response->setAssertions(array($assertion)); +$response->setAssertions([$assertion]); \SimpleSAML\Module\saml\Message::addSign($idpMetadata, $spMetadata, $response); $binding = new \SAML2\HTTPPost(); diff --git a/modules/exampleauth/lib/Auth/Process/RedirectTest.php b/modules/exampleauth/lib/Auth/Process/RedirectTest.php index 4e8d3b7781dc0d87e762ca5e653ed11164878cb6..13ff82dbd2e92a09d64943c2b2d938a09f7f3537 100644 --- a/modules/exampleauth/lib/Auth/Process/RedirectTest.php +++ b/modules/exampleauth/lib/Auth/Process/RedirectTest.php @@ -20,11 +20,11 @@ class RedirectTest extends \SimpleSAML\Auth\ProcessingFilter assert(array_key_exists('Attributes', $state)); // To check whether the state is saved correctly - $state['Attributes']['RedirectTest1'] = array('OK'); + $state['Attributes']['RedirectTest1'] = ['OK']; // Save state and redirect $id = \SimpleSAML\Auth\State::saveState($state, 'exampleauth:redirectfilter-test'); $url = \SimpleSAML\Module::getModuleURL('exampleauth/redirecttest.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/exampleauth/lib/Auth/Source/External.php b/modules/exampleauth/lib/Auth/Source/External.php index c349ba1556851ed47feab2c89cd47ab8d930f74d..fef113edb9ed6a4fe6375a8baf614ea072bb1162 100644 --- a/modules/exampleauth/lib/Auth/Source/External.php +++ b/modules/exampleauth/lib/Auth/Source/External.php @@ -76,17 +76,17 @@ class External extends \SimpleSAML\Auth\Source * to store them as arrays. */ - $attributes = array( - 'uid' => array($_SESSION['uid']), - 'displayName' => array($_SESSION['name']), - 'mail' => array($_SESSION['mail']), - ); + $attributes = [ + 'uid' => [$_SESSION['uid']], + 'displayName' => [$_SESSION['name']], + 'mail' => [$_SESSION['mail']], + ]; // Here we generate a multivalued attribute based on the account type - $attributes['eduPersonAffiliation'] = array( + $attributes['eduPersonAffiliation'] = [ $_SESSION['type'], /* In this example, either 'student' or 'employee'. */ 'member', - ); + ]; return $attributes; } @@ -143,9 +143,9 @@ class External extends \SimpleSAML\Auth\Source * We assume that whatever authentication page we send the user to has an * option to return the user to a specific page afterwards. */ - $returnTo = \SimpleSAML\Module::getModuleURL('exampleauth/resume.php', array( + $returnTo = \SimpleSAML\Module::getModuleURL('exampleauth/resume.php', [ 'State' => $stateId, - )); + ]); /* * Get the URL of the authentication page. @@ -162,9 +162,9 @@ class External extends \SimpleSAML\Auth\Source * Note the 'ReturnTo' parameter. This must most likely be replaced with * the real name of the parameter for the login page. */ - \SimpleSAML\Utils\HTTP::redirectTrustedURL($authPage, array( + \SimpleSAML\Utils\HTTP::redirectTrustedURL($authPage, [ 'ReturnTo' => $returnTo, - )); + ]); /* * The redirect function never returns, so we never get this far. diff --git a/modules/exampleauth/lib/Auth/Source/UserPass.php b/modules/exampleauth/lib/Auth/Source/UserPass.php index 633125c155089b318643533abe6f89100bcca798..19da260bbdfa201c7bb86907da5a806e5002801b 100644 --- a/modules/exampleauth/lib/Auth/Source/UserPass.php +++ b/modules/exampleauth/lib/Auth/Source/UserPass.php @@ -34,7 +34,7 @@ class UserPass extends \SimpleSAML\Module\core\Auth\UserPassBase // Call the parent constructor first, as required by the interface parent::__construct($info, $config); - $this->users = array(); + $this->users = []; // Validate and parse our configuration foreach ($config as $userpass => $attributes) { diff --git a/modules/exampleauth/www/authpage.php b/modules/exampleauth/www/authpage.php index e975d69860002c7825f5c2c1b29c40036bfdd56f..6c34995ec79627eb8e458e5aba5fe6eb858b8910 100644 --- a/modules/exampleauth/www/authpage.php +++ b/modules/exampleauth/www/authpage.php @@ -39,22 +39,22 @@ if (!preg_match('@State=(.*)@', $returnTo, $matches)) { /* * Our list of users. */ -$users = array( - 'student' => array( +$users = [ + 'student' => [ 'password' => 'student', 'uid' => 'student', 'name' => 'Student Name', 'mail' => 'somestudent@example.org', 'type' => 'student', - ), - 'admin' => array( + ], + 'admin' => [ 'password' => 'admin', 'uid' => 'admin', 'name' => 'Admin Name', 'mail' => 'someadmin@example.org', 'type' => 'employee', - ), -); + ], +]; /* * Time to handle login responses. diff --git a/modules/exampleauth/www/redirecttest.php b/modules/exampleauth/www/redirecttest.php index 103d262af775f8ff590b6e10233185e51402fc45..9d605277d31a7f2c05508d1d01aa5e4bbf596d67 100644 --- a/modules/exampleauth/www/redirecttest.php +++ b/modules/exampleauth/www/redirecttest.php @@ -12,6 +12,6 @@ if (!array_key_exists('StateId', $_REQUEST)) { } $state = \SimpleSAML\Auth\State::loadState($_REQUEST['StateId'], 'exampleauth:redirectfilter-test'); -$state['Attributes']['RedirectTest2'] = array('OK'); +$state['Attributes']['RedirectTest2'] = ['OK']; \SimpleSAML\Auth\ProcessingChain::resumeProcessing($state); diff --git a/modules/expirycheck/dictionaries/expwarning.translation.json b/modules/expirycheck/dictionaries/expwarning.translation.json index d6ff6bb2e9bec5dde755f98fdced14c4375b4964..18dc57dc108ab0bec53e63f62b5f3d08d7ea372d 100644 --- a/modules/expirycheck/dictionaries/expwarning.translation.json +++ b/modules/expirycheck/dictionaries/expwarning.translation.json @@ -11,7 +11,9 @@ "zh-tw": "\u60a8\u6c92\u6709\u6b0a\u9650\u4f7f\u7528\u6b64\u670d\u52d9", "da": "Du har ikke adgang til denne tjeneste", "af": "Jy het nie toegang na die diens nie", - "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1" + "el": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1", + "xh": "Awunalo ufikelelo kule nkonzo", + "zu": "Awukwazi ukufinyelela le sevisi" }, "no_access_to": { "sl": "Dostop zavrnjen, ker je va\u0161e uporabni\u0161ko (NetID) %NETID% ime poteklo!", @@ -25,7 +27,9 @@ "zh-tw": "\u60a8\u7684\u5e33\u865f %NETID% \u5df2\u904e\u671f\uff0c\u5b58\u53d6\u62d2\u7d55\uff01", "da": "Din konto %NETID% er udl\u00f8bet, adgang n\u00e6gtet!", "af": "Jou rekening %NETID% het verval, toegang verbode!", - "el": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9 - \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7!" + "el": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9 - \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7!", + "zu": "I-akhawunti yakho ethi %NETID% iphelelwe isikhathi, ukufinyelela kwenqatshiwe!", + "xh": "Iakhawunti yakho %NETID% iphelelwe, ufikelelo lukhatyiwe!" }, "contact_home": { "sl": "Mo\u017enost dostopa do storitve ureja va\u0161a doma\u010da organizacija. Obrnite se na njihov oddelek za pomo\u010d uporabnikom.", @@ -38,7 +42,9 @@ "zh-tw": "\u5b58\u53d6\u60a8\u7684\u7d44\u7e54\u6240\u7ba1\u7406\u4e4b\u670d\u52d9\u3002\u82e5\u6709\u554f\u984c\u8acb\u806f\u7d61\u60a8\u7576\u5730\u7684 IT \u652f\u63f4\u7a97\u53e3\u3002", "da": "Adgang til tjenester styres af din hjemmeinstitution. Kontakt venligst din lokale it-support for hj\u00e6lp.", "af": "Toegang tot dienste word beheer deur jou tuis organisasie. Kontak asseblief jou plaaslike IT ondersteuning vir navrae.", - "el": "\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u039f\u03b9\u03ba\u03b5\u03af\u03bf \u03a6\u03bf\u03c1\u03ad\u03b1. \u0393\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b1\u03b9\u03c4\u03ad\u03c1\u03c9 \u03b5\u03c1\u03c9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b1\u03c0\u03b5\u03c5\u03b8\u03c5\u03bd\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf \u03c4\u03bf\u03c0\u03b9\u03ba\u03cc \u0393\u03c1\u03b1\u03c6\u03b5\u03af\u03bf \u0391\u03c1\u03c9\u03b3\u03ae\u03c2 \u03a7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd." + "el": "\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u039f\u03b9\u03ba\u03b5\u03af\u03bf \u03a6\u03bf\u03c1\u03ad\u03b1. \u0393\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b1\u03b9\u03c4\u03ad\u03c1\u03c9 \u03b5\u03c1\u03c9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b1\u03c0\u03b5\u03c5\u03b8\u03c5\u03bd\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf \u03c4\u03bf\u03c0\u03b9\u03ba\u03cc \u0393\u03c1\u03b1\u03c6\u03b5\u03af\u03bf \u0391\u03c1\u03c9\u03b3\u03ae\u03c2 \u03a7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd.", + "zu": "Ukufinyelela amasevisi kulawulwa inhlangano yakho yasekhaya. Sicela uthinte ukusekela kwakho kwe-IT kwasendaweni uma unemibuzo.", + "xh": "Ufikelelo kwiinkonzo lulawulwa ngumbutho wakho wekhaya. Nceda uqhagamshelane nenkxaso yakho ye-IT yasekuhlaleni ngemibuzo." }, "expiry_date_text": { "sl": "Datum poteka:", @@ -52,7 +58,9 @@ "zh-tw": "\u5230\u671f\u65e5\uff1a", "da": "Udl\u00f8bsdato:", "af": "Verval datum:", - "el": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03bb\u03ae\u03be\u03b7\u03c2 \u03b9\u03c3\u03c7\u03cd\u03bf\u03c2:" + "el": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03bb\u03ae\u03be\u03b7\u03c2 \u03b9\u03c3\u03c7\u03cd\u03bf\u03c2:", + "xh": "Umhla wpkuphelelwa:", + "zu": "Usuku lokuphelelwa isikhathi:" }, "warning_header": { "sl": "Pozor! Va\u0161e uporabni\u0161ko ime (NetID) %NETID% bo poteklo \u010dez %DAYSLEFT% %DAYS%!", @@ -65,7 +73,9 @@ "zh-tw": "\u8b66\u544a\uff0c\u60a8\u7684\u5e33\u865f %NETID% \u5c07\u65bc %DAYSLEFT% %DAYS% \u5230\u671f\uff01", "da": "Advarsel: din konto %NETID% udl\u00f8ber om %DAYSLEFT% %DAYS%!", "af": "Waarskuwing, jou rekening %NETID% sal verval in %DAYSLEFT% %DAYS%!", - "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03b8\u03b1 \u03bb\u03ae\u03be\u03b5\u03b9 \u03c3\u03b5 %DAYSLEFT% %DAYS%!" + "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03b8\u03b1 \u03bb\u03ae\u03be\u03b5\u03b9 \u03c3\u03b5 %DAYSLEFT% %DAYS%!", + "zu": "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi ezinsukwini ezingu-%DAYSLEFT% %DAYS%!", + "xh": "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa %DAYSLEFT% %DAYS%!" }, "warning_header_today": { "sl": "Pozor! Va\u0161e uporabni\u0161ko ime (NetID) %NETID% pote\u010de danes!", @@ -78,7 +88,9 @@ "zh-tw": "\u8b66\u544a\uff0c\u60a8\u7684\u5e33\u865f %NETID% \u4eca\u5929\u5230\u671f\uff01", "da": "Advarsel: din konto %NETID% udl\u00f8ber i dag!", "af": "Waarskuwing, jou rekening %NETID% verval vandag!", - "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03bb\u03ae\u03b3\u03b5\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1!" + "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03bb\u03ae\u03b3\u03b5\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1!", + "zu": "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi namuhla!", + "xh": "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa namhlanje!" }, "warning": { "sl": "Pozor! Va\u0161e uporabni\u0161ko ime (NetID) %NETID% bo poteklo \u010dez %DAYSLEFT% %DAYS%!", @@ -91,7 +103,9 @@ "zh-tw": "\u8b66\u544a\uff0c\u60a8\u7684\u5e33\u865f %NETID% \u5c07\u65bc %DAYSLEFT% %DAYS% \u5230\u671f\uff01", "da": "Advarsel: din konto %NETID% udl\u00f8ber om %DAYSLEFT% %DAYS%!", "af": "Waarskuwing, jou rekening %NETID% sal verval in %DAYSLEFT% %DAYS%!", - "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03b8\u03b1 \u03bb\u03ae\u03be\u03b5\u03b9 \u03c3\u03b5 %DAYSLEFT% %DAYS%!" + "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03b8\u03b1 \u03bb\u03ae\u03be\u03b5\u03b9 \u03c3\u03b5 %DAYSLEFT% %DAYS%!", + "zu": "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi ezinsukwini ezingu-%DAYSLEFT% %DAYS%!", + "xh": "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa %DAYSLEFT% %DAYS%!" }, "warning_today": { "sl": "Pozor! Va\u0161e uporabni\u0161ko ime (NetID) %NETID% pote\u010de danes!", @@ -104,7 +118,9 @@ "zh-tw": "\u8b66\u544a\uff0c\u60a8\u7684\u5e33\u865f %NETID% \u4eca\u5929\u5230\u671f\uff01", "da": "Advarsel: din konto %NETID% udl\u00f8ber i dag!", "af": "Waarskuwing, jou rekening %NETID% verval vandag!", - "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03bb\u03ae\u03b3\u03b5\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1!" + "el": "\u03a0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7: \u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 %NETID% \u03bb\u03ae\u03b3\u03b5\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1!", + "xh": "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa namhlanje!", + "zu": "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi namuhla!" }, "day": { "sl": "dan", @@ -117,7 +133,9 @@ "zh-tw": "\u65e5", "da": "dag", "af": "dag", - "el": "\u03b7\u03bc\u03ad\u03c1\u03b1" + "el": "\u03b7\u03bc\u03ad\u03c1\u03b1", + "xh": "usuku", + "zu": "usuku" }, "days": { "sl": "dni", @@ -130,7 +148,9 @@ "zh-tw": "\u65e5", "da": "dage", "af": "dae", - "el": "\u03b7\u03bc\u03ad\u03c1\u03b5\u03c2" + "el": "\u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", + "zu": "izinsuku", + "xh": "iintsuku" }, "btn_continue": { "sl": "Zavedam se tega, nadaljuj...", @@ -144,6 +164,8 @@ "zh-tw": "\u6211\u77e5\u9053\u4e86\uff0c\u7e7c\u7e8c...", "da": "Jeg er opm\u00e6rksom p\u00e5 dette, forts\u00e6t...", "af": "Ek is bewus hiervan, gaan voort...", - "el": "\u0395\u03af\u03bc\u03b1\u03b9 \u03b5\u03bd\u03ae\u03bc\u03b5\u03c1\u03bf\u03c2 - \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1" + "el": "\u0395\u03af\u03bc\u03b1\u03b9 \u03b5\u03bd\u03ae\u03bc\u03b5\u03c1\u03bf\u03c2 - \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1", + "xh": "Ndiyakuqonda oku, qhubeka...", + "zu": "Ngiyakwazi lokhu, qhubeka..." } } diff --git a/modules/expirycheck/lib/Auth/Process/ExpiryDate.php b/modules/expirycheck/lib/Auth/Process/ExpiryDate.php index ca7d97308ae044eea12ac3448c98673df23a69ca..ddd5befc1548c290914a389771a26f632087c33d 100644 --- a/modules/expirycheck/lib/Auth/Process/ExpiryDate.php +++ b/modules/expirycheck/lib/Auth/Process/ExpiryDate.php @@ -142,7 +142,7 @@ class ExpiryDate extends \SimpleSAML\Auth\ProcessingFilter $state['netId'] = $netId; $id = \SimpleSAML\Auth\State::saveState($state, 'expirywarning:about2expire'); $url = \SimpleSAML\Module::getModuleURL('expirycheck/about2expire.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } if (!$this->checkDate($expireOnDate)) { @@ -154,7 +154,7 @@ class ExpiryDate extends \SimpleSAML\Auth\ProcessingFilter $state['netId'] = $netId; $id = \SimpleSAML\Auth\State::saveState($state, 'expirywarning:expired'); $url = \SimpleSAML\Module::getModuleURL('expirycheck/expired.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } } diff --git a/modules/expirycheck/locales/xh/LC_MESSAGES/expirycheck.po b/modules/expirycheck/locales/xh/LC_MESSAGES/expirycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..e8634353ea64cf83cc83b5ec7f4a85b4e5f86fd9 --- /dev/null +++ b/modules/expirycheck/locales/xh/LC_MESSAGES/expirycheck.po @@ -0,0 +1,51 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{expirycheck:expwarning:contact_home}" +msgstr "" +"Ufikelelo kwiinkonzo lulawulwa ngumbutho wakho wekhaya. Nceda " +"uqhagamshelane nenkxaso yakho ye-IT yasekuhlaleni ngemibuzo." + +msgid "{expirycheck:expwarning:day}" +msgstr "usuku" + +msgid "{expirycheck:expwarning:btn_continue}" +msgstr "Ndiyakuqonda oku, qhubeka..." + +msgid "{expirycheck:expwarning:days}" +msgstr "iintsuku" + +msgid "{expirycheck:expwarning:expiry_date_text}" +msgstr "Umhla wpkuphelelwa:" + +msgid "{expirycheck:expwarning:access_denied}" +msgstr "Awunalo ufikelelo kule nkonzo" + +msgid "{expirycheck:expwarning:warning_today}" +msgstr "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa namhlanje!" + +msgid "{expirycheck:expwarning:warning_header}" +msgstr "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa %DAYSLEFT% %DAYS%!" + +msgid "{expirycheck:expwarning:no_access_to}" +msgstr "Iakhawunti yakho %NETID% iphelelwe, ufikelelo lukhatyiwe!" + +msgid "{expirycheck:expwarning:warning_header_today}" +msgstr "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa namhlanje!" + +msgid "{expirycheck:expwarning:warning}" +msgstr "Isilumkiso, iakhawunti yakho %NETID% iza kuphelelwa %DAYSLEFT% %DAYS%!" + diff --git a/modules/expirycheck/locales/zu/LC_MESSAGES/expirycheck.po b/modules/expirycheck/locales/zu/LC_MESSAGES/expirycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..39a24f6166af70ccb824902d91b4409ef5280434 --- /dev/null +++ b/modules/expirycheck/locales/zu/LC_MESSAGES/expirycheck.po @@ -0,0 +1,57 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{expirycheck:expwarning:contact_home}" +msgstr "" +"Ukufinyelela amasevisi kulawulwa inhlangano yakho yasekhaya. Sicela " +"uthinte ukusekela kwakho kwe-IT kwasendaweni uma unemibuzo." + +msgid "{expirycheck:expwarning:day}" +msgstr "usuku" + +msgid "{expirycheck:expwarning:btn_continue}" +msgstr "Ngiyakwazi lokhu, qhubeka..." + +msgid "{expirycheck:expwarning:days}" +msgstr "izinsuku" + +msgid "{expirycheck:expwarning:expiry_date_text}" +msgstr "Usuku lokuphelelwa isikhathi:" + +msgid "{expirycheck:expwarning:access_denied}" +msgstr "Awukwazi ukufinyelela le sevisi" + +msgid "{expirycheck:expwarning:warning_today}" +msgstr "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi namuhla!" + +msgid "{expirycheck:expwarning:warning_header}" +msgstr "" +"Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi " +"ezinsukwini ezingu-%DAYSLEFT% %DAYS%!" + +msgid "{expirycheck:expwarning:no_access_to}" +msgstr "" +"I-akhawunti yakho ethi %NETID% iphelelwe isikhathi, ukufinyelela " +"kwenqatshiwe!" + +msgid "{expirycheck:expwarning:warning_header_today}" +msgstr "Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi namuhla!" + +msgid "{expirycheck:expwarning:warning}" +msgstr "" +"Isixwayiso, i-akhawunti yakho ethi %NETID% izophelelwa isikhathi " +"ezinsukwini ezingu-%DAYSLEFT% %DAYS%!" + diff --git a/modules/expirycheck/templates/expired.php b/modules/expirycheck/templates/expired.php index ee1e73bda4290575a2665f58740bb39119b972bf..2e0e660201ee09c97dcd1a40ff75f2d5012b2f6f 100644 --- a/modules/expirycheck/templates/expired.php +++ b/modules/expirycheck/templates/expired.php @@ -7,7 +7,7 @@ $this->includeAtTemplateBase('includes/header.php'); <?php echo $this->t( '{expirycheck:expwarning:no_access_to}', - array('%NETID%' => htmlspecialchars($this->data['netId'])) + ['%NETID%' => htmlspecialchars($this->data['netId'])] ); ?> </p> diff --git a/modules/expirycheck/www/about2expire.php b/modules/expirycheck/www/about2expire.php index fa502121e5699db9df40972157ea2d3cb91a307f..1f1766c7e7ad14dbb10c8a8f3c2aebf02149e348 100644 --- a/modules/expirycheck/www/about2expire.php +++ b/modules/expirycheck/www/about2expire.php @@ -26,44 +26,44 @@ $daysleft = $state['daysleft']; $t = new \SimpleSAML\XHTML\Template($globalConfig, 'expirycheck:about2expire.php'); $t->data['autofocus'] = 'yesbutton'; $t->data['yesTarget'] = \SimpleSAML\Module::getModuleURL('expirycheck/about2expire.php'); -$t->data['yesData'] = array('StateId' => $id); +$t->data['yesData'] = ['StateId' => $id]; $t->data['warning'] = $warning; $t->data['expireOnDate'] = $state['expireOnDate']; $t->data['netId'] = $state['netId']; if ($daysleft == 0) { # netid will expire today - $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header_today}', array( + $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header_today}', [ '%NETID%' => htmlspecialchars($this->data['netId']) - )); - $this->data['warning'] = $this->t('{expirycheck:expwarning:warning_today}', array( + ]); + $this->data['warning'] = $this->t('{expirycheck:expwarning:warning_today}', [ '%NETID%' => htmlspecialchars($this->data['netId']) - )); + ]); } elseif ($daysleft == 1) { # netid will expire in one day - $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header}', array( + $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header}', [ '%NETID%' => htmlspecialchars($this->data['netId']), '%DAYS%' => $this->t('{expirycheck:expwarning:day}'), '%DAYSLEFT%' => htmlspecialchars($daysleft), - )); - $this->data['warning'] = $this->t('{expirycheck:expwarning:warning}', array( + ]); + $this->data['warning'] = $this->t('{expirycheck:expwarning:warning}', [ '%NETID%' => htmlspecialchars($this->data['netId']), '%DAYS%' => $this->t('{expirycheck:expwarning:day}'), '%DAYSLEFT%' => htmlspecialchars($daysleft), - )); + ]); } else { # netid will expire in next <daysleft> days - $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header}', array( + $this->data['header'] = $this->t('{expirycheck:expwarning:warning_header}', [ '%NETID%' => htmlspecialchars($this->data['netId']), '%DAYS%' => $this->t('{expirycheck:expwarning:days}'), '%DAYSLEFT%' => htmlspecialchars($daysleft), - )); - $this->data['warning'] = $this->t('{expirycheck:expwarning:warning}', array( + ]); + $this->data['warning'] = $this->t('{expirycheck:expwarning:warning}', [ '%NETID%' => htmlspecialchars($this->data['netId']), '%DAYS%' => $this->t('{expirycheck:expwarning:days}'), '%DAYSLEFT%' => htmlspecialchars($daysleft), - )); + ]); } $t->show(); diff --git a/modules/ldap/lib/Auth/Process/AttributeAddFromLDAP.php b/modules/ldap/lib/Auth/Process/AttributeAddFromLDAP.php index b8d1a1eb792bc19462e683eb283e5ec8d002965e..a1062376d98df4ba15fcce8c74d0b4ccb005a5a7 100644 --- a/modules/ldap/lib/Auth/Process/AttributeAddFromLDAP.php +++ b/modules/ldap/lib/Auth/Process/AttributeAddFromLDAP.php @@ -120,7 +120,7 @@ class AttributeAddFromLDAP extends BaseFilter parent::__construct($config, $reserved); // Get filter specific config options - $this->search_attributes = $this->config->getArrayize('attributes', array()); + $this->search_attributes = $this->config->getArrayize('attributes', []); if (empty($this->search_attributes)) { $new_attribute = $this->config->getString('attribute.new', ''); $this->search_attributes[$new_attribute] = $this->config->getString('search.attribute'); @@ -146,8 +146,8 @@ class AttributeAddFromLDAP extends BaseFilter // perform a merge on the ldap_search_filter // loop over the attributes and build the search and replace arrays - $arrSearch = array(); - $arrReplace = array(); + $arrSearch = []; + $arrReplace = []; foreach ($attributes as $attr => $val) { $arrSearch[] = '%'.$attr.'%'; @@ -167,7 +167,7 @@ class AttributeAddFromLDAP extends BaseFilter return; } - if (!in_array($this->attr_policy, array('merge', 'replace', 'add'), true)) { + if (!in_array($this->attr_policy, ['merge', 'replace', 'add'], true)) { \SimpleSAML\Logger::warning("AttributeAddFromLDAP: 'attribute.policy' must be one of 'merge',". "'replace' or 'add'."); return; diff --git a/modules/ldap/lib/Auth/Process/AttributeAddUsersGroups.php b/modules/ldap/lib/Auth/Process/AttributeAddUsersGroups.php index 76d78fba8488ec95408ff3ce2c01971337bd97c2..6101e7b162921c732d4db64baab3ca827f0c9eb1 100644 --- a/modules/ldap/lib/Auth/Process/AttributeAddUsersGroups.php +++ b/modules/ldap/lib/Auth/Process/AttributeAddUsersGroups.php @@ -41,7 +41,7 @@ class AttributeAddUsersGroups extends BaseFilter // Make the array if it is not set already if (!isset($attributes[$map['groups']])) { - $attributes[$map['groups']] = array(); + $attributes[$map['groups']] = []; } // Must be an array, else cannot merge groups @@ -155,15 +155,15 @@ class AttributeAddUsersGroups extends BaseFilter "=".$attributes[$map['username']][0].") and attributes ".$map['member'] ); - $groups = array(); + $groups = []; try { /* Intention is to filter in 'ou=groups,dc=example,dc=com' for * '(memberUid = <value of attribute.username>)' and take only the attributes 'cn' (=name of the group) */ $all_groups = $this->getLdap()->searchformultiple( $openldap_base, - array($map['memberof'] => $attributes[$map['username']][0]), - array($map['member']) + [$map['memberof'] => $attributes[$map['username']][0]], + [$map['member']] ); } catch (\SimpleSAML\Error\UserNotFound $e) { return $groups; // if no groups found return with empty (still just initialized) groups array @@ -231,10 +231,10 @@ class AttributeAddUsersGroups extends BaseFilter assert(is_array($memberof)); // Used to determine what DN's have already been searched - static $searched = array(); + static $searched = []; // Init the groups variable - $groups = array(); + $groups = []; // Shorten the variable name $map = &$this->attribute_map; @@ -249,7 +249,7 @@ class AttributeAddUsersGroups extends BaseFilter // Work out what attributes to get for a group $use_group_name = false; - $get_attributes = array($map['memberof'], $map['type']); + $get_attributes = [$map['memberof'], $map['type']]; if (isset($map['name']) && $map['name']) { $get_attributes[] = $map['name']; $use_group_name = false; @@ -263,7 +263,7 @@ class AttributeAddUsersGroups extends BaseFilter } // Track all DN's that are searched - // Use DN for key as well, isset() is faster than in_array() + // Use DN for key as well, isset() is faster than in_[] $searched[$dn] = $dn; // Query LDAP for the attribute values for the DN @@ -329,18 +329,18 @@ class AttributeAddUsersGroups extends BaseFilter try { $entries = $this->getLdap()->searchformultiple( $this->base_dn, - array($map['type'] => $this->type_map['group'], $map['member'].':1.2.840.113556.1.4.1941:' => $dn), - array($map['dn']) + [$map['type'] => $this->type_map['group'], $map['member'].':1.2.840.113556.1.4.1941:' => $dn], + [$map['dn']] ); // The search may throw an exception if no entries // are found, unlikely but possible. } catch (\SimpleSAML\Error\UserNotFound $e) { - return array(); + return []; } //Init the groups - $groups = array(); + $groups = []; // Check each entry.. foreach ($entries as $entry) { @@ -365,7 +365,7 @@ class AttributeAddUsersGroups extends BaseFilter // Could not find DN, log and continue \SimpleSAML\Logger::notice( $this->title.'The DN attribute ['. - implode(', ', array($map['dn'], strtolower($map['dn']), 'dn')). + implode(', ', [$map['dn'], strtolower($map['dn']), 'dn']). '] could not be found in the entry. '.$this->var_export($entry) ); } diff --git a/modules/ldap/lib/Auth/Process/BaseFilter.php b/modules/ldap/lib/Auth/Process/BaseFilter.php index 42d5abb26d44bf0c1e87a67415eec5e007cf39ea..f7de0656fc8da7e7b090737fc0e2f5d8ec5fb916 100644 --- a/modules/ldap/lib/Auth/Process/BaseFilter.php +++ b/modules/ldap/lib/Auth/Process/BaseFilter.php @@ -141,7 +141,7 @@ abstract class BaseFilter extends \SimpleSAML\Auth\ProcessingFilter } // Build the authsource config - $authconfig = array(); + $authconfig = []; if (isset($authsource['hostname'])) { $authconfig['ldap.hostname'] = $authsource['hostname']; } @@ -223,7 +223,7 @@ abstract class BaseFilter extends \SimpleSAML\Auth\ProcessingFilter ); // Setup the attribute map which will be used to search LDAP - $this->attribute_map = array( + $this->attribute_map = [ 'dn' => $this->config->getString('attribute.dn', 'distinguishedName'), 'groups' => $this->config->getString('attribute.groups', 'groups'), 'member' => $this->config->getString('attribute.member', 'member'), @@ -231,7 +231,7 @@ abstract class BaseFilter extends \SimpleSAML\Auth\ProcessingFilter 'name' => $this->config->getString('attribute.groupname', 'name'), 'type' => $this->config->getString('attribute.type', 'objectClass'), 'username' => $this->config->getString('attribute.username', 'sAMAccountName') - ); + ]; // Log the attribute map \SimpleSAML\Logger::debug( @@ -239,10 +239,10 @@ abstract class BaseFilter extends \SimpleSAML\Auth\ProcessingFilter ); // Setup the object type map which is used to determine a DNs' type - $this->type_map = array( + $this->type_map = [ 'group' => $this->config->getString('type.group', 'group'), 'user' => $this->config->getString('type.user', 'user') - ); + ]; // Log the type map \SimpleSAML\Logger::debug( diff --git a/modules/ldap/lib/Auth/Source/LDAPMulti.php b/modules/ldap/lib/Auth/Source/LDAPMulti.php index 88a575b742acd187b0b424e7385cbfff7d0f9686..c923e984623980b5f9aec01c5bcee82453e65b40 100644 --- a/modules/ldap/lib/Auth/Source/LDAPMulti.php +++ b/modules/ldap/lib/Auth/Source/LDAPMulti.php @@ -51,13 +51,13 @@ class LDAPMulti extends \SimpleSAML\Module\core\Auth\UserPassOrgBase ); - $this->orgs = array(); - $this->ldapOrgs = array(); + $this->orgs = []; + $this->ldapOrgs = []; foreach ($config as $name => $value) { if ($name === 'username_organization_method') { $usernameOrgMethod = $cfgHelper->getValueValidate( 'username_organization_method', - array('none', 'allow', 'force') + ['none', 'allow', 'force'] ); $this->setUsernameOrgMethod($usernameOrgMethod); continue; diff --git a/modules/memcacheMonitor/hooks/hook_frontpage.php b/modules/memcacheMonitor/hooks/hook_frontpage.php index c7f59bc6ce06f0117c370a10de78206abe882fea..9329d55317391c1db6c4e7e665185bf35ecc1bc8 100644 --- a/modules/memcacheMonitor/hooks/hook_frontpage.php +++ b/modules/memcacheMonitor/hooks/hook_frontpage.php @@ -10,8 +10,8 @@ function memcacheMonitor_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['config'][] = array( + $links['config'][] = [ 'href' => SimpleSAML\Module::getModuleURL('memcacheMonitor/memcachestat.php'), 'text' => '{core:frontpage:link_memcacheMonitor}', - ); + ]; } diff --git a/modules/memcacheMonitor/templates/memcachestat.tpl.php b/modules/memcacheMonitor/templates/memcachestat.tpl.php index e3815c72bd5551ae0d1b7badaacf7a014e3f919e..02505ed2d36dac5f4720e9fb4013caf23de90e11 100644 --- a/modules/memcacheMonitor/templates/memcachestat.tpl.php +++ b/modules/memcacheMonitor/templates/memcachestat.tpl.php @@ -7,7 +7,7 @@ $title = $this->data['title']; $table = $this->data['table']; // Identify column headings -$column_titles = array(); +$column_titles = []; foreach ($table as $row_title => $row_data) { foreach ($row_data as $ct => $foo) { if (!in_array($ct, $column_titles, true)) { diff --git a/modules/memcacheMonitor/www/memcachestat.php b/modules/memcacheMonitor/www/memcachestat.php index 78bf44f56e8c811f14c4382099ebc8ce133a2acb..a5cb0d20211e83a12768d0d058f2272f7fe6a967 100644 --- a/modules/memcacheMonitor/www/memcachestat.php +++ b/modules/memcacheMonitor/www/memcachestat.php @@ -72,14 +72,14 @@ $config = \SimpleSAML\Configuration::getInstance(); // Make sure that the user has admin access rights \SimpleSAML\Utils\Auth::requireAdmin(); -$formats = array( +$formats = [ 'bytes' => 'humanreadable', 'bytes_read' => 'humanreadable', 'bytes_written' => 'humanreadable', 'limit_maxbytes' => 'humanreadable', 'time' => 'tdate', 'uptime' => 'hours', -); +]; $statsraw = \SimpleSAML\Memcache::getStats(); @@ -95,7 +95,7 @@ foreach ($stats as $key => &$entry) { } $t = new \SimpleSAML\XHTML\Template($config, 'memcacheMonitor:memcachestat.tpl.php'); -$rowTitles = array( +$rowTitles = [ 'accepting_conns' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:accepting_conns}'), 'auth_cmds' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:auth_cmds}'), 'auth_errors' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:auth_errors}'), @@ -146,10 +146,10 @@ $rowTitles = array( 'touch_misses' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:touch_misses}'), 'uptime' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:uptime}'), 'version' => \SimpleSAML\Locale\Translate::noop('{memcacheMonitor:memcachestat:version}'), -); +]; // Identify column headings -$colTitles = array(); +$colTitles = []; foreach ($stats as $rowTitle => $rowData) { foreach ($rowData as $colTitle => $foo) { if (!in_array($colTitle, $colTitles, true)) { @@ -159,7 +159,7 @@ foreach ($stats as $rowTitle => $rowData) { } if (array_key_exists('bytes', $statsraw) && array_key_exists('limit_maxbytes', $statsraw)) { - $usage = array(); + $usage = []; $maxpix = 400; foreach ($statsraw['bytes'] as $key => $row_data) { $pix = floor($statsraw['bytes'][$key] * $maxpix / $statsraw['limit_maxbytes'][$key]); diff --git a/modules/metarefresh/bin/metarefresh.php b/modules/metarefresh/bin/metarefresh.php index 08a08a0bfd37750bf1d25d421f660fbaf87b7d6f..b02fb75a6a2385eba494f4a41d060e52ff35ce60 100755 --- a/modules/metarefresh/bin/metarefresh.php +++ b/modules/metarefresh/bin/metarefresh.php @@ -45,7 +45,7 @@ $certificates = null; $validateFingerprint = null; // This variable contains the files we will parse -$files = array(); +$files = []; // Parse arguments @@ -71,11 +71,11 @@ foreach ($argv as $a) { } // Map short options to long options - $shortOptMap = array( + $shortOptMap = [ '-h' => '--help', '-o' => '--out-dir', '-s' => '--stdout', - ); + ]; if (array_key_exists($a, $shortOptMap)) { $a = $shortOptMap[$a]; } @@ -127,7 +127,7 @@ if (count($files) === 0) { $metaloader = new \SimpleSAML\Module\metarefresh\MetaLoader(); foreach ($files as $f) { - $source = array('src' => $f); + $source = ['src' => $f]; if (isset($certificates)) { $source['certificates'] = $certificates; } diff --git a/modules/metarefresh/config-templates/config-metarefresh.php b/modules/metarefresh/config-templates/config-metarefresh.php index e86585c6a5b0232d2976dbd269dff3fd9028146c..c8009d4c2756ced568d6507b286e833431040f46 100644 --- a/modules/metarefresh/config-templates/config-metarefresh.php +++ b/modules/metarefresh/config-templates/config-metarefresh.php @@ -1,6 +1,6 @@ <?php -$config = array( +$config = [ /* * Global blacklist: entityIDs that should be excluded from ALL sets. */ @@ -16,12 +16,12 @@ $config = array( */ #'conditionalGET' => true, - 'sets' => array( + 'sets' => [ - 'kalmar' => array( - 'cron' => array('hourly'), - 'sources' => array( - array( + 'kalmar' => [ + 'cron' => ['hourly'], + 'sources' => [ + [ /* * entityIDs that should be excluded from this src. */ @@ -39,17 +39,17 @@ $config = array( #'conditionalGET' => true, 'src' => 'https://kalmar2.org/simplesaml/module.php/aggregator/?id=kalmarcentral&set=saml2&exclude=norway', - 'certificates' => array( + 'certificates' => [ 'current.crt', 'rollover.crt', - ), + ], 'validateFingerprint' => '59:1D:4B:46:70:46:3E:ED:A9:1F:CC:81:6D:C0:AF:2A:09:2A:A8:01', - 'template' => array( - 'tags' => array('kalmar'), - 'authproc' => array( - 51 => array('class' => 'core:AttributeMap', 'oid2name'), - ), - ), + 'template' => [ + 'tags' => ['kalmar'], + 'authproc' => [ + 51 => ['class' => 'core:AttributeMap', 'oid2name'], + ], + ], /* * The sets of entities to load, any combination of: @@ -63,9 +63,9 @@ $config = array( * * This option takes precedence over the same option per metadata set. */ - //'types' => array(), - ), - ), + //'types' => [], + ], + ], 'expireAfter' => 34560060, // Maximum 4 days cache time (3600*24*4) 'outputDir' => 'metadata/metadata-kalmar-consuming/', @@ -86,7 +86,7 @@ $config = array( * * All of them will be used by default. */ - //'types' => array(), - ), - ), -); + //'types' => [], + ], + ], +]; diff --git a/modules/metarefresh/hooks/hook_cron.php b/modules/metarefresh/hooks/hook_cron.php index bb396b8a0ba41d75155fdfd64833386ba988f3b4..4ab82e2272d8eaf4fa9ed4b8f7d5016bf8bbbdad 100644 --- a/modules/metarefresh/hooks/hook_cron.php +++ b/modules/metarefresh/hooks/hook_cron.php @@ -19,7 +19,7 @@ function metarefresh_hook_cron(&$croninfo) $config = \SimpleSAML\Configuration::getInstance(); $mconfig = \SimpleSAML\Configuration::getOptionalConfig('config-metarefresh.php'); - $sets = $mconfig->getConfigList('sets', array()); + $sets = $mconfig->getConfigList('sets', []); $stateFile = $config->getPathValue('datadir', 'data/').'metarefresh-state.php'; foreach ($sets as $setkey => $set) { @@ -40,28 +40,28 @@ function metarefresh_hook_cron(&$croninfo) $outputDir = $set->getString('outputDir'); $outputDir = $config->resolvePath($outputDir); - $outputFormat = $set->getValueValidate('outputFormat', array('flatfile', 'serialize'), 'flatfile'); + $outputFormat = $set->getValueValidate('outputFormat', ['flatfile', 'serialize'], 'flatfile'); - $oldMetadataSrc = \SimpleSAML\Metadata\MetaDataStorageSource::getSource(array( + $oldMetadataSrc = \SimpleSAML\Metadata\MetaDataStorageSource::getSource([ 'type' => $outputFormat, 'directory' => $outputDir, - )); + ]); $metaloader = new \SimpleSAML\Module\metarefresh\MetaLoader($expire, $stateFile, $oldMetadataSrc); // Get global blacklist, whitelist and caching info - $blacklist = $mconfig->getArray('blacklist', array()); - $whitelist = $mconfig->getArray('whitelist', array()); + $blacklist = $mconfig->getArray('blacklist', []); + $whitelist = $mconfig->getArray('whitelist', []); $conditionalGET = $mconfig->getBoolean('conditionalGET', false); // get global type filters - $available_types = array( + $available_types = [ 'saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote', 'attributeauthority-remote' - ); + ]; $set_types = $set->getArrayize('types', $available_types); foreach ($set->getArray('sources') as $source) { diff --git a/modules/metarefresh/hooks/hook_frontpage.php b/modules/metarefresh/hooks/hook_frontpage.php index 9179368393a066a5c12693485d4e741dfe6214b3..e66c583f29758151ea05e792c06f0809340e85e9 100644 --- a/modules/metarefresh/hooks/hook_frontpage.php +++ b/modules/metarefresh/hooks/hook_frontpage.php @@ -10,8 +10,8 @@ function metarefresh_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['federation'][] = array( + $links['federation'][] = [ 'href' => SimpleSAML\Module::getModuleURL('metarefresh/fetch.php'), 'text' => '{metarefresh:metarefresh:frontpage_link}', - ); + ]; } diff --git a/modules/metarefresh/lib/MetaLoader.php b/modules/metarefresh/lib/MetaLoader.php index d9c92a02790cb9c78b32355a539861b2e13af250..b13e8a3c735681205b4b3b598a722ada949dbbc8 100644 --- a/modules/metarefresh/lib/MetaLoader.php +++ b/modules/metarefresh/lib/MetaLoader.php @@ -17,13 +17,13 @@ class MetaLoader private $stateFile; private $changed; private $state; - private $types = array( + private $types = [ 'saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote', 'attributeauthority-remote' - ); + ]; /** * Constructor @@ -35,7 +35,7 @@ class MetaLoader public function __construct($expire = null, $stateFile = null, $oldMetadataSrc = null) { $this->expire = $expire; - $this->metadata = array(); + $this->metadata = []; $this->oldMetadataSrc = $oldMetadataSrc; $this->stateFile = $stateFile; $this->changed = false; @@ -45,7 +45,7 @@ class MetaLoader include $stateFile; } - $this->state = array(); + $this->state = []; } /** @@ -67,7 +67,7 @@ class MetaLoader public function setTypes($types) { if (!is_array($types)) { - $types = array($types); + $types = [$types]; } $this->types = $types; } @@ -130,15 +130,15 @@ class MetaLoader foreach ($entities as $entity) { if (isset($source['blacklist'])) { - if (!empty($source['blacklist']) && in_array($entity->getEntityID(), $source['blacklist'], true)) { - Logger::info('Skipping "'.$entity->getEntityID().'" - blacklisted.'."\n"); + if (!empty($source['blacklist']) && in_array($entity->getEntityId(), $source['blacklist'], true)) { + Logger::info('Skipping "'.$entity->getEntityId().'" - blacklisted.'."\n"); continue; } } if (isset($source['whitelist'])) { - if (!empty($source['whitelist']) && !in_array($entity->getEntityID(), $source['whitelist'], true)) { - Logger::info('Skipping "'.$entity->getEntityID().'" - not in the whitelist.'."\n"); + if (!empty($source['whitelist']) && !in_array($entity->getEntityId(), $source['whitelist'], true)) { + Logger::info('Skipping "'.$entity->getEntityId().'" - not in the whitelist.'."\n"); continue; } } @@ -223,7 +223,7 @@ class MetaLoader } } - return array('http' => array('header' => $rawheader)); + return ['http' => ['header' => $rawheader]]; } @@ -251,7 +251,7 @@ class MetaLoader if (isset($source['conditionalGET']) && $source['conditionalGET']) { // Headers section if ($responseHeaders !== null) { - $candidates = array('last-modified', 'etag'); + $candidates = ['last-modified', 'etag']; foreach ($candidates as $candidate) { if (array_key_exists($candidate, $responseHeaders)) { @@ -347,7 +347,7 @@ class MetaLoader $metadata['metarefresh:src'] = $filename; if (!array_key_exists($type, $this->metadata)) { - $this->metadata[$type] = array(); + $this->metadata[$type] = []; } // If expire is defined in constructor... @@ -364,7 +364,7 @@ class MetaLoader $metadata['expire'] = $this->expire; } } - $this->metadata[$type][] = array('filename' => $filename, 'metadata' => $metadata); + $this->metadata[$type][] = ['filename' => $filename, 'metadata' => $metadata]; } @@ -376,9 +376,9 @@ class MetaLoader assert($config instanceof \SimpleSAML\Configuration); $arpfile = $config->getValue('arpfile'); - $types = array('saml20-sp-remote'); + $types = ['saml20-sp-remote']; - $md = array(); + $md = []; foreach ($this->metadata as $category => $elements) { if (!in_array($category, $types, true)) { continue; @@ -458,7 +458,7 @@ class MetaLoader { assert(is_string($outputDir)); - $metaHandler = new \SimpleSAML\Metadata\MetaDataStorageHandlerSerialize(array('directory' => $outputDir)); + $metaHandler = new \SimpleSAML\Metadata\MetaDataStorageHandlerSerialize(['directory' => $outputDir]); // First we add all the metadata entries to the metadata handler foreach ($this->metadata as $set => $elements) { diff --git a/modules/metarefresh/www/fetch.php b/modules/metarefresh/www/fetch.php index 0ecb548d0206fb7c1ca395e58fbe736fec3d21c4..a715886fa035cc9d8f4103c141be87d3bb0e90d6 100644 --- a/modules/metarefresh/www/fetch.php +++ b/modules/metarefresh/www/fetch.php @@ -7,7 +7,7 @@ $mconfig = \SimpleSAML\Configuration::getOptionalConfig('config-metarefresh.php' \SimpleSAML\Logger::setCaptureLog(true); -$sets = $mconfig->getConfigList('sets', array()); +$sets = $mconfig->getConfigList('sets', []); foreach ($sets as $setkey => $set) { \SimpleSAML\Logger::info('[metarefresh]: Executing set ['.$setkey.']'); @@ -22,17 +22,17 @@ foreach ($sets as $setkey => $set) { $metaloader = new \SimpleSAML\Module\metarefresh\MetaLoader($expire); # Get global black/whitelists - $blacklist = $mconfig->getArray('blacklist', array()); - $whitelist = $mconfig->getArray('whitelist', array()); + $blacklist = $mconfig->getArray('blacklist', []); + $whitelist = $mconfig->getArray('whitelist', []); // get global type filters - $available_types = array( + $available_types = [ 'saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote', 'attributeauthority-remote' - ); + ]; $set_types = $set->getArrayize('types', $available_types); foreach ($set->getArray('sources') as $source) { @@ -64,7 +64,7 @@ foreach ($sets as $setkey => $set) { $outputDir = $set->getString('outputDir'); $outputDir = $config->resolvePath($outputDir); - $outputFormat = $set->getValueValidate('outputFormat', array('flatfile', 'serialize'), 'flatfile'); + $outputFormat = $set->getValueValidate('outputFormat', ['flatfile', 'serialize'], 'flatfile'); switch ($outputFormat) { case 'flatfile': $metaloader->writeMetadataFiles($outputDir); diff --git a/modules/multiauth/dictionaries/multiauth.translation.json b/modules/multiauth/dictionaries/multiauth.translation.json index ccf9e3b7670ce8b796bde6f1e022322ffdffe49b..bd235213fe92d25febc5ea31e83cb372ea6b8a7c 100644 --- a/modules/multiauth/dictionaries/multiauth.translation.json +++ b/modules/multiauth/dictionaries/multiauth.translation.json @@ -30,7 +30,9 @@ "eu": "Hauta ezazu iturburu bat kautotzeko", "af": "Kies 'n verifikasie bron", "el": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c0\u03b7\u03b3\u03ae\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2", - "pl": "Wybierz \u017arĂłd\u0142o autentykacji" + "pl": "Wybierz \u017arĂłd\u0142o autentykacji", + "xh": "Khetha umthombo wongqinisiso", + "zu": "Khetha umthombo wokuqinisekisa" }, "select_source_text": { "no": "Den valgte autentiseringskilden vil bli brukt til \u00e5 autentisere brukeren og deretter etablere en gyldig sesjon.", @@ -63,6 +65,8 @@ "eu": "Kautotzeko hautatu duzun iturburua, kautotu eta baliozko saio bat sortzeko erabiliko da.", "af": "Die gekose verifikasie bron sal gebruik word om jou te identifiseer en 'n geldige sessie te skep.", "el": "\u0397 \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03b7\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03b8\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03ac \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1\u03c2 (session).", - "pl": "Wybrane \u017arĂłd\u0142o zostanie u\u017Cyte do autentykacji i stworzenia sesji" + "pl": "Wybrane \u017arĂłd\u0142o zostanie u\u017Cyte do autentykacji i stworzenia sesji", + "zu": "Umthombo wokuqinisekisa okhethiwe uzosetshenziswa ukuze uqinisekiswe futhi kwakhiwe iseshini esebenzayo.", + "xh": "Umthombo wongqinisiso okhethiweyo uza kusetyenziswa ukukungqinisisa nokuyila iseshoni esebenzayo." } } diff --git a/modules/multiauth/lib/Auth/Source/MultiAuth.php b/modules/multiauth/lib/Auth/Source/MultiAuth.php index a0f9778a2ffdf8a5f505a19b01c616d3abb5f8d5..4fa78625242794485ee5838a07730674e3b8fd91 100644 --- a/modules/multiauth/lib/Auth/Source/MultiAuth.php +++ b/modules/multiauth/lib/Auth/Source/MultiAuth.php @@ -58,18 +58,18 @@ class MultiAuth extends \SimpleSAML\Auth\Source $globalConfiguration = \SimpleSAML\Configuration::getInstance(); $defaultLanguage = $globalConfiguration->getString('language.default', 'en'); $authsources = \SimpleSAML\Configuration::getConfig('authsources.php'); - $this->sources = array(); + $this->sources = []; foreach ($config['sources'] as $source => $info) { if (is_int($source)) { // Backwards compatibility $source = $info; - $info = array(); + $info = []; } if (array_key_exists('text', $info)) { $text = $info['text']; } else { - $text = array($defaultLanguage => $source); + $text = [$defaultLanguage => $source]; } if (array_key_exists('help', $info)) { @@ -87,12 +87,12 @@ class MultiAuth extends \SimpleSAML\Auth\Source } } - $this->sources[] = array( + $this->sources[] = [ 'source' => $source, 'text' => $text, 'help' => $help, 'css_class' => $css_class, - ); + ]; } } @@ -122,7 +122,7 @@ class MultiAuth extends \SimpleSAML\Auth\Source * saved state array as a parameter to the login form */ $url = \SimpleSAML\Module::getModuleURL('multiauth/selectsource.php'); - $params = array('AuthState' => $id); + $params = ['AuthState' => $id]; // Allowes the user to specify the auth souce to be used if (isset($_GET['source'])) { @@ -221,13 +221,13 @@ class MultiAuth extends \SimpleSAML\Auth\Source $cookieName = 'multiauth_source_'.$this->authId; $config = \SimpleSAML\Configuration::getInstance(); - $params = array( + $params = [ // We save the cookies for 90 days 'lifetime' => 7776000, //60*60*24*90 // The base path for cookies. This should be the installation directory for SimpleSAMLphp. 'path' => $config->getBasePath(), 'httponly' => false, - ); + ]; \SimpleSAML\Utils\HTTP::setCookie($cookieName, $source, $params, false); } diff --git a/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po new file mode 100644 index 0000000000000000000000000000000000000000..49d81485b459efaa92ed2676d7d7043221c4199a --- /dev/null +++ b/modules/multiauth/locales/xh/LC_MESSAGES/multiauth.po @@ -0,0 +1,24 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{multiauth:multiauth:select_source_text}" +msgstr "" +"Umthombo wongqinisiso okhethiweyo uza kusetyenziswa ukukungqinisisa " +"nokuyila iseshoni esebenzayo." + +msgid "{multiauth:multiauth:select_source_header}" +msgstr "Khetha umthombo wongqinisiso" + diff --git a/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po b/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po new file mode 100644 index 0000000000000000000000000000000000000000..6f935b4e6bcddb06e66ca04fbd09a352f348d1e9 --- /dev/null +++ b/modules/multiauth/locales/zu/LC_MESSAGES/multiauth.po @@ -0,0 +1,24 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:49+0200\n" +"PO-Revision-Date: 2018-11-15 14:49+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{multiauth:multiauth:select_source_text}" +msgstr "" +"Umthombo wokuqinisekisa okhethiwe uzosetshenziswa ukuze uqinisekiswe " +"futhi kwakhiwe iseshini esebenzayo." + +msgid "{multiauth:multiauth:select_source_header}" +msgstr "Khetha umthombo wokuqinisekisa" + diff --git a/modules/negotiate/docs/negotiate.md b/modules/negotiate/docs/negotiate.md index 3a3dd76f0f81bce8e0313cc0e2288fb737f47026..8563b338d38f1df29c83e7df33cbcf9013f89e2e 100644 --- a/modules/negotiate/docs/negotiate.md +++ b/modules/negotiate/docs/negotiate.md @@ -51,7 +51,7 @@ client. All configuration is handled in authsources.php: - 'weblogin' => array( + 'weblogin' => [ 'negotiate:Negotiate', 'keytab' => '/path/to/keytab-file', 'fallback' => 'ldap', @@ -59,19 +59,18 @@ All configuration is handled in authsources.php: 'base' => 'cn=people,dc=example,dc=com', 'adminUser' => 'cn=idp-fallback,cn=services,dc=example,dc=com', 'adminPassword' => 'VerySecretPassphraseHush' - ), - 'ldap' => array( + ], + 'ldap' => [ 'ldap:LDAP', 'hostname' => 'ldap.example.com', 'enable_tls' => TRUE, 'dnpattern' => 'uid=%username%,cn=people,dc=example,dc=com', 'search.enable' => FALSE - ), + ], -`php_krb5` -++++++++++ +### `php_krb5` The processing involving the actual Kerberos ticket handling is done by php_krb5. The package is not yet labeled stable but has worked well @@ -80,7 +79,7 @@ during testing. NOTE! php_krb5 hardcodes the service name in the keytab file to 'HTTP' as of php_krb5-1.0rc2. To change this you need to edit the module code. Be wary of how much space is allocated to the string in -negotiate_auth.c:101. +`negotiate_auth.c:101`. Depending on you apache config you may need a rewrite rule to allow php_krb5 to read the HTTP_AUTHORIZATION header: @@ -94,40 +93,38 @@ Test the Kerberos setup with the following script: <?php if(!extension_loaded('krb5')) { - die('KRB5 Extension not installed'); + die('KRB5 Extension not installed'); } if(!empty($_SERVER['HTTP_AUTHORIZATION'])) { - list($mech, $data) = explode(' ', $_SERVER['HTTP_AUTHORIZATION']); - if(strtolower($mech) == 'basic') { - echo "Client sent basic"; - die('Unsupported request'); - } else if(strtolower($mech) != 'negotiate') { - echo "Couldn't find negotiate"; - die('Unsupported request'); - } - $auth = new KRB5NegotiateAuth('/path/to/keytab'); - $reply = ''; - if($reply = $auth->doAuthentication()) { - header('HTTP/1.1 200 Success'); - echo 'Success - authenticated as ' . $auth->getAuthenticatedUser() . '<br>'; - } else { - echo 'Failed to authN.'; - die(); - } + list($mech, $data) = explode(' ', $_SERVER['HTTP_AUTHORIZATION']); + if(strtolower($mech) == 'basic') { + echo "Client sent basic"; + die('Unsupported request'); + } else if(strtolower($mech) != 'negotiate') { + echo "Couldn't find negotiate"; + die('Unsupported request'); + } + $auth = new KRB5NegotiateAuth('/path/to/keytab'); + $reply = ''; + if($reply = $auth->doAuthentication()) { + header('HTTP/1.1 200 Success'); + echo 'Success - authenticated as ' . $auth->getAuthenticatedUser() . '<br>'; + } else { + echo 'Failed to authN.'; + die(); + } } else { - header('HTTP/1.1 401 Unauthorized'); - header('WWW-Authenticate: Negotiate',false); - echo 'Not authenticated. No HTTP_AUTHORIZATION available.'; - echo 'Check headers sent by the browser and verify that '; - echo 'apache passes them to PHP'; + header('HTTP/1.1 401 Unauthorized'); + header('WWW-Authenticate: Negotiate',false); + echo 'Not authenticated. No HTTP_AUTHORIZATION available.'; + echo 'Check headers sent by the browser and verify that '; + echo 'apache passes them to PHP'; } - ?> -`LDAP` -++++++ +### LDAP LDAP is used to verify the user due to the lack of metadata in Kerberos. A domain can contain lots of kiosk users, non-personal @@ -146,15 +143,14 @@ be a DN to an object with access to search for all relevant user objects and to look up attributes needed by the SP. -`Subnet filtering` -++++++++++++++++++ +### Subnet filtering Subnet is meant to filter which clients you subject to the WWW-Authenticate request. Syntax is: - 'subnet' => array('127.0.0.0/16','192.168.0.0/16'), + 'subnet' => [ '127.0.0.0/16','192.168.0.0/16' ], Browsers, especially IE, behave erratically when they encounter a WWW-Authenticate from the webserver. Included in RFC4559 Negotiate is @@ -167,18 +163,16 @@ currently in the domain should be the only ones that are promted with WWW-Authenticate: Negotiate. -`Enabling/disabling Negotiate from a web browser` -+++++++++++++++++++++++++++++++++++++++++++++++++ +### Enabling/disabling Negotiate from a web browser Included in Negotiate are semi-static web pages for enabling and -disabling Negotiate for any given client. The pages simple set/deletes +disabling Negotiate for any given client. The pages simplly set/delete a cookie that Negotiate will look for when a client attempts AuthN. The help text in the JSON files should be locally overwritten to fully explain which clients are accepted by Negotiate. -`Logout/Login loop and reauthenticating` -++++++++++++++++++++++++++++++++++++++++ +### Logout/Login loop and reauthenticating Due to the automatic AuthN of certain clients and how SPs will automatically redirect clients to the IdP when clients try to access @@ -188,50 +182,51 @@ out user. The consequence of this is that the user will be presented with the login mechanism of the fallback module specified in Negotiate config. -SimpleSamlPhp offers no decent way of adding hooks or piggyback this +SimpleSamlPHP offers no decent way of adding hooks or piggyback this information to the fallback module. In future releases one might add a box of information to the user explaining what's happening. One can add this bit of code to the template in the fallback AuthN module: -// This should be placed in your www script -$nego_session = false; -$nego_perm = false; -$nego_retry = null; -if (array_key_exists('negotiate:authId', $state)) { - $nego = \SimpleSAML\Auth\Source::getById($state['negotiate:authId']); - $mask = $nego->checkMask(); - $disabled = $nego->spDisabledInMetadata($spMetadata); - $session_disabled = $session->getData('negotiate:disable', 'session'); - if ($mask and !$disabled) { - if(array_key_exists('NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT', $_COOKIE) && - $_COOKIE['NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT'] == 'True') { - $nego_perm = true; - } elseif ($session_disabled) { - $retryState = \SimpleSAML\Auth\State::cloneState($state); - unset($retryState[\SimpleSAML\Auth\State::ID]); - $nego_retry = \SimpleSAML\Auth\State::saveState($retryState, '\SimpleSAML\Module\negotiate\Auth\Source\Negotiate.StageId'); - $nego_session = true; + // This should be placed in your www script + $nego_session = false; + $nego_perm = false; + $nego_retry = null; + if (array_key_exists('negotiate:authId', $state)) { + $nego = \SimpleSAML\Auth\Source::getById($state['negotiate:authId']); + $mask = $nego->checkMask(); + $disabled = $nego->spDisabledInMetadata($spMetadata); + $session_disabled = $session->getData('negotiate:disable', 'session'); + if ($mask and !$disabled) { + if(array_key_exists('NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT', $_COOKIE) && + $_COOKIE['NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT'] == 'True') { + $nego_perm = true; + } elseif ($session_disabled) { + $retryState = \SimpleSAML\Auth\State::cloneState($state); + unset($retryState[\SimpleSAML\Auth\State::ID]); + $nego_retry = \SimpleSAML\Auth\State::saveState($retryState, '\SimpleSAML\Module\negotiate\Auth\Source\Negotiate.StageId'); + $nego_session = true; + } } } -} - -// This should reside in your template -if($this->data['nego']['disable_perm']) { - echo '<span id="login-extra-info-uio.no" class="login-extra-info">' - . '<span class="login-extra-info-divider"></span>' - . $this->t('{feide:login:login_uio_negotiate_disabled_permanent_info}') - . '</span>'; -} elseif($this->data['nego']['disable_session']) { - echo '<span id="login-extra-info-uio.no" class="login-extra-info">' - . '<span class="login-extra-info-divider"></span>' - . $this->t('{feide:login:login_uio_negotiate_disabled_session_info}') - . '<br><a href="'.SimpleSAML\Module::getModuleURL('negotiate/retry.php', array('AuthState' => $this->data['nego']['retry_id'])).'">' - . $this->t('{feide:login:login_uio_negotiate_disabled_session_info_link}') - . '</a>' - . '</span>'; -} + + // This should reside in your template + if($this->data['nego']['disable_perm']) { + echo '<span id="login-extra-info-uio.no" class="login-extra-info">' + . '<span class="login-extra-info-divider"></span>' + . $this->t('{feide:login:login_uio_negotiate_disabled_permanent_info}') + . '</span>'; + } elseif($this->data['nego']['disable_session']) { + echo '<span id="login-extra-info-uio.no" class="login-extra-info">' + . '<span class="login-extra-info-divider"></span>' + . $this->t('{feide:login:login_uio_negotiate_disabled_session_info}') + . '<br><a href="'.SimpleSAML\Module::getModuleURL('negotiate/retry.php', [ 'AuthState' => $this->data['nego']['retry_id'] ]).'">' + . $this->t('{feide:login:login_uio_negotiate_disabled_session_info_link}') + . '</a>' + . '</span>'; + } + The above may or may not work right out of the box for you but it is the gist of it. By looking at the state variable, cookie and checking @@ -254,26 +249,28 @@ Negotiate->authenticate() but remaining code in retry.php will be discarded. Other side-effects may occur. -`Clients` -+++++++++ +### Clients -* Internet Explorer +#### Internet Explorer YMMV but generally you need to have your IdP defined in "Internet Options" -> "Security" -> "Local intranet" -> "Sites" -> "Advanced". You also need "Internet Options" -> "Advanced" -> "Security" -> Enable Integrated Windows Authentication" enabled. -* Firefox +#### Firefox Open "about:config". Locate "network.auth.use-sspi" and verify that this is true (on a Windows machine). Next locate "network.negotiate-auth.trusted-uris" and insert your IdP. -* Safari +#### Safari TODO -* Chrome +#### Chromium + +To allow Kerberos SPN generation on Linux-based platforms, add the +following line to /etc/chromium.d/default-flags: + export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --auth-server-whitelist=.example.com" -TODO diff --git a/modules/negotiate/lib/Auth/Source/Negotiate.php b/modules/negotiate/lib/Auth/Source/Negotiate.php index eaf32c44fcb6a63a3c7920817cb995599f76e4e6..21601452f408a68ff26b1f973dda20cbbf3141e6 100644 --- a/modules/negotiate/lib/Auth/Source/Negotiate.php +++ b/modules/negotiate/lib/Auth/Source/Negotiate.php @@ -25,8 +25,8 @@ class Negotiate extends \SimpleSAML\Auth\Source protected $debugLDAP = false; protected $timeout = 30; protected $keytab = ''; - protected $base = array(); - protected $attr = array('uid'); + protected $base = []; + protected $attr = ['uid']; protected $subnet = null; protected $admin_user = null; protected $admin_pw = null; @@ -62,7 +62,7 @@ class Negotiate extends \SimpleSAML\Auth\Source $this->enableTLS = $config->getBoolean('enable_tls', false); $this->debugLDAP = $config->getBoolean('debugLDAP', false); $this->timeout = $config->getInteger('timeout', 30); - $this->keytab = $config->getString('keytab'); + $this->keytab = \SimpleSAML\Utils\Config::getCertPath($config->getString('keytab')); $this->base = $config->getArrayizeString('base'); $this->attr = $config->getArrayizeString('attr', 'uid'); $this->subnet = $config->getArray('subnet', null); @@ -88,9 +88,9 @@ class Negotiate extends \SimpleSAML\Auth\Source assert(is_array($state)); // set the default backend to config - $state['LogoutState'] = array( + $state['LogoutState'] = [ 'negotiate:backend' => $this->backend, - ); + ]; $state['negotiate:authId'] = $this->authId; @@ -157,9 +157,9 @@ class Negotiate extends \SimpleSAML\Auth\Source if ($lookup !== null) { $state['Attributes'] = $lookup; // Override the backend so logout will know what to look for - $state['LogoutState'] = array( + $state['LogoutState'] = [ 'negotiate:backend' => null, - ); + ]; Logger::info('Negotiate - authenticate(): '.$user.' authorized.'); \SimpleSAML\Auth\Source::completeAuth($state); // Never reached. @@ -175,7 +175,7 @@ class Negotiate extends \SimpleSAML\Auth\Source // Save the $state array, so that we can restore if after a redirect Logger::debug('Negotiate - fallback: '.$state['LogoutState']['negotiate:backend']); $id = \SimpleSAML\Auth\State::saveState($state, self::STAGEID); - $params = array('AuthState' => $id); + $params = ['AuthState' => $id]; $this->sendNegotiate($params); exit; @@ -248,7 +248,7 @@ class Negotiate extends \SimpleSAML\Auth\Source header('WWW-Authenticate: Negotiate', false); $t = new \SimpleSAML\XHTML\Template($config, 'negotiate:redirect.twig'); - $t->data['baseurlpath'] = \SimpleSAML\Module::getModuleUrl('negotiate'); + $t->data['baseurlpath'] = \SimpleSAML\Module::getModuleURL('negotiate'); $t->data['url'] = $url; $t->data['json_url'] = $json_url; $t->show(); @@ -269,7 +269,7 @@ class Negotiate extends \SimpleSAML\Auth\Source $authId = $state['LogoutState']['negotiate:backend']; if ($authId === null) { - throw new \SimpleSAML\Error\Error(array(500, "Unable to determine auth source.")); + throw new \SimpleSAML\Error\Error([500, "Unable to determine auth source."]); } $source = \SimpleSAML\Auth\Source::getById($authId); diff --git a/modules/negotiate/templates/disable.php b/modules/negotiate/templates/disable.php index f9e2d55082eebd2a5e4efe9c84eecaebb1833a09..fd8338e9f49265f8a80830aeb5d033bf69c4a6f4 100644 --- a/modules/negotiate/templates/disable.php +++ b/modules/negotiate/templates/disable.php @@ -10,7 +10,7 @@ $this->includeAtTemplateBase('includes/header.php'); ?> <h1><?php echo $this->t('{negotiate:negotiate:disable_title}'); ?></h1> -<?php echo $this->t('{negotiate:negotiate:disable_info_pre}', array('URL' => htmlspecialchars($this->data['url']))); ?> +<?php echo $this->t('{negotiate:negotiate:disable_info_pre}', ['URL' => htmlspecialchars($this->data['url'])]); ?> <?php echo $this->t('{negotiate:negotiate:info_post}'); ?> diff --git a/modules/negotiate/templates/enable.php b/modules/negotiate/templates/enable.php index 939af6fb6d828aedd6d178970fa803e064cc099a..a25b6a213b414cfe8c7348d41c13d168fffa412f 100644 --- a/modules/negotiate/templates/enable.php +++ b/modules/negotiate/templates/enable.php @@ -11,7 +11,7 @@ $this->includeAtTemplateBase('includes/header.php'); ?> <h1><?php echo $this->t('{negotiate:negotiate:enable_title}'); ?></h1> -<?php echo $this->t('{negotiate:negotiate:enable_info_pre}', array('URL' => htmlspecialchars($this->data['url']))); ?> +<?php echo $this->t('{negotiate:negotiate:enable_info_pre}', ['URL' => htmlspecialchars($this->data['url'])]); ?> <?php echo $this->t('{negotiate:negotiate:info_post}'); ?> diff --git a/modules/negotiate/www/disable.php b/modules/negotiate/www/disable.php index 1832f4a3238e307687eff4215b5aca4b8224d651..2734f05c31a7bbb9214a3ecf0965a3f74128aac4 100644 --- a/modules/negotiate/www/disable.php +++ b/modules/negotiate/www/disable.php @@ -5,11 +5,11 @@ * @package SimpleSAMLphp */ -$params = array( +$params = [ 'expire' => (mktime(0, 0, 0, 1, 1, 2038)), 'secure' => false, 'httponly' => true, -); +]; \SimpleSAML\Utils\HTTP::setCookie('NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT', 'True', $params, false); $globalConfig = \SimpleSAML\Configuration::getInstance(); diff --git a/modules/negotiate/www/enable.php b/modules/negotiate/www/enable.php index 891eac6d738a3a365411368e389274a267c2b40b..be52928db4be463d68b030e0cf07d0fbb8a8a26c 100644 --- a/modules/negotiate/www/enable.php +++ b/modules/negotiate/www/enable.php @@ -5,10 +5,10 @@ * @package SimpleSAMLphp */ -$params = array( +$params = [ 'secure' => false, 'httponly' => true, -); +]; \SimpleSAML\Utils\HTTP::setCookie('NEGOTIATE_AUTOLOGIN_DISABLE_PERMANENT', null, $params, false); $globalConfig = \SimpleSAML\Configuration::getInstance(); diff --git a/modules/oauth/config-template/module_oauth.php b/modules/oauth/config-template/module_oauth.php index 475acb3e24b900a45ac5a2df07780645facc67f5..63327d6be9a83f009b69908ec944ac9f025feb31 100644 --- a/modules/oauth/config-template/module_oauth.php +++ b/modules/oauth/config-template/module_oauth.php @@ -4,7 +4,7 @@ * */ -$config = array( +$config = [ /* Enable the getUserInfo endpoint. Do not enable unless you know what you do. * It may give external parties access to userInfo unless properly secured. */ @@ -21,4 +21,4 @@ $config = array( // useridattr is the attribute-name that contains the userid as returned from idp 'auth' => 'default-sp', 'useridattr', 'user', -); +]; diff --git a/modules/oauth/hooks/hook_frontpage.php b/modules/oauth/hooks/hook_frontpage.php index 23ebb76d541025c90d8ea91b8c7c9fa18abbcbb9..028e11c85d0750157741bb07f5b5cffe20ca6cbf 100644 --- a/modules/oauth/hooks/hook_frontpage.php +++ b/modules/oauth/hooks/hook_frontpage.php @@ -9,8 +9,8 @@ function oauth_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['federation']['oauthregistry'] = array( + $links['federation']['oauthregistry'] = [ 'href' => SimpleSAML\Module::getModuleURL('oauth/registry.php'), 'text' => '{core:frontpage:link_oauth}', - ); + ]; } diff --git a/modules/oauth/lib/Consumer.php b/modules/oauth/lib/Consumer.php index 0f7b81bca12e803e3a516acf48d91129201d2498..b3a4080ae6c384a48b3971fcc51c9354d1ac5f4d 100644 --- a/modules/oauth/lib/Consumer.php +++ b/modules/oauth/lib/Consumer.php @@ -103,7 +103,7 @@ class Consumer public function getAuthorizeRequest($url, $requestToken, $redirect = true, $callback = null) { - $params = array('oauth_token' => $requestToken->key); + $params = ['oauth_token' => $requestToken->key]; if ($callback) { $params['oauth_callback'] = $callback; } @@ -146,18 +146,18 @@ class Consumer $data_req->sign_request($this->signer, $this->consumer, $accessToken); $postdata = $data_req->to_postdata(); - $opts = array( - 'ssl' => array( + $opts = [ + 'ssl' => [ 'verify_peer' => false, 'capture_peer_cert' => true, 'capture_peer_chain' => true - ), - 'http' => array( + ], + 'http' => [ 'method' => 'POST', 'content' => $postdata, 'header' => 'Content-Type: application/x-www-form-urlencoded', - ), - ); + ], + ]; try { $response = \SimpleSAML\Utils\HTTP::fetch($url, $opts); diff --git a/modules/oauth/lib/OAuthServer.php b/modules/oauth/lib/OAuthServer.php index b6607e6feb6bfeb4372dd1c50462295f6325821d..41e60383ad92a01ebecc95fb7695f5d6c14c59eb 100644 --- a/modules/oauth/lib/OAuthServer.php +++ b/modules/oauth/lib/OAuthServer.php @@ -11,7 +11,7 @@ require_once(dirname(dirname(__FILE__)).'/libextinc/OAuth.php'); * @package SimpleSAMLphp */ -class OAuthServer extends OAuthServer +class OAuthServer extends \OAuthServer { public function __construct($store) { diff --git a/modules/oauth/lib/OAuthStore.php b/modules/oauth/lib/OAuthStore.php index ee5725cb1276546407f04b9e43d984ccf496cc93..b0c9d222dd5176dd343878a774309676bf03eb2c 100644 --- a/modules/oauth/lib/OAuthStore.php +++ b/modules/oauth/lib/OAuthStore.php @@ -21,14 +21,14 @@ class OAuthStore extends \OAuthDataStore private $config; private $defaultversion = '1.0'; - protected $_store_tables = array( + protected $_store_tables = [ 'consumers' => 'consumer = array with consumer attributes', 'nonce' => 'nonce+consumer_key = -boolean-', 'requesttorequest' => 'requestToken.key = array(version,callback,consumerKey,)', 'authorized' => 'requestToken.key, verifier = array(authenticated-user-attributes)', 'access' => 'accessToken.key+consumerKey = accesstoken', 'request' => 'requestToken.key+consumerKey = requesttoken', - ); + ]; public function __construct() @@ -66,11 +66,11 @@ class OAuthStore extends \OAuthDataStore } $verifier = \SimpleSAML\Utils\Random::generateID(); - $url = \SimpleSAML\Utils\HTTP::addURLParameters($url, array("oauth_verifier"=>$verifier)); + $url = \SimpleSAML\Utils\HTTP::addURLParameters($url, ["oauth_verifier"=>$verifier]); $this->store->set('authorized', $requestTokenKey, $verifier, $data, $this->config->getValue('requestTokenDuration', 1800)); //60*30=1800 - return array($url, $verifier); + return [$url, $verifier]; } /** @@ -160,11 +160,11 @@ class OAuthStore extends \OAuthDataStore $this->store->set('request', $token->key, $consumer->key, $token, $lifetime); // also store in requestToken->key => array('callback'=>CallbackURL, 'version'=>oauth_version - $request_attributes = array( + $request_attributes = [ 'callback' => $callback, 'version' => ($version ? $version : $this->defaultversion), 'consumerKey' => $consumer->key, - ); + ]; $this->store->set('requesttorequest', $token->key, '', $request_attributes, $lifetime); /* also store in requestToken->key => diff --git a/modules/oauth/lib/Registry.php b/modules/oauth/lib/Registry.php index 984638b6fb98366ceee50d54f7b62d57812adf49..0939be6f410ce90c587c388c7ffa15e7cbc89c12 100644 --- a/modules/oauth/lib/Registry.php +++ b/modules/oauth/lib/Registry.php @@ -11,6 +11,17 @@ namespace SimpleSAML\Module\oauth; class Registry { + public static function requireOwnership($entry, $userid) + { + if (!isset($entry['owner'])) { + throw new \Exception('OAuth Consumer has no owner. Which means no one is granted access, not even you.'); + } elseif ($entry['owner'] !== $userid) { + throw new \Exception( + 'OAuth Consumer has an owner that is not equal to your userid, hence you are not granted access.' + ); + } + } + protected function getStandardField($request, &$entry, $key) { if (array_key_exists('field_'.$key, $request)) { @@ -20,7 +31,7 @@ class Registry } } - public function formToMeta($request, $entry = array(), $override = null) + public function formToMeta($request, $entry = [], $override = null) { $this->getStandardField($request, $entry, 'name'); $this->getStandardField($request, $entry, 'description'); diff --git a/modules/oauth/libextinc/OAuth.php b/modules/oauth/libextinc/OAuth.php index 994241b331a6dbd442be0012988f12d4fd7623ce..c8811d6ce1263032e6fe32c9227546a5014ad945 100644 --- a/modules/oauth/libextinc/OAuth.php +++ b/modules/oauth/libextinc/OAuth.php @@ -148,10 +148,10 @@ class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod $base_string = $request->get_signature_base_string(); $request->base_string = $base_string; - $key_parts = array( + $key_parts = [ $consumer->secret, ($token) ? $token->secret : "" - ); + ]; $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); $key = implode('&', $key_parts); @@ -183,10 +183,10 @@ class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod */ public function build_signature($request, $consumer, $token) { - $key_parts = array( + $key_parts = [ $consumer->secret, ($token) ? $token->secret : "" - ); + ]; $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); $key = implode('&', $key_parts); @@ -279,7 +279,7 @@ class OAuthRequest public function __construct($http_method, $http_url, $parameters = null) { - $parameters = ($parameters) ? $parameters : array(); + $parameters = ($parameters) ? $parameters : []; $parameters = array_merge(OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters); $this->parameters = $parameters; $this->http_method = $http_method; @@ -345,11 +345,11 @@ class OAuthRequest */ public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters = null) { - $parameters = ($parameters) ? $parameters : array(); - $defaults = array("oauth_version" => OAuthRequest::$version, + $parameters = ($parameters) ? $parameters : []; + $defaults = ["oauth_version" => OAuthRequest::$version, "oauth_nonce" => OAuthRequest::generate_nonce(), "oauth_timestamp" => OAuthRequest::generate_timestamp(), - "oauth_consumer_key" => $consumer->key); + "oauth_consumer_key" => $consumer->key]; if ($token) { $defaults['oauth_token'] = $token->key; } @@ -366,7 +366,7 @@ class OAuthRequest if (is_scalar($this->parameters[$name])) { // This is the first duplicate, so transform scalar (string) // into an array so we can add the duplicates - $this->parameters[$name] = array($this->parameters[$name]); + $this->parameters[$name] = [$this->parameters[$name]]; } $this->parameters[$name][] = $value; @@ -417,11 +417,11 @@ class OAuthRequest */ public function get_signature_base_string() { - $parts = array( + $parts = [ $this->get_normalized_http_method(), $this->get_normalized_http_url(), $this->get_signable_parameters() - ); + ]; $parts = OAuthUtil::urlencode_rfc3986($parts); @@ -554,7 +554,7 @@ class OAuthServer { protected $timestamp_threshold = 300; // in seconds, five minutes protected $version = '1.0'; // hi blaine - protected $signature_methods = array(); + protected $signature_methods = []; protected $data_store; @@ -624,7 +624,7 @@ class OAuthServer $consumer = $this->getConsumer($request); $token = $this->getToken($request, $consumer, "access"); $this->checkSignature($request, $consumer, $token); - return array($consumer, $token); + return [$consumer, $token]; } // Internals from here @@ -823,7 +823,7 @@ class OAuthUtil public static function urlencode_rfc3986($input) { if (is_array($input)) { - return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input); + return array_map(['OAuthUtil', 'urlencode_rfc3986'], $input); } elseif (is_scalar($input)) { return str_replace( '+', @@ -851,7 +851,7 @@ class OAuthUtil // see http://code.google.com/p/oauth/issues/detail?id=163 public static function split_header($header, $only_allow_oauth_parameters = true) { - $params = array(); + $params = []; if (preg_match_all( '/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, @@ -879,7 +879,7 @@ class OAuthUtil // we always want the keys to be Cased-Like-This and arh() // returns the headers in the same case as they are in the // request - $out = array(); + $out = []; foreach ($headers as $key => $value) { $key = str_replace( " ", @@ -891,7 +891,7 @@ class OAuthUtil } else { // otherwise we don't have apache and are just going to have to hope // that $_SERVER actually contains what we need - $out = array(); + $out = []; if (isset($_SERVER['CONTENT_TYPE'])) { $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; } @@ -926,12 +926,12 @@ class OAuthUtil public static function parse_parameters($input) { if (!isset($input) || !$input) { - return array(); + return []; } $pairs = explode('&', $input); - $parsed_parameters = array(); + $parsed_parameters = []; foreach ($pairs as $pair) { $split = explode('=', $pair, 2); $parameter = OAuthUtil::urldecode_rfc3986($split[0]); @@ -944,7 +944,7 @@ class OAuthUtil if (is_scalar($parsed_parameters[$parameter])) { // This is the first duplicate, so transform scalar (string) into an array // so we can add the duplicates - $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]); + $parsed_parameters[$parameter] = [$parsed_parameters[$parameter]]; } $parsed_parameters[$parameter][] = $value; @@ -970,7 +970,7 @@ class OAuthUtil // Ref: Spec: 9.1.1 (1) uksort($params, 'strcmp'); - $pairs = array(); + $pairs = []; foreach ($params as $parameter => $value) { if (is_array($value)) { // If two or more parameters share the same name, they are sorted by their value diff --git a/modules/oauth/templates/registry.edit.tpl.php b/modules/oauth/templates/registry.edit.tpl.php index 58a58d0100c456c4e76c26b37de07c80fc334c8c..b43c40d39c3239424a148bff6084f0aa056b2406 100644 --- a/modules/oauth/templates/registry.edit.tpl.php +++ b/modules/oauth/templates/registry.edit.tpl.php @@ -1,6 +1,6 @@ <?php -$this->data['jquery'] = array('core' => true, 'ui' => true, 'css' => true); +$this->data['jquery'] = ['core' => true, 'ui' => true, 'css' => true]; $this->data['head'] = '<link rel="stylesheet" type="text/css" href="/'. $this->data['baseurlpath'].'module.php/oauth/assets/css/oauth.css" />'."\n"; $this->data['head'] .= '<script type="text/javascript" src="/'. diff --git a/modules/oauth/templates/registry.list.php b/modules/oauth/templates/registry.list.php index 912f5a71ce43a86feac71e368b7f04dd9648d630..1c3b287fb696b8ced33285dbe34599ebd85426ef 100644 --- a/modules/oauth/templates/registry.list.php +++ b/modules/oauth/templates/registry.list.php @@ -1,5 +1,5 @@ <?php -$this->data['jquery'] = array('core' => true, 'ui' => true, 'css' => true); +$this->data['jquery'] = ['core' => true, 'ui' => true, 'css' => true]; $this->data['head'] = '<link rel="stylesheet" type="text/css" href="/'. $this->data['baseurlpath'].'module.php/oauth/assets/oauth.css" />'."\n"; $this->includeAtTemplateBase('includes/header.php'); @@ -11,13 +11,13 @@ echo '<p>Here you can register new OAuth Clients. You are successfully logged in echo '<h2>Your clients</h2>'; echo '<table class="metalist" style="width: 100%">'; $i = 0; -$rows = array('odd', 'even'); +$rows = ['odd', 'even']; foreach ($this->data['entries']['mine'] as $entryc) { $entry = $entryc['value']; $i++; echo '<tr class="'.$rows[$i % 2].'"><td>'. - htmlspecialchars($entry['name']).'</td> <td><tt>'.htmlspecialchars($entry['key']). - '</tt></td><td><a href="registry.edit.php?editkey='.urlencode($entry['key']). + htmlspecialchars($entry['name']).'</td> <td><code>'.htmlspecialchars($entry['key']). + '</code></td><td><a href="registry.edit.php?editkey='.urlencode($entry['key']). '">edit</a><a href="registry.php?delete='.urlencode($entry['key']).'">delete</a></td></tr>'; } if ($i == 0) { @@ -30,13 +30,13 @@ echo '<p><a href="registry.edit.php">Add new client</a></p>'; echo '<h2>Other clients</h2>'; echo '<table class="metalist" style="width: 100%">'; $i = 0; -$rows = array('odd', 'even'); +$rows = ['odd', 'even']; foreach ($this->data['entries']['others'] as $entryc) { $entry = $entryc['value']; $i++; echo '<tr class="'.$rows[$i % 2].'"><td>'. - htmlspecialchars($entry['name']).'</td><td><tt>'.htmlspecialchars($entry['key']). - '</tt></td><td>'.(isset($entry['owner']) ? htmlspecialchars($entry['owner']) : 'No owner'). + htmlspecialchars($entry['name']).'</td><td><code>'.htmlspecialchars($entry['key']). + '</code></td><td>'.(isset($entry['owner']) ? htmlspecialchars($entry['owner']) : 'No owner'). '</td></tr>'; } if ($i == 0) { diff --git a/modules/oauth/www/registry.edit.php b/modules/oauth/www/registry.edit.php index b475e0aa98d0b3bc0c49f0a3a799d150556b9fc1..a367c482050addb0af428e566bcdc40a6b1564bc 100644 --- a/modules/oauth/www/registry.edit.php +++ b/modules/oauth/www/registry.edit.php @@ -22,28 +22,16 @@ if ($session->isValid($authsource)) { $as->initLogin(\SimpleSAML\Utils\HTTP::getSelfURL()); } -function requireOwnership($entry, $userid) -{ - if (!isset($entry['owner'])) { - throw new \Exception('OAuth Consumer has no owner. Which means no one is granted access, not even you.'); - } - if ($entry['owner'] !== $userid) { - throw new \Exception( - 'OAuth Consumer has an owner that is not equal to your userid, hence you are not granted access.' - ); - } -} - if (array_key_exists('editkey', $_REQUEST)) { $entryc = $store->get('consumers', $_REQUEST['editkey'], ''); $entry = $entryc['value']; - requireOwnership($entry, $userid); + \SimpleSAML\Module\oauth\Registry::requireOwnership($entry, $userid); } else { - $entry = array( + $entry = [ 'owner' => $userid, 'key' => \SimpleSAML\Utils\Random::generateID(), 'secret' => \SimpleSAML\Utils\Random::generateID(), - ); + ]; } $editor = new \SimpleSAML\Module\oauth\Registry(); @@ -51,9 +39,9 @@ $editor = new \SimpleSAML\Module\oauth\Registry(); if (isset($_POST['submit'])) { $editor->checkForm($_POST); - $entry = $editor->formToMeta($_POST, array(), array('owner' => $userid)); + $entry = $editor->formToMeta($_POST, [], ['owner' => $userid]); - requireOwnership($entry, $userid); + \SimpleSAML\Module\oauth\Registry::requireOwnership($entry, $userid); $store->set('consumers', $entry['key'], '', $entry); @@ -67,5 +55,5 @@ $form = $editor->metaToForm($entry); $template = new \SimpleSAML\XHTML\Template($config, 'oauth:registry.edit.tpl.php'); $template->data['form'] = $form; -$template->data['jquery'] = array('core' => false, 'ui' => true, 'css' => true); +$template->data['jquery'] = ['core' => false, 'ui' => true, 'css' => true]; $template->show(); diff --git a/modules/oauth/www/registry.php b/modules/oauth/www/registry.php index 9f97762ac5bb30a51119345f0ff8d4d0c83c9f64..4431835a63786095977605465fdb10254b097940 100644 --- a/modules/oauth/www/registry.php +++ b/modules/oauth/www/registry.php @@ -21,29 +21,17 @@ if ($session->isValid($authsource)) { $as->initLogin(\SimpleSAML\Utils\HTTP::getSelfURL()); } -function requireOwnership($entry, $userid) -{ - if (!isset($entry['owner'])) { - throw new \Exception('OAuth Consumer has no owner. Which means no one is granted access, not even you.'); - } - if ($entry['owner'] !== $userid) { - throw new \Exception( - 'OAuth Consumer has an owner that is not equal to your userid, hence you are not granted access.' - ); - } -} - if (isset($_REQUEST['delete'])) { $entryc = $store->get('consumers', $_REQUEST['delete'], ''); $entry = $entryc['value']; - requireOwnership($entry, $userid); + \SimpleSAML\Module\oauth\Registry::requireOwnership($entry, $userid); $store->remove('consumers', $entry['key'], ''); } $list = $store->getList('consumers'); -$slist = array('mine' => array(), 'others' => array()); +$slist = ['mine' => [], 'others' => []]; if (is_array($list)) { foreach ($list as $listitem) { if (array_key_exists('owner', $listitem['value'])) { diff --git a/modules/portal/config-templates/module_portal.php b/modules/portal/config-templates/module_portal.php index 99cdaf4f959b0c1d9b849d325073e759d0fa14e0..85df6f99ab589004bc09c08671a677d25f66dcd8 100644 --- a/modules/portal/config-templates/module_portal.php +++ b/modules/portal/config-templates/module_portal.php @@ -3,9 +3,9 @@ * Configuration for the module portal. */ -$config = array( - 'pagesets' => array( - array('frontpage_welcome', 'frontpage_config', 'frontpage_auth', 'frontpage_federation'), - array('sanitycheck', 'statistics'), - ), -); +$config = [ + 'pagesets' => [ + ['frontpage_welcome', 'frontpage_config', 'frontpage_auth', 'frontpage_federation'], + ['sanitycheck', 'statistics'], + ], +]; diff --git a/modules/portal/hooks/hook_htmlinject.php b/modules/portal/hooks/hook_htmlinject.php index 5fffdf6087a68da043637a6d332ce2c22e506725..efa1984a32aa37402255535297c245325658deef 100644 --- a/modules/portal/hooks/hook_htmlinject.php +++ b/modules/portal/hooks/hook_htmlinject.php @@ -12,19 +12,19 @@ function portal_hook_htmlinject(&$hookinfo) assert(array_key_exists('post', $hookinfo)); assert(array_key_exists('page', $hookinfo)); - $links = array('links' => array()); + $links = ['links' => []]; \SimpleSAML\Module::callHooks('frontpage', $links); $portalConfig = \SimpleSAML\Configuration::getOptionalConfig('module_portal.php'); - $allLinks = array(); + $allLinks = []; foreach ($links as $ls) { $allLinks = array_merge($allLinks, $ls); } - $pagesets = $portalConfig->getValue('pagesets', array( - array('frontpage_welcome', 'frontpage_config', 'frontpage_auth', 'frontpage_federation'), - )); + $pagesets = $portalConfig->getValue('pagesets', [ + ['frontpage_welcome', 'frontpage_config', 'frontpage_auth', 'frontpage_federation'], + ]); \SimpleSAML\Module::callHooks('portalextras', $pagesets); $portal = new \SimpleSAML\Module\portal\Portal($allLinks, $pagesets); diff --git a/modules/portal/lib/Portal.php b/modules/portal/lib/Portal.php index a27bb343da3535e552cae38ce91c10687fc6c7c1..517ce2edfa4a75bf7afa0798f0d3b9c8fa0f5fbc 100644 --- a/modules/portal/lib/Portal.php +++ b/modules/portal/lib/Portal.php @@ -38,7 +38,7 @@ class Portal public function getLoginInfo($translator, $thispage) { - $info = array('info' => '', 'translator' => $translator, 'thispage' => $thispage); + $info = ['info' => '', 'translator' => $translator, 'thispage' => $thispage]; \SimpleSAML\Module::callHooks('portalLoginInfo', $info); return $info['info']; } diff --git a/modules/preprodwarning/lib/Auth/Process/Warning.php b/modules/preprodwarning/lib/Auth/Process/Warning.php index 1a235a83aa20d1210fe8d3e4f4404940aec8138d..bbc6fdadb2d20f684c75db19e17f5e7419dce5bf 100644 --- a/modules/preprodwarning/lib/Auth/Process/Warning.php +++ b/modules/preprodwarning/lib/Auth/Process/Warning.php @@ -30,6 +30,6 @@ class Warning extends \SimpleSAML\Auth\ProcessingFilter // Save state and redirect. $id = \SimpleSAML\Auth\State::saveState($state, 'warning:request'); $url = \SimpleSAML\Module::getModuleURL('preprodwarning/showwarning.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/preprodwarning/www/showwarning.php b/modules/preprodwarning/www/showwarning.php index 41eff20555e739aceb016ba574a55162637410fa..394617d35cab6a1df9f58f5fda76b366b744cc68 100644 --- a/modules/preprodwarning/www/showwarning.php +++ b/modules/preprodwarning/www/showwarning.php @@ -24,5 +24,5 @@ $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'preprodwarning:warning.php'); $t->data['yesTarget'] = \SimpleSAML\Module::getModuleURL('preprodwarning/showwarning.php'); -$t->data['yesData'] = array('StateId' => $id); +$t->data['yesData'] = ['StateId' => $id]; $t->show(); diff --git a/modules/radius/lib/Auth/Source/Radius.php b/modules/radius/lib/Auth/Source/Radius.php index 4709f3bec50b5fb339cfa3866d0665b5affb36b9..70a192b4136b913ff5bbfbfc4479a4cf3602fe79 100644 --- a/modules/radius/lib/Auth/Source/Radius.php +++ b/modules/radius/lib/Auth/Source/Radius.php @@ -88,17 +88,17 @@ class Radius extends \SimpleSAML\Module\core\Auth\UserPassBase 'Authentication source '.var_export($this->authId, true) ); - $this->servers = $config->getArray('servers', array()); + $this->servers = $config->getArray('servers', []); // For backwards compatibility if (empty($this->servers)) { $this->hostname = $config->getString('hostname'); $this->port = $config->getIntegerRange('port', 1, 65535, 1812); $this->secret = $config->getString('secret'); - $this->servers[] = array( + $this->servers[] = [ 'hostname' => $this->hostname, 'port' => $this->port, 'secret' => $this->secret - ); + ]; } $this->timeout = $config->getInteger('timeout', 5); $this->retries = $config->getInteger('retries', 3); @@ -189,10 +189,10 @@ class Radius extends \SimpleSAML\Module\core\Auth\UserPassBase // If we get this far, we have a valid login - $attributes = array(); + $attributes = []; if ($this->usernameAttribute !== null) { - $attributes[$this->usernameAttribute] = array($username); + $attributes[$this->usernameAttribute] = [$username]; } if ($this->vendor === null) { @@ -213,7 +213,7 @@ class Radius extends \SimpleSAML\Module\core\Auth\UserPassBase // Use the received user name if ($resa['attr'] == \RADIUS_USER_NAME) { - $attributes[$this->usernameAttribute] = array($resa['data']); + $attributes[$this->usernameAttribute] = [$resa['data']]; continue; } @@ -243,7 +243,7 @@ class Radius extends \SimpleSAML\Module\core\Auth\UserPassBase if (array_key_exists($attrib_name, $attributes)) { $attributes[$attrib_name][] = $attrib_value; } else { - $attributes[$attrib_name] = array($attrib_value); + $attributes[$attrib_name] = [$attrib_value]; } } // end of contribution diff --git a/modules/riak/config-templates/module_riak.php b/modules/riak/config-templates/module_riak.php index 4d3043195f2b07b4323dce5b4cbac33bc3b0ca5e..99f535fee579d461b295c9bfcc90234f3d4cf099 100644 --- a/modules/riak/config-templates/module_riak.php +++ b/modules/riak/config-templates/module_riak.php @@ -4,7 +4,7 @@ * */ -$config = array( +$config = [ /* * This module has the following config options and defaults. * @@ -13,4 +13,4 @@ $config = array( * 'port' => 8098, * 'bucket' => 'SimpleSAMLphp', */ -); +]; diff --git a/modules/saml/dictionaries/proxy.translation.json b/modules/saml/dictionaries/proxy.translation.json index e06c0e610ebd146b857e7db39ea64066477b15bd..bf80ff4caf5e6ee8900d4e50739765599afebf06 100644 --- a/modules/saml/dictionaries/proxy.translation.json +++ b/modules/saml/dictionaries/proxy.translation.json @@ -1,10 +1,14 @@ { "invalid_idp": { "zh-tw": "\u7121\u6548\u7684\u9a57\u8b49\u63d0\u4f9b\u8005", - "es": "Proveedor de Identidad inválido" + "es": "Proveedor de Identidad inválido", + "zu": "Umhlinzeki Kamazisi Ongalungile", + "xh": "Isiboneleli Sesazisi Esingasebenziyo" }, "invalid_idp_description": { "zh-tw": "\u60a8\u5df2\u7d93\u64c1\u6709\u4e00\u500b\u9a57\u8b49\u63d0\u4f9b\u8005 (<em>%IDP%</em>) \u7684\u6709\u6548\u7684\u9023\u7dda\uff0c\u4f46\u8a72\u9023\u7dda\u7121\u6cd5\u88ab <em>%SP%</em> \u6240\u63a5\u53d7\u3002\u60a8\u662f\u5426\u60f3\u8981\u767b\u51fa\u65e2\u6709\u7684\u9023\u7dda\u4e26\u91cd\u65b0\u7531\u5176\u4ed6\u9a57\u8b49\u63d0\u4f9b\u8005\u9032\u884c\u767b\u5165\uff1f", - "es": "Ya existe una sesiĂłn válida con un proveedor de identidad (<em>%IDP%</em>) que <em>%SP%</em> no acepta. ÂżDesea cerrar su sesiĂłn actual e iniciar una nueva con otro proveedor de identidad?" + "es": "Ya existe una sesiĂłn válida con un proveedor de identidad (<em>%IDP%</em>) que <em>%SP%</em> no acepta. ÂżDesea cerrar su sesiĂłn actual e iniciar una nueva con otro proveedor de identidad?", + "zu": "Kakade uneseshini evumelekile nomhlinzeki kamazisi (<em>%IDP%</em>) engamukelwa okuthi <em>%SP%</em>. Ungathanda ukuphuma kuseshini yakho ekhona kakade futhi uphinde ungene ngomunye umhlinzeki kamazisi?", + "xh": "Sele unayo iseshoni esebenzayo nomboneleli wesazisi (<em>%IDP%</em>) engamkelwanga yi-<em>%SP%</em>. Ingaba ungathanda ukuphuma kwiseshoni yakho esele ikho uze ungene kwakhona ngomnye umboneleli wesazisi?" } } diff --git a/modules/saml/docs/sp.md b/modules/saml/docs/sp.md index 9ee03c584d827514ec4b4c0014a8ba8c0b9bf5f9..96f8fd510a4506773ab78184f1e19d443c33227c 100644 --- a/modules/saml/docs/sp.md +++ b/modules/saml/docs/sp.md @@ -196,6 +196,15 @@ Options : *Note*: For this to be added to the metadata, you must also specify the `attributes` and `name` options. +`disable_scoping` +: Whether sending of samlp:Scoping elements in authentication requests should be suppressed. The default value is `FALSE`. + When set to `TRUE`, no scoping elements will be sent. This does not comply with the SAML2 specification, but allows + interoperability with ADFS which [does not support Scoping elements](https://docs.microsoft.com/en-za/azure/active-directory/develop/active-directory-single-sign-on-protocol-reference#scoping). + +: Note that this option also exists in the IdP remote configuration. An + entry in the the IdP-remote metadata overrides this the option in the + SP configuration. + `discoURL` : Set which IdP discovery service this SP should use. If this is unset, the IdP discovery service specified in the global option `idpdisco.url.{saml20|shib13}` in `config/config.php` will be used. diff --git a/modules/saml/hooks/hook_metadata_hosted.php b/modules/saml/hooks/hook_metadata_hosted.php index 9090edd9c62c66bfd0dd0d1aada5243d45b827ea..e1dc65c36f81892947e651fc296020ad3bfb7090 100644 --- a/modules/saml/hooks/hook_metadata_hosted.php +++ b/modules/saml/hooks/hook_metadata_hosted.php @@ -20,16 +20,16 @@ function saml_hook_metadata_hosted(&$metadataHosted) $name = $metadata->getValue('OrganizationDisplayName', null); } if ($name === null) { - $name = $source->getAuthID(); + $name = $source->getAuthId(); } - $md = array( + $md = [ 'entityid' => $source->getEntityId(), 'metadata-index' => $source->getEntityId(), 'metadata-set' => 'saml20-sp-hosted', 'metadata-url' => $source->getMetadataURL().'?output=xhtml', 'name' => $name, - ); + ]; $metadataHosted[] = $md; } diff --git a/modules/saml/lib/Auth/Process/ExpectedAuthnContextClassRef.php b/modules/saml/lib/Auth/Process/ExpectedAuthnContextClassRef.php index d7ae42fbc6b15949d8fbb60214c3f7481a8797d7..fd6277732326b7bfad1cc82bce053b7f3d217b85 100644 --- a/modules/saml/lib/Auth/Process/ExpectedAuthnContextClassRef.php +++ b/modules/saml/lib/Auth/Process/ExpectedAuthnContextClassRef.php @@ -99,6 +99,6 @@ class ExpectedAuthnContextClassRef extends \SimpleSAML\Auth\ProcessingFilter $url = \SimpleSAML\Module::getModuleURL( 'saml/sp/wrong_authncontextclassref.php' ); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('StateId' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['StateId' => $id]); } } diff --git a/modules/saml/lib/Auth/Process/FilterScopes.php b/modules/saml/lib/Auth/Process/FilterScopes.php index 6b9eda30f63dcb0601300a9ab86147b9fef00a53..67ef886df09e4dec683df2fbced1bf02d6c1ca44 100644 --- a/modules/saml/lib/Auth/Process/FilterScopes.php +++ b/modules/saml/lib/Auth/Process/FilterScopes.php @@ -17,10 +17,10 @@ class FilterScopes extends \SimpleSAML\Auth\ProcessingFilter /** * Stores any pre-configured scoped attributes which come from the filter configuration. */ - private $scopedAttributes = array( + private $scopedAttributes = [ 'eduPersonScopedAffiliation', 'eduPersonPrincipalName' - ); + ]; /** @@ -53,7 +53,7 @@ class FilterScopes extends \SimpleSAML\Auth\ProcessingFilter Logger::warning('No scoped attributes configured.'); return; } - $validScopes = array(); + $validScopes = []; if (array_key_exists('scope', $src) && is_array($src['scope']) && !empty($src['scope'])) { $validScopes = $src['scope']; } @@ -64,7 +64,7 @@ class FilterScopes extends \SimpleSAML\Auth\ProcessingFilter } $values = $request['Attributes'][$attribute]; - $newValues = array(); + $newValues = []; foreach ($values as $value) { $ep = \SimpleSAML\Utils\Config\Metadata::getDefaultEndpoint($request['Source']['SingleSignOnService']); $loc = $ep['Location']; diff --git a/modules/saml/lib/Auth/Process/NameIDAttribute.php b/modules/saml/lib/Auth/Process/NameIDAttribute.php index 29387ba0acdcc03a7f2d353164193cf8df341c70..e1455b214d4e6bd3604b762eef6868362f39f3b6 100644 --- a/modules/saml/lib/Auth/Process/NameIDAttribute.php +++ b/modules/saml/lib/Auth/Process/NameIDAttribute.php @@ -65,7 +65,7 @@ class NameIDAttribute extends \SimpleSAML\Auth\ProcessingFilter { assert(is_string($format)); - $ret = array(); + $ret = []; $pos = 0; while (($next = strpos($format, '%', $pos)) !== false) { $ret[] = substr($format, $pos, $next - $pos); @@ -139,6 +139,6 @@ class NameIDAttribute extends \SimpleSAML\Auth\ProcessingFilter $isString = !$isString; } - $state['Attributes'][$this->attribute] = array($value); + $state['Attributes'][$this->attribute] = [$value]; } } diff --git a/modules/saml/lib/Auth/Process/PersistentNameID2TargetedID.php b/modules/saml/lib/Auth/Process/PersistentNameID2TargetedID.php index 021630afab65a03840afd3ce15004d5492b320b8..d07d8ee0a0245a76582ccf08589ca8e944526ba8 100644 --- a/modules/saml/lib/Auth/Process/PersistentNameID2TargetedID.php +++ b/modules/saml/lib/Auth/Process/PersistentNameID2TargetedID.php @@ -70,6 +70,6 @@ class PersistentNameID2TargetedID extends \SimpleSAML\Auth\ProcessingFilter /** @var \SAML2\XML\saml\NameID $nameID */ $nameID = $state['saml:NameID'][\SAML2\Constants::NAMEID_PERSISTENT]; - $state['Attributes'][$this->attribute] = array((!$this->nameId) ? $nameID->value : $nameID); + $state['Attributes'][$this->attribute] = [(!$this->nameId) ? $nameID->value : $nameID]; } } diff --git a/modules/saml/lib/Auth/Process/SQLPersistentNameID.php b/modules/saml/lib/Auth/Process/SQLPersistentNameID.php index c1b3bf51a35fe1809c9ca3c3a00742d6b3efe728..38b6d0c98229a0e6c24d0a439758aedeabedd1c6 100644 --- a/modules/saml/lib/Auth/Process/SQLPersistentNameID.php +++ b/modules/saml/lib/Auth/Process/SQLPersistentNameID.php @@ -92,11 +92,11 @@ class SQLPersistentNameID extends \SimpleSAML\Module\saml\BaseNameIDGenerator return null; } - $validNameIdFormats = @array_filter(array( + $validNameIdFormats = @array_filter([ $state['saml:NameIDFormat'], $state['SPMetadata']['NameIDPolicy'], $state['SPMetadata']['NameIDFormat'] - )); + ]); if (count($validNameIdFormats) && !in_array($this->format, $validNameIdFormats, true) && !$this->allowDifferent ) { diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php index e1017175bcfef737ac6d6e586195fedb1fbe08d8..e1bb494241922b5e8838a894c6adfae73902b83f 100644 --- a/modules/saml/lib/Auth/Source/SP.php +++ b/modules/saml/lib/Auth/Source/SP.php @@ -35,6 +35,13 @@ class SP extends Source */ private $discoURL; + /** + * Flag to indicate whether to disable sending the Scoping element. + * + * @var boolean|FALSE + */ + private $disable_scoping; + /** * Constructor for SAML SP authentication source. * @@ -64,6 +71,7 @@ class SP extends Source $this->entityId = $this->metadata->getString('entityID'); $this->idp = $this->metadata->getString('idp', null); $this->discoURL = $this->metadata->getString('discoURL', null); + $this->disable_scoping = $this->metadata->getBoolean('disable_scoping', false); if (empty($this->discoURL) && \SimpleSAML\Module::isModuleEnabled('discojuice')) { $this->discoURL = \SimpleSAML\Module::getModuleURL('discojuice/central.php'); @@ -201,15 +209,15 @@ class SP extends Source $accr = \SimpleSAML\Utils\Arrays::arrayize($state['saml:AuthnContextClassRef']); $comp = \SAML2\Constants::COMPARISON_EXACT; if (isset($state['saml:AuthnContextComparison']) - && in_array($state['AuthnContextComparison'], array( + && in_array($state['AuthnContextComparison'], [ \SAML2\Constants::COMPARISON_EXACT, \SAML2\Constants::COMPARISON_MINIMUM, \SAML2\Constants::COMPARISON_MAXIMUM, \SAML2\Constants::COMPARISON_BETTER, - ), true)) { + ], true)) { $comp = $state['saml:AuthnContextComparison']; } - $ar->setRequestedAuthnContext(array('AuthnContextClassRef' => $accr, 'Comparison' => $comp)); + $ar->setRequestedAuthnContext(['AuthnContextClassRef' => $accr, 'Comparison' => $comp]); } if (isset($state['ForceAuthn'])) { @@ -229,10 +237,10 @@ class SP extends Source if (isset($state['saml:NameIDPolicy'])) { if (is_string($state['saml:NameIDPolicy'])) { - $policy = array( + $policy = [ 'Format' => (string) $state['saml:NameIDPolicy'], 'AllowCreate' => true, - ); + ]; } elseif (is_array($state['saml:NameIDPolicy'])) { $policy = $state['saml:NameIDPolicy']; } else { @@ -241,39 +249,45 @@ class SP extends Source $ar->setNameIdPolicy($policy); } - if (isset($state['saml:IDPList'])) { - $IDPList = $state['saml:IDPList']; + $IDPList = []; + $requesterID = []; + + /* Only check for real info for Scoping element if we are going to send Scoping element */ + if ($this->disable_scoping !== true && $idpMetadata->getBoolean('disable_scoping', false) !== true) { + if (isset($state['saml:IDPList'])) { + $IDPList = $state['saml:IDPList']; + } + + if (isset($state['saml:ProxyCount']) && $state['saml:ProxyCount'] !== null) { + $ar->setProxyCount($state['saml:ProxyCount']); + } elseif ($idpMetadata->getInteger('ProxyCount', null) !== null) { + $ar->setProxyCount($idpMetadata->getInteger('ProxyCount', null)); + } elseif ($this->metadata->getInteger('ProxyCount', null) !== null) { + $ar->setProxyCount($this->metadata->getInteger('ProxyCount', null)); + } + + $requesterID = []; + if (isset($state['saml:RequesterID'])) { + $requesterID = $state['saml:RequesterID']; + } + + if (isset($state['core:SP'])) { + $requesterID[] = $state['core:SP']; + } } else { - $IDPList = array(); + \SimpleSAML\Logger::debug('Disabling samlp:Scoping for '.var_export($idpMetadata->getString('entityid'), true)); } $ar->setIDPList( array_unique( array_merge( - $this->metadata->getArray('IDPList', array()), - $idpMetadata->getArray('IDPList', array()), + $this->metadata->getArray('IDPList', []), + $idpMetadata->getArray('IDPList', []), (array) $IDPList ) ) ); - if (isset($state['saml:ProxyCount']) && $state['saml:ProxyCount'] !== null) { - $ar->setProxyCount($state['saml:ProxyCount']); - } elseif ($idpMetadata->getInteger('ProxyCount', null) !== null) { - $ar->setProxyCount($idpMetadata->getInteger('ProxyCount', null)); - } elseif ($this->metadata->getInteger('ProxyCount', null) !== null) { - $ar->setProxyCount($this->metadata->getInteger('ProxyCount', null)); - } - - $requesterID = array(); - if (isset($state['saml:RequesterID'])) { - $requesterID = $state['saml:RequesterID']; - } - - if (isset($state['core:SP'])) { - $requesterID[] = $state['core:SP']; - } - $ar->setRequesterID($requesterID); if (isset($state['saml:Extensions'])) { @@ -294,9 +308,9 @@ class SP extends Source if ($ar->getProtocolBinding() === \SAML2\Constants::BINDING_HOK_SSO) { $dst = $idpMetadata->getDefaultEndpoint( 'SingleSignOnService', - array( + [ \SAML2\Constants::BINDING_HOK_SSO - ) + ] ); } else { $dst = $idpMetadata->getEndpointPrioritizedByBinding( @@ -372,13 +386,13 @@ class SP extends Source $discoURL = \SimpleSAML\Module::getModuleURL('saml/disco.php'); } - $returnTo = \SimpleSAML\Module::getModuleURL('saml/sp/discoresp.php', array('AuthID' => $id)); + $returnTo = \SimpleSAML\Module::getModuleURL('saml/sp/discoresp.php', ['AuthID' => $id]); - $params = array( + $params = [ 'entityID' => $this->entityId, 'return' => $returnTo, 'returnIDParam' => 'idpentityid' - ); + ]; if (isset($state['saml:IDPList'])) { $params['IDPList'] = $state['saml:IDPList']; @@ -556,7 +570,7 @@ class SP extends Source // save the state WITHOUT a restart URL, so that we don't try an IdP-initiated login if something goes wrong $id = State::saveState($state, 'saml:proxy:invalid_idp', true); $url = \SimpleSAML\Module::getModuleURL('saml/proxy/invalid_session.php'); - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, array('AuthState' => $id)); + \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, ['AuthState' => $id]); assert(false); } @@ -574,7 +588,7 @@ class SP extends Source if (isset($state['Responder'])) { $state['saml:proxy:reauthLogout:PrevResponder'] = $state['Responder']; } - $state['Responder'] = array('\SimpleSAML\Module\saml\Auth\Source\SP', 'reauthPostLogout'); + $state['Responder'] = ['\SimpleSAML\Module\saml\Auth\Source\SP', 'reauthPostLogout']; $idp = \SimpleSAML\IdP::getByState($state); $idp->handleLogoutRequest($state, null); @@ -645,9 +659,9 @@ class SP extends Source $idpMetadata = $this->getIdPMetadata($idp); - $endpoint = $idpMetadata->getEndpointPrioritizedByBinding('SingleLogoutService', array( + $endpoint = $idpMetadata->getEndpointPrioritizedByBinding('SingleLogoutService', [ \SAML2\Constants::BINDING_HTTP_REDIRECT, - \SAML2\Constants::BINDING_HTTP_POST), false); + \SAML2\Constants::BINDING_HTTP_POST], false); if ($endpoint === false) { \SimpleSAML\Logger::info('No logout endpoint for IdP '.var_export($idp, true).'.'); return; @@ -710,7 +724,7 @@ class SP extends Source assert(array_key_exists('LogoutState', $state)); assert(array_key_exists('saml:logout:Type', $state['LogoutState'])); - $idpMetadata = $this->getIdpMetadata($idp); + $idpMetadata = $this->getIdPMetadata($idp); $spMetadataArray = $this->metadata->toArray(); $idpMetadataArray = $idpMetadata->toArray(); @@ -719,15 +733,15 @@ class SP extends Source $state['saml:sp:IdP'] = $idp; $state['PersistentAuthData'][] = 'saml:sp:IdP'; - $authProcState = array( + $authProcState = [ 'saml:sp:IdP' => $idp, 'saml:sp:State' => $state, - 'ReturnCall' => array('\SimpleSAML\Module\saml\Auth\Source\SP', 'onProcessingCompleted'), + 'ReturnCall' => ['\SimpleSAML\Module\saml\Auth\Source\SP', 'onProcessingCompleted'], 'Attributes' => $attributes, 'Destination' => $spMetadataArray, 'Source' => $idpMetadataArray, - ); + ]; if (isset($state['saml:sp:NameID'])) { $authProcState['saml:sp:NameID'] = $state['saml:sp:NameID']; diff --git a/modules/saml/lib/IdP/SAML1.php b/modules/saml/lib/IdP/SAML1.php index 15c3e56ba049f7d3f64a8766585656289ab27d6b..3f1d734d4331da523cf0d5301d9737004cf8ad14 100644 --- a/modules/saml/lib/IdP/SAML1.php +++ b/modules/saml/lib/IdP/SAML1.php @@ -45,11 +45,11 @@ class SAML1 $config = \SimpleSAML\Configuration::getInstance(); $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); - $statsData = array( + $statsData = [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), 'protocol' => 'saml1', - ); + ]; if (isset($state['saml:AuthnRequestReceivedAt'])) { $statsData['logintime'] = microtime(true) - $state['saml:AuthnRequestReceivedAt']; } @@ -124,25 +124,25 @@ class SAML1 \SimpleSAML\Stats::log( 'saml:idp:AuthnRequest', - array( + [ 'spEntityID' => $spEntityId, 'protocol' => 'saml1', - ) + ] ); $sessionLostURL = HTTP::addURLParameters( HTTP::getSelfURL(), - array('cookieTime' => time()) + ['cookieTime' => time()] ); - $state = array( - 'Responder' => array('\SimpleSAML\Module\saml\IdP\SAML1', 'sendResponse'), + $state = [ + 'Responder' => ['\SimpleSAML\Module\saml\IdP\SAML1', 'sendResponse'], 'SPMetadata' => $spMetadata->toArray(), \SimpleSAML\Auth\State::RESTART => $sessionLostURL, 'saml:shire' => $shire, 'saml:target' => $target, 'saml:AuthnRequestReceivedAt' => microtime(true), - ); + ]; $idp->handleAuthenticationRequest($state); } diff --git a/modules/saml/lib/IdP/SAML2.php b/modules/saml/lib/IdP/SAML2.php index 5309d081ef8b762973b47373bee5397ac45bcb43..104cdfcd3be2a057c7b46ed4887bb7dce4422979 100644 --- a/modules/saml/lib/IdP/SAML2.php +++ b/modules/saml/lib/IdP/SAML2.php @@ -53,14 +53,14 @@ class SAML2 } // create the session association (for logout) - $association = array( + $association = [ 'id' => 'saml:'.$spEntityId, 'Handler' => '\SimpleSAML\Module\saml\IdP\SAML2', 'Expires' => $assertion->getSessionNotOnOrAfter(), 'saml:entityID' => $spEntityId, 'saml:NameID' => $state['saml:idp:NameID'], 'saml:SessionIndex' => $assertion->getSessionIndex(), - ); + ]; // maybe encrypt the assertion $assertion = self::encryptAssertion($idpMetadata, $spMetadata, $assertion); @@ -69,16 +69,16 @@ class SAML2 $ar = self::buildResponse($idpMetadata, $spMetadata, $consumerURL); $ar->setInResponseTo($requestId); $ar->setRelayState($relayState); - $ar->setAssertions(array($assertion)); + $ar->setAssertions([$assertion]); // register the session association with the IdP $idp->addAssociation($association); - $statsData = array( + $statsData = [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), 'protocol' => 'saml2', - ); + ]; if (isset($state['saml:AuthnRequestReceivedAt'])) { $statsData['logintime'] = microtime(true) - $state['saml:AuthnRequestReceivedAt']; } @@ -129,19 +129,19 @@ class SAML2 $ar->setInResponseTo($requestId); $ar->setRelayState($relayState); - $status = array( + $status = [ 'Code' => $error->getStatus(), 'SubCode' => $error->getSubStatus(), 'Message' => $error->getStatusMessage(), - ); + ]; $ar->setStatus($status); - $statsData = array( + $statsData = [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), 'protocol' => 'saml2', 'error' => $status, - ); + ]; if (isset($state['saml:AuthnRequestReceivedAt'])) { $statsData['logintime'] = microtime(true) - $state['saml:AuthnRequestReceivedAt']; } @@ -254,7 +254,7 @@ class SAML2 $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); $idpMetadata = $idp->getConfig(); - $supportedBindings = array(\SAML2\Constants::BINDING_HTTP_POST); + $supportedBindings = [\SAML2\Constants::BINDING_HTTP_POST]; if ($idpMetadata->getBoolean('saml20.sendartifact', false)) { $supportedBindings[] = \SAML2\Constants::BINDING_HTTP_ARTIFACT; } @@ -265,7 +265,7 @@ class SAML2 $supportedBindings[] = \SAML2\Constants::BINDING_PAOS; } - if (isset($_REQUEST['spentityid'])) { + if (isset($_REQUEST['spentityid']) || isset($_REQUEST['providerId'])) { /* IdP initiated authentication. */ if (isset($_REQUEST['cookieTime'])) { @@ -279,11 +279,13 @@ class SAML2 } } - $spEntityId = (string) $_REQUEST['spentityid']; + $spEntityId = (string) isset($_REQUEST['spentityid']) ? $_REQUEST['spentityid'] : $_REQUEST['providerId']; $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'saml20-sp-remote'); if (isset($_REQUEST['RelayState'])) { $relayState = (string) $_REQUEST['RelayState']; + } elseif (isset($_REQUEST['target'])) { + $relayState = (string) $_REQUEST['target']; } else { $relayState = null; } @@ -300,13 +302,20 @@ class SAML2 $nameIDFormat = null; } + if (isset($_REQUEST['ConsumerURL'])) { + $consumerURL = (string)$_REQUEST['ConsumerURL']; + } elseif (isset($_REQUEST['shire'])) { + $consumerURL = (string)$_REQUEST['shire']; + } else { + $consumerURL = null; + } + $requestId = null; - $IDPList = array(); + $IDPList = []; $ProxyCount = null; $RequesterID = null; $forceAuthn = false; $isPassive = false; - $consumerURL = null; $consumerIndex = null; $extensions = null; $allowCreate = true; @@ -374,14 +383,14 @@ class SAML2 ); } - \SimpleSAML\Stats::log('saml:idp:AuthnRequest', array( + \SimpleSAML\Stats::log('saml:idp:AuthnRequest', [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), 'forceAuthn' => $forceAuthn, 'isPassive' => $isPassive, 'protocol' => 'saml2', 'idpInit' => $idpInit, - )); + ]); $acsEndpoint = self::getAssertionConsumerService( $supportedBindings, @@ -391,7 +400,7 @@ class SAML2 $consumerIndex ); - $IDPList = array_unique(array_merge($IDPList, $spMetadata->getArrayizeString('IDPList', array()))); + $IDPList = array_unique(array_merge($IDPList, $spMetadata->getArrayizeString('IDPList', []))); if ($ProxyCount === null) { $ProxyCount = $spMetadata->getInteger('ProxyCount', null); } @@ -400,25 +409,29 @@ class SAML2 $forceAuthn = $spMetadata->getBoolean('ForceAuthn', false); } - $sessionLostParams = array( + $sessionLostParams = [ 'spentityid' => $spEntityId, - 'cookieTime' => time(), - ); + ]; if ($relayState !== null) { $sessionLostParams['RelayState'] = $relayState; } + /* + Putting cookieTime as the last parameter makes unit testing easier since we don't need to handle a + changing time component in the middle of the url + */ + $sessionLostParams['cookieTime'] = time(); $sessionLostURL = \SimpleSAML\Utils\HTTP::addURLParameters( \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), $sessionLostParams ); - $state = array( - 'Responder' => array('\SimpleSAML\Module\saml\IdP\SAML2', 'sendResponse'), - \SimpleSAML\Auth\State::EXCEPTION_HANDLER_FUNC => array( + $state = [ + 'Responder' => ['\SimpleSAML\Module\saml\IdP\SAML2', 'sendResponse'], + \SimpleSAML\Auth\State::EXCEPTION_HANDLER_FUNC => [ '\SimpleSAML\Module\saml\IdP\SAML2', 'handleAuthError' - ), + ], \SimpleSAML\Auth\State::RESTART => $sessionLostURL, 'SPMetadata' => $spMetadata->toArray(), @@ -436,7 +449,7 @@ class SAML2 'saml:Extensions' => $extensions, 'saml:AuthnRequestReceivedAt' => microtime(true), 'saml:RequestedAuthnContext' => $authnContext, - ); + ]; // ECP AuthnRequests need to supply credentials if ($binding instanceof SOAP) { @@ -475,17 +488,17 @@ class SAML2 $idpMetadata = $idp->getConfig(); $spMetadata = $metadata->getMetaDataConfig($association['saml:entityID'], 'saml20-sp-remote'); - \SimpleSAML\Stats::log('saml:idp:LogoutRequest:sent', array( + \SimpleSAML\Stats::log('saml:idp:LogoutRequest:sent', [ 'spEntityID' => $association['saml:entityID'], 'idpEntityID' => $idpMetadata->getString('entityid'), - )); + ]); $dst = $spMetadata->getEndpointPrioritizedByBinding( 'SingleLogoutService', - array( + [ \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HTTP_POST - ) + ] ); $binding = \SAML2\Binding::getBinding($dst['Binding']); $lr = self::buildLogoutRequest($idpMetadata, $spMetadata, $association, $relayState); @@ -519,27 +532,27 @@ class SAML2 if (isset($state['core:Failed']) && $state['core:Failed']) { $partial = true; - $lr->setStatus(array( + $lr->setStatus([ 'Code' => \SAML2\Constants::STATUS_SUCCESS, 'SubCode' => \SAML2\Constants::STATUS_PARTIAL_LOGOUT, - )); + ]); Logger::info('Sending logout response for partial logout to SP '.var_export($spEntityId, true)); } else { $partial = false; Logger::debug('Sending logout response to SP '.var_export($spEntityId, true)); } - \SimpleSAML\Stats::log('saml:idp:LogoutResponse:sent', array( + \SimpleSAML\Stats::log('saml:idp:LogoutResponse:sent', [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), 'partial' => $partial - )); + ]); $dst = $spMetadata->getEndpointPrioritizedByBinding( 'SingleLogoutService', - array( + [ \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HTTP_POST - ) + ] ); $binding = \SAML2\Binding::getBinding($dst['Binding']); if (isset($dst['ResponseLocation'])) { @@ -578,10 +591,10 @@ class SAML2 if ($message instanceof \SAML2\LogoutResponse) { Logger::info('Received SAML 2.0 LogoutResponse from: '.var_export($spEntityId, true)); - $statsData = array( + $statsData = [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), - ); + ]; if (!$message->isSuccess()) { $statsData['error'] = $message->getStatus(); } @@ -601,20 +614,20 @@ class SAML2 $idp->handleLogoutResponse($assocId, $relayState, $logoutError); } elseif ($message instanceof \SAML2\LogoutRequest) { Logger::info('Received SAML 2.0 LogoutRequest from: '.var_export($spEntityId, true)); - \SimpleSAML\Stats::log('saml:idp:LogoutRequest:recv', array( + \SimpleSAML\Stats::log('saml:idp:LogoutRequest:recv', [ 'spEntityID' => $spEntityId, 'idpEntityID' => $idpMetadata->getString('entityid'), - )); + ]); $spStatsId = $spMetadata->getString('core:statistics-id', $spEntityId); Logger::stats('saml20-idp-SLO spinit '.$spStatsId.' '.$idpMetadata->getString('entityid')); - $state = array( - 'Responder' => array('\SimpleSAML\Module\saml\IdP\SAML2', 'sendLogoutResponse'), + $state = [ + 'Responder' => ['\SimpleSAML\Module\saml\IdP\SAML2', 'sendLogoutResponse'], 'saml:SPEntityId' => $spEntityId, 'saml:RelayState' => $message->getRelayState(), 'saml:RequestId' => $message->getId(), - ); + ]; $assocId = 'saml:'.$spEntityId; $idp->handleLogoutRequest($state, $assocId); @@ -643,14 +656,14 @@ class SAML2 $idpMetadata = $idp->getConfig(); $spMetadata = $metadata->getMetaDataConfig($association['saml:entityID'], 'saml20-sp-remote'); - $bindings = array( + $bindings = [ \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HTTP_POST - ); + ]; $dst = $spMetadata->getEndpointPrioritizedByBinding('SingleLogoutService', $bindings); if ($dst['Binding'] === \SAML2\Constants::BINDING_HTTP_POST) { - $params = array('association' => $association['id'], 'idp' => $idp->getId()); + $params = ['association' => $association['id'], 'idp' => $idp->getId()]; if ($relayState !== null) { $params['RelayState'] = $relayState; } @@ -679,7 +692,7 @@ class SAML2 try { return $metadata->getMetaDataConfig($association['saml:entityID'], 'saml20-sp-remote'); } catch (\Exception $e) { - return Configuration::loadFromArray(array(), 'Unknown SAML 2 entity.'); + return Configuration::loadFromArray([], 'Unknown SAML 2 entity.'); } } @@ -761,8 +774,8 @@ class SAML2 $defaultEncoding = 'string'; } - $srcEncodings = $idpMetadata->getArray('attributeencodings', array()); - $dstEncodings = $spMetadata->getArray('attributeencodings', array()); + $srcEncodings = $idpMetadata->getArray('attributeencodings', []); + $dstEncodings = $spMetadata->getArray('attributeencodings', []); /* * Merge the two encoding arrays. Encodings specified in the target metadata @@ -770,9 +783,9 @@ class SAML2 */ $encodings = array_merge($srcEncodings, $dstEncodings); - $ret = array(); + $ret = []; foreach ($attributes as $name => $values) { - $ret[$name] = array(); + $ret[$name] = []; if (array_key_exists($name, $encodings)) { $encoding = $encodings[$name]; } else { @@ -888,7 +901,7 @@ class SAML2 } $a->setIssuer($idpMetadata->getString('entityid')); - $a->setValidAudiences(array($spMetadata->getString('entityid'))); + $a->setValidAudiences([$spMetadata->getString('entityid')]); $a->setNotBefore($now - 30); @@ -943,7 +956,7 @@ class SAML2 if (preg_match($pattern, $clientCert, $matches)) { // we have a client certificate from the browser which we add to the HoK assertion $x509Certificate = new \SAML2\XML\ds\X509Certificate(); - $x509Certificate->certificate = str_replace(array("\r", "\n", " "), '', $matches[1]); + $x509Certificate->certificate = str_replace(["\r", "\n", " "], '', $matches[1]); $x509Data = new \SAML2\XML\ds\X509Data(); $x509Data->data[] = $x509Certificate; @@ -972,7 +985,7 @@ class SAML2 // Bearer $sc->Method = \SAML2\Constants::CM_BEARER; } - $a->setSubjectConfirmation(array($sc)); + $a->setSubjectConfirmation([$sc]); // add attributes if ($spMetadata->getBoolean('simplesaml.attributes', true)) { @@ -991,9 +1004,9 @@ class SAML2 if ($nameIdFormat === null || !isset($state['saml:NameID'][$nameIdFormat])) { // either not set in request, or not set to a format we supply. Fall back to old generation method - $nameIdFormat = $spMetadata->getString('NameIDFormat', null); + $nameIdFormat = current($spMetadata->getArrayizeString('NameIDFormat', [])); if ($nameIdFormat === null) { - $nameIdFormat = $idpMetadata->getString('NameIDFormat', \SAML2\Constants::NAMEID_TRANSIENT); + $nameIdFormat = current($idpMetadata->getArrayizeString('NameIDFormat', [\SAML2\Constants::NAMEID_TRANSIENT])); } } @@ -1090,7 +1103,7 @@ class SAML2 } // extract the public key from the certificate for encryption - $key = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, array('type' => 'public')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, ['type' => 'public']); $key->loadKey($pemKey); } else { throw new \SimpleSAML\Error\ConfigurationError( diff --git a/modules/saml/lib/IdP/SQLNameID.php b/modules/saml/lib/IdP/SQLNameID.php index 0df0a9607bef6c5c9d2c87734d4e7c30774001ce..95d5712df26a64a808b072144af9e397b905acee 100644 --- a/modules/saml/lib/IdP/SQLNameID.php +++ b/modules/saml/lib/IdP/SQLNameID.php @@ -78,12 +78,12 @@ class SQLNameID $store = self::getStore(); - $params = array( + $params = [ '_idp' => $idpEntityId, '_sp' => $spEntityId, '_user' => $user, '_value' => $value, - ); + ]; $query = 'INSERT INTO '.$store->prefix; $query .= '_saml_PersistentNameID (_idp, _sp, _user, _value) VALUES(:_idp, :_sp, :_user, :_value)'; @@ -108,11 +108,11 @@ class SQLNameID $store = self::getStore(); - $params = array( + $params = [ '_idp' => $idpEntityId, '_sp' => $spEntityId, '_user' => $user, - ); + ]; $query = 'SELECT _value FROM '.$store->prefix; $query .= '_saml_PersistentNameID WHERE _idp = :_idp AND _sp = :_sp AND _user = :_user'; @@ -144,11 +144,11 @@ class SQLNameID $store = self::getStore(); - $params = array( + $params = [ '_idp' => $idpEntityId, '_sp' => $spEntityId, '_user' => $user, - ); + ]; $query = 'DELETE FROM '.$store->prefix; $query .= '_saml_PersistentNameID WHERE _idp = :_idp AND _sp = :_sp AND _user = :_user'; @@ -171,17 +171,17 @@ class SQLNameID $store = self::getStore(); - $params = array( + $params = [ '_idp' => $idpEntityId, '_sp' => $spEntityId, - ); + ]; $query = 'SELECT _user, _value FROM '.$store->prefix; $query .= '_saml_PersistentNameID WHERE _idp = :_idp AND _sp = :_sp'; $query = $store->pdo->prepare($query); $query->execute($params); - $res = array(); + $res = []; while (($row = $query->fetch(\PDO::FETCH_ASSOC)) !== false) { $res[$row['_user']] = $row['_value']; } diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php index 8cc89f6478f683028838b88f3cdc9e6ca968ea06..1af7164e83deb500bace45ee125e7fb1349324c2 100644 --- a/modules/saml/lib/Message.php +++ b/modules/saml/lib/Message.php @@ -38,7 +38,7 @@ class Message $algo = $srcMetadata->getString('signature.algorithm', XMLSecurityKey::RSA_SHA256); } - $privateKey = new XMLSecurityKey($algo, array('type' => 'private')); + $privateKey = new XMLSecurityKey($algo, ['type' => 'private']); if (array_key_exists('password', $keyArray)) { $privateKey->passphrase = $keyArray['password']; } @@ -56,7 +56,7 @@ class Message return; } - $element->setCertificates(array($certArray['PEM'])); + $element->setCertificates([$certArray['PEM']]); } @@ -114,7 +114,7 @@ class Message */ private static function findCertificate(array $certFingerprints, array $certificates) { - $candidates = array(); + $candidates = []; foreach ($certificates as $cert) { $fp = strtolower(sha1(base64_decode($cert))); @@ -152,7 +152,7 @@ class Message // find the public key that should verify signatures by this entity $keys = $srcMetadata->getPublicKeys('signing'); if (!empty($keys)) { - $pemKeys = array(); + $pemKeys = []; foreach ($keys as $key) { switch ($key['type']) { case 'X509Certificate': @@ -187,7 +187,7 @@ class Message } $pemCert = self::findCertificate($certFingerprint, $certificates); - $pemKeys = array($pemCert); + $pemKeys = [$pemCert]; } else { throw new \SimpleSAML\Error\Exception( 'Missing certificate in metadata for '. @@ -199,7 +199,7 @@ class Message $lastException = null; foreach ($pemKeys as $i => $pem) { - $key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, array('type' => 'public')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA256, ['type' => 'public']); $key->loadKey($pem); try { @@ -287,17 +287,17 @@ class Message if ($sharedKey !== null) { $key = new XMLSecurityKey(XMLSecurityKey::AES128_CBC); $key->loadKey($sharedKey); - return array($key); + return [$key]; } - $keys = array(); + $keys = []; // load the new private key if it exists $keyArray = \SimpleSAML\Utils\Crypto::loadPrivateKey($dstMetadata, false, 'new_'); if ($keyArray !== null) { assert(isset($keyArray['PEM'])); - $key = new XMLSecurityKey(XMLSecurityKey::RSA_1_5, array('type' => 'private')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_1_5, ['type' => 'private']); if (array_key_exists('password', $keyArray)) { $key->passphrase = $keyArray['password']; } @@ -309,7 +309,7 @@ class Message $keyArray = \SimpleSAML\Utils\Crypto::loadPrivateKey($dstMetadata, true); assert(isset($keyArray['PEM'])); - $key = new XMLSecurityKey(XMLSecurityKey::RSA_1_5, array('type' => 'private')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_1_5, ['type' => 'private']); if (array_key_exists('password', $keyArray)) { $key->passphrase = $keyArray['password']; } @@ -336,7 +336,7 @@ class Message ) { $blacklist = $srcMetadata->getArray('encryption.blacklisted-algorithms', null); if ($blacklist === null) { - $blacklist = $dstMetadata->getArray('encryption.blacklisted-algorithms', array(XMLSecurityKey::RSA_1_5)); + $blacklist = $dstMetadata->getArray('encryption.blacklisted-algorithms', [XMLSecurityKey::RSA_1_5]); } return $blacklist; } @@ -471,7 +471,7 @@ class Message $ar = new \SAML2\AuthnRequest(); // get the NameIDPolicy to apply. IdP metadata has precedence. - $nameIdPolicy = array(); + $nameIdPolicy = []; if ($idpMetadata->hasValue('NameIDPolicy')) { $nameIdPolicy = $idpMetadata->getValue('NameIDPolicy'); } elseif ($spMetadata->hasValue('NameIDPolicy')) { @@ -480,14 +480,14 @@ class Message if (!is_array($nameIdPolicy)) { // handle old configurations where 'NameIDPolicy' was used to specify just the format - $nameIdPolicy = array('Format' => $nameIdPolicy); + $nameIdPolicy = ['Format' => $nameIdPolicy]; } $nameIdPolicy_cf = \SimpleSAML\Configuration::loadFromArray($nameIdPolicy); - $policy = array( + $policy = [ 'Format' => $nameIdPolicy_cf->getString('Format', \SAML2\Constants::NAMEID_TRANSIENT), 'AllowCreate' => $nameIdPolicy_cf->getBoolean('AllowCreate', true), - ); + ]; $spNameQualifier = $nameIdPolicy_cf->getString('SPNameQualifier', false); if ($spNameQualifier !== false) { $policy['SPNameQualifier'] = $spNameQualifier; @@ -497,12 +497,12 @@ class Message $ar->setForceAuthn($spMetadata->getBoolean('ForceAuthn', false)); $ar->setIsPassive($spMetadata->getBoolean('IsPassive', false)); - $protbind = $spMetadata->getValueValidate('ProtocolBinding', array( + $protbind = $spMetadata->getValueValidate('ProtocolBinding', [ \SAML2\Constants::BINDING_HTTP_POST, \SAML2\Constants::BINDING_HOK_SSO, \SAML2\Constants::BINDING_HTTP_ARTIFACT, \SAML2\Constants::BINDING_HTTP_REDIRECT, - ), \SAML2\Constants::BINDING_HTTP_POST); + ], \SAML2\Constants::BINDING_HTTP_POST); // Shoaib: setting the appropriate binding based on parameter in sp-metadata defaults to HTTP_POST $ar->setProtocolBinding($protbind); @@ -512,13 +512,13 @@ class Message if ($spMetadata->hasValue('AuthnContextClassRef')) { $accr = $spMetadata->getArrayizeString('AuthnContextClassRef'); - $comp = $spMetadata->getValueValidate('AuthnContextComparison', array( + $comp = $spMetadata->getValueValidate('AuthnContextComparison', [ \SAML2\Constants::COMPARISON_EXACT, \SAML2\Constants::COMPARISON_MINIMUM, \SAML2\Constants::COMPARISON_MAXIMUM, \SAML2\Constants::COMPARISON_BETTER, - ), \SAML2\Constants::COMPARISON_EXACT); - $ar->setRequestedAuthnContext(array('AuthnContextClassRef' => $accr, 'Comparison' => $comp)); + ], \SAML2\Constants::COMPARISON_EXACT); + $ar->setRequestedAuthnContext(['AuthnContextClassRef' => $accr, 'Comparison' => $comp]); } self::addRedirectSign($spMetadata, $idpMetadata, $ar); @@ -609,7 +609,7 @@ class Message throw new \SimpleSAML\Error\Exception('No assertions found in response from IdP.'); } - $ret = array(); + $ret = []; foreach ($assertion as $a) { $ret[] = self::processAssertion($spMetadata, $idpMetadata, $response, $a, $responseSigned); } @@ -686,7 +686,7 @@ class Message $found = false; $lastError = 'No SubjectConfirmation element in Subject.'; - $validSCMethods = array(\SAML2\Constants::CM_BEARER, \SAML2\Constants::CM_HOK, \SAML2\Constants::CM_VOUCHES); + $validSCMethods = [\SAML2\Constants::CM_BEARER, \SAML2\Constants::CM_HOK, \SAML2\Constants::CM_VOUCHES]; foreach ($assertion->getSubjectConfirmation() as $sc) { if (!in_array($sc->Method, $validSCMethods, true)) { $lastError = 'Invalid Method on SubjectConfirmation: '.var_export($sc->Method, true); @@ -728,9 +728,9 @@ class Message continue; } // we have a valid client certificate from the browser - $clientCert = str_replace(array("\r", "\n", " "), '', $matches[1]); + $clientCert = str_replace(["\r", "\n", " "], '', $matches[1]); - $keyInfo = array(); + $keyInfo = []; foreach ($scd->info as $thing) { if ($thing instanceof \SAML2\XML\ds\KeyInfo) { $keyInfo[] = $thing; @@ -742,7 +742,7 @@ class Message continue; } - $x509data = array(); + $x509data = []; foreach ($keyInfo[0]->info as $thing) { if ($thing instanceof \SAML2\XML\ds\X509Data) { $x509data[] = $thing; @@ -754,7 +754,7 @@ class Message continue; } - $x509cert = array(); + $x509cert = []; foreach ($x509data[0]->data as $thing) { if ($thing instanceof \SAML2\XML\ds\X509Certificate) { $x509cert[] = $thing; @@ -811,9 +811,9 @@ class Message // maybe we need to base64 decode the attributes in the assertion? if ($idpMetadata->getBoolean('base64attributes', false)) { $attributes = $assertion->getAttributes(); - $newAttributes = array(); + $newAttributes = []; foreach ($attributes as $name => $values) { - $newAttributes[$name] = array(); + $newAttributes[$name] = []; foreach ($values as $value) { foreach (explode('_', $value) as $v) { $newAttributes[$name][] = base64_decode($v); @@ -880,7 +880,7 @@ class Message $pemKey = "-----BEGIN CERTIFICATE-----\n". chunk_split($key['X509Certificate'], 64). "-----END CERTIFICATE-----\n"; - $key = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, array('type' => 'public')); + $key = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, ['type' => 'public']); $key->loadKey($pemKey); return $key; } diff --git a/modules/saml/lib/SP/LogoutStore.php b/modules/saml/lib/SP/LogoutStore.php index 641c246048a16ce5230f518a4032be01beaa3c4a..8ea35423a5c3e81bd937f1d7bcd9cff1857f547d 100644 --- a/modules/saml/lib/SP/LogoutStore.php +++ b/modules/saml/lib/SP/LogoutStore.php @@ -76,7 +76,7 @@ class LogoutStore \SimpleSAML\Logger::debug('saml.LogoutStore: Cleaning logout store.'); $query = 'DELETE FROM '.$store->prefix.'_saml_LogoutStore WHERE _expire < :now'; - $params = array('now' => gmdate('Y-m-d H:i:s')); + $params = ['now' => gmdate('Y-m-d H:i:s')]; $query = $store->pdo->prepare($query); $query->execute($params); @@ -111,16 +111,16 @@ class LogoutStore self::cleanLogoutStore($store); } - $data = array( + $data = [ '_authSource' => $authId, '_nameId' => $nameId, '_sessionIndex' => $sessionIndex, '_expire' => gmdate('Y-m-d H:i:s', $expire), '_sessionId' => $sessionId, - ); + ]; $store->insertOrUpdate( $store->prefix.'_saml_LogoutStore', - array('_authSource', '_nameId', '_sessionIndex'), + ['_authSource', '_nameId', '_sessionIndex'], $data ); } @@ -141,11 +141,11 @@ class LogoutStore self::createLogoutTable($store); - $params = array( + $params = [ '_authSource' => $authId, '_nameId' => $nameId, 'now' => gmdate('Y-m-d H:i:s'), - ); + ]; // We request the columns in lowercase in order to be compatible with PostgreSQL $query = 'SELECT _sessionIndex AS _sessionindex, _sessionId AS _sessionid FROM '.$store->prefix; @@ -153,7 +153,7 @@ class LogoutStore $query = $store->pdo->prepare($query); $query->execute($params); - $res = array(); + $res = []; while (($row = $query->fetch(\PDO::FETCH_ASSOC)) !== false) { $res[$row['_sessionindex']] = $row['_sessionid']; } @@ -176,7 +176,7 @@ class LogoutStore assert(is_string($authId)); assert(is_string($nameId)); - $res = array(); + $res = []; foreach ($sessionIndexes as $sessionIndex) { $sessionId = $store->get('saml.LogoutStore', $nameId.':'.$sessionIndex); if ($sessionId === null) { diff --git a/modules/saml/locales/xh/LC_MESSAGES/saml.po b/modules/saml/locales/xh/LC_MESSAGES/saml.po new file mode 100644 index 0000000000000000000000000000000000000000..9d730336dab3a073592c50950914d90703d0a959 --- /dev/null +++ b/modules/saml/locales/xh/LC_MESSAGES/saml.po @@ -0,0 +1,25 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:48+0200\n" +"PO-Revision-Date: 2018-11-15 14:48+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{saml:proxy:invalid_idp}" +msgstr "Isiboneleli Sesazisi Esingasebenziyo" + +msgid "{saml:proxy:invalid_idp_description}" +msgstr "" +"Sele unayo iseshoni esebenzayo nomboneleli wesazisi (<em>%IDP%</em>) " +"engamkelwanga yi-<em>%SP%</em>. Ingaba ungathanda ukuphuma kwiseshoni " +"yakho esele ikho uze ungene kwakhona ngomnye umboneleli wesazisi?" + diff --git a/modules/saml/locales/zu/LC_MESSAGES/saml.po b/modules/saml/locales/zu/LC_MESSAGES/saml.po new file mode 100644 index 0000000000000000000000000000000000000000..9265c08238697f2cb3464c56903451a99aea559f --- /dev/null +++ b/modules/saml/locales/zu/LC_MESSAGES/saml.po @@ -0,0 +1,25 @@ + +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SimpleSAMLphp 1.15\n" +"Report-Msgid-Bugs-To: simplesamlphp-translation@googlegroups.com\n" +"POT-Creation-Date: 2018-11-15 14:48+0200\n" +"PO-Revision-Date: 2018-11-15 14:48+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" + +msgid "{saml:proxy:invalid_idp}" +msgstr "Umhlinzeki Kamazisi Ongalungile" + +msgid "{saml:proxy:invalid_idp_description}" +msgstr "" +"Kakade uneseshini evumelekile nomhlinzeki kamazisi (<em>%IDP%</em>) " +"engamukelwa okuthi <em>%SP%</em>. Ungathanda ukuphuma kuseshini yakho " +"ekhona kakade futhi uphinde ungene ngomunye umhlinzeki kamazisi?" + diff --git a/modules/saml/templates/proxy/invalid_session.php b/modules/saml/templates/proxy/invalid_session.php index 94d63f9cdaa4cf5f510cc01d7c14bf8a427c3536..ede358580d665a0a8c88c8b340931d97d458debd 100644 --- a/modules/saml/templates/proxy/invalid_session.php +++ b/modules/saml/templates/proxy/invalid_session.php @@ -16,10 +16,10 @@ $this->includeAtTemplateBase('includes/header.php'); $translator = $this->getTranslator(); -$params = array( +$params = [ '%IDP%' => $this->data['idp_name'], '%SP%' => $this->data['sp_name'], -); +]; ?> <h2><?php echo $translator->t('{saml:proxy:invalid_idp}'); ?></h2> <p><?php echo $translator->t('{saml:proxy:invalid_idp_description}', $params); ?></p> diff --git a/modules/saml/www/disco.php b/modules/saml/www/disco.php index 147338f0d6d3ea980bcbcd8eea4afe2fa514a747..b7d06c454550a1dab8eab8edb181c4a6a750e379 100644 --- a/modules/saml/www/disco.php +++ b/modules/saml/www/disco.php @@ -4,5 +4,5 @@ * Built-in IdP discovery service. */ -$discoHandler = new \SimpleSAML\XHTML\IdPDisco(array('saml20-idp-remote', 'shib13-idp-remote'), 'saml'); +$discoHandler = new \SimpleSAML\XHTML\IdPDisco(['saml20-idp-remote', 'shib13-idp-remote'], 'saml'); $discoHandler->handleRequest(); diff --git a/modules/saml/www/sp/metadata.php b/modules/saml/www/sp/metadata.php index abc9140928310dd9770d68cc0f61734cde2a7bdc..355218d0820c791696b16f6ff4ae839c3ce0d82b 100644 --- a/modules/saml/www/sp/metadata.php +++ b/modules/saml/www/sp/metadata.php @@ -25,12 +25,12 @@ $entityId = $source->getEntityId(); $spconfig = $source->getMetadata(); $store = \SimpleSAML\Store::getInstance(); -$metaArray20 = array(); +$metaArray20 = []; -$slosvcdefault = array( +$slosvcdefault = [ \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_SOAP, -); +]; $slob = $spconfig->getArray('SingleLogoutServiceBinding', $slosvcdefault); $slol = \SimpleSAML\Module::getModuleURL('saml/sp/saml2-logout.php/'.$sourceId); @@ -40,18 +40,18 @@ foreach ($slob as $binding) { // we cannot properly support SOAP logout continue; } - $metaArray20['SingleLogoutService'][] = array( + $metaArray20['SingleLogoutService'][] = [ 'Binding' => $binding, 'Location' => $slol, - ); + ]; } -$assertionsconsumerservicesdefault = array( +$assertionsconsumerservicesdefault = [ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post', 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact', 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01', -); +]; if ($spconfig->getString('ProtocolBinding', '') == 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser') { $assertionsconsumerservicesdefault[] = 'urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser'; @@ -60,10 +60,10 @@ if ($spconfig->getString('ProtocolBinding', '') == 'urn:oasis:names:tc:SAML:2.0: $assertionsconsumerservices = $spconfig->getArray('acs.Bindings', $assertionsconsumerservicesdefault); $index = 0; -$eps = array(); -$supported_protocols = array(); +$eps = []; +$supported_protocols = []; foreach ($assertionsconsumerservices as $services) { - $acsArray = array('index' => $index); + $acsArray = ['index' => $index]; switch ($services) { case 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST': $acsArray['Binding'] = \SAML2\Constants::BINDING_HTTP_POST; @@ -108,19 +108,19 @@ foreach ($assertionsconsumerservices as $services) { $metaArray20['AssertionConsumerService'] = $eps; -$keys = array(); +$keys = []; $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($spconfig, false, 'new_'); if ($certInfo !== null && array_key_exists('certData', $certInfo)) { $hasNewCert = true; $certData = $certInfo['certData']; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => true, 'X509Certificate' => $certInfo['certData'], - ); + ]; } else { $hasNewCert = false; } @@ -129,12 +129,12 @@ $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($spconfig); if ($certInfo !== null && array_key_exists('certData', $certInfo)) { $certData = $certInfo['certData']; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => ($hasNewCert ? false : true), 'X509Certificate' => $certInfo['certData'], - ); + ]; } else { $certData = null; } @@ -145,12 +145,12 @@ if ($format !== null) { } $name = $spconfig->getLocalizedString('name', null); -$attributes = $spconfig->getArray('attributes', array()); +$attributes = $spconfig->getArray('attributes', []); if ($name !== null && !empty($attributes)) { $metaArray20['name'] = $name; $metaArray20['attributes'] = $attributes; - $metaArray20['attributes.required'] = $spconfig->getArray('attributes.required', array()); + $metaArray20['attributes.required'] = $spconfig->getArray('attributes.required', []); if (empty($metaArray20['attributes.required'])) { unset($metaArray20['attributes.required']); diff --git a/modules/saml/www/sp/saml1-acs.php b/modules/saml/www/sp/saml1-acs.php index 66392f4ce3e07820d59899640cab0bbdb1ce4819..db18627fd98e37ac800e7609708f392d23cb0057 100644 --- a/modules/saml/www/sp/saml1-acs.php +++ b/modules/saml/www/sp/saml1-acs.php @@ -29,11 +29,11 @@ $target = (string) $_REQUEST['TARGET']; if (preg_match('@^https?://@i', $target)) { // Unsolicited response - $state = array( + $state = [ 'saml:sp:isUnsolicited' => true, 'saml:sp:AuthId' => $sourceId, 'saml:sp:RelayState' => \SimpleSAML\Utils\HTTP::checkURLAllowed($target), - ); + ]; } else { $state = \SimpleSAML\Auth\State::loadState($_REQUEST['TARGET'], 'saml:sp:sso'); @@ -82,9 +82,9 @@ if (isset($state['saml:idp']) && $responseIssuer !== $state['saml:idp']) { throw new \SimpleSAML\Error\Exception('The issuer of the response wasn\'t the destination of the request.'); } -$logoutState = array( +$logoutState = [ 'saml:logout:Type' => 'saml1' - ); +]; $state['LogoutState'] = $logoutState; $state['saml:sp:NameID'] = $response->getNameID(); diff --git a/modules/saml/www/sp/saml2-acs.php b/modules/saml/www/sp/saml2-acs.php index 75504252d5eeace1967ea6855b5479a46c74a728..9dcec80c5b762c119c7014a3269da63e1a63e36f 100644 --- a/modules/saml/www/sp/saml2-acs.php +++ b/modules/saml/www/sp/saml2-acs.php @@ -72,7 +72,7 @@ if ($prevAuth !== null && $prevAuth['id'] === $response->getId() && $prevAuth['i throw new \SimpleSAML\Error\Exception('Duplicate assertion received.'); } -$idpMetadata = array(); +$idpMetadata = []; $state = null; $stateId = $response->getInResponseTo(); @@ -100,7 +100,7 @@ if ($state) { assert(array_key_exists('ExpectedIssuer', $state)); if ($state['ExpectedIssuer'] !== $idp) { $idpMetadata = $source->getIdPMetadata($idp); - $idplist = $idpMetadata->getArrayize('IDPList', array()); + $idplist = $idpMetadata->getArrayize('IDPList', []); if (!in_array($state['ExpectedIssuer'], $idplist, true)) { throw new \SimpleSAML\Error\Exception( 'The issuer of the response does not match to the identity provider we sent the request to.' @@ -109,7 +109,7 @@ if ($state) { } } else { // this is an unsolicited response - $state = array( + $state = [ 'saml:sp:isUnsolicited' => true, 'saml:sp:AuthId' => $sourceId, 'saml:sp:RelayState' => \SimpleSAML\Utils\HTTP::checkURLAllowed( @@ -118,7 +118,7 @@ if ($state) { $response->getRelayState() ) ), - ); + ]; } SimpleSAML\Logger::debug('Received SAML2 Response from '.var_export($idp, true).'.'); @@ -140,7 +140,7 @@ $authenticatingAuthority = null; $nameId = null; $sessionIndex = null; $expire = null; -$attributes = array(); +$attributes = []; $foundAuthnStatement = false; foreach ($assertions as $assertion) { // check for duplicate assertion (replay attack) @@ -201,12 +201,12 @@ if (!empty($nameId)) { \SimpleSAML\Module\saml\SP\LogoutStore::addSession($sourceId, $nameId, $sessionIndex, $logoutExpire); // we need to save the NameID and SessionIndex for logout - $logoutState = array( + $logoutState = [ 'saml:logout:Type' => 'saml2', 'saml:logout:IdP' => $idp, 'saml:logout:NameID' => $nameId, 'saml:logout:SessionIndex' => $sessionIndex, - ); + ]; $state['saml:sp:NameID'] = $nameId; // no need to mark it as persistent, it already is } else { @@ -223,9 +223,9 @@ if (!empty($nameId)) { * it to the store), marking the IdP as SAML 1.0, which does not implement logout. Then we can safely log the user * out from the local session, skipping Single Logout upstream to the IdP. */ - $logoutState = array( + $logoutState = [ 'saml:logout:Type' => 'saml1', - ); + ]; } $state['LogoutState'] = $logoutState; @@ -244,10 +244,10 @@ if ($expire !== null) { } // note some information about the authentication, in case we receive the same response again -$state['saml:sp:prevAuth'] = array( +$state['saml:sp:prevAuth'] = [ 'id' => $response->getId(), 'issuer' => $idp, -); +]; if (isset($state['\SimpleSAML\Auth\Source.ReturnURL'])) { $state['saml:sp:prevAuth']['redirect'] = $state['\SimpleSAML\Auth\Source.ReturnURL']; } elseif (isset($state['saml:sp:RelayState'])) { diff --git a/modules/saml/www/sp/saml2-logout.php b/modules/saml/www/sp/saml2-logout.php index 710966efdb5b53980cb8d8c718b4a561c375516e..e67431f83ac204193fb2c4d69800c9f57f96dc41 100644 --- a/modules/saml/www/sp/saml2-logout.php +++ b/modules/saml/www/sp/saml2-logout.php @@ -120,10 +120,10 @@ if ($message instanceof \SAML2\LogoutResponse) { $dst = $idpMetadata->getEndpointPrioritizedByBinding( 'SingleLogoutService', - array( + [ \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HTTP_POST - ) + ] ); if (!$binding instanceof \SAML2\SOAP) { diff --git a/modules/sanitycheck/config-templates/config-sanitycheck.php b/modules/sanitycheck/config-templates/config-sanitycheck.php index 543ebbba9c4c284bca626fc710f08d87b212a7d9..d9b45bb8af9fb724067659284eb3a0d67116d642 100644 --- a/modules/sanitycheck/config-templates/config-sanitycheck.php +++ b/modules/sanitycheck/config-templates/config-sanitycheck.php @@ -3,7 +3,7 @@ * The configuration of SimpleSAMLphp sanitycheck package */ -$config = array( +$config = [ /* * Do you want to generate statistics using the cron module? If so, specify which cron tag to use. * Examples: daily, weekly @@ -11,4 +11,4 @@ $config = array( * 'cron_tag' => null, */ 'cron_tag' => 'hourly', -); +]; diff --git a/modules/sanitycheck/hooks/hook_cron.php b/modules/sanitycheck/hooks/hook_cron.php index dcea2adefae82eb67b63a257157606b631f0dbb9..15e0736ddbdd7c6457dd586b210f7af6ae4295db 100644 --- a/modules/sanitycheck/hooks/hook_cron.php +++ b/modules/sanitycheck/hooks/hook_cron.php @@ -21,12 +21,12 @@ function sanitycheck_hook_cron(&$croninfo) return; } - $info = array(); - $errors = array(); - $hookinfo = array( + $info = []; + $errors = []; + $hookinfo = [ 'info' => &$info, 'errors' => &$errors, - ); + ]; SimpleSAML\Module::callHooks('sanitycheck', $hookinfo); diff --git a/modules/sanitycheck/hooks/hook_frontpage.php b/modules/sanitycheck/hooks/hook_frontpage.php index 7a13de7c73a6a949e0eabfc1f63a54129eb5c5c0..95dddf7aa1861dab67ca05dc502e881795404421 100644 --- a/modules/sanitycheck/hooks/hook_frontpage.php +++ b/modules/sanitycheck/hooks/hook_frontpage.php @@ -9,8 +9,8 @@ function sanitycheck_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['config']['sanitycheck'] = array( + $links['config']['sanitycheck'] = [ 'href' => SimpleSAML\Module::getModuleURL('sanitycheck/index.php'), 'text' => '{core:frontpage:link_sanitycheck}', - ); + ]; } diff --git a/modules/sanitycheck/hooks/hook_moduleinfo.php b/modules/sanitycheck/hooks/hook_moduleinfo.php index 0621b972c9333811d67e523b68942fe198938b45..87d014e2ec5a2e0c2098e1fe9aab5a60062d9d26 100644 --- a/modules/sanitycheck/hooks/hook_moduleinfo.php +++ b/modules/sanitycheck/hooks/hook_moduleinfo.php @@ -9,11 +9,11 @@ function sanitycheck_hook_moduleinfo(&$moduleinfo) assert(is_array($moduleinfo)); assert(array_key_exists('info', $moduleinfo)); - $moduleinfo['info']['sanitycheck'] = array( - 'name' => array('en' => 'Sanity check'), - 'description' => array('en' => 'This module adds functionality for other modules to provide sanity checks.'), + $moduleinfo['info']['sanitycheck'] = [ + 'name' => ['en' => 'Sanity check'], + 'description' => ['en' => 'This module adds functionality for other modules to provide sanity checks.'], - 'dependencies' => array('core'), - 'uses' => array('cron'), - ); + 'dependencies' => ['core'], + 'uses' => ['cron'], + ]; } diff --git a/modules/sanitycheck/www/index.php b/modules/sanitycheck/www/index.php index ccfd7daecd514b6e5aff555aec99f92ecd4fdded..8946bad073f5ca56a7107056c5343ec8acefda21 100644 --- a/modules/sanitycheck/www/index.php +++ b/modules/sanitycheck/www/index.php @@ -2,12 +2,12 @@ $config = \SimpleSAML\Configuration::getInstance(); -$info = array(); -$errors = array(); -$hookinfo = array( +$info = []; +$errors = []; +$hookinfo = [ 'info' => &$info, 'errors' => &$errors, -); +]; \SimpleSAML\Module::callHooks('sanitycheck', $hookinfo); if (isset($_REQUEST['output']) && $_REQUEST['output'] == 'text') { diff --git a/modules/smartattributes/lib/Auth/Process/SmartID.php b/modules/smartattributes/lib/Auth/Process/SmartID.php index d2aebb452c0c4039d2d2e2751f49392395cb50b5..00ca468eae4ff9ce4f4afe09e1de9949577f1ce7 100644 --- a/modules/smartattributes/lib/Auth/Process/SmartID.php +++ b/modules/smartattributes/lib/Auth/Process/SmartID.php @@ -11,7 +11,7 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter * etc., be sure to comment out the entries that map xxx_targetedID to * eduPersonTargetedID, or there will be no way to see its origin any more. */ - private $candidates = array( + private $candidates = [ 'eduPersonTargetedID', 'eduPersonPrincipalName', 'pairwise-id', @@ -21,7 +21,7 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter 'twitter_targetedID', 'windowslive_targetedID', 'linkedin_targetedID', - ); + ]; /** * The name of the generated ID attribute. @@ -44,7 +44,7 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter * * Associative array of arrays. */ - private $attributes = array(); + private $attributes = []; public function __construct($config, $reserved) @@ -119,7 +119,7 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter $id = $this->addID($request['Attributes'], $request); if (isset($id)) { - $request['Attributes'][$this->id_attribute] = array($id); + $request['Attributes'][$this->id_attribute] = [$id]; } } } diff --git a/modules/smartattributes/lib/Auth/Process/SmartName.php b/modules/smartattributes/lib/Auth/Process/SmartName.php index 4ed5af03638a745bf18ff6d8f1be44618e84aa64..19a69baa6f31d66fc8a15e3bdc1c7d72d3c67bb5 100644 --- a/modules/smartattributes/lib/Auth/Process/SmartName.php +++ b/modules/smartattributes/lib/Auth/Process/SmartName.php @@ -16,7 +16,7 @@ class SmartName extends \SimpleSAML\Auth\ProcessingFilter * * Assiciative array of arrays. */ - private $attributes = array(); + private $attributes = []; private function getFullName($attributes) @@ -86,7 +86,7 @@ class SmartName extends \SimpleSAML\Auth\ProcessingFilter $fullname = $this->getFullName($attributes); if (isset($fullname)) { - $request['Attributes']['smartname-fullname'] = array($fullname); + $request['Attributes']['smartname-fullname'] = [$fullname]; } } } diff --git a/modules/sqlauth/lib/Auth/Source/SQL.php b/modules/sqlauth/lib/Auth/Source/SQL.php index 2ec835f9ad1129f6ba5e7c2ad5da877ec104d62a..b820a6a3e44dc818969bd46d300b059cc777c21e 100644 --- a/modules/sqlauth/lib/Auth/Source/SQL.php +++ b/modules/sqlauth/lib/Auth/Source/SQL.php @@ -55,7 +55,7 @@ class SQL extends \SimpleSAML\Module\core\Auth\UserPassBase parent::__construct($info, $config); // Make sure that all required parameters are present. - foreach (array('dsn', 'username', 'password', 'query') as $param) { + foreach (['dsn', 'username', 'password', 'query'] as $param) { if (!array_key_exists($param, $config)) { throw new \Exception('Missing required attribute \''.$param. '\' for authentication source '.$this->authId); @@ -142,7 +142,7 @@ class SQL extends \SimpleSAML\Module\core\Auth\UserPassBase } try { - $sth->execute(array('username' => $username, 'password' => $password)); + $sth->execute(['username' => $username, 'password' => $password]); } catch (\PDOException $e) { throw new \Exception('sqlauth:'.$this->authId. ': - Failed to execute query: '.$e->getMessage()); @@ -169,7 +169,7 @@ class SQL extends \SimpleSAML\Module\core\Auth\UserPassBase * which are present in more than one row will become multivalued. null values and * duplicate values will be skipped. All values will be converted to strings. */ - $attributes = array(); + $attributes = []; foreach ($data as $row) { foreach ($row as $name => $value) { if ($value === null) { @@ -179,7 +179,7 @@ class SQL extends \SimpleSAML\Module\core\Auth\UserPassBase $value = (string) $value; if (!array_key_exists($name, $attributes)) { - $attributes[$name] = array(); + $attributes[$name] = []; } if (in_array($value, $attributes[$name], true)) { diff --git a/modules/statistics/bin/loganalyzer.php b/modules/statistics/bin/loganalyzer.php index 0f0f7bfbf64d2b3e101580181b4791592be2c917..85ae093f3e31ab1dfdde61a1ce1ca304c4f17154 100755 --- a/modules/statistics/bin/loganalyzer.php +++ b/modules/statistics/bin/loganalyzer.php @@ -29,7 +29,7 @@ foreach ($argv as $a) { } // Map short options to long options. - $shortOptMap = array('-d' => '--debug'); + $shortOptMap = ['-d' => '--debug']; if (array_key_exists($a, $shortOptMap)) { $a = $shortOptMap[$a]; } diff --git a/modules/statistics/bin/logcleaner.php b/modules/statistics/bin/logcleaner.php index 440780d02230ca0bf7ed3a79b942a127b966d722..b160cdab2780d2806831aa044a0e2655e1812bed 100755 --- a/modules/statistics/bin/logcleaner.php +++ b/modules/statistics/bin/logcleaner.php @@ -30,7 +30,7 @@ foreach ($argv as $a) { } // Map short options to long options. - $shortOptMap = array('-d' => '--debug'); + $shortOptMap = ['-d' => '--debug']; if (array_key_exists($a, $shortOptMap)) { $a = $shortOptMap[$a]; } diff --git a/modules/statistics/config-templates/module_statistics.php b/modules/statistics/config-templates/module_statistics.php index eb582159f855e95967911ea68caf0cd852744b98..9e186dc2908f65297a74825e8c03e830fee1fe84 100644 --- a/modules/statistics/config-templates/module_statistics.php +++ b/modules/statistics/config-templates/module_statistics.php @@ -3,7 +3,7 @@ * The configuration of SimpleSAMLphp statistics package */ -$config = array( +$config = [ // Authentication & authorization for statistics // Whether the statistics require authentication before use. @@ -42,39 +42,39 @@ $config = array( 'cron_tag' => 'daily', /* - * Set max running time for this script. This is also controlle by max_execution_time in php.ini - * and is defalut set to 30 sec. Your web server can have other timeout configurations that may + * Set max running time for this script. This is also controlled by max_execution_time in php.ini + * and is set to 30 sec by default. Your web server can have other timeout configurations that may * also interrupt PHP execution. Apache has a Timeout directive and IIS has a * CGI timeout function. Both default to 300 seconds. */ 'time_limit' => 300, - 'timeres' => array( - 'day' => array( + 'timeres' => [ + 'day' => [ 'name' => 'Day', 'slot' => 60 * 15, // Slots of 15 minutes 'fileslot' => 60 * 60 * 24, // One day (24 hours) file slots 'axislabelint' => 6 * 4, // Number of slots per label. 4 per hour *6 = 6 hours 'dateformat-period' => 'j. M', // 4. Mars 'dateformat-intra' => 'j. M H:i', // 4. Mars 12:30 - ), - 'week' => array( + ], + 'week' => [ 'name' => 'Week', 'slot' => 60 * 60, // Slots of one hour 'fileslot' => 60 * 60 * 24 * 7, // 7 days of data in each file 'axislabelint' => 24, // Number of slots per label. 24 is one each day 'dateformat-period' => 'j. M', // 4. Mars 'dateformat-intra' => 'j. M H:i', // 4. Mars 12:30 - ), - 'month' => array( + ], + 'month' => [ 'name' => 'Month', 'slot' => 60 * 60 * 24, // Slots of one day 'fileslot' => 60 * 60 * 24 * 30, // 30 days of data in each file 'axislabelint' => 7, // Number of slots per label. 7 days => 1 week 'dateformat-period' => 'j. M Y H:i', // 4. Mars 12:30 'dateformat-intra' => 'j. M', // 4. Mars - ), - 'monthaligned' => array( + ], + 'monthaligned' => [ 'name' => 'AlignedMonth', 'slot' => 60 * 60 * 24, // Slots of one day 'fileslot' => null, // 30 days of data in each file @@ -82,109 +82,109 @@ $config = array( 'axislabelint' => 7, // Number of slots per label. 7 days => 1 week 'dateformat-period' => 'j. M Y H:i', // 4. Mars 12:30 'dateformat-intra' => 'j. M', // 4. Mars - ), - 'days180' => array( + ], + 'days180' => [ 'name' => '180 days', 'slot' => 60 * 60 * 24, // Slots of 1 day (24 hours) 'fileslot' => 60 * 60 * 24 * 180, // 80 days of data in each file 'axislabelint' => 30, // Number of slots per label. 7 days => 1 week 'dateformat-period' => 'j. M', // 4. Mars 'dateformat-intra' => 'j. M', // 4. Mars - ), - ), + ], + ], - 'statrules' => array( - 'sloratio' => array( + 'statrules' => [ + 'sloratio' => [ 'name' => 'SLO to SSO ratio', 'descr' => 'Comparison of the number of Single Log-Out compared to Single Sign-On.'. ' Graph shows how many logouts where initiated for each Single Sign-On.', 'type' => 'calculated', 'presenter' => 'statistics:Ratio', - 'ref' => array('slo', 'sso'), - 'fieldPresentation' => array( + 'ref' => ['slo', 'sso'], + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'ssomulti' => array( + ], + ], + 'ssomulti' => [ 'name' => 'Requests per session', 'descr' => 'Number of SSO request pairs exchanged between IdP and SP within the same IdP session.'. ' A high number indicates that the session at the SP is timing out faster than at the IdP.', 'type' => 'calculated', 'presenter' => 'statistics:Ratio', - 'ref' => array('sso', 'ssofirst'), - 'fieldPresentation' => array( + 'ref' => ['sso', 'ssofirst'], + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'sso' => array( + ], + ], + 'sso' => [ 'name' => 'SSO to service', 'descr' => 'The number of logins at a Service Provider.', 'action' => 'saml20-idp-SSO', 'col' => 6, // Service Provider EntityID - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'ssofirst' => array( + ], + ], + 'ssofirst' => [ 'name' => 'SSO-first to service', 'descr' => 'The number of logins at a Service Provider.', 'action' => 'saml20-idp-SSO-first', 'col' => 6, // Service Provider EntityID - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'slo' => array( + ], + ], + 'slo' => [ 'name' => 'SLO initiated from service', 'descr' => 'The number of initated Sinlge Logout from each of the service providers.', 'action' => 'saml20-idp-SLO', 'col' => 7, // Service Provider EntityID that initiated the logout. - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'consent' => array( + ], + ], + 'consent' => [ 'name' => 'Consent', 'descr' => 'Consent statistics. Everytime a user logs in to a service an entry is logged for'. ' one of three states: consent was found, consent was not found or consent storage was not available.', 'action' => 'consent', 'col' => 6, - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'consentresponse' => array( + ], + ], + 'consentresponse' => [ 'name' => 'Consent response', 'descr' => 'Consent response statistics. Everytime a user accepts consent,'. ' it is logged whether the user selected to remember the consent to next time.', 'action' => 'consentResponse', 'col' => 6, - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - 'slopages' => array( + ], + ], + 'slopages' => [ 'name' => 'SLO iframe pages', 'descr' => 'The varioust IFrame SLO pages a user visits', 'action' => 'slo-iframe', 'col' => 6, // Page the user visits. - ), - 'slofail' => array( + ], + 'slofail' => [ 'name' => 'Failed iframe IdP-init SLOs', 'descr' => 'The number of logout failures from various SPs', 'action' => 'slo-iframe-fail', 'col' => 6, // Service Provider EntityID that wasn't logged out. - 'fieldPresentation' => array( + 'fieldPresentation' => [ 'class' => 'statistics:Entity', 'config' => 'saml20-sp-remote', - ), - ), - ), -); + ], + ], + ], +]; diff --git a/modules/statistics/hooks/hook_frontpage.php b/modules/statistics/hooks/hook_frontpage.php index a97da1f2c5f31ee8b900b6b3eb0aba82c1a3e2f0..462a300bfb265e8c0a97036c4df9084743a8e4cf 100644 --- a/modules/statistics/hooks/hook_frontpage.php +++ b/modules/statistics/hooks/hook_frontpage.php @@ -9,13 +9,13 @@ function statistics_hook_frontpage(&$links) assert(is_array($links)); assert(array_key_exists('links', $links)); - $links['config']['statistics'] = array( + $links['config']['statistics'] = [ 'href' => SimpleSAML\Module::getModuleURL('statistics/showstats.php'), 'text' => '{core:frontpage:link_statistics}', - ); - $links['config']['statisticsmeta'] = array( + ]; + $links['config']['statisticsmeta'] = [ 'href' => SimpleSAML\Module::getModuleURL('statistics/statmeta.php'), 'text' => '{core:frontpage:link_statistics_metadata}', - 'shorttext' => array('en' => 'Statistics metadata', 'no' => 'Statistikk metadata'), - ); + 'shorttext' => ['en' => 'Statistics metadata', 'no' => 'Statistikk metadata'], + ]; } diff --git a/modules/statistics/lib/Aggregator.php b/modules/statistics/lib/Aggregator.php index dbdba27e6f84bc04a32ddb4d6e8fcc32205d08b0..966012d6399329c6b5f250a3d68e53b9f22197e8 100644 --- a/modules/statistics/lib/Aggregator.php +++ b/modules/statistics/lib/Aggregator.php @@ -97,10 +97,10 @@ class Aggregator $this->statconfig->getValue('datelength', 15), $this->statconfig->getValue('offsetspan', 44) ); - $datehandler = array( + $datehandler = [ 'default' => new DateHandler($this->offset), 'month' => new DateHandlerMonth($this->offset), - ); + ]; $notBefore = 0; $lastRead = 0; @@ -113,7 +113,7 @@ class Aggregator $lastlogline = 'sdfsdf'; $lastlineflip = false; - $results = array(); + $results = []; $i = 0; // Parse through log file, line by line @@ -215,7 +215,7 @@ class Aggregator if (is_int($colrule)) { return trim($content[$colrule]); } elseif (is_array($colrule)) { - $difcols = array(); + $difcols = []; foreach ($colrule as $cr) { $difcols[] = trim($content[$cr]); } @@ -227,11 +227,11 @@ class Aggregator private function cummulateData($previous, $newdata) { - $dataset = array(); + $dataset = []; foreach (func_get_args() as $item) { foreach ($item as $slot => $dataarray) { if (!array_key_exists($slot, $dataset)) { - $dataset[$slot] = array(); + $dataset[$slot] = []; } foreach ($dataarray as $key => $data) { if (!array_key_exists($key, $dataset[$slot])) { @@ -246,10 +246,10 @@ class Aggregator public function store($results) { - $datehandler = array( + $datehandler = [ 'default' => new DateHandler($this->offset), 'month' => new DateHandlerMonth($this->offset), - ); + ]; // Iterate the first level of results, which is per rule, as defined in the config. foreach ($results as $rulename => $timeresdata) { @@ -282,15 +282,15 @@ class Aggregator ); // Fill in missing entries and sort file results - $filledresult = array(); + $filledresult = []; for ($slot = $start; $slot < $end; $slot++) { if (array_key_exists($slot, $fileres)) { $filledresult[$slot] = $fileres[$slot]; } else { if ($lastfile == $fileno && $slot > $maxslot) { - $filledresult[$slot] = array('_' => null); + $filledresult[$slot] = ['_' => null]; } else { - $filledresult[$slot] = array('_' => 0); + $filledresult[$slot] = ['_' => 0]; } } } diff --git a/modules/statistics/lib/Graph/GoogleCharts.php b/modules/statistics/lib/Graph/GoogleCharts.php index 087dffcb2376eb0e2c112c7e46a2e197f81c241d..129639de50d103e4002b0504e7e3c3a117242141 100644 --- a/modules/statistics/lib/Graph/GoogleCharts.php +++ b/modules/statistics/lib/Graph/GoogleCharts.php @@ -44,7 +44,7 @@ class GoogleCharts // t:10.0,58.0,95.0 private function encodedata($datasets) { - $setstr = array(); + $setstr = []; foreach ($datasets as $dataset) { $setstr[] = self::extEncode($dataset); } @@ -119,7 +119,7 @@ class GoogleCharts 'chs='.$this->x.'x'.$this->y. // Dateset values. - '&chd='.$this->encodedata(array($datasets)). + '&chd='.$this->encodedata([$datasets]). // chart type is linechart '&cht=p'. @@ -162,7 +162,7 @@ class GoogleCharts } $maxGridLines = 10; - $candidates = array(1, 2, 5, 10, 20, 25, 50, 100); + $candidates = [1, 2, 5, 10, 20, 25, 50, 100]; foreach ($candidates as $c) { if ($t / $c < $maxGridLines) { @@ -171,5 +171,6 @@ class GoogleCharts return $target_top; } } + return 1; } } diff --git a/modules/statistics/lib/LogCleaner.php b/modules/statistics/lib/LogCleaner.php index ac172a28e359e34c007ca8e86e0966afd5cabe46..eafb501904e36d7cac8883a3edb1b70da4bca12f 100644 --- a/modules/statistics/lib/LogCleaner.php +++ b/modules/statistics/lib/LogCleaner.php @@ -65,7 +65,7 @@ class LogCleaner $this->statconfig->getValue('offsetspan', 44) ); - $sessioncounter = array(); + $sessioncounter = []; $i = 0; // Parse through log file, line by line @@ -105,7 +105,7 @@ class LogCleaner } } - $histogram = array(); + $histogram = []; foreach ($sessioncounter as $trackid => $sc) { if (!isset($histogram[$sc])) { $histogram[$sc] = 0; @@ -114,7 +114,7 @@ class LogCleaner } ksort($histogram); - $todelete = array(); + $todelete = []; foreach ($sessioncounter as $trackid => $sc) { if ($sc > 200) { $todelete[] = $trackid; diff --git a/modules/statistics/lib/RatioDataset.php b/modules/statistics/lib/RatioDataset.php index 0abd90416cf158dcf7581ae9852e1e62d8e7d85f..5449a3fd1797c03c08b9d04d8e530f58d8202be4 100644 --- a/modules/statistics/lib/RatioDataset.php +++ b/modules/statistics/lib/RatioDataset.php @@ -14,8 +14,8 @@ class RatioDataset extends StatDataset /** * Aggregate summary table from dataset. To be used in the table view. */ - $this->summary = array(); - $noofvalues = array(); + $this->summary = []; + $noofvalues = []; foreach ($this->results as $slot => $res) { foreach ($res as $key => $value) { if (array_key_exists($key, $this->summary)) { @@ -60,10 +60,10 @@ class RatioDataset extends StatDataset public function combine($result1, $result2) { - $combined = array(); + $combined = []; foreach ($result2 as $tick => $val) { - $combined[$tick] = array(); + $combined[$tick] = []; foreach ($val as $index => $num) { $combined[$tick][$index] = $this->divide( $this->ag($index, $result1[$tick]), diff --git a/modules/statistics/lib/Ruleset.php b/modules/statistics/lib/Ruleset.php index 5b7b85d943106c7758fe20e9fadff497dd5732c6..9d8c67d058ec3eb28a3717eaf8f5878c3e23e177 100644 --- a/modules/statistics/lib/Ruleset.php +++ b/modules/statistics/lib/Ruleset.php @@ -36,7 +36,7 @@ class Ruleset throw new \Exception('Statisics output directory ['.$statdir.'] does not exists.'); } $filelist = scandir($statdir); - $this->available = array(); + $this->available = []; foreach ($filelist as $file) { if (preg_match('/([a-z0-9_]+)-([a-z0-9_]+)-([0-9]+)\.stat/', $file, $matches)) { if (array_key_exists($matches[1], $statrules)) { @@ -54,9 +54,9 @@ class Ruleset * Create array with information about available rules.. */ $this->availrules = array_keys($statrules); - $available_rules = array(); + $available_rules = []; foreach ($this->availrules as $key) { - $available_rules[$key] = array('name' => $statrules[$key]['name'], 'descr' => $statrules[$key]['descr']); + $available_rules[$key] = ['name' => $statrules[$key]['name'], 'descr' => $statrules[$key]['descr']]; } $this->availrulenames = $available_rules; } diff --git a/modules/statistics/lib/StatDataset.php b/modules/statistics/lib/StatDataset.php index cc8fed1497fc0f4660bc999fb3300bafb8494801..70898bfbce7e04d49cda0b6646e37b4e77752b89 100644 --- a/modules/statistics/lib/StatDataset.php +++ b/modules/statistics/lib/StatDataset.php @@ -96,16 +96,16 @@ class StatDataset public function getDebugData() { - $debugdata = array(); + $debugdata = []; $slotsize = $this->timeresconfig->getValue('slot'); $dateformat_intra = $this->timeresconfig->getValue('dateformat-intra'); foreach ($this->results as $slot => &$res) { - $debugdata[$slot] = array( + $debugdata[$slot] = [ $this->datehandlerTick->prettyDateSlot($slot, $slotsize, $dateformat_intra), $res[$this->delimiter] - ); + ]; } return $debugdata; } @@ -113,7 +113,7 @@ class StatDataset public function aggregateSummary() { // aggregate summary table from dataset. To be used in the table view - $this->summary = array(); + $this->summary = []; foreach ($this->results as $slot => $res) { foreach ($res as $key => $value) { if (array_key_exists($key, $this->summary)) { @@ -130,7 +130,7 @@ class StatDataset public function getTopDelimiters() { // create a list of delimiter keys that has the highest total summary in this period - $topdelimiters = array(); + $topdelimiters = []; $maxdelimiters = 4; $i = 0; foreach ($this->summary as $key => $value) { @@ -146,7 +146,7 @@ class StatDataset public function availDelimiters() { - $availDelimiters = array(); + $availDelimiters = []; foreach ($this->summary as $key => $value) { $availDelimiters[$key] = 1; } @@ -155,7 +155,7 @@ class StatDataset public function getPieData() { - $piedata = array(); + $piedata = []; $sum = 0; $topdelimiters = $this->getTopDelimiters(); @@ -188,8 +188,8 @@ class StatDataset $dateformat_intra = $this->timeresconfig->getValue('dateformat-intra'); $axislabelint = $this->timeresconfig->getValue('axislabelint'); - $axis = array(); - $axispos = array(); + $axis = []; + $axispos = []; $xentries = count($this->results); $lastslot = 0; $i = 0; @@ -206,7 +206,7 @@ class StatDataset $axis[] = $this->datehandlerTick->prettyDateSlot($lastslot + 1, $slotsize, $dateformat_intra); - return array('axis' => $axis, 'axispos' => $axispos); + return ['axis' => $axis, 'axispos' => $axispos]; } /* @@ -215,7 +215,7 @@ class StatDataset public function getPercentValues() { $i = 0; - $dataset = array(); + $dataset = []; foreach ($this->results as $slot => $res) { if (array_key_exists($this->delimiter, $res)) { if ($res[$this->delimiter] === null) { @@ -254,7 +254,7 @@ class StatDataset return $presentationHandler->getPresentation(); } - return array(); + return []; } public function getDelimiterPresentationPie() @@ -262,7 +262,7 @@ class StatDataset $topdelimiters = $this->getTopDelimiters(); $delimiterPresentation = $this->getDelimiterPresentation(); - $pieaxis = array(); + $pieaxis = []; foreach ($topdelimiters as $key) { $keyName = $key; if (array_key_exists($key, $delimiterPresentation)) { @@ -277,7 +277,7 @@ class StatDataset public function loadData() { $statdir = $this->statconfig->getValue('statdir'); - $resarray = array(); + $resarray = []; $rules = \SimpleSAML\Utils\Arrays::arrayize($this->ruleid); foreach ($rules as $rule) { // Get file and extract results. diff --git a/modules/statistics/lib/Statistics/FieldPresentation/Base.php b/modules/statistics/lib/Statistics/FieldPresentation/Base.php index 591892b79871192d787c38acb4577ff8605bb49b..bb2568f1d6c8814acf4da00021d22ab7fb0ed8cb 100644 --- a/modules/statistics/lib/Statistics/FieldPresentation/Base.php +++ b/modules/statistics/lib/Statistics/FieldPresentation/Base.php @@ -17,6 +17,6 @@ class Base public function getPresentation() { - return array('_' => 'Total'); + return ['_' => 'Total']; } } diff --git a/modules/statistics/lib/Statistics/FieldPresentation/Entity.php b/modules/statistics/lib/Statistics/FieldPresentation/Entity.php index 15b4809cb068e5ee09a6fb8cfbe6fd8a741abe5a..624d215b7936cf16c4ce7fa5327742e08c71557a 100644 --- a/modules/statistics/lib/Statistics/FieldPresentation/Entity.php +++ b/modules/statistics/lib/Statistics/FieldPresentation/Entity.php @@ -9,7 +9,7 @@ class Entity extends Base $mh = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); $metadata = $mh->getList($this->config); - $translation = array('_' => 'All services'); + $translation = ['_' => 'All services']; foreach ($this->fields as $field) { if (array_key_exists($field, $metadata)) { if (array_key_exists('name', $metadata[$field])) { diff --git a/modules/statistics/lib/Statistics/Rulesets/BaseRule.php b/modules/statistics/lib/Statistics/Rulesets/BaseRule.php index 469bec780c88e611d8f57086060ebfd6ffff1382..875557bc8dab7c8a0896fe196208d9d57abf1e5b 100644 --- a/modules/statistics/lib/Statistics/Rulesets/BaseRule.php +++ b/modules/statistics/lib/Statistics/Rulesets/BaseRule.php @@ -39,7 +39,7 @@ class BaseRule public function availableTimeRes() { $timeresConfigs = $this->statconfig->getValue('timeres'); - $available_times = array(); + $available_times = []; foreach ($timeresConfigs as $tres => $tresconfig) { if (array_key_exists($tres, $this->available)) { $available_times[$tres] = $tresconfig['name']; @@ -62,7 +62,7 @@ class BaseRule /* * Get list of avaiable times in current file (rule) */ - $available_times = array(); + $available_times = []; foreach ($this->available[$timeres] as $slot) { $available_times[$slot] = $datehandler->prettyHeader( $slot, @@ -115,7 +115,7 @@ class BaseRule if ($timeslotindex[$fileslot] < (count($timeslotindex) - 1)) { $available_times_next = $timeslots[$timeslotindex[$fileslot] + 1]; } - return array('prev' => $available_times_prev, 'next' => $available_times_next); + return ['prev' => $available_times_prev, 'next' => $available_times_next]; } public function getDataSet($preferTimeRes, $preferTime) diff --git a/modules/statistics/templates/statistics.tpl.php b/modules/statistics/templates/statistics.tpl.php index 11e72e99a14aa2c2e013fb734b26abffa5490fba..2e111451f1347d1887aa2cda3f8e28f2e3f4e544 100644 --- a/modules/statistics/templates/statistics.tpl.php +++ b/modules/statistics/templates/statistics.tpl.php @@ -1,7 +1,7 @@ <?php $this->data['header'] = 'SimpleSAMLphp Statistics'; -$this->data['jquery'] = array('core' => true, 'ui' => true, 'css' => true); +$this->data['jquery'] = ['core' => true, 'ui' => true, 'css' => true]; $this->data['head'] = '<link rel="stylesheet" type="text/css" href="'. SimpleSAML\Module::getModuleURL("statistics/assets/css/statistics.css").'" />'."\n"; @@ -15,7 +15,7 @@ echo '<p>'.$this->data['available.rules'][$this->data['selected.rule']]['descr'] // Report settings echo '<table class="selecttime">'; -echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseUrl(). +echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseURL(). 'resources/icons/crystal_project/kchart.32x32.png" alt="Report settings" /></td>'; // Select report @@ -75,7 +75,7 @@ echo '</table>'; // Select time and date echo '<table class="selecttime">'; -echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseUrl(). +echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseURL(). 'resources/icons/crystal_project/date.32x32.png" alt="Select date and time" /></td>'; if (isset($this->data['available.times.prev'])) { @@ -167,7 +167,7 @@ if (!empty($this->data['results'])) { /** * Handle table view - - - - - - */ - $classint = array('odd', 'even'); + $classint = ['odd', 'even']; $i = 0; echo '<div id="table" class="tabset_content">'; diff --git a/modules/statistics/www/showstats.php b/modules/statistics/www/showstats.php index ac59688242ba423aa112792b431320e1dcd7d3c0..a8a2f247b7c87014fa225b465535b1ef12918e7f 100644 --- a/modules/statistics/www/showstats.php +++ b/modules/statistics/www/showstats.php @@ -85,12 +85,12 @@ $timeNavigation = $statrule->getTimeNavigation($timeres, $preferTime); $piedata = $dataset->getPieData(); -$datasets = array(); +$datasets = []; $datasets[] = $dataset->getPercentValues(); $axis = $dataset->getAxis(); -$maxes = array(); +$maxes = []; $maxes[] = $dataset->getMax(); @@ -148,17 +148,17 @@ $t->data['get_times_next'] = getBaseURL($t, 'get', 'time', $t->data['available_t $t->data['availdelimiters'] = $dataset->availDelimiters(); $t->data['delimiterPresentation'] = $dataset->getDelimiterPresentation(); -$t->data['jquery'] = array('core' => false, 'ui' => true, 'css' => true); +$t->data['jquery'] = ['core' => false, 'ui' => true, 'css' => true]; $t->show(); function getBaseURL($t, $type = 'get', $key = null, $value = null) { - $vars = array( + $vars = [ 'rule' => $t->data['selected_rule'], 'time' => $t->data['selected_time'], 'res' => $t->data['selected_timeres'], - ); + ]; if (isset($t->data['selected_delimiter'])) { $vars['d'] = $t->data['selected_delimiter']; } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..fdd0438d125c904bddb568eb0ed793fa9847bd3a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,156 @@ +{ + "name": "yarn", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansicolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "4.17.11" + } + }, + "cardinal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", + "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", + "requires": { + "ansicolors": "0.2.1", + "redeyed": "1.0.1" + } + }, + "clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "requires": { + "good-listener": "1.2.2", + "select": "1.1.2", + "tiny-emitter": "2.0.2" + } + }, + "csv-parse": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-2.5.0.tgz", + "integrity": "sha512-4OcjOJQByI0YDU5COYw9HAqjo8/MOLLmT9EKyMCXUzgvh30vS1SlMK+Ho84IH5exN44cSnrYecw/7Zpu2m4lkA==" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "esprima": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", + "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=" + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "3.2.0" + } + }, + "humanize": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/humanize/-/humanize-0.0.9.tgz", + "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=" + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "jquery-ui": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz", + "integrity": "sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE=" + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "microplugin": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/microplugin/-/microplugin-0.0.3.tgz", + "integrity": "sha1-H8Lhu3yeGegr2Eu6kTe75xJQ2M0=" + }, + "minimist": { + "version": "0.0.10", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, + "purecss": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/purecss/-/purecss-1.0.0.tgz", + "integrity": "sha512-gfC78WCOWNnfkzulx9aoWwcl+0JflhwKeJ+k9s/ZyIawfYNA4bqBmt0DtfgtQK9iuYMtGfbdE8R2AQMjSWR2VQ==" + }, + "redeyed": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", + "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", + "requires": { + "esprima": "3.0.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "selectize": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/selectize/-/selectize-0.12.6.tgz", + "integrity": "sha512-bWO5A7G+I8+QXyjLfQUgh31VI4WKYagUZQxAXlDyUmDDNrFxrASV0W9hxCOl0XJ/XQ1dZEu3G9HjXV4Wj0yb6w==", + "requires": { + "microplugin": "0.0.3", + "sifter": "0.5.3" + } + }, + "sifter": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/sifter/-/sifter-0.5.3.tgz", + "integrity": "sha1-XmUH/owRSyso2Qtr9OW2NuYR5Is=", + "requires": { + "async": "2.6.1", + "cardinal": "1.0.0", + "csv-parse": "2.5.0", + "humanize": "0.0.9", + "optimist": "0.6.1" + } + }, + "tiny-emitter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", + "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } +} diff --git a/tools/phpunit/phpunit.xml b/phpunit.xml similarity index 62% rename from tools/phpunit/phpunit.xml rename to phpunit.xml index eae5444c383cc978cf85035c7d5f100425ed95b2..6915e5c0b1ba3648aa2142556c471024390568ec 100644 --- a/tools/phpunit/phpunit.xml +++ b/phpunit.xml @@ -8,22 +8,22 @@ processIsolation="false" stopOnFailure="false" syntaxCheck="false" - bootstrap="./../../tests/bootstrap.php"> + bootstrap="./tests/bootstrap.php"> <testsuites> <testsuite name="Unit tests"> - <directory>./../../tests/</directory> + <directory>./tests/</directory> </testsuite> </testsuites> <filter> <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">./../../lib/</directory> - <directory suffix=".php">./../../modules/consent/lib/</directory> - <directory suffix=".php">./../../modules/core/lib/</directory> - <directory suffix=".php">./../../modules/saml/lib/</directory> + <directory suffix=".php">./lib/</directory> + <directory suffix=".php">./modules/consent/lib/</directory> + <directory suffix=".php">./modules/core/lib/</directory> + <directory suffix=".php">./modules/saml/lib/</directory> <exclude> - <directory>./../../vendor/</directory> - <directory>./../../tests/</directory> - <file>./../../lib/SimpleSAML/Utils/HttpAdapter.php</file> + <directory>./vendor/</directory> + <directory>./tests/</directory> + <file>./lib/SimpleSAML/Utils/HttpAdapter.php</file> </exclude> </whitelist> </filter> diff --git a/templates/error.twig b/templates/error.twig index 311aa2925e979d05b9c89068b038a40019b9d79f..23e06c570215d3ca551f54a430006e95d8d16995 100644 --- a/templates/error.twig +++ b/templates/error.twig @@ -10,7 +10,9 @@ e.g. "core:no_state.tpl.php". The format is "<module>:<template name>" #} {% if includeTemplate -%} - {% include(includeTemplate) %} + {% set parts = includeTemplate|replace({'.tpl.php':'.twig'})|split(':') %} + {% set namespacedTemplate = "@" ~ parts[0] ~ "/" ~ parts[1] %} + {% include(namespacedTemplate) %} {%- endif %} <div class="message-box"> diff --git a/templates/includes/attributes.php b/templates/includes/attributes.php index 3d80a035a50ac0e432ef1712ea6f05521e9d5d23..78b862f48aa582c928b4079b55661307950c28ab 100644 --- a/templates/includes/attributes.php +++ b/templates/includes/attributes.php @@ -33,27 +33,27 @@ function present_assoc($attr) function present_eptid(\SimpleSAML\Locale\Translate $t, \SAML2\XML\saml\NameID $nameID) { - $eptid = array( - 'NameID' => array($nameID->value), - ); + $eptid = [ + 'NameID' => [$nameID->value], + ]; if (!empty($nameID->Format)) { - $eptid[$t->t('{status:subject_format}')] = array($nameID->Format); + $eptid[$t->t('{status:subject_format}')] = [$nameID->Format]; } if (!empty($nameID->NameQualifier)) { - $eptid['NameQualifier'] = array($nameID->NameQualifier); + $eptid['NameQualifier'] = [$nameID->NameQualifier]; } if (!empty($nameID->SPNameQualifier)) { - $eptid['SPNameQualifier'] = array($nameID->SPNameQualifier); + $eptid['SPNameQualifier'] = [$nameID->SPNameQualifier]; } if (!empty($nameID->SPProvidedID)) { - $eptid['SPProvidedID'] = array($nameID->SPProvidedID); + $eptid['SPProvidedID'] = [$nameID->SPProvidedID]; } return '<td class="attrvalue">'.present_assoc($eptid); } function present_attributes(\SimpleSAML\XHTML\Template $t, $attributes, $nameParent) { - $alternate = array('odd', 'even'); + $alternate = ['odd', 'even']; $i = 0; $parentStr = (strlen($nameParent) > 0) ? strtolower($nameParent).'_' : ''; @@ -78,7 +78,7 @@ function present_attributes(\SimpleSAML\XHTML\Template $t, $attributes, $namePar if ($nameraw !== $name) { $str .= htmlspecialchars($name).'<br/>'; } - $str .= '<tt>'.htmlspecialchars($nameraw).'</tt>'; + $str .= '<code>'.htmlspecialchars($nameraw).'</code>'; $str .= '</td><td class="attrvalue"><ul>'; foreach ($value as $listitem) { if ($nameraw === 'jpegPhoto') { @@ -93,7 +93,7 @@ function present_attributes(\SimpleSAML\XHTML\Template $t, $attributes, $namePar if ($nameraw !== $name) { $str .= htmlspecialchars($name).'<br/>'; } - $str .= '<tt>'.htmlspecialchars($nameraw).'</tt>'; + $str .= '<code>'.htmlspecialchars($nameraw).'</code>'; $str .= '</td>'; if ($nameraw === 'jpegPhoto') { $str .= '<td class="attrvalue"><img src="data:image/jpeg;base64,'.htmlspecialchars($value[0]). diff --git a/templates/includes/header.php b/templates/includes/header.php index 82c894fb9246bfd994e7f177a9499993eeccd1fd..c84dcb942c7d587d7fb1452ad7ee00301f193d0d 100644 --- a/templates/includes/header.php +++ b/templates/includes/header.php @@ -22,7 +22,7 @@ if (array_key_exists('pageid', $this->data)) { 'jquery' => &$jquery, 'page' => $this->data['pageid'] ]; - + SimpleSAML\Module::callHooks('htmlinject', $hookinfo); } // - o - o - o - o - o - o - o - o - o - o - o - o - @@ -173,6 +173,8 @@ if (array_key_exists('autofocus', $this->data)) { 'ro' => 'RomâneČ™te', // Romanian 'eu' => 'Euskara', // Basque 'af' => 'Afrikaans', // Afrikaans + 'zu' => 'IsiZulu', // Zulu + 'xh' => 'isiXhosa', // Xhosa ]; $textarray = []; diff --git a/templates/metadata.php b/templates/metadata.php index cda59b566a26134fded2a6f2e3ac9103a84a628f..c851afea27b49696fd6fecfd714ffddab3720402 100644 --- a/templates/metadata.php +++ b/templates/metadata.php @@ -4,7 +4,7 @@ $this->includeAtTemplateBase('includes/header.php'); ?> <h2><?php echo $this->data['header']; ?></h2> <p><?php echo $this->t('metadata_intro'); ?></p> <?php if (isset($this->data['metaurl'])) { ?> - <p><?php echo($this->t('metadata_xmlurl', array('%METAURL%' => htmlspecialchars($this->data['metaurl'])))); ?></p> + <p><?php echo($this->t('metadata_xmlurl', ['%METAURL%' => htmlspecialchars($this->data['metaurl'])])); ?></p> <div class="input-group"> <pre id="metadataurl" class="input-left"><?php echo htmlspecialchars($this->data['metaurl']); ?></pre> <button data-clipboard-target="#metadataurl" id="btnurl" class="btnaddonright"> diff --git a/templates/post.php b/templates/post.php index 8995523ddc7f09a706dfe9f79389ed57128a0363..643f08e7789a17da50b5bc5bb0498227647e59d6 100644 --- a/templates/post.php +++ b/templates/post.php @@ -31,10 +31,10 @@ if (array_key_exists('post', $this->data)) { assert(array_key_exists('response', $this->data)); assert(array_key_exists('RelayStateName', $this->data)); assert(array_key_exists('RelayState', $this->data)); - $post = array( + $post = [ 'SAMLResponse' => $this->data['response'], $this->data['RelayStateName'] => $this->data['RelayState'], - ); + ]; } /** diff --git a/templates/selectidp-dropdown.twig b/templates/selectidp-dropdown.twig index 48f042d0ca057d1dd85a0ad585ca187182893124..22b8f22206f8a573468d088c22799d55aa156805 100644 --- a/templates/selectidp-dropdown.twig +++ b/templates/selectidp-dropdown.twig @@ -5,10 +5,11 @@ <h2>{{ pagetitle }}</h2> <p>{{ "Please select the identity provider where you want to authenticate:" | trans }}</p> - <form method="get" action="{{ urlpattern }}"> + <form method="get" action="{{ urlpattern }}" class="pure-form"> <input type="hidden" name="entityID" value="{{ entityID }}"> <input type="hidden" name="return" value="{{ return }}"> <input type="hidden" name="returnIDParam" value="{{ returnIDParam }}"> + <div class="pure-control-group"> <select id="dropdownlist" name="idpentityid" autofocus> {% for idpentry in idplist %} <option value="{{ idpentry.entityid }}" @@ -18,10 +19,13 @@ >{{ idpentry.name }}</option> {% endfor %} </select> - <button class="btn" type="submit">{{ 'Select' | trans }}</button> - {% if rememberenabled %} - <br/><input type="checkbox" name="remember" id="remember" value="1"> + <button class="btn pure-button" type="submit">{{ 'Select' | trans }}</button> + </div> + {% if rememberenabled %} + <div class="pure-control-group"> + <input type="checkbox" name="remember" id="remember" value="1"> <label for="remember">{{ 'Remember my choice' | trans }}</label> + </div> {% endif %} </form> {% endblock %} diff --git a/templates/status.php b/templates/status.php index 7732cbc907a51c8597abd1582f65b60e7cf02566..6ddc5191123c188d1f7c33b8cbbd4e1d37bde1af 100644 --- a/templates/status.php +++ b/templates/status.php @@ -18,11 +18,11 @@ $this->includeAtTemplateBase('includes/attributes.php'); <?php if (isset($this->data['remaining'])) { - echo '<p>'.$this->t('{status:validfor}', array('%SECONDS%' => $this->data['remaining'])).'</p>'; + echo '<p>'.$this->t('{status:validfor}', ['%SECONDS%' => $this->data['remaining']]).'</p>'; } if (isset($this->data['sessionsize'])) { - echo '<p>'.$this->t('{status:sessionsize}', array('%SIZE%' => $this->data['sessionsize'])).'</p>'; + echo '<p>'.$this->t('{status:sessionsize}', ['%SIZE%' => $this->data['sessionsize']]).'</p>'; } ?> <h2><?php echo $this->t('{status:attributes_header}'); ?></h2> @@ -35,23 +35,23 @@ if ($nameid !== false) { /** @var \SAML2\XML\saml\NameID $nameid */ echo "<h2>".$this->t('{status:subject_header}')."</h2>"; if (is_null($nameid->value)) { - $list = array("NameID" => array($this->t('{status:subject_notset}'))); + $list = ["NameID" => [$this->t('{status:subject_notset}')]]; echo "<p>NameID: <span class=\"notset\">".$this->t('{status:subject_notset}')."</span></p>"; } else { - $list = array( - "NameId" => array($nameid->value), - ); + $list = [ + "NameId" => [$nameid->value], + ]; if (!is_null($nameid->Format)) { - $list[$this->t('{status:subject_format}')] = array($nameid->Format); + $list[$this->t('{status:subject_format}')] = [$nameid->Format]; } if (!is_null($nameid->NameQualifier)) { - $list['NameQualifier'] = array($nameid->NameQualifier); + $list['NameQualifier'] = [$nameid->NameQualifier]; } if (!is_null($nameid->SPNameQualifier)) { - $list['SPNameQualifier'] = array($nameid->SPNameQualifier); + $list['SPNameQualifier'] = [$nameid->SPNameQualifier]; } if (!is_null($nameid->SPProvidedID)) { - $list['SPProvidedID'] = array($nameid->SPProvidedID); + $list['SPProvidedID'] = [$nameid->SPProvidedID]; } } echo present_attributes($this, $list, ''); diff --git a/tests/BuiltInServer.php b/tests/BuiltInServer.php index 4f614f5116ec1774e9da58ff03564cf049c07f86..0695e8c7eed2d5a37ffbe53596881130a6f92ad0 100644 --- a/tests/BuiltInServer.php +++ b/tests/BuiltInServer.php @@ -9,7 +9,6 @@ namespace SimpleSAML\Test; - class BuiltInServer { @@ -89,7 +88,7 @@ class BuiltInServer ); // execute the command and store the process ID - $output = array(); + $output = []; exec($command, $output); $this->pid = (int) $output[0]; @@ -170,32 +169,32 @@ class BuiltInServer * * @return array|string The response obtained from the built-in server. */ - public function get($query, $parameters, $curlopts = array()) + public function get($query, $parameters, $curlopts = []) { $ch = curl_init(); $url = 'http://'.$this->address.$query; $url .= (!empty($parameters)) ? '?'.http_build_query($parameters) : ''; - curl_setopt_array($ch, array( + curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HEADER => 1, - )); + ]); curl_setopt_array($ch, $curlopts); $resp = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); list($header, $body) = explode("\r\n\r\n", $resp, 2); $raw_headers = explode("\r\n", $header); array_shift($raw_headers); - $headers = array(); + $headers = []; foreach ($raw_headers as $header) { list($name, $value) = explode(':', $header, 2); $headers[trim($name)] = trim($value); } curl_close($ch); - return array( + return [ 'code' => $code, 'headers' => $headers, 'body' => $body, - ); + ]; } } diff --git a/tests/Utils/ClearStateTestCase.php b/tests/Utils/ClearStateTestCase.php index 2cecc16b4c5d46af5774f50ee9332737f34b2389..d7d11c8919b324b830c0b68421bc755c447703d5 100644 --- a/tests/Utils/ClearStateTestCase.php +++ b/tests/Utils/ClearStateTestCase.php @@ -2,7 +2,7 @@ namespace SimpleSAML\Test\Utils; -include(dirname(__FILE__) . '/StateClearer.php'); +include(dirname(__FILE__).'/StateClearer.php'); use PHPUnit\Framework\TestCase; diff --git a/tests/Utils/ReduceSpillOverTest.php b/tests/Utils/ReduceSpillOverTest.php index 2f474576dd040e59e543cbfd05b1b8798221a12a..c744e2a5fda3cfdb43249715a709f06527ff1a81 100644 --- a/tests/Utils/ReduceSpillOverTest.php +++ b/tests/Utils/ReduceSpillOverTest.php @@ -15,9 +15,9 @@ class ReduceSpillOverTest extends ClearStateTestCase public function testSetState() { $_SERVER['QUERY_STRING'] = 'a=b'; - \SimpleSAML\Configuration::loadFromArray(array('a' => 'b'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['a' => 'b'], '[ARRAY]', 'simplesaml'); $this->assertEquals('b', \SimpleSAML\Configuration::getInstance()->getString('a')); - putenv('SIMPLESAMLPHP_CONFIG_DIR=' . __DIR__); + putenv('SIMPLESAMLPHP_CONFIG_DIR='.__DIR__); } /** diff --git a/tests/Utils/StateClearer.php b/tests/Utils/StateClearer.php index 89dafe4af2d59574896233ec1e912f69f2c47fe3..9472ef1993e6b18f675d8cd72df420b99b608edd 100644 --- a/tests/Utils/StateClearer.php +++ b/tests/Utils/StateClearer.php @@ -12,19 +12,19 @@ class StateClearer * Global state to restore between test runs * @var array */ - private $backups = array(); + private $backups = []; /** * Class that implement \SimpleSAML\Utils\ClearableState and should have clearInternalState called between tests * @var array */ - private $clearableState = array('SimpleSAML\Configuration', 'SimpleSAML\Store', 'SimpleSAML\Session'); + private $clearableState = ['SimpleSAML\Configuration', 'SimpleSAML\Metadata\MetaDataStorageHandler', 'SimpleSAML\Store', 'SimpleSAML\Session']; /** * Environmental variables to unset * @var array */ - private $vars_to_unset = array('SIMPLESAMLPHP_CONFIG_DIR'); + private $vars_to_unset = ['SIMPLESAMLPHP_CONFIG_DIR']; public function backupGlobals() { @@ -36,7 +36,7 @@ class StateClearer $this->backups['$_GET'] = $_GET; $this->backups['$_POST'] = $_POST; $this->backups['$_SERVER'] = $_SERVER; - $this->backups['$_SESSION'] = isset($_SESSION) ? $_SESSION : array(); + $this->backups['$_SESSION'] = isset($_SESSION) ? $_SESSION : []; $this->backups['$_REQUEST'] = $_REQUEST; } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 4ec9274b9b08c126d52bc3286c5b9c877eed2a4e..82ed397dc1f01a6d83f49ee20bbb44c2dff15267 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,7 +1,7 @@ <?php $projectRoot = dirname(__DIR__); -require_once($projectRoot . '/vendor/autoload.php'); +require_once($projectRoot.'/vendor/autoload.php'); // Current SSP autoloader can't resolve classes from the tests folder. -include($projectRoot . '/tests/Utils/ClearStateTestCase.php'); +include($projectRoot.'/tests/Utils/ClearStateTestCase.php'); diff --git a/tests/lib/SimpleSAML/Auth/SimpleTest.php b/tests/lib/SimpleSAML/Auth/SimpleTest.php index e0543b44be4d4ee8dae270ab564815e2d0f96ce5..7d667ab46269eb822fce4cb56e1bb8969030912a 100644 --- a/tests/lib/SimpleSAML/Auth/SimpleTest.php +++ b/tests/lib/SimpleSAML/Auth/SimpleTest.php @@ -21,68 +21,68 @@ class SimpleTest extends \SimpleSAML\Test\Utils\ClearStateTestCase $_SERVER['REQUEST_URI'] = '/'; // test merging configuration option with passed URL - \SimpleSAML\Configuration::loadFromArray(array( - 'application' => array( + \SimpleSAML\Configuration::loadFromArray([ + 'application' => [ 'baseURL' => 'https://example.org' - ) - ), '[ARRAY]', 'simplesaml'); + ] + ], '[ARRAY]', 'simplesaml'); $s = new \SimpleSAML\Auth\Simple(''); - $this->assertEquals('https://example.org/', $method->invokeArgs($s, array(null))); + $this->assertEquals('https://example.org/', $method->invokeArgs($s, [null])); // test a full URL passed as parameter $this->assertEquals( 'https://example.org/foo/bar?a=b#fragment', $method->invokeArgs( $s, - array('http://some.overridden.host/foo/bar?a=b#fragment') + ['http://some.overridden.host/foo/bar?a=b#fragment'] ) ); // test a full, current URL with no parameters $_SERVER['REQUEST_URI'] = '/foo/bar?a=b#fragment'; - $this->assertEquals('https://example.org/foo/bar?a=b#fragment', $method->invokeArgs($s, array(null))); + $this->assertEquals('https://example.org/foo/bar?a=b#fragment', $method->invokeArgs($s, [null])); // test ports are overridden by configuration $_SERVER['SERVER_PORT'] = '1234'; - $this->assertEquals('https://example.org/foo/bar?a=b#fragment', $method->invokeArgs($s, array(null))); + $this->assertEquals('https://example.org/foo/bar?a=b#fragment', $method->invokeArgs($s, [null])); // test config option with ending with / and port - \SimpleSAML\Configuration::loadFromArray(array( - 'application' => array( + \SimpleSAML\Configuration::loadFromArray([ + 'application' => [ 'baseURL' => 'http://example.org:8080/' - ) - ), '[ARRAY]', 'simplesaml'); + ] + ], '[ARRAY]', 'simplesaml'); $s = new \SimpleSAML\Auth\Simple(''); - $this->assertEquals('http://example.org:8080/foo/bar?a=b#fragment', $method->invokeArgs($s, array(null))); + $this->assertEquals('http://example.org:8080/foo/bar?a=b#fragment', $method->invokeArgs($s, [null])); // test again with a relative URL as a parameter $this->assertEquals( 'http://example.org:8080/something?foo=bar#something', - $method->invokeArgs($s, array('/something?foo=bar#something')) + $method->invokeArgs($s, ['/something?foo=bar#something']) ); // now test with no configuration $_SERVER['SERVER_NAME'] = 'example.org'; - \SimpleSAML\Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $s = new \SimpleSAML\Auth\Simple(''); - $this->assertEquals('http://example.org:1234/foo/bar?a=b#fragment', $method->invokeArgs($s, array(null))); + $this->assertEquals('http://example.org:1234/foo/bar?a=b#fragment', $method->invokeArgs($s, [null])); // no configuration, https and port $_SERVER['HTTPS'] = 'on'; - $this->assertEquals('https://example.org:1234/foo/bar?a=b#fragment', $method->invokeArgs($s, array(null))); + $this->assertEquals('https://example.org:1234/foo/bar?a=b#fragment', $method->invokeArgs($s, [null])); // no configuration and a relative URL as a parameter $this->assertEquals( 'https://example.org:1234/something?foo=bar#something', - $method->invokeArgs($s, array('/something?foo=bar#something')) + $method->invokeArgs($s, ['/something?foo=bar#something']) ); // finally, no configuration and full URL as a parameter $this->assertEquals( 'https://example.org/one/two/three?foo=bar#fragment', - $method->invokeArgs($s, array('https://example.org/one/two/three?foo=bar#fragment')) + $method->invokeArgs($s, ['https://example.org/one/two/three?foo=bar#fragment']) ); } } diff --git a/tests/lib/SimpleSAML/Auth/StateTest.php b/tests/lib/SimpleSAML/Auth/StateTest.php index b9bc2b5c4bb62ee399d0319546e13deb0a11e7a2..cb78b81197a5fa0f349b202b17db90a152631a5f 100644 --- a/tests/lib/SimpleSAML/Auth/StateTest.php +++ b/tests/lib/SimpleSAML/Auth/StateTest.php @@ -1,26 +1,27 @@ <?php +namespace SimpleSAML\Test\Auth; + use PHPUnit\Framework\TestCase; /** * Tests for \SimpleSAML\Auth\State */ -class Auth_StateTest extends TestCase +class StateTest extends TestCase { /** * Test the getPersistentAuthData() function. */ public function testGetPersistentAuthData() { - - $mandatory = array( - 'Attributes' => array(), + $mandatory = [ + 'Attributes' => [], 'Expire' => 1234, 'LogoutState' => 'logoutState', 'AuthInstant' => 123456, 'RememberMe' => true, 'saml:sp:NameID' => 'nameID', - ); + ]; // check just mandatory parameters $state = $mandatory; @@ -42,10 +43,10 @@ class Auth_StateTest extends TestCase ); // check additional non-persistent parameters - $additional = array( + $additional = [ 'additional1' => 1, 'additional2' => 2, - ); + ]; $state = array_merge($mandatory, $additional); $expected = $mandatory; $this->assertEquals( @@ -55,7 +56,7 @@ class Auth_StateTest extends TestCase ); // check additional persistent parameters - $additional['PersistentAuthData'] = array('additional1'); + $additional['PersistentAuthData'] = ['additional1']; $state = array_merge($mandatory, $additional); $expected = $state; unset($expected['additional2']); diff --git a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php b/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php index 782de37be6874d98132ae57f9ee3322da84860e0..710d3c2d3d53ac382516caf0e1d5f765513e569e 100644 --- a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php +++ b/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php @@ -11,7 +11,7 @@ class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase */ public function testMalformedToken() { - \SimpleSAML\Configuration::loadFromArray(array('secretsalt' => 'random'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); $token = new TimeLimitedToken(); $this->assertFalse($token->validate('malformed')); @@ -25,7 +25,7 @@ class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase */ public function testValidToken() { - \SimpleSAML\Configuration::loadFromArray(array('secretsalt' => 'random'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); $token = new TimeLimitedToken(); $t = $token->generate(); @@ -38,7 +38,7 @@ class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase */ public function testValidTokenWithData() { - \SimpleSAML\Configuration::loadFromArray(array('secretsalt' => 'random'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); $tokenWithData = new TimeLimitedToken(); $tokenWithData->addVerificationData('some more random data'); @@ -55,7 +55,7 @@ class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase */ public function testExpiredToken() { - \SimpleSAML\Configuration::loadFromArray(array('secretsalt' => 'random'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); $token = new TimeLimitedToken(); $this->assertFalse($token->validate('7-c0803e76fff1df0ceb222dee80aa1d73f35d84dd')); @@ -67,7 +67,7 @@ class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase */ public function testManipulatedToken() { - \SimpleSAML\Configuration::loadFromArray(array('secretsalt' => 'random'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); $token = new TimeLimitedToken(1); $t = $token->generate(); diff --git a/tests/lib/SimpleSAML/ConfigurationTest.php b/tests/lib/SimpleSAML/ConfigurationTest.php index 7df69174158d530c28f2d5a6125c5e2ccf72716b..474495e84443c5485883c89bfee1183d7d9269da 100644 --- a/tests/lib/SimpleSAML/ConfigurationTest.php +++ b/tests/lib/SimpleSAML/ConfigurationTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test; + use \SimpleSAML\Configuration; /** * Tests for \SimpleSAML\Configuration */ -class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase +class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase { /** * Test \SimpleSAML\Configuration::getVersion() @@ -22,7 +24,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testLoadDefaultInstance() { - Configuration::loadFromArray(array('key' => 'value'), '', 'dummy'); + Configuration::loadFromArray(['key' => 'value'], '', 'dummy'); Configuration::getInstance(); } @@ -72,7 +74,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testGetValueRequired() { - $c = Configuration::loadFromArray(array()); + $c = Configuration::loadFromArray([]); $c->getValue('missing', Configuration::REQUIRED_OPTION); } @@ -81,10 +83,10 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testHasValue() { - $c = Configuration::loadFromArray(array( + $c = Configuration::loadFromArray([ 'exists_true' => true, 'exists_null' => null, - )); + ]); $this->assertEquals($c->hasValue('missing'), false); $this->assertEquals($c->hasValue('exists_true'), true); $this->assertEquals($c->hasValue('exists_null'), true); @@ -95,18 +97,18 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testHasValueOneOf() { - $c = Configuration::loadFromArray(array( + $c = Configuration::loadFromArray([ 'exists_true' => true, 'exists_null' => null, - )); - $this->assertEquals($c->hasValueOneOf(array()), false); - $this->assertEquals($c->hasValueOneOf(array('missing')), false); - $this->assertEquals($c->hasValueOneOf(array('exists_true')), true); - $this->assertEquals($c->hasValueOneOf(array('exists_null')), true); + ]); + $this->assertEquals($c->hasValueOneOf([]), false); + $this->assertEquals($c->hasValueOneOf(['missing']), false); + $this->assertEquals($c->hasValueOneOf(['exists_true']), true); + $this->assertEquals($c->hasValueOneOf(['exists_null']), true); - $this->assertEquals($c->hasValueOneOf(array('missing1', 'missing2')), false); - $this->assertEquals($c->hasValueOneOf(array('exists_true', 'missing')), true); - $this->assertEquals($c->hasValueOneOf(array('missing', 'exists_true')), true); + $this->assertEquals($c->hasValueOneOf(['missing1', 'missing2']), false); + $this->assertEquals($c->hasValueOneOf(['exists_true', 'missing']), true); + $this->assertEquals($c->hasValueOneOf(['missing', 'exists_true']), true); } /** @@ -114,55 +116,55 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testGetBasePath() { - $c = Configuration::loadFromArray(array()); + $c = Configuration::loadFromArray([]); $this->assertEquals($c->getBasePath(), '/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'simplesaml/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'simplesaml/']); $this->assertEquals($c->getBasePath(), '/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '/simplesaml/')); + $c = Configuration::loadFromArray(['baseurlpath' => '/simplesaml/']); $this->assertEquals($c->getBasePath(), '/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'simplesaml')); + $c = Configuration::loadFromArray(['baseurlpath' => 'simplesaml']); $this->assertEquals($c->getBasePath(), '/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '/simplesaml')); + $c = Configuration::loadFromArray(['baseurlpath' => '/simplesaml']); $this->assertEquals($c->getBasePath(), '/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'path/to/simplesaml/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'path/to/simplesaml/']); $this->assertEquals($c->getBasePath(), '/path/to/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '/path/to/simplesaml/')); + $c = Configuration::loadFromArray(['baseurlpath' => '/path/to/simplesaml/']); $this->assertEquals($c->getBasePath(), '/path/to/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '/path/to/simplesaml')); + $c = Configuration::loadFromArray(['baseurlpath' => '/path/to/simplesaml']); $this->assertEquals($c->getBasePath(), '/path/to/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'https://example.org/ssp/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'https://example.org/ssp/']); $this->assertEquals($c->getBasePath(), '/ssp/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'https://example.org/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'https://example.org/']); $this->assertEquals($c->getBasePath(), '/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'http://example.org/ssp/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'http://example.org/ssp/']); $this->assertEquals($c->getBasePath(), '/ssp/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'http://example.org/ssp/simplesaml')); + $c = Configuration::loadFromArray(['baseurlpath' => 'http://example.org/ssp/simplesaml']); $this->assertEquals($c->getBasePath(), '/ssp/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'http://example.org/ssp/simplesaml/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'http://example.org/ssp/simplesaml/']); $this->assertEquals($c->getBasePath(), '/ssp/simplesaml/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '')); + $c = Configuration::loadFromArray(['baseurlpath' => '']); $this->assertEquals($c->getBasePath(), '/'); - $c = Configuration::loadFromArray(array('baseurlpath' => '/')); + $c = Configuration::loadFromArray(['baseurlpath' => '/']); $this->assertEquals($c->getBasePath(), '/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'https://example.org:8443')); + $c = Configuration::loadFromArray(['baseurlpath' => 'https://example.org:8443']); $this->assertEquals($c->getBasePath(), '/'); - $c = Configuration::loadFromArray(array('baseurlpath' => 'https://example.org:8443/')); + $c = Configuration::loadFromArray(['baseurlpath' => 'https://example.org:8443/']); $this->assertEquals($c->getBasePath(), '/'); } @@ -208,16 +210,16 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetBaseDir() { $c = Configuration::loadFromArray([]); - $this->assertEquals($c->getBaseDir(), dirname(dirname(dirname(dirname(__FILE__)))) . '/'); + $this->assertEquals($c->getBaseDir(), dirname(dirname(dirname(dirname(__FILE__)))).'/'); $c = Configuration::loadFromArray([ 'basedir' => '/basedir', ]); $this->assertEquals($c->getBaseDir(), '/basedir/'); - $c = Configuration::loadFromArray(array( + $c = Configuration::loadFromArray([ 'basedir' => '/basedir/', - )); + ]); $this->assertEquals($c->getBaseDir(), '/basedir/'); } @@ -364,12 +366,13 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase /** * Test \SimpleSAML\Configuration::getValueValidate() */ - public function testGetValueValidate() { - $c = Configuration::loadFromArray(array( + public function testGetValueValidate() + { + $c = Configuration::loadFromArray([ 'opt' => 'b', - )); - $this->assertEquals($c->getValueValidate('missing_opt', array('a', 'b', 'c'), '--missing--'), '--missing--'); - $this->assertEquals($c->getValueValidate('opt', array('a', 'b', 'c')), 'b'); + ]); + $this->assertEquals($c->getValueValidate('missing_opt', ['a', 'b', 'c'], '--missing--'), '--missing--'); + $this->assertEquals($c->getValueValidate('opt', ['a', 'b', 'c']), 'b'); } /** @@ -381,7 +384,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase $c = Configuration::loadFromArray([ 'opt' => 'd', ]); - $c->getValueValidate('opt', array('a', 'b', 'c')); + $c->getValueValidate('opt', ['a', 'b', 'c']); } /** @@ -390,10 +393,10 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetArray() { $c = Configuration::loadFromArray([ - 'opt' => array('a', 'b', 'c'), + 'opt' => ['a', 'b', 'c'], ]); $this->assertEquals($c->getArray('missing_opt', '--missing--'), '--missing--'); - $this->assertEquals($c->getArray('opt'), array('a', 'b', 'c')); + $this->assertEquals($c->getArray('opt'), ['a', 'b', 'c']); } /** @@ -414,14 +417,14 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetArrayize() { $c = Configuration::loadFromArray([ - 'opt' => array('a', 'b', 'c'), + 'opt' => ['a', 'b', 'c'], 'opt_int' => 42, 'opt_str' => 'string', ]); $this->assertEquals($c->getArrayize('missing_opt', '--missing--'), '--missing--'); - $this->assertEquals($c->getArrayize('opt'), array('a', 'b', 'c')); - $this->assertEquals($c->getArrayize('opt_int'), array(42)); - $this->assertEquals($c->getArrayize('opt_str'), array('string')); + $this->assertEquals($c->getArrayize('opt'), ['a', 'b', 'c']); + $this->assertEquals($c->getArrayize('opt_int'), [42]); + $this->assertEquals($c->getArrayize('opt_str'), ['string']); } /** @@ -430,22 +433,23 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetArrayizeString() { $c = Configuration::loadFromArray([ - 'opt' => array('a', 'b', 'c'), + 'opt' => ['a', 'b', 'c'], 'opt_str' => 'string', ]); $this->assertEquals($c->getArrayizeString('missing_opt', '--missing--'), '--missing--'); - $this->assertEquals($c->getArrayizeString('opt'), array('a', 'b', 'c')); - $this->assertEquals($c->getArrayizeString('opt_str'), array('string')); + $this->assertEquals($c->getArrayizeString('opt'), ['a', 'b', 'c']); + $this->assertEquals($c->getArrayizeString('opt_str'), ['string']); } /** - * Test \SimpleSAML\Configuration::getArrayizeString() option with an array that contains something that isn't a string. + * Test \SimpleSAML\Configuration::getArrayizeString() option + * with an array that contains something that isn't a string. * @expectedException Exception */ public function testGetArrayizeStringWrongValue() { $c = Configuration::loadFromArray([ - 'opt' => array('a', 'b', 42), + 'opt' => ['a', 'b', 42], ]); $c->getArrayizeString('opt'); } @@ -456,7 +460,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetConfigItem() { $c = Configuration::loadFromArray([ - 'opt' => array('a' => 42), + 'opt' => ['a' => 42], ]); $this->assertEquals($c->getConfigItem('missing_opt', '--missing--'), '--missing--'); $opt = $c->getConfigItem('opt'); @@ -482,15 +486,15 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetConfigList() { $c = Configuration::loadFromArray([ - 'opts' => array( - 'a' => array('opt1' => 'value1'), - 'b' => array('opt2' => 'value2'), - ), + 'opts' => [ + 'a' => ['opt1' => 'value1'], + 'b' => ['opt2' => 'value2'], + ], ]); $this->assertEquals($c->getConfigList('missing_opt', '--missing--'), '--missing--'); $opts = $c->getConfigList('opts'); $this->assertInternalType('array', $opts); - $this->assertEquals(array_keys($opts), array('a', 'b')); + $this->assertEquals(array_keys($opts), ['a', 'b']); $this->assertInstanceOf('SimpleSAML\Configuration', $opts['a']); $this->assertEquals($opts['a']->getValue('opt1'), 'value1'); $this->assertInstanceOf('SimpleSAML\Configuration', $opts['b']); @@ -517,10 +521,10 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetConfigListWrongArrayValues() { $c = Configuration::loadFromArray([ - 'opts' => array( + 'opts' => [ 'a', 'b', - ), + ], ]); $c->getConfigList('opts'); } @@ -535,7 +539,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase 'a' => true, 'b' => null, ]); - $this->assertEquals($c->getOptions(), array('a', 'b')); + $this->assertEquals($c->getOptions(), ['a', 'b']); } /** @@ -547,7 +551,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase 'a' => true, 'b' => null, ]); - $this->assertEquals($c->toArray(), array('a' => true, 'b' => null)); + $this->assertEquals($c->toArray(), ['a' => true, 'b' => null]); } @@ -563,132 +567,132 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase * basically AssertionConsumerService and ArtifactResolutionService. Since both are the same, we just run the * tests for AssertionConsumerService. */ - $acs_eps = array( + $acs_eps = [ // just a string with the location 'https://example.com/endpoint.php', // an array of strings with location of different endpoints - array( + [ 'https://www1.example.com/endpoint.php', 'https://www2.example.com/endpoint.php', - ), + ], // define location and binding - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), - ), + ], + ], // define the ResponseLocation too - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, 'ResponseLocation' => 'https://example.com/endpoint.php', - ), - ), + ], + ], // make sure indexes are NOT taken into account (they just identify endpoints) - array( - array( + [ + [ 'index' => 1, 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, - ), - array( + ], + [ 'index' => 2, 'Location' => 'https://www2.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), - ), + ], + ], // make sure isDefault has priority over indexes - array( - array( + [ + [ 'index' => 1, 'Location' => 'https://www2.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), - array( + ], + [ 'index' => 2, 'isDefault' => true, 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, - ), - ), + ], + ], // make sure endpoints with invalid bindings are ignored and those marked as NOT default are still used - array( - array( + [ + [ 'index' => 1, 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => 'invalid_binding', - ), - array( + ], + [ 'index' => 2, 'isDefault' => false, 'Location' => 'https://www2.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), - ), - ); - $acs_expected_eps = array( + ], + ], + ]; + $acs_expected_eps = [ // output should be completed with the default binding (HTTP-POST for ACS) - array( + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), + ], // we should just get the first endpoint with the default binding - array( + [ 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ), + ], // if we specify the binding, we should get it back - array( + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST - ), + ], // if we specify ResponseLocation, we should get it back too - array( + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, 'ResponseLocation' => 'https://example.com/endpoint.php', - ), + ], // indexes must NOT be taken into account, order is the only thing that matters here - array( + [ 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'index' => 1, - ), + ], // isDefault must have higher priority than indexes - array( + [ 'Location' => 'https://www1.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'isDefault' => true, 'index' => 2, - ), + ], // the first valid enpoint should be used even if it's marked as NOT default - array( + [ 'index' => 2, 'isDefault' => false, 'Location' => 'https://www2.example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_POST, - ) - ); + ] + ]; - $a = array( + $a = [ 'metadata-set' => 'saml20-sp-remote', 'ArtifactResolutionService' => 'https://example.com/ars', 'SingleSignOnService' => 'https://example.com/sso', - 'SingleLogoutService' => array( + 'SingleLogoutService' => [ 'Location' => 'https://example.com/slo', 'Binding' => 'valid_binding', // test unknown bindings if we don't specify a list of valid ones - ), - ); + ], + ]; - $valid_bindings = array( + $valid_bindings = [ \SAML2\Constants::BINDING_HTTP_POST, \SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HOK_SSO, \SAML2\Constants::BINDING_HTTP_ARTIFACT. \SAML2\Constants::BINDING_SOAP, - ); + ]; // run all general tests with AssertionConsumerService endpoint type foreach ($acs_eps as $i => $ep) { @@ -704,26 +708,26 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase $a['metadata-set'] = 'shib13-idp-remote'; $c = Configuration::loadFromArray($a); $this->assertEquals( - array( + [ 'Location' => 'https://example.com/sso', 'Binding' => 'urn:mace:shibboleth:1.0:profiles:AuthnRequest', - ), + ], $c->getDefaultEndpoint('SingleSignOnService') ); $a['metadata-set'] = 'saml20-idp-remote'; $c = Configuration::loadFromArray($a); $this->assertEquals( - array( + [ 'Location' => 'https://example.com/ars', 'Binding' => \SAML2\Constants::BINDING_SOAP, - ), + ], $c->getDefaultEndpoint('ArtifactResolutionService') ); $this->assertEquals( - array( + [ 'Location' => 'https://example.com/slo', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, - ), + ], $c->getDefaultEndpoint('SingleLogoutService') ); @@ -732,26 +736,26 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase $a['AssertionConsumerService'] = 'https://example.com/endpoint.php'; $c = Configuration::loadFromArray($a); $this->assertEquals( - array( + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post', - ), + ], $c->getDefaultEndpoint('AssertionConsumerService') ); // test for no valid endpoints specified - $a['SingleLogoutService'] = array( - array( + $a['SingleLogoutService'] = [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => 'invalid_binding', 'isDefault' => true, - ), - ); + ], + ]; $c = Configuration::loadFromArray($a); try { $c->getDefaultEndpoint('SingleLogoutService', $valid_bindings); $this->fail('Failed to detect invalid endpoint binding.'); - } catch (Exception $e) { + } catch (\Exception $e) { $this->assertEquals( '[ARRAY][\'SingleLogoutService\']:Could not find a supported SingleLogoutService '.'endpoint.', $e->getMessage() @@ -762,7 +766,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase try { $c->getDefaultEndpoint('SingleSignOnService'); $this->fail('No valid metadata set specified.'); - } catch (Exception $e) { + } catch (\Exception $e) { $this->assertStringStartsWith('Missing default binding for', $e->getMessage()); } } @@ -774,81 +778,81 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetEndpoints() { // test response location for old-style configurations - $c = Configuration::loadFromArray(array( + $c = Configuration::loadFromArray([ 'metadata-set' => 'saml20-idp-remote', 'SingleSignOnService' => 'https://example.com/endpoint.php', 'SingleSignOnServiceResponse' => 'https://example.com/response.php', - )); - $e = array( - array( + ]); + $e = [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'ResponseLocation' => 'https://example.com/response.php', - ) - ); + ] + ]; $this->assertEquals($e, $c->getEndpoints('SingleSignOnService')); // test for input failures // define a basic configuration array - $a = array( + $a = [ 'metadata-set' => 'saml20-idp-remote', 'SingleSignOnService' => null, - ); + ]; // define a set of tests - $tests = array( + $tests = [ // invalid endpoint definition 10, // invalid definition of endpoint inside the endpoints array - array( + [ 1234 - ), + ], // missing location - array( - array( + [ + [ 'foo' => 'bar', - ), - ), + ], + ], // invalid location - array( - array( + [ + [ 'Location' => 1234, - ) - ), + ] + ], // missing binding - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', - ), - ), + ], + ], // invalid binding - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => 1234, - ), - ), + ], + ], // invalid response location - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'ResponseLocation' => 1234, - ), - ), + ], + ], // invalid index - array( - array( + [ + [ 'Location' => 'https://example.com/endpoint.php', 'Binding' => \SAML2\Constants::BINDING_HTTP_REDIRECT, 'index' => 'string', - ), - ), - ); + ], + ], + ]; // define a set of exception messages to expect - $msgs = array( + $msgs = [ 'Expected array or string.', 'Expected a string or an array.', 'Missing Location.', @@ -857,7 +861,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase 'Binding must be a string.', 'ResponseLocation must be a string.', 'index must be an integer.', - ); + ]; // now run all the tests expecting the correct exception message foreach ($tests as $i => $test) { @@ -865,7 +869,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase $c = Configuration::loadFromArray($a); try { $c->getEndpoints('SingleSignOnService'); - } catch (Exception $e) { + } catch (\Exception $e) { $this->assertStringEndsWith($msgs[$i], $e->getMessage()); } } @@ -879,14 +883,14 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase { $c = Configuration::loadFromArray([ 'str_opt' => 'Hello World!', - 'str_array' => array( + 'str_array' => [ 'en' => 'Hello World!', 'no' => 'Hei Verden!', - ), + ], ]); $this->assertEquals($c->getLocalizedString('missing_opt', '--missing--'), '--missing--'); - $this->assertEquals($c->getLocalizedString('str_opt'), array('en' => 'Hello World!')); - $this->assertEquals($c->getLocalizedString('str_array'), array('en' => 'Hello World!', 'no' => 'Hei Verden!')); + $this->assertEquals($c->getLocalizedString('str_opt'), ['en' => 'Hello World!']); + $this->assertEquals($c->getLocalizedString('str_array'), ['en' => 'Hello World!', 'no' => 'Hei Verden!']); } /** @@ -908,7 +912,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetLocalizedStringNotStringKey() { $c = Configuration::loadFromArray([ - 'opt' => array(42 => 'text'), + 'opt' => [42 => 'text'], ]); $c->getLocalizedString('opt'); } @@ -920,7 +924,7 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase public function testGetLocalizedStringNotStringValue() { $c = Configuration::loadFromArray([ - 'opt' => array('en' => 42), + 'opt' => ['en' => 42], ]); $c->getLocalizedString('opt'); } @@ -955,9 +959,9 @@ class Test_Configuration extends SimpleSAML\Test\Utils\ClearStateTestCase */ public function testLoadInstanceFromArray() { - $c = array( + $c = [ 'key' => 'value' - ); + ]; // test loading a custom instance Configuration::loadFromArray($c, '', 'dummy'); $this->assertEquals('value', Configuration::getInstance('dummy')->getValue('key', null)); diff --git a/tests/lib/SimpleSAML/DatabaseTest.php b/tests/lib/SimpleSAML/DatabaseTest.php index b99575b66c556c191c0e198e5d05831adf91c36f..f48246fd2b7503135e4f378cff0ac68ed0d7b2aa 100644 --- a/tests/lib/SimpleSAML/DatabaseTest.php +++ b/tests/lib/SimpleSAML/DatabaseTest.php @@ -1,5 +1,7 @@ <?php +namespace SimpleSAML\Test; + use PHPUnit\Framework\TestCase; /** @@ -35,7 +37,7 @@ class DatabaseTest extends TestCase */ protected static function getMethod($getMethod) { - $class = new ReflectionClass('SimpleSAML\Database'); + $class = new \ReflectionClass('SimpleSAML\Database'); $method = $class->getMethod($getMethod); $method->setAccessible(true); return $method; @@ -50,14 +52,14 @@ class DatabaseTest extends TestCase */ public function setUp() { - $config = array( + $config = [ 'database.dsn' => 'sqlite::memory:', 'database.username' => null, 'database.password' => null, 'database.prefix' => 'phpunit_', 'database.persistent' => true, - 'database.slaves' => array(), - ); + 'database.slaves' => [], + ]; $this->config = new \SimpleSAML\Configuration($config, "test/SimpleSAML/DatabaseTest.php"); @@ -65,7 +67,7 @@ class DatabaseTest extends TestCase $this->assertInstanceOf('SimpleSAML\Configuration', $this->config); $this->assertEquals($config['database.dsn'], $this->config->getString('database.dsn')); - $this->db = SimpleSAML\Database::getInstance($this->config); + $this->db = \SimpleSAML\Database::getInstance($this->config); // Ensure that we have a functional database class. $this->assertInstanceOf('SimpleSAML\Database', $this->db); @@ -82,17 +84,17 @@ class DatabaseTest extends TestCase */ public function connectionFailure() { - $config = array( + $config = [ 'database.dsn' => 'mysql:host=localhost;dbname=saml', 'database.username' => 'notauser', 'database.password' => 'notausersinvalidpassword', 'database.prefix' => 'phpunit_', 'database.persistent' => true, - 'database.slaves' => array(), - ); + 'database.slaves' => [], + ]; $this->config = new \SimpleSAML\Configuration($config, "test/SimpleSAML/DatabaseTest.php"); - $db = SimpleSAML\Database::getInstance($this->config); + \SimpleSAML\Database::getInstance($this->config); } @@ -105,22 +107,22 @@ class DatabaseTest extends TestCase */ public function instances() { - $config = array( + $config = [ 'database.dsn' => 'sqlite::memory:', 'database.username' => null, 'database.password' => null, 'database.prefix' => 'phpunit_', 'database.persistent' => true, - 'database.slaves' => array(), - ); - $config2 = array( + 'database.slaves' => [], + ]; + $config2 = [ 'database.dsn' => 'sqlite::memory:', 'database.username' => null, 'database.password' => null, 'database.prefix' => 'phpunit2_', 'database.persistent' => true, - 'database.slaves' => array(), - ); + 'database.slaves' => [], + ]; $config1 = new \SimpleSAML\Configuration($config, "test/SimpleSAML/DatabaseTest.php"); $config2 = new \SimpleSAML\Configuration($config2, "test/SimpleSAML/DatabaseTest.php"); @@ -132,9 +134,9 @@ class DatabaseTest extends TestCase $generateInstanceId = self::getMethod('generateInstanceId'); - $instance1 = $generateInstanceId->invokeArgs($db1, array($config1)); - $instance2 = $generateInstanceId->invokeArgs($db2, array($config2)); - $instance3 = $generateInstanceId->invokeArgs($db3, array($config3)); + $instance1 = $generateInstanceId->invokeArgs($db1, [$config1]); + $instance2 = $generateInstanceId->invokeArgs($db2, [$config2]); + $instance3 = $generateInstanceId->invokeArgs($db3, [$config3]); // Assert that $instance1 and $instance2 have different instance ids $this->assertNotEquals( @@ -176,31 +178,31 @@ class DatabaseTest extends TestCase { $getSlave = self::getMethod('getSlave'); - $master = spl_object_hash(PHPUnit_Framework_Assert::readAttribute($this->db, 'dbMaster')); - $slave = spl_object_hash($getSlave->invokeArgs($this->db, array())); + $master = spl_object_hash(\PHPUnit_Framework_Assert::readAttribute($this->db, 'dbMaster')); + $slave = spl_object_hash($getSlave->invokeArgs($this->db, [])); $this->assertTrue(($master == $slave), "getSlave should have returned the master database object"); - $config = array( + $config = [ 'database.dsn' => 'sqlite::memory:', 'database.username' => null, 'database.password' => null, 'database.prefix' => 'phpunit_', 'database.persistent' => true, - 'database.slaves' => array( - array( + 'database.slaves' => [ + [ 'dsn' => 'sqlite::memory:', 'username' => null, 'password' => null, - ), - ), - ); + ], + ], + ]; $sspConfiguration = new \SimpleSAML\Configuration($config, "test/SimpleSAML/DatabaseTest.php"); $msdb = \SimpleSAML\Database::getInstance($sspConfiguration); - $slaves = PHPUnit_Framework_Assert::readAttribute($msdb, 'dbSlaves'); - $gotSlave = spl_object_hash($getSlave->invokeArgs($msdb, array())); + $slaves = \PHPUnit_Framework_Assert::readAttribute($msdb, 'dbSlaves'); + $gotSlave = spl_object_hash($getSlave->invokeArgs($msdb, [])); $this->assertEquals( spl_object_hash($slaves[0]), @@ -248,11 +250,11 @@ class DatabaseTest extends TestCase $ssp_value = md5(rand(0, 10000)); $stmt = $this->db->write( "INSERT INTO $table (ssp_key, ssp_value) VALUES (:ssp_key, :ssp_value)", - array('ssp_key' => array($ssp_key, PDO::PARAM_INT), 'ssp_value' => $ssp_value) + ['ssp_key' => [$ssp_key, \PDO::PARAM_INT], 'ssp_value' => $ssp_value] ); $this->assertEquals(1, $stmt, "Could not insert data into $table."); - $query2 = $this->db->read("SELECT * FROM $table WHERE ssp_key = :ssp_key", array('ssp_key' => $ssp_key)); + $query2 = $this->db->read("SELECT * FROM $table WHERE ssp_key = :ssp_key", ['ssp_key' => $ssp_key]); $data = $query2->fetch(); $this->assertEquals($data['ssp_value'], $ssp_value, "Inserted data doesn't match what is in the database"); } diff --git a/tests/lib/SimpleSAML/Locale/LanguageTest.php b/tests/lib/SimpleSAML/Locale/LanguageTest.php index 09c53d760375c51d9c1fbb134580062b405bf711..708d6b60c068dd2ada46ff0daed70ef750198482 100644 --- a/tests/lib/SimpleSAML/Locale/LanguageTest.php +++ b/tests/lib/SimpleSAML/Locale/LanguageTest.php @@ -14,15 +14,15 @@ class LanguageTest extends TestCase public function testGetDefaultLanguage() { // test default - $c = Configuration::loadFromArray(array()); + $c = Configuration::loadFromArray([]); $l = new Language($c); $this->assertEquals('en', $l->getDefaultLanguage()); // test defaults coming from configuration - $c = Configuration::loadFromArray(array( - 'language.available' => array('en', 'es', 'nn'), + $c = Configuration::loadFromArray([ + 'language.available' => ['en', 'es', 'nn'], 'language.default' => 'es', - )); + ]); $l = new Language($c); $this->assertEquals('es', $l->getDefaultLanguage()); } @@ -34,19 +34,19 @@ class LanguageTest extends TestCase public function testGetLanguageCookie() { // test it works when no cookie is set - Configuration::loadFromArray(array(), '', 'simplesaml'); + Configuration::loadFromArray([], '', 'simplesaml'); $this->assertNull(Language::getLanguageCookie()); // test that it works fine with defaults - Configuration::loadFromArray(array(), '', 'simplesaml'); + Configuration::loadFromArray([], '', 'simplesaml'); $_COOKIE['language'] = 'en'; $this->assertEquals('en', Language::getLanguageCookie()); // test that it works with non-defaults - Configuration::loadFromArray(array( - 'language.available' => array('en', 'es', 'nn'), + Configuration::loadFromArray([ + 'language.available' => ['en', 'es', 'nn'], 'language.cookie.name' => 'xyz' - ), '', 'simplesaml'); + ], '', 'simplesaml'); $_COOKIE['xyz'] = 'Es'; // test values are converted to lowercase too $this->assertEquals('es', Language::getLanguageCookie()); } @@ -58,10 +58,10 @@ class LanguageTest extends TestCase public function testGetLanguageListNoConfig() { // test default - $c = Configuration::loadFromArray(array(), '', 'simplesaml'); + $c = Configuration::loadFromArray([], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('en'); - $this->assertEquals(array('en' => true), $l->getLanguageList()); + $this->assertEquals(['en' => true], $l->getLanguageList()); } @@ -71,16 +71,16 @@ class LanguageTest extends TestCase public function testGetLanguageListCorrectConfig() { // test langs from from language_names - $c = Configuration::loadFromArray(array( - 'language.available' => array('en', 'nn', 'es'), - ), '', 'simplesaml'); + $c = Configuration::loadFromArray([ + 'language.available' => ['en', 'nn', 'es'], + ], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('es'); - $this->assertEquals(array( + $this->assertEquals([ 'en' => false, 'es' => true, 'nn' => false, - ), $l->getLanguageList()); + ], $l->getLanguageList()); } @@ -90,12 +90,12 @@ class LanguageTest extends TestCase public function testGetLanguageListIncorrectConfig() { // test non-existent langs - $c = Configuration::loadFromArray(array( - 'language.available' => array('foo', 'bar'), - ), '', 'simplesaml'); + $c = Configuration::loadFromArray([ + 'language.available' => ['foo', 'bar'], + ], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('foo'); - $this->assertEquals(array('en' => true), $l->getLanguageList()); + $this->assertEquals(['en' => true], $l->getLanguageList()); } @@ -105,14 +105,14 @@ class LanguageTest extends TestCase public function testGetLanguageParameterName() { // test for default configuration - $c = Configuration::loadFromArray(array(), '', 'simplesaml'); + $c = Configuration::loadFromArray([], '', 'simplesaml'); $l = new Language($c); $this->assertEquals('language', $l->getLanguageParameterName()); // test for valid configuration - $c = Configuration::loadFromArray(array( + $c = Configuration::loadFromArray([ 'language.parameter.name' => 'xyz' - ), '', 'simplesaml'); + ], '', 'simplesaml'); $l = new Language($c); $this->assertEquals('xyz', $l->getLanguageParameterName()); } @@ -124,24 +124,24 @@ class LanguageTest extends TestCase public function testIsLanguageRTL() { // test defaults - $c = Configuration::loadFromArray(array(), '', 'simplesaml'); + $c = Configuration::loadFromArray([], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('en'); $this->assertFalse($l->isLanguageRTL()); // test non-defaults, non-RTL - $c = Configuration::loadFromArray(array( - 'language.rtl' => array('foo', 'bar'), - ), '', 'simplesaml'); + $c = Configuration::loadFromArray([ + 'language.rtl' => ['foo', 'bar'], + ], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('en'); $this->assertFalse($l->isLanguageRTL()); // test non-defaults, RTL - $c = Configuration::loadFromArray(array( - 'language.available' => array('en', 'nn', 'es'), - 'language.rtl' => array('nn', 'es'), - ), '', 'simplesaml'); + $c = Configuration::loadFromArray([ + 'language.available' => ['en', 'nn', 'es'], + 'language.rtl' => ['nn', 'es'], + ], '', 'simplesaml'); $l = new Language($c); $l->setLanguage('es'); $this->assertTrue($l->isLanguageRTL()); @@ -154,11 +154,11 @@ class LanguageTest extends TestCase public function testSetLanguage() { // test with valid configuration, no cookies set - $c = Configuration::loadFromArray(array( - 'language.available' => array('en', 'nn', 'es'), + $c = Configuration::loadFromArray([ + 'language.available' => ['en', 'nn', 'es'], 'language.parameter.name' => 'xyz', 'language.parameter.setcookie' => false, - ), '', 'simplesaml'); + ], '', 'simplesaml'); $_GET['xyz'] = 'Es'; // test also that lang code is transformed to lower caps $l = new Language($c); $this->assertEquals('es', $l->getLanguage()); diff --git a/tests/lib/SimpleSAML/Locale/LocalizationTest.php b/tests/lib/SimpleSAML/Locale/LocalizationTest.php index c45eb0974f32b60651c45bfeae38fc1358957d72..cc58f1ebe66632efcd6ffac4b9d4ce21e5391c8a 100644 --- a/tests/lib/SimpleSAML/Locale/LocalizationTest.php +++ b/tests/lib/SimpleSAML/Locale/LocalizationTest.php @@ -11,7 +11,7 @@ class LocalizationTest extends TestCase protected function setUp() { // Localization/Language code attempts to load a cookie, and looks in the config for a name of the cookie - Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); } @@ -22,7 +22,7 @@ class LocalizationTest extends TestCase { // The constructor should activate the default domain $c = Configuration::loadFromArray( - array('language.i18n.backend' => 'SimpleSAMLphp') + ['language.i18n.backend' => 'SimpleSAMLphp'] ); $l = new Localization($c); $this->assertTrue($l->isI18NBackendDefault()); @@ -35,7 +35,7 @@ class LocalizationTest extends TestCase public function testAddDomain() { $c = Configuration::loadFromArray( - array('language.i18n.backend' => 'gettext/gettext') + ['language.i18n.backend' => 'gettext/gettext'] ); $l = new Localization($c); $newDomain = 'test'; @@ -45,5 +45,4 @@ class LocalizationTest extends TestCase $this->assertArrayHasKey($newDomain, $registeredDomains); $this->assertEquals($registeredDomains[$newDomain], $newDomainLocaleDir); } - } diff --git a/tests/lib/SimpleSAML/Locale/TranslateTest.php b/tests/lib/SimpleSAML/Locale/TranslateTest.php index 48d92377d19d942bd7ee5e9efc814ac4315a6843..b1266df4256afdb2f289603e3d82079090eadc6f 100644 --- a/tests/lib/SimpleSAML/Locale/TranslateTest.php +++ b/tests/lib/SimpleSAML/Locale/TranslateTest.php @@ -14,7 +14,7 @@ class TranslateTest extends TestCase public function testNoop() { // test default - $c = \SimpleSAML\Configuration::loadFromArray(array()); + $c = \SimpleSAML\Configuration::loadFromArray([]); $t = new Translate($c); $testString = 'Blablabla'; $this->assertEquals($testString, $t->noop($testString)); @@ -25,7 +25,7 @@ class TranslateTest extends TestCase */ public function testTFallback() { - $c = \SimpleSAML\Configuration::loadFromArray(array()); + $c = \SimpleSAML\Configuration::loadFromArray([]); $t = new Translate($c); $testString = 'Blablabla'; @@ -34,6 +34,6 @@ class TranslateTest extends TestCase $this->assertEquals($result, $t->t($testString)); // $fallbackdefault = false, should be a noop - $this->assertEquals($testString, $t->t($testString, array(), false)); + $this->assertEquals($testString, $t->t($testString, [], false)); } } diff --git a/tests/lib/SimpleSAML/Metadata/MetaDataStorageSourceTest.php b/tests/lib/SimpleSAML/Metadata/MetaDataStorageSourceTest.php index ce301db53d5c21324ebd4a9b7486810e54cddf3d..7e8f918f7f0af6703f3df62fdfafee039bf267ad 100644 --- a/tests/lib/SimpleSAML/Metadata/MetaDataStorageSourceTest.php +++ b/tests/lib/SimpleSAML/Metadata/MetaDataStorageSourceTest.php @@ -1,16 +1,19 @@ <?php +namespace SimpleSAML\Test\Metadata; + /** * Class MetaDataStorageSourceTest */ -class MetaDataStorageSourceTest extends PHPUnit_Framework_TestCase +class MetaDataStorageSourceTest extends \PHPUnit_Framework_TestCase { /** * Test \SimpleSAML\Metadata\MetaDataStorageSourceTest::getConfig XML bad source * @expectedException \Exception */ - public function testBadXMLSource() { + public function testBadXMLSource() + { \SimpleSAML\Metadata\MetaDataStorageSource::getSource(["type"=>"xml", "foo"=>"baa"]); } @@ -18,7 +21,8 @@ class MetaDataStorageSourceTest extends PHPUnit_Framework_TestCase * Test \SimpleSAML\Metadata\MetaDataStorageSourceTest::getConfig invalid static XML source * @expectedException Exception */ - public function testInvalidStaticXMLSource() { + public function testInvalidStaticXMLSource() + { $strTestXML = " <EntityDescriptor ID=\"_12345678-90ab-cdef-1234-567890abcdef\" entityID=\"https://saml.idp/entityid\" xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\"> </EntityDescriptor> @@ -29,7 +33,8 @@ class MetaDataStorageSourceTest extends PHPUnit_Framework_TestCase /** * Test \SimpleSAML\Metadata\MetaDataStorageSourceTest::getConfig XML static XML source */ - public function testStaticXMLSource() { + public function testStaticXMLSource() + { $testEntityId = "https://saml.idp/entityid"; $strTestXML = " <EntityDescriptor ID=\"_12345678-90ab-cdef-1234-567890abcdef\" entityID=\"$testEntityId\" xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\"> @@ -49,8 +54,8 @@ xmlns:fed=\"http://docs.oasis-open.org/wsfed/federation/200706\"> // As a secondary thing, check that the entity ID from the static source provided can be extracted $source = \SimpleSAML\Metadata\MetaDataStorageSource::getSource(["type"=>"xml", "xml"=>$strTestXML]); $idpSet = $source->getMetadataSet("saml20-idp-remote"); - $this->assertArrayHasKey($testEntityId, $idpSet, "Did not extract expected IdP entity ID from static XML source"); - // Finally verify that a different entity ID does not get loaded + $this->assertArrayHasKey($testEntityId, $idpSet, "Did not extract expected IdP entity ID from static XML source"); + // Finally verify that a different entity ID does not get loaded $this->assertCount(1, $idpSet, "Unexpectedly got metadata for an alternate entity than that defined"); } } diff --git a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php index 1a57bbab0a5bafaba0b752ad9a25ad3d461520e1..008a26063c5278b949007add51ac873bb0aa8b60 100644 --- a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php +++ b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php @@ -1,5 +1,7 @@ <?php +namespace SimpleSAML\Test\Metadata; + use PHPUnit\Framework\TestCase; use SimpleSAML\Metadata\SAMLBuilder; @@ -18,17 +20,17 @@ class SAMLBuilderTest extends TestCase // test SP20 array parsing, no friendly name $set = 'saml20-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', 'urn:oid:0.9.2342.19200300.100.1.3', 'urn:oid:2.5.4.3', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); @@ -47,17 +49,17 @@ class SAMLBuilderTest extends TestCase // test SP20 array parsing, no friendly name $set = 'saml20-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'eduPersonTargetedID' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', 'eduPersonOrgDN' => 'urn:oid:0.9.2342.19200300.100.1.3', 'cn' => 'urn:oid:2.5.4.3', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); @@ -78,17 +80,17 @@ class SAMLBuilderTest extends TestCase // test SP13 array parsing, no friendly name $set = 'shib13-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', 'urn:oid:0.9.2342.19200300.100.1.3', 'urn:oid:2.5.4.3', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); @@ -107,17 +109,17 @@ class SAMLBuilderTest extends TestCase // test SP20 array parsing, no friendly name $set = 'shib13-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'eduPersonTargetedID' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', 'eduPersonOrgDN' => 'urn:oid:0.9.2342.19200300.100.1.3', 'cn' => 'urn:oid:2.5.4.3', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); @@ -145,41 +147,41 @@ class SAMLBuilderTest extends TestCase $entityId = 'https://entity.example.com/id'; $set = 'saml20-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'eduPersonTargetedID' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $acs1 = $acs->item(0); + $acs1 = $acs->item(0); $this->assertFalse($acs1->hasAttribute("isDefault")); - $metadata['attributes.isDefault'] = true; + $metadata['attributes.isDefault'] = true; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $acs1 = $acs->item(0); + $acs1 = $acs->item(0); $this->assertTrue($acs1->hasAttribute("isDefault")); $this->assertEquals("true", $acs1->getAttribute("isDefault")); - $metadata['attributes.isDefault'] = false; + $metadata['attributes.isDefault'] = false; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $acs1 = $acs->item(0); + $acs1 = $acs->item(0); $this->assertTrue($acs1->hasAttribute("isDefault")); $this->assertEquals("false", $acs1->getAttribute("isDefault")); } @@ -192,33 +194,33 @@ class SAMLBuilderTest extends TestCase $entityId = 'https://entity.example.com/id'; $set = 'saml20-sp-remote'; - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test SP'), + 'name' => ['en' => 'Test SP'], 'metadata-set' => $set, - 'attributes' => array( + 'attributes' => [ 'eduPersonTargetedID' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', 'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', - ), - ); + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $acs1 = $acs->item(0); + $acs1 = $acs->item(0); $this->assertTrue($acs1->hasAttribute("index")); $this->assertEquals("0", $acs1->getAttribute("index")); - $metadata['attributes.index'] = 15; + $metadata['attributes.index'] = 15; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $spDesc = $samlBuilder->getEntityDescriptor(); $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $acs1 = $acs->item(0); + $acs1 = $acs->item(0); $this->assertTrue($acs1->hasAttribute("index")); $this->assertEquals("15", $acs1->getAttribute("index")); } @@ -232,19 +234,19 @@ class SAMLBuilderTest extends TestCase $set = 'attributeauthority-remote'; // without protocolSupportEnumeration fallback to default: urn:oasis:names:tc:SAML:2.0:protocol - $metadata = array( + $metadata = [ 'entityid' => $entityId, - 'name' => array('en' => 'Test AA'), + 'name' => ['en' => 'Test AA'], 'metadata-set' => $set, 'AttributeService' => - array ( + [ 0 => - array ( + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP', 'Location' => 'https://entity.example.com:8443/idp/profile/SAML2/SOAP/AttributeQuery', - ), - ), - ); + ], + ], + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); @@ -257,10 +259,10 @@ class SAMLBuilderTest extends TestCase // explicit protocols $metadata['protocols'] = - array( + [ 0 => 'urn:oasis:names:tc:SAML:1.1:protocol', 1 => 'urn:oasis:names:tc:SAML:2.0:protocol', - ); + ]; $samlBuilder = new SAMLBuilder($entityId); $samlBuilder->addMetadata($set, $metadata); $entityDescriptorXml = $samlBuilder->getEntityDescriptorText(); diff --git a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php index 0a82545981280a71cde2e2f4917b0e911c08947f..a443d0e313f0acca03e12101d47189deeb9f44c5 100644 --- a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php +++ b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php @@ -1,6 +1,6 @@ <?php -namespace SimpleSAML\Metadata; +namespace SimpleSAML\Test\Metadata; use PHPUnit\Framework\TestCase; @@ -9,15 +9,14 @@ use PHPUnit\Framework\TestCase; */ class SAMLParserTest extends TestCase { - /** * Test Registration Info is parsed */ public function testRegistrationInfo() { - $expected = array( + $expected = [ 'registrationAuthority' => 'https://incommon.org', - ); + ]; $document = \SAML2\DOMDocumentFactory::fromString( <<<XML @@ -38,7 +37,6 @@ XML // RegistrationInfo is accessible in the SP or IDP metadata accessors $metadata = $entities['theEntityID']->getMetadata20SP(); $this->assertEquals($expected, $metadata['RegistrationInfo']); - } /** @@ -47,9 +45,9 @@ XML */ public function testRegistrationInfoInheritance() { - $expected = array( + $expected = [ 'registrationAuthority' => 'https://incommon.org', - ); + ]; $document = \SAML2\DOMDocumentFactory::fromString( <<<XML @@ -125,11 +123,14 @@ XML $this->assertEquals("Example service", $metadata['name']['en']); $this->assertEquals("Dit is een voorbeeld voor de unittest.", $metadata['description']['nl']); - $expected_a = array("urn:mace:dir:attribute-def:eduPersonPrincipalName", "urn:mace:dir:attribute-def:mail", "urn:mace:dir:attribute-def:displayName"); - $expected_r = array("urn:mace:dir:attribute-def:eduPersonPrincipalName"); + $expected_a = [ + "urn:mace:dir:attribute-def:eduPersonPrincipalName", + "urn:mace:dir:attribute-def:mail", + "urn:mace:dir:attribute-def:displayName" + ]; + $expected_r = ["urn:mace:dir:attribute-def:eduPersonPrincipalName"]; $this->assertEquals($expected_a, $metadata['attributes']); $this->assertEquals($expected_r, $metadata['attributes.required']); } - } diff --git a/tests/lib/SimpleSAML/ModuleTest.php b/tests/lib/SimpleSAML/ModuleTest.php index b706a43703c877b5c41eb602b98b2881289a9053..a0c72b5f58d7ee4ab7a744b4dd6f58dab16e5a11 100644 --- a/tests/lib/SimpleSAML/ModuleTest.php +++ b/tests/lib/SimpleSAML/ModuleTest.php @@ -35,19 +35,19 @@ class ModuleTest extends TestCase */ public function testGetModuleURL() { - \SimpleSAML\Configuration::loadFromArray(array( + \SimpleSAML\Configuration::loadFromArray([ 'baseurlpath' => 'https://example.com/simplesaml/' - ), '', 'simplesaml'); + ], '', 'simplesaml'); $this->assertEquals( 'https://example.com/simplesaml/module.php/module/script.php', Module::getModuleURL('module/script.php') ); $this->assertEquals( 'https://example.com/simplesaml/module.php/module/script.php?param1=value1¶m2=value2', - Module::getModuleURL('module/script.php', array( + Module::getModuleURL('module/script.php', [ 'param1' => 'value1', 'param2' => 'value2', - )) + ]) ); } diff --git a/tests/lib/SimpleSAML/Store/RedisTest.php b/tests/lib/SimpleSAML/Store/RedisTest.php index fbe770522eabb591172cd33abbab108d6e6e5a1e..7774a5dd211cf72b069bd9535bdbb592a3110890 100644 --- a/tests/lib/SimpleSAML/Store/RedisTest.php +++ b/tests/lib/SimpleSAML/Store/RedisTest.php @@ -18,24 +18,24 @@ class RedisTest extends TestCase { protected function setUp() { - $this->config = array(); + $this->config = []; $this->mocked_redis = $this->getMockBuilder('Predis\Client') - ->setMethods(array('get', 'set', 'setex', 'del', 'disconnect')) + ->setMethods(['get', 'set', 'setex', 'del', 'disconnect']) ->disableOriginalConstructor() ->getMock(); $this->mocked_redis->method('get') - ->will($this->returnCallback(array($this, 'getMocked'))); + ->will($this->returnCallback([$this, 'getMocked'])); $this->mocked_redis->method('set') - ->will($this->returnCallback(array($this, 'setMocked'))); + ->will($this->returnCallback([$this, 'setMocked'])); $this->mocked_redis->method('setex') - ->will($this->returnCallback(array($this, 'setexMocked'))); + ->will($this->returnCallback([$this, 'setexMocked'])); $this->mocked_redis->method('del') - ->will($this->returnCallback(array($this, 'delMocked'))); + ->will($this->returnCallback([$this, 'delMocked'])); $nop = function () { return; @@ -75,10 +75,10 @@ class RedisTest extends TestCase */ public function testRedisInstance() { - $config = Configuration::loadFromArray(array( + $config = Configuration::loadFromArray([ 'store.type' => 'redis', 'store.redis.prefix' => 'phpunit_', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); diff --git a/tests/lib/SimpleSAML/Store/SQLTest.php b/tests/lib/SimpleSAML/Store/SQLTest.php index 1321726d3493da40d3a2f7b23cccc4f1ae833c81..cda9dc2908bbdadd580ee2abaf2089380180b84d 100644 --- a/tests/lib/SimpleSAML/Store/SQLTest.php +++ b/tests/lib/SimpleSAML/Store/SQLTest.php @@ -19,11 +19,11 @@ class SQLTest extends TestCase { protected function setUp() { - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'store.type' => 'sql', 'store.sql.dsn' => 'sqlite::memory:', 'store.sql.prefix' => 'phpunit_', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); } /** diff --git a/tests/lib/SimpleSAML/StoreTest.php b/tests/lib/SimpleSAML/StoreTest.php index 61f0fe8237d291507390d1d4a58dee9c8b8d4cb9..ebaa1c5fb09b7d23e52ffdec3bc47746ae5e76e5 100644 --- a/tests/lib/SimpleSAML/StoreTest.php +++ b/tests/lib/SimpleSAML/StoreTest.php @@ -23,8 +23,8 @@ class StoreTest extends TestCase */ public function defaultStore() { - Configuration::loadFromArray(array( - ), '[ARRAY]', 'simplesaml'); + Configuration::loadFromArray([ + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); @@ -38,8 +38,8 @@ class StoreTest extends TestCase */ public function phpSessionStore() { - Configuration::loadFromArray(array( - ), '[ARRAY]', 'simplesaml'); + Configuration::loadFromArray([ + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); @@ -53,9 +53,9 @@ class StoreTest extends TestCase */ public function memcacheStore() { - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'store.type' => 'memcache', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); @@ -69,11 +69,11 @@ class StoreTest extends TestCase */ public function sqlStore() { - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'store.type' => 'sql', 'store.sql.dsn' => 'sqlite::memory:', 'store.sql.prefix' => 'phpunit_', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); @@ -87,11 +87,11 @@ class StoreTest extends TestCase */ public function pathStore() { - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'store.type' => '\SimpleSAML\Store\SQL', 'store.sql.dsn' => 'sqlite::memory:', 'store.sql.prefix' => 'phpunit_', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $store = Store::getInstance(); @@ -106,11 +106,11 @@ class StoreTest extends TestCase */ public function notFoundStoreException() { - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'store.type' => '\Test\SimpleSAML\Store\Dummy', 'store.sql.dsn' => 'sqlite::memory:', 'store.sql.prefix' => 'phpunit_', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); Store::getInstance(); } diff --git a/tests/lib/SimpleSAML/Utils/ArraysTest.php b/tests/lib/SimpleSAML/Utils/ArraysTest.php index 5bed975d1d2d90ceb0742ae307e8d252ef7f92d5..eb3d1b66843ff302c0bb6657ea7786b2b36db698 100644 --- a/tests/lib/SimpleSAML/Utils/ArraysTest.php +++ b/tests/lib/SimpleSAML/Utils/ArraysTest.php @@ -16,23 +16,23 @@ class ArraysTest extends TestCase public function testArrayize() { // check with empty array as input - $array = array(); + $array = []; $this->assertEquals($array, Arrays::arrayize($array)); // check non-empty array as input - $array = array('key' => 'value'); + $array = ['key' => 'value']; $this->assertEquals($array, Arrays::arrayize($array)); // check indexes are ignored when input is an array $this->assertArrayNotHasKey('invalid', Arrays::arrayize($array, 'invalid')); // check default index - $expected = array('string'); + $expected = ['string']; $this->assertEquals($expected, Arrays::arrayize($expected[0])); // check string index $index = 'key'; - $expected = array($index => 'string'); + $expected = [$index => 'string']; $this->assertEquals($expected, Arrays::arrayize($expected[$index], $index)); } @@ -47,33 +47,33 @@ class ArraysTest extends TestCase // check bad arrays $this->assertFalse( - Arrays::transpose(array('1', '2', '3')), + Arrays::transpose(['1', '2', '3']), 'Invalid two-dimensional array was accepted' ); $this->assertFalse( - Arrays::transpose(array('1' => 0, '2' => '0', '3' => array(0))), + Arrays::transpose(['1' => 0, '2' => '0', '3' => [0]]), 'Invalid elements on a two-dimensional array were accepted' ); // check array with numerical keys - $array = array( - 'key1' => array( + $array = [ + 'key1' => [ 'value1' - ), - 'key2' => array( + ], + 'key2' => [ 'value1', 'value2' - ) - ); - $transposed = array( - array( + ] + ]; + $transposed = [ + [ 'key1' => 'value1', 'key2' => 'value1' - ), - array( + ], + [ 'key2' => 'value2' - ) - ); + ] + ]; $this->assertEquals( $transposed, Arrays::transpose($array), @@ -81,24 +81,24 @@ class ArraysTest extends TestCase ); // check array with string keys - $array = array( - 'key1' => array( + $array = [ + 'key1' => [ 'subkey1' => 'value1' - ), - 'key2' => array( + ], + 'key2' => [ 'subkey1' => 'value1', 'subkey2' => 'value2' - ) - ); - $transposed = array( - 'subkey1' => array( + ] + ]; + $transposed = [ + 'subkey1' => [ 'key1' => 'value1', 'key2' => 'value1' - ), - 'subkey2' => array( + ], + 'subkey2' => [ 'key2' => 'value2' - ) - ); + ] + ]; $this->assertEquals( $transposed, Arrays::transpose($array), @@ -106,26 +106,26 @@ class ArraysTest extends TestCase ); // check array with no keys in common between sub arrays - $array = array( - 'key1' => array( + $array = [ + 'key1' => [ 'subkey1' => 'value1' - ), - 'key2' => array( + ], + 'key2' => [ 'subkey2' => 'value1', 'subkey3' => 'value2' - ) - ); - $transposed = array( - 'subkey1' => array( + ] + ]; + $transposed = [ + 'subkey1' => [ 'key1' => 'value1', - ), - 'subkey2' => array( + ], + 'subkey2' => [ 'key2' => 'value1' - ), - 'subkey3' => array( + ], + 'subkey3' => [ 'key2' => 'value2' - ) - ); + ] + ]; $this->assertEquals( $transposed, Arrays::transpose($array), diff --git a/tests/lib/SimpleSAML/Utils/AttributesTest.php b/tests/lib/SimpleSAML/Utils/AttributesTest.php index 0c1c8dba58c34472c556f9338cb207bb41247a4e..42685215a8a07d09ff5eec620d26929379ee21d5 100644 --- a/tests/lib/SimpleSAML/Utils/AttributesTest.php +++ b/tests/lib/SimpleSAML/Utils/AttributesTest.php @@ -35,7 +35,7 @@ class AttributesTest extends TestCase public function testGetExpectedAttributeInvalidAttributeName() { // check with invalid attribute name - $attributes = array(); + $attributes = []; $expected = false; $this->setExpectedException( 'InvalidArgumentException', @@ -51,9 +51,9 @@ class AttributesTest extends TestCase public function testGetExpectedAttributeNonNormalizedArray() { // check with non-normalized attributes array - $attributes = array( + $attributes = [ 'attribute' => 'value', - ); + ]; $expected = 'attribute'; $this->setExpectedException( 'InvalidArgumentException', @@ -69,9 +69,9 @@ class AttributesTest extends TestCase public function testGetExpectedAttributeMissingAttribute() { // check missing attribute - $attributes = array( - 'attribute' => array('value'), - ); + $attributes = [ + 'attribute' => ['value'], + ]; $expected = 'missing'; $this->setExpectedException( '\SimpleSAML\Error\Exception', @@ -87,9 +87,9 @@ class AttributesTest extends TestCase public function testGetExpectedAttributeEmptyAttribute() { // check empty attribute - $attributes = array( - 'attribute' => array(), - ); + $attributes = [ + 'attribute' => [], + ]; $expected = 'attribute'; $this->setExpectedException( '\SimpleSAML\Error\Exception', @@ -105,12 +105,12 @@ class AttributesTest extends TestCase public function testGetExpectedAttributeMultipleValues() { // check attribute with more than value, that being not allowed - $attributes = array( - 'attribute' => array( + $attributes = [ + 'attribute' => [ 'value1', 'value2', - ), - ); + ], + ]; $expected = 'attribute'; $this->setExpectedException( '\SimpleSAML\Error\Exception', @@ -127,17 +127,17 @@ class AttributesTest extends TestCase { // check one value $value = 'value'; - $attributes = array( - 'attribute' => array($value), - ); + $attributes = [ + 'attribute' => [$value], + ]; $expected = 'attribute'; $this->assertEquals($value, Attributes::getExpectedAttribute($attributes, $expected)); // check multiple (allowed) values $value = 'value'; - $attributes = array( - 'attribute' => array($value, 'value2', 'value3'), - ); + $attributes = [ + 'attribute' => [$value, 'value2', 'value3'], + ]; $expected = 'attribute'; $this->assertEquals($value, Attributes::getExpectedAttribute($attributes, $expected, true)); } @@ -160,7 +160,7 @@ class AttributesTest extends TestCase */ public function testNormalizeAttributesArrayBadKeys() { - Attributes::normalizeAttributesArray(array('attr1' => 'value1', 1 => 'value2')); + Attributes::normalizeAttributesArray(['attr1' => 'value1', 1 => 'value2']); } /** @@ -170,7 +170,7 @@ class AttributesTest extends TestCase */ public function testNormalizeAttributesArrayBadValues() { - Attributes::normalizeAttributesArray(array('attr1' => 'value1', 'attr2' => 0)); + Attributes::normalizeAttributesArray(['attr1' => 'value1', 'attr2' => 0]); } /** @@ -178,16 +178,16 @@ class AttributesTest extends TestCase */ public function testNormalizeAttributesArray() { - $attributes = array( + $attributes = [ 'key1' => 'value1', - 'key2' => array('value2', 'value3'), + 'key2' => ['value2', 'value3'], 'key3' => 'value1' - ); - $expected = array( - 'key1' => array('value1'), - 'key2' => array('value2', 'value3'), - 'key3' => array('value1') - ); + ]; + $expected = [ + 'key1' => ['value1'], + 'key2' => ['value2', 'value3'], + 'key3' => ['value1'] + ]; $this->assertEquals( $expected, Attributes::normalizeAttributesArray($attributes), @@ -203,13 +203,13 @@ class AttributesTest extends TestCase { // test for only the name $this->assertEquals( - array('default', 'name'), + ['default', 'name'], Attributes::getAttributeNamespace('name', 'default') ); // test for a given namespace and multiple '/' $this->assertEquals( - array('some/namespace', 'name'), + ['some/namespace', 'name'], Attributes::getAttributeNamespace('some/namespace/name', 'default') ); } diff --git a/tests/lib/SimpleSAML/Utils/Config/MetadataTest.php b/tests/lib/SimpleSAML/Utils/Config/MetadataTest.php index 98ffb7f0b3350e28b71cc50211e4a65994352323..71002024435d92608bbd1ab3e8d92bca5b206063 100644 --- a/tests/lib/SimpleSAML/Utils/Config/MetadataTest.php +++ b/tests/lib/SimpleSAML/Utils/Config/MetadataTest.php @@ -24,9 +24,9 @@ class MetadataTest extends TestCase } // test missing type - $contact = array( + $contact = [ 'name' => 'John Doe' - ); + ]; try { Metadata::getContact($contact); } catch (\InvalidArgumentException $e) { @@ -34,9 +34,9 @@ class MetadataTest extends TestCase } // test invalid type - $contact = array( + $contact = [ 'contactType' => 'invalid' - ); + ]; try { Metadata::getContact($contact); } catch (\InvalidArgumentException $e) { @@ -45,9 +45,9 @@ class MetadataTest extends TestCase // test all valid contact types foreach (Metadata::$VALID_CONTACT_TYPES as $type) { - $contact = array( + $contact = [ 'contactType' => $type - ); + ]; $parsed = Metadata::getContact($contact); $this->assertArrayHasKey('contactType', $parsed); $this->assertArrayNotHasKey('givenName', $parsed); @@ -55,10 +55,10 @@ class MetadataTest extends TestCase } // test basic name parsing - $contact = array( + $contact = [ 'contactType' => 'technical', 'name' => 'John Doe' - ); + ]; $parsed = Metadata::getContact($contact); $this->assertArrayNotHasKey('name', $parsed); $this->assertArrayHasKey('givenName', $parsed); @@ -67,10 +67,10 @@ class MetadataTest extends TestCase $this->assertEquals('Doe', $parsed['surName']); // test comma-separated names - $contact = array( + $contact = [ 'contactType' => 'technical', 'name' => 'Doe, John' - ); + ]; $parsed = Metadata::getContact($contact); $this->assertArrayHasKey('givenName', $parsed); $this->assertArrayHasKey('surName', $parsed); @@ -78,10 +78,10 @@ class MetadataTest extends TestCase $this->assertEquals('Doe', $parsed['surName']); // test long names - $contact = array( + $contact = [ 'contactType' => 'technical', 'name' => 'John Fitzgerald Doe Smith' - ); + ]; $parsed = Metadata::getContact($contact); $this->assertArrayNotHasKey('name', $parsed); $this->assertArrayHasKey('givenName', $parsed); @@ -89,10 +89,10 @@ class MetadataTest extends TestCase $this->assertEquals('John Fitzgerald Doe Smith', $parsed['givenName']); // test comma-separated long names - $contact = array( + $contact = [ 'contactType' => 'technical', 'name' => 'Doe Smith, John Fitzgerald' - ); + ]; $parsed = Metadata::getContact($contact); $this->assertArrayNotHasKey('name', $parsed); $this->assertArrayHasKey('givenName', $parsed); @@ -101,10 +101,10 @@ class MetadataTest extends TestCase $this->assertEquals('Doe Smith', $parsed['surName']); // test givenName - $contact = array( + $contact = [ 'contactType' => 'technical', - ); - $invalid_types = array(0, array(0), 0.1, true, false); + ]; + $invalid_types = [0, [0], 0.1, true, false]; foreach ($invalid_types as $type) { $contact['givenName'] = $type; try { @@ -115,10 +115,10 @@ class MetadataTest extends TestCase } // test surName - $contact = array( + $contact = [ 'contactType' => 'technical', - ); - $invalid_types = array(0, array(0), 0.1, true, false); + ]; + $invalid_types = [0, [0], 0.1, true, false]; foreach ($invalid_types as $type) { $contact['surName'] = $type; try { @@ -129,10 +129,10 @@ class MetadataTest extends TestCase } // test company - $contact = array( + $contact = [ 'contactType' => 'technical', - ); - $invalid_types = array(0, array(0), 0.1, true, false); + ]; + $invalid_types = [0, [0], 0.1, true, false]; foreach ($invalid_types as $type) { $contact['company'] = $type; try { @@ -143,10 +143,10 @@ class MetadataTest extends TestCase } // test emailAddress - $contact = array( + $contact = [ 'contactType' => 'technical', - ); - $invalid_types = array(0, 0.1, true, false, array()); + ]; + $invalid_types = [0, 0.1, true, false, []]; foreach ($invalid_types as $type) { $contact['emailAddress'] = $type; try { @@ -158,7 +158,7 @@ class MetadataTest extends TestCase ); } } - $invalid_types = array(array("string", true), array("string", 0)); + $invalid_types = [["string", true], ["string", 0]]; foreach ($invalid_types as $type) { $contact['emailAddress'] = $type; try { @@ -170,7 +170,7 @@ class MetadataTest extends TestCase ); } } - $valid_types = array('email@example.com', array('email1@example.com', 'email2@example.com')); + $valid_types = ['email@example.com', ['email1@example.com', 'email2@example.com']]; foreach ($valid_types as $type) { $contact['emailAddress'] = $type; $parsed = Metadata::getContact($contact); @@ -178,10 +178,10 @@ class MetadataTest extends TestCase } // test telephoneNumber - $contact = array( + $contact = [ 'contactType' => 'technical', - ); - $invalid_types = array(0, 0.1, true, false, array()); + ]; + $invalid_types = [0, 0.1, true, false, []]; foreach ($invalid_types as $type) { $contact['telephoneNumber'] = $type; try { @@ -193,7 +193,7 @@ class MetadataTest extends TestCase ); } } - $invalid_types = array(array("string", true), array("string", 0)); + $invalid_types = [["string", true], ["string", 0]]; foreach ($invalid_types as $type) { $contact['telephoneNumber'] = $type; try { @@ -202,7 +202,7 @@ class MetadataTest extends TestCase $this->assertEquals('Telephone numbers must be a string and cannot be empty.', $e->getMessage()); } } - $valid_types = array('1234', array('1234', '5678')); + $valid_types = ['1234', ['1234', '5678']]; foreach ($valid_types as $type) { $contact['telephoneNumber'] = $type; $parsed = Metadata::getContact($contact); @@ -210,13 +210,13 @@ class MetadataTest extends TestCase } // test completeness - $contact = array(); + $contact = []; foreach (Metadata::$VALID_CONTACT_OPTIONS as $option) { $contact[$option] = 'string'; } $contact['contactType'] = 'technical'; $contact['name'] = 'to_be_removed'; - $contact['attributes'] = array('test' => 'testval'); + $contact['attributes'] = ['test' => 'testval']; $parsed = Metadata::getContact($contact); foreach (array_keys($parsed) as $key) { $this->assertEquals($parsed[$key], $contact[$key]); @@ -231,32 +231,32 @@ class MetadataTest extends TestCase public function testIsHiddenFromDiscovery() { // test for success - $metadata = array( - 'EntityAttributes' => array( - Metadata::$ENTITY_CATEGORY => array( + $metadata = [ + 'EntityAttributes' => [ + Metadata::$ENTITY_CATEGORY => [ Metadata::$HIDE_FROM_DISCOVERY, - ), - ), - ); + ], + ], + ]; $this->assertTrue(Metadata::isHiddenFromDiscovery($metadata)); // test for failures - $this->assertFalse(Metadata::isHiddenFromDiscovery(array('foo'))); - $this->assertFalse(Metadata::isHiddenFromDiscovery(array( + $this->assertFalse(Metadata::isHiddenFromDiscovery(['foo'])); + $this->assertFalse(Metadata::isHiddenFromDiscovery([ 'EntityAttributes' => 'bar', - ))); - $this->assertFalse(Metadata::isHiddenFromDiscovery(array( - 'EntityAttributes' => array(), - ))); - $this->assertFalse(Metadata::isHiddenFromDiscovery(array( - 'EntityAttributes' => array( + ])); + $this->assertFalse(Metadata::isHiddenFromDiscovery([ + 'EntityAttributes' => [], + ])); + $this->assertFalse(Metadata::isHiddenFromDiscovery([ + 'EntityAttributes' => [ Metadata::$ENTITY_CATEGORY => '', - ), - ))); - $this->assertFalse(Metadata::isHiddenFromDiscovery(array( - 'EntityAttributes' => array( - Metadata::$ENTITY_CATEGORY => array(), - ), - ))); + ], + ])); + $this->assertFalse(Metadata::isHiddenFromDiscovery([ + 'EntityAttributes' => [ + Metadata::$ENTITY_CATEGORY => [], + ], + ])); } } diff --git a/tests/lib/SimpleSAML/Utils/ConfigTest.php b/tests/lib/SimpleSAML/Utils/ConfigTest.php index 43525cf30c356a9fbdd4697352cd3f3814524ac9..6077a6301c45627eb860ac672343b29217ad21f0 100644 --- a/tests/lib/SimpleSAML/Utils/ConfigTest.php +++ b/tests/lib/SimpleSAML/Utils/ConfigTest.php @@ -20,7 +20,7 @@ class ConfigTest extends TestCase putenv('SIMPLESAMLPHP_CONFIG_DIR'); $configDir = Config::getConfigDir(); - $this->assertEquals($configDir, dirname(dirname(dirname(dirname(__DIR__)))) . '/config'); + $this->assertEquals($configDir, dirname(dirname(dirname(dirname(__DIR__)))).'/config'); } @@ -29,7 +29,7 @@ class ConfigTest extends TestCase */ public function testEnvVariableConfigDir() { - putenv('SIMPLESAMLPHP_CONFIG_DIR=' . __DIR__); + putenv('SIMPLESAMLPHP_CONFIG_DIR='.__DIR__); $configDir = Config::getConfigDir(); $this->assertEquals($configDir, __DIR__); @@ -40,7 +40,7 @@ class ConfigTest extends TestCase */ public function testEnvRedirectVariableConfigDir() { - putenv('REDIRECT_SIMPLESAMLPHP_CONFIG_DIR=' . __DIR__); + putenv('REDIRECT_SIMPLESAMLPHP_CONFIG_DIR='.__DIR__); $configDir = Config::getConfigDir(); $this->assertEquals($configDir, __DIR__); @@ -51,8 +51,8 @@ class ConfigTest extends TestCase */ public function testEnvRedirectPriorityVariableConfigDir() { - putenv('SIMPLESAMLPHP_CONFIG_DIR=' . dirname(__DIR__)); - putenv('REDIRECT_SIMPLESAMLPHP_CONFIG_DIR=' . __DIR__); + putenv('SIMPLESAMLPHP_CONFIG_DIR='.dirname(__DIR__)); + putenv('REDIRECT_SIMPLESAMLPHP_CONFIG_DIR='.__DIR__); $configDir = Config::getConfigDir(); $this->assertEquals($configDir, dirname(__DIR__)); @@ -65,13 +65,13 @@ class ConfigTest extends TestCase public function testInvalidEnvVariableConfigDirThrowsException() { // I used a random hash to ensure this test directory is always invalid - $invalidDir = __DIR__ . '/e9826ad19cbc4f5bf20c0913ffcd2ce6'; - putenv('SIMPLESAMLPHP_CONFIG_DIR=' . $invalidDir); + $invalidDir = __DIR__.'/e9826ad19cbc4f5bf20c0913ffcd2ce6'; + putenv('SIMPLESAMLPHP_CONFIG_DIR='.$invalidDir); $this->setExpectedException( 'InvalidArgumentException', - 'Config directory specified by environment variable SIMPLESAMLPHP_CONFIG_DIR is not a directory. ' . - 'Given: "' . $invalidDir . '"' + 'Config directory specified by environment variable SIMPLESAMLPHP_CONFIG_DIR is not a directory. '. + 'Given: "'.$invalidDir.'"' ); Config::getConfigDir(); diff --git a/tests/lib/SimpleSAML/Utils/CryptoTest.php b/tests/lib/SimpleSAML/Utils/CryptoTest.php index b5a0b500a966350542632a5b9f18035f623eaee1..23194596991d1cde678606bcb22061b0d012a0dd 100644 --- a/tests/lib/SimpleSAML/Utils/CryptoTest.php +++ b/tests/lib/SimpleSAML/Utils/CryptoTest.php @@ -21,9 +21,9 @@ class CryptoTest extends TestCase $this->root = vfsStream::setup( self::ROOTDIRNAME, null, - array( - self::DEFAULTCERTDIR => array(), - ) + [ + self::DEFAULTCERTDIR => [], + ] ); $this->root_directory = vfsStream::url(self::ROOTDIRNAME); $this->certdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTCERTDIR; @@ -34,14 +34,14 @@ class CryptoTest extends TestCase * * @expectedException \InvalidArgumentException * - * @covers \SimpleSAML\Utils\Crypto::_aesDecrypt + * @covers \SimpleSAML\Utils\Crypto::aesDecrypt */ public function testAesDecryptBadInput() { $m = new \ReflectionMethod('\SimpleSAML\Utils\Crypto', '_aesDecrypt'); $m->setAccessible(true); - $m->invokeArgs(null, array(array(), 'SECRET')); + $m->invokeArgs(null, [[], 'SECRET']); } @@ -50,14 +50,14 @@ class CryptoTest extends TestCase * * @expectedException \InvalidArgumentException * - * @covers \SimpleSAML\Utils\Crypto::_aesEncrypt + * @covers \SimpleSAML\Utils\Crypto::aesEncrypt */ public function testAesEncryptBadInput() { $m = new \ReflectionMethod('\SimpleSAML\Utils\Crypto', '_aesEncrypt'); $m->setAccessible(true); - $m->invokeArgs(null, array(array(), 'SECRET')); + $m->invokeArgs(null, [[], 'SECRET']); } @@ -65,7 +65,7 @@ class CryptoTest extends TestCase * Test that aesDecrypt() works properly, being able to decrypt some previously known (and correct) * ciphertext. * - * @covers \SimpleSAML\Utils\Crypto::_aesDecrypt + * @covers \SimpleSAML\Utils\Crypto::aesDecrypt */ public function testAesDecrypt() { @@ -79,15 +79,15 @@ class CryptoTest extends TestCase $plaintext = 'SUPER_SECRET_TEXT'; $ciphertext = 'uR2Yu0r4itInKx91D/l9y/08L5CIQyev9nAr27fh3Sshous4vbXRRcMcjqHDOrquD+2vqLyw7ygnbA9jA9TpB4hLZocvAWcTN8tyO82hiSY='; - $this->assertEquals($plaintext, $m->invokeArgs(null, array(base64_decode($ciphertext), $secret))); + $this->assertEquals($plaintext, $m->invokeArgs(null, [base64_decode($ciphertext), $secret])); } /** * Test that aesEncrypt() produces ciphertexts that aesDecrypt() can decrypt. * - * @covers \SimpleSAML\Utils\Crypto::_aesDecrypt - * @covers \SimpleSAML\Utils\Crypto::_aesEncrypt + * @covers \SimpleSAML\Utils\Crypto::aesDecrypt + * @covers \SimpleSAML\Utils\Crypto::aesEncrypt */ public function testAesEncrypt() { @@ -102,8 +102,8 @@ class CryptoTest extends TestCase $d->setAccessible(true); $original_plaintext = 'SUPER_SECRET_TEXT'; - $ciphertext = $e->invokeArgs(null, array($original_plaintext, $secret)); - $decrypted_plaintext = $d->invokeArgs(null, array($ciphertext, $secret)); + $ciphertext = $e->invokeArgs(null, [$original_plaintext, $secret]); + $decrypted_plaintext = $d->invokeArgs(null, [$ciphertext, $secret]); $this->assertEquals($original_plaintext, $decrypted_plaintext); } @@ -243,7 +243,6 @@ PHP; */ public function testBadHashAlgorithmValid() { - $pw = "password"; $algorithm = "wtf"; $hash = "{".$algorithm."}B64STRING"; @@ -277,7 +276,7 @@ PHP; */ public function testLoadPrivateKeyRequiredMetadataMissing() { - $config = new Configuration(array(), 'test'); + $config = new Configuration([], 'test'); $required = true; Crypto::loadPrivateKey($config, $required); @@ -288,7 +287,7 @@ PHP; */ public function testLoadPrivateKeyNotRequiredMetadataMissing() { - $config = new Configuration(array(), 'test'); + $config = new Configuration([], 'test'); $required = false; $res = Crypto::loadPrivateKey($config, $required); @@ -303,7 +302,7 @@ PHP; */ public function testLoadPrivateKeyMissingFile() { - $config = new Configuration(array('privatekey' => 'nonexistant'), 'test'); + $config = new Configuration(['privatekey' => 'nonexistant'], 'test'); Crypto::loadPrivateKey($config, false, '', true); } @@ -315,13 +314,13 @@ PHP; { $filename = $this->certdir.DIRECTORY_SEPARATOR.'key'; $data = 'data'; - $config = new Configuration(array('privatekey' => $filename), 'test'); + $config = new Configuration(['privatekey' => $filename], 'test'); $full_path = true; file_put_contents($filename, $data); $res = Crypto::loadPrivateKey($config, false, '', $full_path); - $expected = array('PEM' => $data); + $expected = ['PEM' => $data]; $this->assertEquals($expected, $res); } @@ -335,10 +334,10 @@ PHP; $filename = $this->certdir.DIRECTORY_SEPARATOR.'key'; $data = 'data'; $config = new Configuration( - array( + [ 'privatekey' => $filename, 'privatekey_pass' => $password, - ), + ], 'test' ); $full_path = true; @@ -346,7 +345,7 @@ PHP; file_put_contents($filename, $data); $res = Crypto::loadPrivateKey($config, false, '', $full_path); - $expected = array('PEM' => $data, 'password' => $password); + $expected = ['PEM' => $data, 'password' => $password]; $this->assertEquals($expected, $res); } @@ -361,10 +360,10 @@ PHP; $filename = $this->certdir.DIRECTORY_SEPARATOR.'key'; $data = 'data'; $config = new Configuration( - array( + [ $prefix.'privatekey' => $filename, $prefix.'privatekey_pass' => $password, - ), + ], 'test' ); $full_path = true; @@ -372,7 +371,7 @@ PHP; file_put_contents($filename, $data); $res = Crypto::loadPrivateKey($config, false, $prefix, $full_path); - $expected = array('PEM' => $data, 'password' => $password); + $expected = ['PEM' => $data, 'password' => $password]; $this->assertEquals($expected, $res); } @@ -384,7 +383,7 @@ PHP; */ public function testLoadPublicKeyRequiredMetadataMissing() { - $config = new Configuration(array(), 'test'); + $config = new Configuration([], 'test'); $required = true; Crypto::loadPublicKey($config, $required); @@ -395,7 +394,7 @@ PHP; */ public function testLoadPublicKeyNotRequiredMetadataMissing() { - $config = new Configuration(array(), 'test'); + $config = new Configuration([], 'test'); $required = false; $res = Crypto::loadPublicKey($config, $required); @@ -409,10 +408,10 @@ PHP; public function testLoadPublicKeyFingerprintBasicString() { $fingerprint = 'fingerprint'; - $config = new Configuration(array('certFingerprint' => $fingerprint), 'test'); + $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); $res = Crypto::loadPublicKey($config); - $expected = array('certFingerprint' => array($fingerprint)); + $expected = ['certFingerprint' => [$fingerprint]]; $this->assertEquals($expected, $res); } @@ -425,17 +424,17 @@ PHP; $fingerprint1 = 'fingerprint1'; $fingerprint2 = 'fingerprint2'; $config = new Configuration( - array( - 'certFingerprint' => array( + [ + 'certFingerprint' => [ $fingerprint1, $fingerprint2 - ), - ), + ], + ], 'test' ); $res = Crypto::loadPublicKey($config); - $expected = array('certFingerprint' => array($fingerprint1, $fingerprint2)); + $expected = ['certFingerprint' => [$fingerprint1, $fingerprint2]]; $this->assertEquals($expected, $res); } @@ -446,10 +445,10 @@ PHP; public function testLoadPublicKeyFingerprintLowercase() { $fingerprint = 'FINGERPRINT'; - $config = new Configuration(array('certFingerprint' => $fingerprint), 'test'); + $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); $res = Crypto::loadPublicKey($config); - $expected = array('certFingerprint' => array(strtolower($fingerprint))); + $expected = ['certFingerprint' => [strtolower($fingerprint)]]; $this->assertEquals($expected, $res); } @@ -460,10 +459,10 @@ PHP; public function testLoadPublicKeyFingerprintRemoveColons() { $fingerprint = 'f:i:n:g:e:r:p:r:i:n:t'; - $config = new Configuration(array('certFingerprint' => $fingerprint), 'test'); + $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); $res = Crypto::loadPublicKey($config); - $expected = array('certFingerprint' => array(str_replace(':', '', $fingerprint))); + $expected = ['certFingerprint' => [str_replace(':', '', $fingerprint)]]; $this->assertEquals($expected, $res); } @@ -474,15 +473,15 @@ PHP; public function testLoadPublicKeyNotX509Certificate() { $config = new Configuration( - array( - 'keys' => array( - array( + [ + 'keys' => [ + [ 'X509Certificate' => '', 'type' => 'NotX509Certificate', 'signing' => true - ), - ), - ), + ], + ], + ], 'test' ); @@ -497,15 +496,15 @@ PHP; public function testLoadPublicKeyNotSigning() { $config = new Configuration( - array( - 'keys' => array( - array( + [ + 'keys' => [ + [ 'X509Certificate' => '', 'type' => 'X509Certificate', 'signing' => false - ), - ), - ), + ], + ], + ], 'test' ); @@ -521,15 +520,15 @@ PHP; { $x509certificate = 'x509certificate'; $config = new Configuration( - array( - 'keys' => array( - array( + [ + 'keys' => [ + [ 'X509Certificate' => $x509certificate, 'type' => 'X509Certificate', 'signing' => true - ), - ), - ), + ], + ], + ], 'test' ); diff --git a/tests/lib/SimpleSAML/Utils/HTTPTest.php b/tests/lib/SimpleSAML/Utils/HTTPTest.php index 917a16290bbb2b5ebd0bd8872b11ce05f3e79a55..07184088482e75bfbc1871aadbd7625b3ca715b7 100644 --- a/tests/lib/SimpleSAML/Utils/HTTPTest.php +++ b/tests/lib/SimpleSAML/Utils/HTTPTest.php @@ -1,4 +1,5 @@ <?php + namespace SimpleSAML\Test\Utils; use PHPUnit\Framework\TestCase; @@ -38,7 +39,7 @@ class HTTPTest extends TestCase */ public function testAddURLParametersInvalidURL() { - HTTP::addURLParameters(array(), array()); + HTTP::addURLParameters([], []); } /** @@ -57,23 +58,23 @@ class HTTPTest extends TestCase public function testAddURLParameters() { $url = 'http://example.com/'; - $params = array( + $params = [ 'foo' => 'bar', 'bar' => 'foo', - ); + ]; $this->assertEquals($url.'?foo=bar&bar=foo', HTTP::addURLParameters($url, $params)); $url = 'http://example.com/?'; - $params = array( + $params = [ 'foo' => 'bar', 'bar' => 'foo', - ); + ]; $this->assertEquals($url.'foo=bar&bar=foo', HTTP::addURLParameters($url, $params)); $url = 'http://example.com/?foo=bar'; - $params = array( + $params = [ 'bar' => 'foo', - ); + ]; $this->assertEquals($url.'&bar=foo', HTTP::addURLParameters($url, $params)); } @@ -126,9 +127,9 @@ class HTTPTest extends TestCase { $original = $_SERVER; - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => '', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $_SERVER['SERVER_PORT'] = '80'; $this->assertEquals('localhost', HTTP::getSelfHost()); $_SERVER['SERVER_PORT'] = '3030'; @@ -144,9 +145,9 @@ class HTTPTest extends TestCase { $original = $_SERVER; - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => '', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); // standard port for HTTP $_SERVER['SERVER_PORT'] = '80'; @@ -175,9 +176,9 @@ class HTTPTest extends TestCase * Test a URL pointing to a script that's not part of the public interface. This allows us to test calls to * getSelfURL() from scripts outside of SimpleSAMLphp */ - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => 'http://example.com/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $url = 'https://example.com/app/script.php/some/path?foo=bar'; $this->setupEnvFromURL($url); $_SERVER['SCRIPT_FILENAME'] = '/var/www/app/script.php'; @@ -188,9 +189,9 @@ class HTTPTest extends TestCase $this->assertEquals('https://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a request URI that doesn't match the current script - $cfg = Configuration::loadFromArray(array( + $cfg = Configuration::loadFromArray([ 'baseurlpath' => 'https://example.org/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $baseDir = $cfg->getBaseDir(); $_SERVER['SCRIPT_FILENAME'] = $baseDir.'www/module.php'; $this->setupEnvFromURL('http://www.example.com/protected/resource.asp?foo=bar'); @@ -202,9 +203,9 @@ class HTTPTest extends TestCase $this->assertEquals('http://www.example.com', HTTP::getSelfURLHost()); // test a valid, full URL, based on a full URL in the configuration - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => 'https://example.com/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->setupEnvFromURL('http://www.example.org/module.php/module/file.php?foo=bar'); $this->assertEquals( 'https://example.com/simplesaml/module.php/module/file.php?foo=bar', @@ -216,9 +217,9 @@ class HTTPTest extends TestCase $this->assertEquals('https://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a valid, full URL, based on a full URL *without* a trailing slash in the configuration - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => 'https://example.com/simplesaml', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->assertEquals( 'https://example.com/simplesaml/module.php/module/file.php?foo=bar', HTTP::getSelfURL() @@ -229,9 +230,9 @@ class HTTPTest extends TestCase $this->assertEquals('https://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a valid, full URL, based on a full URL *without* a path in the configuration - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => 'https://example.com', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->assertEquals( 'https://example.com/module.php/module/file.php?foo=bar', HTTP::getSelfURL() @@ -242,9 +243,9 @@ class HTTPTest extends TestCase $this->assertEquals('https://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a valid, full URL, based on a relative path in the configuration - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => '/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->setupEnvFromURL('http://www.example.org/simplesaml/module.php/module/file.php?foo=bar'); $this->assertEquals( 'http://www.example.org/simplesaml/module.php/module/file.php?foo=bar', @@ -256,9 +257,9 @@ class HTTPTest extends TestCase $this->assertEquals('http://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a valid, full URL, based on a relative path in the configuration and a non standard port - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => '/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->setupEnvFromURL('http://example.org:8080/simplesaml/module.php/module/file.php?foo=bar'); $this->assertEquals( 'http://example.org:8080/simplesaml/module.php/module/file.php?foo=bar', @@ -270,9 +271,9 @@ class HTTPTest extends TestCase $this->assertEquals('http://'.HTTP::getSelfHostWithNonStandardPort(), HTTP::getSelfURLHost()); // test a valid, full URL, based on a relative path in the configuration, a non standard port and HTTPS - Configuration::loadFromArray(array( + Configuration::loadFromArray([ 'baseurlpath' => '/simplesaml/', - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $this->setupEnvFromURL('https://example.org:8080/simplesaml/module.php/module/file.php?foo=bar'); $this->assertEquals( 'https://example.org:8080/simplesaml/module.php/module/file.php?foo=bar', @@ -296,19 +297,19 @@ class HTTPTest extends TestCase { $original = $_SERVER; - Configuration::loadFromArray(array( - 'trusted.url.domains' => array('sp.example.com', 'app.example.com'), + Configuration::loadFromArray([ + 'trusted.url.domains' => ['sp.example.com', 'app.example.com'], 'trusted.url.regex' => false, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $_SERVER['REQUEST_URI'] = '/module.php'; - $allowed = array( + $allowed = [ 'https://sp.example.com/', 'http://sp.example.com/', 'https://app.example.com/', 'http://app.example.com/', - ); + ]; foreach ($allowed as $url) { $this->assertEquals(HTTP::checkURLAllowed($url), $url); } @@ -326,21 +327,21 @@ class HTTPTest extends TestCase { $original = $_SERVER; - Configuration::loadFromArray(array( - 'trusted.url.domains' => array('.*\.example\.com'), + Configuration::loadFromArray([ + 'trusted.url.domains' => ['.*\.example\.com'], 'trusted.url.regex' => true, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $_SERVER['REQUEST_URI'] = '/module.php'; - $allowed = array( + $allowed = [ 'https://sp.example.com/', 'http://sp.example.com/', 'https://app1.example.com/', 'http://app1.example.com/', 'https://app2.example.com/', 'http://app2.example.com/', - ); + ]; foreach ($allowed as $url) { $this->assertEquals(HTTP::checkURLAllowed($url), $url); } @@ -403,10 +404,10 @@ class HTTPTest extends TestCase { $original = $_SERVER; - Configuration::loadFromArray(array( - 'trusted.url.domains' => array('app\.example\.com'), + Configuration::loadFromArray([ + 'trusted.url.domains' => ['app\.example\.com'], 'trusted.url.regex' => true, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); $_SERVER['REQUEST_URI'] = '/module.php'; @@ -415,4 +416,16 @@ class HTTPTest extends TestCase $_SERVER = $original; } + + /** + * @covers SimpleSAML\Utils\HTTP::getFirstPathElement() + */ + public function testGetFirstPathElement() + { + $original = $_SERVER; + $_SERVER['SCRIPT_NAME'] = '/test/tmp.php'; + $this->assertEquals(HTTP::getFirstPathElement(), '/test'); + $this->assertEquals(HTTP::getFirstPathElement(false), 'test'); + $_SERVER = $original; + } } diff --git a/tests/lib/SimpleSAML/Utils/SystemTest.php b/tests/lib/SimpleSAML/Utils/SystemTest.php index e39370e941d4a5b41154fb5fbc559d0c43509be6..99a77ebe08a0890f345b26583cbac427e79fb182 100644 --- a/tests/lib/SimpleSAML/Utils/SystemTest.php +++ b/tests/lib/SimpleSAML/Utils/SystemTest.php @@ -21,9 +21,9 @@ class SystemTest extends TestCase $this->root = vfsStream::setup( self::ROOTDIRNAME, null, - array( - self::DEFAULTTEMPDIR => array(), - ) + [ + self::DEFAULTTEMPDIR => [], + ] ); $this->root_directory = vfsStream::url(self::ROOTDIRNAME); } @@ -115,10 +115,10 @@ class SystemTest extends TestCase */ public function testWriteFileBasic() { - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . self::DEFAULTTEMPDIR; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTTEMPDIR; $config = $this->setConfigurationTempDir($tempdir); - $filename = $this->root_directory . DIRECTORY_SEPARATOR . 'test'; + $filename = $this->root_directory.DIRECTORY_SEPARATOR.'test'; System::writeFile($filename, ''); @@ -133,10 +133,10 @@ class SystemTest extends TestCase */ public function testWriteFileContents() { - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . self::DEFAULTTEMPDIR; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTTEMPDIR; $config = $this->setConfigurationTempDir($tempdir); - $filename = $this->root_directory . DIRECTORY_SEPARATOR . 'test'; + $filename = $this->root_directory.DIRECTORY_SEPARATOR.'test'; $contents = 'TEST'; System::writeFile($filename, $contents); @@ -155,10 +155,10 @@ class SystemTest extends TestCase */ public function testWriteFileMode() { - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . self::DEFAULTTEMPDIR; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTTEMPDIR; $config = $this->setConfigurationTempDir($tempdir); - $filename = $this->root_directory . DIRECTORY_SEPARATOR . 'test'; + $filename = $this->root_directory.DIRECTORY_SEPARATOR.'test'; $mode = 0666; System::writeFile($filename, '', $mode); @@ -177,7 +177,7 @@ class SystemTest extends TestCase */ public function testGetTempDirBasic() { - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . self::DEFAULTTEMPDIR; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTTEMPDIR; $config = $this->setConfigurationTempDir($tempdir); $res = System::getTempDir(); @@ -195,7 +195,7 @@ class SystemTest extends TestCase */ public function testGetTempDirNonExistant() { - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . 'nonexistant'; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.'nonexistant'; $config = $this->setConfigurationTempDir($tempdir); $res = System::getTempDir(); @@ -214,24 +214,28 @@ class SystemTest extends TestCase */ public function testGetTempDirBadOwner() { + if (!function_exists('posix_getuid')) { + static::markTestSkipped('POSIX-functions not available; skipping!'); + } + $bad_uid = posix_getuid() + 1; - $tempdir = $this->root_directory . DIRECTORY_SEPARATOR . self::DEFAULTTEMPDIR; + $tempdir = $this->root_directory.DIRECTORY_SEPARATOR.self::DEFAULTTEMPDIR; $config = $this->setConfigurationTempDir($tempdir); chown($tempdir, $bad_uid); $this->setExpectedException('\SimpleSAML\Error\Exception'); - $res = System::getTempDir(); + System::getTempDir(); $this->clearInstance($config, '\SimpleSAML\Configuration'); } private function setConfigurationTempDir($directory) { - $config = Configuration::loadFromArray(array( + $config = Configuration::loadFromArray([ 'tempdir' => $directory, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); return $config; } diff --git a/tests/lib/SimpleSAML/Utils/TimeTest.php b/tests/lib/SimpleSAML/Utils/TimeTest.php index ebe99b9c8091bf6d2f09fcdf9bfa062c554e28ca..6973a2180871c933fc92aecdff9ee8ea746f5002 100644 --- a/tests/lib/SimpleSAML/Utils/TimeTest.php +++ b/tests/lib/SimpleSAML/Utils/TimeTest.php @@ -36,7 +36,7 @@ class TimeTest extends TestCase } // test guessing timezone from the OS - \SimpleSAML\Configuration::loadFromArray(array('timezone' => null), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['timezone' => null], '[ARRAY]', 'simplesaml'); @Time::initTimezone(); $this->assertEquals($os, @date_default_timezone_get()); @@ -46,7 +46,7 @@ class TimeTest extends TestCase $c->setValue(false); // test unknown timezone - \SimpleSAML\Configuration::loadFromArray(array('timezone' => 'INVALID'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['timezone' => 'INVALID'], '[ARRAY]', 'simplesaml'); try { @Time::initTimezone(); $this->fail('Failed to recognize an invalid timezone.'); @@ -55,12 +55,12 @@ class TimeTest extends TestCase } // test a valid timezone - \SimpleSAML\Configuration::loadFromArray(array('timezone' => $tz), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['timezone' => $tz], '[ARRAY]', 'simplesaml'); @Time::initTimezone(); $this->assertEquals($tz, @date_default_timezone_get()); // make sure initialization happens only once - \SimpleSAML\Configuration::loadFromArray(array('timezone' => 'Europe/Madrid'), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray(['timezone' => 'Europe/Madrid'], '[ARRAY]', 'simplesaml'); @Time::initTimezone(); $this->assertEquals($tz, @date_default_timezone_get()); } @@ -143,7 +143,7 @@ class TimeTest extends TestCase } try { // invalid timestamp - Time::parseDuration('', array()); + Time::parseDuration('', []); $this->fail("Did not fail with invalid timestamp parameter."); } catch (\InvalidArgumentException $e) { $this->assertEquals('Invalid input parameters', $e->getMessage()); diff --git a/tests/lib/SimpleSAML/Utils/XMLTest.php b/tests/lib/SimpleSAML/Utils/XMLTest.php index 4f820a9efa2855fe8dc1a8c625ee17a98825f175..1e9bacb8b986cada2225e18e2635877914df4891 100644 --- a/tests/lib/SimpleSAML/Utils/XMLTest.php +++ b/tests/lib/SimpleSAML/Utils/XMLTest.php @@ -135,7 +135,7 @@ class XMLTest extends TestCase $element->appendChild(new \DOMText($data2)); $res = XML::getDOMText($element); - $expected = $data1 . $data2 . $data1 . $data2; + $expected = $data1.$data2.$data1.$data2; $this->assertEquals($expected, $res); } @@ -150,7 +150,7 @@ class XMLTest extends TestCase { $dom = new \DOMDocument(); $element = $dom->appendChild(new \DOMElement('root')); - $comment = $element->appendChild(new \DOMComment('')); + $element->appendChild(new \DOMComment('')); XML::getDOMText($element); } @@ -168,7 +168,7 @@ class XMLTest extends TestCase $dom->appendChild($element); $res = XML::getDOMChildren($dom, $name, $namespace_uri); - $expected = array($element); + $expected = [$element]; $this->assertEquals($expected, $res); } @@ -357,12 +357,12 @@ NOWDOC; */ public function testIsValidMetadata() { - Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $schema = 'saml-schema-metadata-2.0.xsd'; $dom = $this->getMockBuilder('\DOMDocument') - ->setMethods(array('schemaValidate')) + ->setMethods(['schemaValidate']) ->disableOriginalConstructor() ->getMock(); @@ -379,4 +379,13 @@ NOWDOC; $this->assertTrue($res); } + + /** + * @covers \SimpleSAML\Utils\XML::checkSAMLMessage() + */ + public function testCheckSAMLMessageInvalidType() + { + $this->setExpectedException('\InvalidArgumentException'); + XML::checkSAMLMessage('<test></test>', 'blub'); + } } diff --git a/tests/lib/SimpleSAML/XML/ErrorsTest.php b/tests/lib/SimpleSAML/XML/ErrorsTest.php index a6a46f19da67564f78e765bb4865bb1821a6068d..4c0f929139c4b7ee1d467eb1d43e171f3f74723f 100644 --- a/tests/lib/SimpleSAML/XML/ErrorsTest.php +++ b/tests/lib/SimpleSAML/XML/ErrorsTest.php @@ -9,7 +9,6 @@ * @package simplesamlphp/simplesamlphp */ - namespace SimpleSAML\Test\XML; use PHPUnit\Framework\TestCase; @@ -51,7 +50,7 @@ class ErrorsTest extends TestCase $error->column = 'col'; $error->message = ' msg '; - $errors = Errors::formatErrors(array($error, $error)); + $errors = Errors::formatErrors([$error, $error]); $this->assertEquals( "level=level,code=code,line=line,col=col,msg=msg\nlevel=level,code=code,line=line,col=col,msg=msg\n", diff --git a/tests/lib/SimpleSAML/XML/ParserTest.php b/tests/lib/SimpleSAML/XML/ParserTest.php index 336ae86f12357fff99e3870873d19bc171807c90..2e4e1891e1479496fc778c5ad9ceb49a21897dfc 100644 --- a/tests/lib/SimpleSAML/XML/ParserTest.php +++ b/tests/lib/SimpleSAML/XML/ParserTest.php @@ -8,7 +8,6 @@ * file that was distributed with this source code. */ - namespace SimpleSAML\Test\XML; use PHPUnit\Framework\TestCase; @@ -96,10 +95,10 @@ XML; { $result = $this ->xml - ->getValueAlternatives(array( + ->getValueAlternatives([ '/Root/Other', '/Root/Value' - ), true) + ], true) ; $this->assertEquals( @@ -117,10 +116,10 @@ XML; { $result = $this ->xml - ->getValueAlternatives(array( + ->getValueAlternatives([ '/Root/Foo', '/Root/Bar' - ), false) + ], false) ; $this->assertEquals( @@ -139,10 +138,10 @@ XML; { $this ->xml - ->getValueAlternatives(array( + ->getValueAlternatives([ '/Root/Foo', '/Root/Bar' - ), true) + ], true) ; } } diff --git a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php b/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php index b492337f6780387f9125ddac3cea9a9885997fa7..c2e266929c2a254117be5a3fec30f9323944f306 100644 --- a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php +++ b/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php @@ -112,10 +112,10 @@ XML; $result = $this->xml->getNameID(); $this->assertEquals( - array( + [ 'Value' => 'NameIdentifier', 'Format' => 'urn:mace:shibboleth:1.0:nameIdentifier', - ), + ], $result ); } diff --git a/tests/lib/SimpleSAML/XML/SignerTest.php b/tests/lib/SimpleSAML/XML/SignerTest.php index 65b0f81cc8606ee640377b54e71bc59371d09706..f14ef5111b3fff4d1239583676a2b432c5900ad9 100644 --- a/tests/lib/SimpleSAML/XML/SignerTest.php +++ b/tests/lib/SimpleSAML/XML/SignerTest.php @@ -1,6 +1,6 @@ <?php -namespace SimpleSAML\Test\Utils; +namespace SimpleSAML\Test\XML; use PHPUnit\Framework\TestCase; use \SimpleSAML\Configuration; @@ -105,13 +105,13 @@ NOWDOC; $this->root = vfsStream::setup( self::ROOTDIRNAME, null, - array( - self::DEFAULTCERTDIR => array( + [ + self::DEFAULTCERTDIR => [ self::PRIVATEKEY => $this->private_key, self::CERTIFICATE1 => $this->certificate1, self::CERTIFICATE2 => $this->certificate2, - ), - ) + ], + ] ); $this->root_directory = vfsStream::url(self::ROOTDIRNAME); @@ -120,19 +120,19 @@ NOWDOC; $this->certificate_file1 = $this->certdir.DIRECTORY_SEPARATOR.self::CERTIFICATE1; $this->certificate_file2 = $this->certdir.DIRECTORY_SEPARATOR.self::CERTIFICATE2; - $this->config = Configuration::loadFromArray(array( + $this->config = Configuration::loadFromArray([ 'certdir' => $this->certdir, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); } public function tearDown() { - $this->clearInstance($this->config, '\SimpleSAML\Configuration', array()); + $this->clearInstance($this->config, '\SimpleSAML\Configuration', []); } public function testSignerBasic() { - $res = new Signer(array()); + $res = new Signer([]); $this->assertNotNull($res); } @@ -146,7 +146,7 @@ NOWDOC; $doc = new \DOMDocument(); $insertInto = $doc->appendChild(new \DOMElement('insert')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->privatekey_file, null, true); $signer->sign($element, $insertInto); @@ -158,11 +158,11 @@ NOWDOC; private static function getCertificateValue($certificate) { - $replacements = array( + $replacements = [ "-----BEGIN CERTIFICATE-----", "-----END CERTIFICATE-----", "\n", - ); + ]; return str_replace($replacements, "", $certificate); } @@ -176,7 +176,7 @@ NOWDOC; $doc = new \DOMDocument(); $insertInto = $doc->appendChild(new \DOMElement('insert')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->privatekey_file, null, true); $signer->loadCertificate($this->certificate_file1, true); $signer->sign($element, $insertInto); @@ -198,7 +198,7 @@ NOWDOC; $doc = new \DOMDocument(); $insertInto = $doc->appendChild(new \DOMElement('insert')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->privatekey_file, null, true); $signer->loadCertificate($this->certificate_file1, true); $signer->addCertificate($this->certificate_file2, true); @@ -223,7 +223,7 @@ NOWDOC; $doc = new \DOMDocument(); $insertInto = $doc->appendChild(new \DOMElement('insert')); - $signer = new Signer(array()); + $signer = new Signer([]); $this->setExpectedException('\Exception'); $signer->sign($element, $insertInto); diff --git a/tests/lib/SimpleSAML/XML/ValidatorTest.php b/tests/lib/SimpleSAML/XML/ValidatorTest.php index 7887886129c27bd36cd41e7681fb364ca10609f3..b274ad9a89a7d3b9612228188ae397236052afbf 100644 --- a/tests/lib/SimpleSAML/XML/ValidatorTest.php +++ b/tests/lib/SimpleSAML/XML/ValidatorTest.php @@ -147,14 +147,14 @@ NOWDOC; $this->root = vfsStream::setup( self::ROOTDIRNAME, null, - array( - self::DEFAULTCERTDIR => array( + [ + self::DEFAULTCERTDIR => [ self::CA_PRIVATE_KEY => $this->ca_private_key, self::CA_CERTIFICATE => $this->ca_certificate, self::GOOD_PRIVATE_KEY => $this->good_private_key, self::GOOD_CERTIFICATE => $this->good_certificate, - ), - ) + ], + ] ); $this->root_directory = vfsStream::url(self::ROOTDIRNAME); @@ -164,14 +164,14 @@ NOWDOC; $this->good_private_key_file = $this->certdir.DIRECTORY_SEPARATOR.self::GOOD_PRIVATE_KEY; $this->good_certificate_file = $this->certdir.DIRECTORY_SEPARATOR.self::GOOD_CERTIFICATE; - $this->config = Configuration::loadFromArray(array( + $this->config = Configuration::loadFromArray([ 'certdir' => $this->certdir, - ), '[ARRAY]', 'simplesaml'); + ], '[ARRAY]', 'simplesaml'); } public function tearDown() { - $this->clearInstance($this->config, '\SimpleSAML\Configuration', array()); + $this->clearInstance($this->config, '\SimpleSAML\Configuration', []); } public function testValidatorMissingSignature() @@ -192,7 +192,7 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->loadCertificate($this->good_certificate_file, true); $signer->sign($node, $signature_parent); @@ -202,7 +202,7 @@ NOWDOC; $result = $validator->getX509Certificate(); // getX509Certificate returns a certificate with a newline - $expected = $this->good_certificate . "\n"; + $expected = $this->good_certificate."\n"; $this->assertEquals($result, $expected); } @@ -216,7 +216,7 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->loadCertificate($this->good_certificate_file, true); $signer->sign($node, $signature_parent); @@ -228,7 +228,7 @@ NOWDOC; $validator = new Validator( $doc, 'node', - array('certFingerprint' => array($fingerprint)) + ['certFingerprint' => [$fingerprint]] ); // Avoiding Validator::class because it's >= PHP 5.5 only @@ -244,13 +244,13 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->loadCertificate($this->good_certificate_file, true); $signer->sign($node, $signature_parent); $this->setExpectedException('\Exception'); - new Validator($doc, 'node', array('certFingerprint' => array())); + new Validator($doc, 'node', ['certFingerprint' => []]); } public function testValidateFingerprintSuccess() @@ -262,7 +262,7 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->loadCertificate($this->good_certificate_file, true); $signer->sign($node, $signature_parent); @@ -287,7 +287,7 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->loadCertificate($this->good_certificate_file, true); $signer->sign($node, $signature_parent); @@ -309,14 +309,14 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->sign($node, $signature_parent); $validator = new Validator( $doc, 'node', - array('PEM' => $this->good_certificate) + ['PEM' => $this->good_certificate] ); $result = $validator->isNodeValidated($node); @@ -334,14 +334,14 @@ NOWDOC; $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - $signer = new Signer(array()); + $signer = new Signer([]); $signer->loadPrivateKey($this->good_private_key_file, null, true); $signer->sign($node1, $signature_parent); $validator = new Validator( $doc, 'node1', - array('PEM' => $this->good_certificate) + ['PEM' => $this->good_certificate] ); $result = $validator->isNodeValidated($node2); diff --git a/tests/modules/consent/lib/Auth/Process/ConsentTest.php b/tests/modules/consent/lib/Auth/Process/ConsentTest.php index c74696d7cc873de35a8c726bed747744c108cba5..1e162314720ab0cdeda95d15f02456c15b9c8a94 100644 --- a/tests/modules/consent/lib/Auth/Process/ConsentTest.php +++ b/tests/modules/consent/lib/Auth/Process/ConsentTest.php @@ -15,7 +15,7 @@ class ConsentTest extends TestCase { public function setUp() { - $this->config = Configuration::loadFromArray(array('module.enable' => array('consent' => true)), '[ARRAY]', 'simplesaml'); + $this->config = Configuration::loadFromArray(['module.enable' => ['consent' => true]], '[ARRAY]', 'simplesaml'); \SimpleSAML_Configuration::setPreLoadedConfig($this->config, 'config.php'); } @@ -40,82 +40,82 @@ class ConsentTest extends TestCase public function testCheckDisable() { // test consent disable regex with match - $config = array(); + $config = []; // test consent disable with match on specific SP entityid - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => 'https://idp.example.org', 'metadata-set' => 'saml20-idp-local', - 'consent.disable' => array( + 'consent.disable' => [ 'https://valid.flatstring.example.that.does.not.match', - ), - 'SingleSignOnService' => array( - array( + ], + 'SingleSignOnService' => [ + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://idp.example.org/saml2/idp/SSOService.php', - ), - ), - ), - 'Destination' => array( + ], + ], + ], + 'Destination' => [ // valid entityid equal to the last one in the consent.disable array 'entityid' => 'https://sp.example.org/my-sp', 'metadata-set' => 'saml20-sp-remote', - 'consent.disable' => array( - array('type' => 'regex', 'pattern' => '/invalid/i'), + 'consent.disable' => [ + ['type' => 'regex', 'pattern' => '/invalid/i'], 'https://sp.example.org/my-sp', // accept the SP that has this specific entityid 'https://idp.example.org', - ), - ), + ], + ], 'UserID' => 'jdoe', - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - ), - ); + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); // the state should NOT have changed because NO consent should be necessary (match) $this->assertEquals($request, $result); // test consent disable with match on SP through regular expression - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => 'https://idp.example.org', 'metadata-set' => 'saml20-idp-local', - 'consent.disable' => array( - array(), // invalid consent option array should be ignored + 'consent.disable' => [ + [], // invalid consent option array should be ignored 1234, // bad option - array(''), // no type - array('type'=>'invalid'), // invalid consent option type should be ignored - array('type'=>'regex'), // regex consent option without pattern should be ignored - array('type'=>'regex', 'pattern'=>'/.*\.valid.regex\.that\.does\.not\.match.*/i'), + [''], // no type + ['type'=>'invalid'], // invalid consent option type should be ignored + ['type'=>'regex'], // regex consent option without pattern should be ignored + ['type'=>'regex', 'pattern'=>'/.*\.valid.regex\.that\.does\.not\.match.*/i'], // accept any SP that has an entityid that contains the string ".example.org" - array('type'=>'regex', 'pattern'=>'/.*\.example\.org\/.*/i'), - ), - 'SingleSignOnService' => array( - array( + ['type'=>'regex', 'pattern'=>'/.*\.example\.org\/.*/i'], + ], + 'SingleSignOnService' => [ + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://idp.example.org/saml2/idp/SSOService.php', - ), - ), - ), - 'Destination' => array( + ], + ], + ], + 'Destination' => [ 'entityid' => 'https://sp.example.org/my-sp', // sp contains the string ".example.org" 'metadata-set' => 'saml20-sp-remote', - ), + ], 'UserID' => 'jdoe', - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - ), - ); + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); // the state should NOT have changed because NO consent should be necessary (match) $this->assertEquals($request, $result); // test corner cases - $request['Source']['consent.disable'] = array( + $request['Source']['consent.disable'] = [ 'https://valid.flatstring.example.that.does.not.match', - array('foo' => 'bar'), - ); + ['foo' => 'bar'], + ]; $request['Destination']['consent.disable'] = 1; $result = $this->processFilter($config, $request); // the state should NOT have changed because NO consent should be necessary (match) @@ -124,16 +124,16 @@ class ConsentTest extends TestCase public function testAttributeHashIsConsistentWhenOrderOfValuesChange() { - $attributes1 = array( - 'attribute1' => array('val1', 'val2'), - 'attribute2' => array('val1', 'val2') - ); + $attributes1 = [ + 'attribute1' => ['val1', 'val2'], + 'attribute2' => ['val1', 'val2'] + ]; $attributeHash1 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes1, true); - $attributes2 = array( - 'attribute1' => array('val1', 'val2'), - 'attribute2' => array('val2', 'val1') - ); + $attributes2 = [ + 'attribute1' => ['val1', 'val2'], + 'attribute2' => ['val2', 'val1'] + ]; $attributeHash2 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes2, true); $this->assertEquals($attributeHash1, $attributeHash2, "Hash is not the same when the order of values changes"); @@ -141,16 +141,16 @@ class ConsentTest extends TestCase public function testAttributeHashIsConsistentWhenOrderOfAttributesChange() { - $attributes1 = array( - 'attribute2' => array('val1', 'val2'), - 'attribute1' => array('val1', 'val2') - ); + $attributes1 = [ + 'attribute2' => ['val1', 'val2'], + 'attribute1' => ['val1', 'val2'] + ]; $attributeHash1 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes1, true); - $attributes2 = array( - 'attribute1' => array('val1', 'val2'), - 'attribute2' => array('val1', 'val2') - ); + $attributes2 = [ + 'attribute1' => ['val1', 'val2'], + 'attribute2' => ['val1', 'val2'] + ]; $attributeHash2 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes2, true); $this->assertEquals( @@ -162,16 +162,16 @@ class ConsentTest extends TestCase public function testAttributeHashIsConsistentWithoutValuesWhenOrderOfAttributesChange() { - $attributes1 = array( - 'attribute2' => array('val1', 'val2'), - 'attribute1' => array('val1', 'val2') - ); + $attributes1 = [ + 'attribute2' => ['val1', 'val2'], + 'attribute1' => ['val1', 'val2'] + ]; $attributeHash1 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes1); - $attributes2 = array( - 'attribute1' => array('val1', 'val2'), - 'attribute2' => array('val1', 'val2') - ); + $attributes2 = [ + 'attribute1' => ['val1', 'val2'], + 'attribute2' => ['val1', 'val2'] + ]; $attributeHash2 = \SimpleSAML\Module\consent\Auth\Process\Consent::getAttributeHash($attributes2); $this->assertEquals( @@ -185,22 +185,28 @@ class ConsentTest extends TestCase { $reflection = new \ReflectionClass('\SimpleSAML\Module\consent\Auth\Process\Consent'); - foreach (array( - 'includeValues', 'checked', 'focus', 'hiddenAttributes', 'noconsentattributes', 'showNoConsentAboutService' - ) as $v) { + $values = [ + 'includeValues', + 'checked', + 'focus', + 'hiddenAttributes', + 'noconsentattributes', + 'showNoConsentAboutService' + ]; + foreach ($values as $v) { $instanceVars[$v] = $reflection->getProperty($v); $instanceVars[$v]->setAccessible(true); } /* these just need to be different to the default values */ - $config = array( + $config = [ 'includeValues' => true, 'checked' => true, 'focus' => 'yes', - 'hiddenAttributes' => array('attribute1', 'attribute2'), - 'attributes.exclude' => array('attribute1', 'attribute2'), + 'hiddenAttributes' => ['attribute1', 'attribute2'], + 'attributes.exclude' => ['attribute1', 'attribute2'], 'showNoConsentAboutService' => false, - ); + ]; $testcase = $reflection->newInstance($config, null); @@ -209,10 +215,12 @@ class ConsentTest extends TestCase $this->assertEquals($instanceVars['focus']->getValue($testcase), $config['focus']); $this->assertEquals($instanceVars['hiddenAttributes']->getValue($testcase), $config['hiddenAttributes']); $this->assertEquals($instanceVars['noconsentattributes']->getValue($testcase), $config['attributes.exclude']); - $this->assertEquals($instanceVars['showNoConsentAboutService']->getValue($testcase), $config['showNoConsentAboutService']); + $this->assertEquals( + $instanceVars['showNoConsentAboutService']->getValue($testcase), + $config['showNoConsentAboutService'] + ); - $deprecated = $reflection->newInstance(array('noconsentattributes' => $config['attributes.exclude'],), null); + $deprecated = $reflection->newInstance(['noconsentattributes' => $config['attributes.exclude']], null); $this->assertEquals($instanceVars['noconsentattributes']->getValue($deprecated), $config['attributes.exclude']); - } } diff --git a/tests/modules/core/lib/Auth/Process/AttributeAddTest.php b/tests/modules/core/lib/Auth/Process/AttributeAddTest.php index deabdd3d210f596678284e80806dbac91275d422..50cf5b3d19186357255dce4c649cd817524ab005 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeAddTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeAddTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeAdd filter. */ -class Test_Core_Auth_Process_AttributeAdd extends TestCase +class AttributeAddTest extends TestCase { /** @@ -27,16 +29,16 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testBasic() { - $config = array( - 'test' => array('value1', 'value2'), - ); - $request = array( - 'Attributes' => array(), - ); + $config = [ + 'test' => ['value1', 'value2'], + ]; + $request = [ + 'Attributes' => [], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); - $this->assertEquals($attributes['test'], array('value1', 'value2')); + $this->assertEquals($attributes['test'], ['value1', 'value2']); } /** @@ -44,23 +46,23 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testExistingNotModified() { - $config = array( - 'test' => array('value1', 'value2'), - ); - $request = array( - 'Attributes' => array( - 'original1' => array('original_value1'), - 'original2' => array('original_value2'), - ), - ); + $config = [ + 'test' => ['value1', 'value2'], + ]; + $request = [ + 'Attributes' => [ + 'original1' => ['original_value1'], + 'original2' => ['original_value2'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); - $this->assertEquals($attributes['test'], array('value1', 'value2')); + $this->assertEquals($attributes['test'], ['value1', 'value2']); $this->assertArrayHasKey('original1', $attributes); - $this->assertEquals($attributes['original1'], array('original_value1')); + $this->assertEquals($attributes['original1'], ['original_value1']); $this->assertArrayHasKey('original2', $attributes); - $this->assertEquals($attributes['original2'], array('original_value2')); + $this->assertEquals($attributes['original2'], ['original_value2']); } /** @@ -68,16 +70,16 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testStringValue() { - $config = array( + $config = [ 'test' => 'value', - ); - $request = array( - 'Attributes' => array(), - ); + ]; + $request = [ + 'Attributes' => [], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); - $this->assertEquals($attributes['test'], array('value')); + $this->assertEquals($attributes['test'], ['value']); } /** @@ -85,19 +87,19 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testAddMultiple() { - $config = array( - 'test1' => array('value1'), - 'test2' => array('value2'), - ); - $request = array( - 'Attributes' => array(), - ); + $config = [ + 'test1' => ['value1'], + 'test2' => ['value2'], + ]; + $request = [ + 'Attributes' => [], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test1', $attributes); - $this->assertEquals($attributes['test1'], array('value1')); + $this->assertEquals($attributes['test1'], ['value1']); $this->assertArrayHasKey('test2', $attributes); - $this->assertEquals($attributes['test2'], array('value2')); + $this->assertEquals($attributes['test2'], ['value2']); } /** @@ -105,17 +107,17 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testAppend() { - $config = array( - 'test' => array('value2'), - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); + $config = [ + 'test' => ['value2'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['test'], array('value1', 'value2')); + $this->assertEquals($attributes['test'], ['value1', 'value2']); } /** @@ -123,18 +125,18 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testReplace() { - $config = array( + $config = [ '%replace', - 'test' => array('value2'), - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); + 'test' => ['value2'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['test'], array('value2')); + $this->assertEquals($attributes['test'], ['value2']); } /** @@ -144,16 +146,16 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testWrongFlag() { - $config = array( + $config = [ '%nonsense', - 'test' => array('value2'), - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); - $result = self::processFilter($config, $request); + 'test' => ['value2'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; + self::processFilter($config, $request); } /** @@ -163,15 +165,15 @@ class Test_Core_Auth_Process_AttributeAdd extends TestCase */ public function testWrongAttributeValue() { - $config = array( + $config = [ '%replace', - 'test' => array(true), - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); - $result = self::processFilter($config, $request); + 'test' => [true], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; + self::processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/Process/AttributeAlterTest.php b/tests/modules/core/lib/Auth/Process/AttributeAlterTest.php index d59522cba870bb66f6ac551e7575745137c86ad5..b8f9c7bb9b2649f041ea15c3b61797c6b6e39521 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeAlterTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeAlterTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeAlter filter. */ -class Test_Core_Auth_Process_AttributeAlter extends TestCase +class AttributeAlterTest extends TestCase { /** @@ -27,22 +29,22 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', 'replacement' => 'right', - ); + ]; - $request = array( - 'Attributes' => array( - 'test' => array('somethingiswrong'), - ), - ); + $request = [ + 'Attributes' => [ + 'test' => ['somethingiswrong'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); - $this->assertEquals($attributes['test'], array('somethingisright')); + $this->assertEquals($attributes['test'], ['somethingisright']); } /** @@ -50,25 +52,25 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testWithTarget() { - $config = array( + $config = [ 'subject' => 'test', 'target' => 'test2', 'pattern' => '/wrong/', 'replacement' => 'right', - ); + ]; - $request = array( - 'Attributes' => array( - 'something' => array('somethingelse'), - 'test' => array('wrong'), - ), - ); + $request = [ + 'Attributes' => [ + 'something' => ['somethingelse'], + 'test' => ['wrong'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test2', $attributes); - $this->assertEquals($attributes['test'], array('wrong')); - $this->assertEquals($attributes['test2'], array('right')); + $this->assertEquals($attributes['test'], ['wrong']); + $this->assertEquals($attributes['test2'], ['right']); } /** @@ -76,24 +78,26 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testNomatch() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', 'replacement' => 'right', - ); + ]; - $request = array( - 'Attributes' => array( - 'something' => array('somevalue'), - 'somethingelse' => array('someothervalue'), - ), - ); + $request = [ + 'Attributes' => [ + 'something' => ['somevalue'], + 'somethingelse' => ['someothervalue'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes, - array('something' => array('somevalue'), - 'somethingelse' => array('someothervalue'))); + $this->assertEquals( + $attributes, + ['something' => ['somevalue'], + 'somethingelse' => ['someothervalue']] + ); } /** @@ -101,20 +105,20 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testReplaceMatch() { - $config = array( + $config = [ 'subject' => 'source', 'pattern' => '/wrong/', 'replacement' => 'right', '%replace', - ); - $request = array( - 'Attributes' => array( - 'source' => array('wrongthing'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'source' => ['wrongthing'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['source'], array('right')); + $this->assertEquals($attributes['source'], ['right']); } /** @@ -122,22 +126,22 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testReplaceMatchWithTarget() { - $config = array( + $config = [ 'subject' => 'source', 'pattern' => '/wrong/', 'replacement' => 'right', 'target' => 'test', '%replace', - ); - $request = array( - 'Attributes' => array( - 'source' => array('wrong'), - 'test' => array('wrong'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'source' => ['wrong'], + 'test' => ['wrong'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['test'], array('right')); + $this->assertEquals($attributes['test'], ['right']); } /** @@ -145,22 +149,22 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testReplaceNoMatch() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/doink/', 'replacement' => 'wrong', 'target' => 'test', '%replace', - ); - $request = array( - 'Attributes' => array( - 'source' => array('wrong'), - 'test' => array('right'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'source' => ['wrong'], + 'test' => ['right'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['test'], array('right')); + $this->assertEquals($attributes['test'], ['right']); } /** @@ -170,21 +174,21 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testRemoveMatch() { - $config = array( + $config = [ 'subject' => 'eduPersonAffiliation', 'pattern' => '/^emper/', '%remove', - ); - $request = array( - 'Attributes' => array( - 'displayName' => array('emperor kuzco'), - 'eduPersonAffiliation' => array('member', 'emperor', 'staff'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'displayName' => ['emperor kuzco'], + 'eduPersonAffiliation' => ['member', 'emperor', 'staff'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['displayName'], array('emperor kuzco')); - $this->assertEquals($attributes['eduPersonAffiliation'], array(0 => 'member', 2 => 'staff')); + $this->assertEquals($attributes['displayName'], ['emperor kuzco']); + $this->assertEquals($attributes['eduPersonAffiliation'], [0 => 'member', 2 => 'staff']); } /** @@ -192,17 +196,17 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testRemoveMatchAll() { - $config = array( + $config = [ 'subject' => 'eduPersonAffiliation', 'pattern' => '/^emper/', '%remove', - ); - $request = array( - 'Attributes' => array( - 'displayName' => array('emperor kuzco'), - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'displayName' => ['emperor kuzco'], + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); @@ -215,17 +219,17 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testWrongConfig() { - $config = array( + $config = [ 'subject' => 'eduPersonAffiliation', 'pattern' => '/^emper/', '%dwiw', - ); - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); - $result = self::processFilter($config, $request); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; + self::processFilter($config, $request); } /** @@ -235,15 +239,15 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testIncompleteConfig() { - $config = array( + $config = [ 'subject' => 'eduPersonAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); - $result = self::processFilter($config, $request); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; + self::processFilter($config, $request); } /** @@ -253,23 +257,17 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testIncompleteConfig2() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', - ); - - $request = array( - 'Attributes' => array( - 'test' => array('somethingiswrong'), - ), - ); - - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); - $result = self::processFilter($config, $request); + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; + self::processFilter($config, $request); } /** @@ -279,25 +277,19 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testIncompleteConfig3() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', '%replace', '%remove', - ); - - $request = array( - 'Attributes' => array( - 'test' => array('somethingiswrong'), - ), - ); - - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); - $result = self::processFilter($config, $request); + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; + self::processFilter($config, $request); } /** @@ -307,25 +299,19 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testIncompleteConfig4() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', 'target' => 'test2', '%remove', - ); - - $request = array( - 'Attributes' => array( - 'test' => array('somethingiswrong'), - ), - ); - - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); - $result = self::processFilter($config, $request); + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; + self::processFilter($config, $request); } @@ -336,23 +322,17 @@ class Test_Core_Auth_Process_AttributeAlter extends TestCase */ public function testIncompleteConfig5() { - $config = array( + $config = [ 'subject' => 'test', 'pattern' => '/wrong/', 'replacement' => null, - ); + ]; - $request = array( - 'Attributes' => array( - 'test' => array('somethingiswrong'), - ), - ); - - $request = array( - 'Attributes' => array( - 'eduPersonAffiliation' => array('emperess', 'emperor'), - ), - ); + $request = [ + 'Attributes' => [ + 'eduPersonAffiliation' => ['emperess', 'emperor'], + ], + ]; $result = self::processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/Process/AttributeCopyTest.php b/tests/modules/core/lib/Auth/Process/AttributeCopyTest.php index 52f03613cffebdcc1eee49bf3b4b6504d0d3aa59..538bd10e09464b607fa351ba0e2e2770485cf2e6 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeCopyTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeCopyTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeCopy filter. */ -class Test_Core_Auth_Process_AttributeCopy extends TestCase +class AttributeCopyTest extends TestCase { /** @@ -17,7 +19,7 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeCopy($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeCopy($config, null); $filter->process($request); return $request; } @@ -27,17 +29,17 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'test' => 'testnew', - ); - $request = array( - 'Attributes' => array('test' => array('AAP')), - ); + ]; + $request = [ + 'Attributes' => ['test' => ['AAP']], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); $this->assertArrayHasKey('testnew', $attributes); - $this->assertEquals($attributes['testnew'], array('AAP')); + $this->assertEquals($attributes['testnew'], ['AAP']); } /** @@ -45,19 +47,19 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testArray() { - $config = array( - 'test' => array('new1','new2'), - ); - $request = array( - 'Attributes' => array('test' => array('AAP')), - ); + $config = [ + 'test' => ['new1', 'new2'], + ]; + $request = [ + 'Attributes' => ['test' => ['AAP']], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('test', $attributes); $this->assertArrayHasKey('new1', $attributes); $this->assertArrayHasKey('new2', $attributes); - $this->assertEquals($attributes['new1'], array('AAP')); - $this->assertEquals($attributes['new2'], array('AAP')); + $this->assertEquals($attributes['new1'], ['AAP']); + $this->assertEquals($attributes['new2'], ['AAP']); } /** @@ -65,24 +67,24 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testExistingNotModified() { - $config = array( + $config = [ 'test' => 'testnew', - ); - $request = array( - 'Attributes' => array( - 'test' => array('AAP'), - 'original1' => array('original_value1'), - 'original2' => array('original_value2'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'test' => ['AAP'], + 'original1' => ['original_value1'], + 'original2' => ['original_value2'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('testnew', $attributes); - $this->assertEquals($attributes['test'], array('AAP')); + $this->assertEquals($attributes['test'], ['AAP']); $this->assertArrayHasKey('original1', $attributes); - $this->assertEquals($attributes['original1'], array('original_value1')); + $this->assertEquals($attributes['original1'], ['original_value1']); $this->assertArrayHasKey('original2', $attributes); - $this->assertEquals($attributes['original2'], array('original_value2')); + $this->assertEquals($attributes['original2'], ['original_value2']); } /** @@ -90,19 +92,19 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testCopyMultiple() { - $config = array( + $config = [ 'test1' => 'new1', 'test2' => 'new2', - ); - $request = array( - 'Attributes' => array('test1' => array('val1'), 'test2' => array('val2.1','val2.2')), - ); + ]; + $request = [ + 'Attributes' => ['test1' => ['val1'], 'test2' => ['val2.1', 'val2.2']], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('new1', $attributes); - $this->assertEquals($attributes['new1'], array('val1')); + $this->assertEquals($attributes['new1'], ['val1']); $this->assertArrayHasKey('new2', $attributes); - $this->assertEquals($attributes['new2'], array('val2.1','val2.2')); + $this->assertEquals($attributes['new2'], ['val2.1', 'val2.2']); } /** @@ -110,18 +112,18 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testCopyClash() { - $config = array( + $config = [ 'test' => 'new1', - ); - $request = array( - 'Attributes' => array( - 'test' => array('testvalue1'), - 'new1' => array('newvalue1'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'test' => ['testvalue1'], + 'new1' => ['newvalue1'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['new1'], array('testvalue1')); + $this->assertEquals($attributes['new1'], ['testvalue1']); } /** @@ -131,15 +133,15 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testWrongAttributeName() { - $config = array( - array('value2'), - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); - $result = self::processFilter($config, $request); + $config = [ + ['value2'], + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; + self::processFilter($config, $request); } /** @@ -149,14 +151,14 @@ class Test_Core_Auth_Process_AttributeCopy extends TestCase */ public function testWrongAttributeValue() { - $config = array( + $config = [ 'test' => 100, - ); - $request = array( - 'Attributes' => array( - 'test' => array('value1'), - ), - ); - $result = self::processFilter($config, $request); + ]; + $request = [ + 'Attributes' => [ + 'test' => ['value1'], + ], + ]; + self::processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php index fc55240f9f9e1b88cf71390973b06eb773346b98..01e2a6bee53060c72a1c9a3aae39e8a1b82b1267 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeLimit filter. */ -class Test_Core_Auth_Process_AttributeLimitTest extends TestCase +class AttributeLimitTest extends TestCase { /** * Helper function to run the filter with a given configuration. @@ -16,7 +18,7 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeLimit($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeLimit($config, null); $filter->process($request); return $request; } @@ -26,23 +28,23 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testIdPAttrs() { - $config = array( + $config = [ 'cn', 'mail' - ); - - $request = array( - 'Attributes' => array( - 'eduPersonTargetedID' => array('eptid@example.org'), - 'eduPersonAffiliation' => array('member'), - 'cn' => array('user name'), - 'mail' => array('user@example.org'), - ), - 'Destination' => array( - ), - 'Source' => array( - 'attributes' => array('cn','mail'), - ), - ); + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonTargetedID' => ['eptid@example.org'], + 'eduPersonAffiliation' => ['member'], + 'cn' => ['user name'], + 'mail' => ['user@example.org'], + ], + 'Destination' => [ + ], + 'Source' => [ + 'attributes' => ['cn', 'mail'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; @@ -52,10 +54,10 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); $this->assertCount(2, $attributes); - $config = array( + $config = [ 'cn', - 'default' => TRUE, - ); + 'default' => true, + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; @@ -64,8 +66,6 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase $this->assertArrayNotHasKey('eduPersonTargetedID', $attributes); $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); $this->assertCount(2, $attributes); - - } /** @@ -73,22 +73,22 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testNULLMetadataAttrs() { - $config = array( + $config = [ 'cn', 'mail' - ); - - $request = array( - 'Attributes' => array( - 'eduPersonTargetedID' => array('eptid@example.org'), - 'eduPersonAffiliation' => array('member'), - 'cn' => array('user name'), - 'mail' => array('user@example.org'), - ), - 'Destination' => array( - ), - 'Source' => array( - ), - ); + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonTargetedID' => ['eptid@example.org'], + 'eduPersonAffiliation' => ['member'], + 'cn' => ['user name'], + 'mail' => ['user@example.org'], + ], + 'Destination' => [ + ], + 'Source' => [ + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; @@ -98,10 +98,10 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); $this->assertCount(2, $attributes); - $config = array( + $config = [ 'cn', - 'default' => TRUE, - ); + 'default' => true, + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; @@ -111,8 +111,8 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase $this->assertArrayNotHasKey('eduPersonAffiliation', $attributes); $this->assertCount(1, $attributes); - $config = array( - ); + $config = [ + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; @@ -131,19 +131,19 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase public static function setUpBeforeClass() { - self::$request = array( - 'Attributes' => array( - 'eduPersonTargetedID' => array('eptid@example.org'), - 'eduPersonAffiliation' => array('member'), - 'cn' => array('common name'), - 'mail' => array('user@example.org'), - ), - 'Destination' => array( - 'attributes' => array('cn','mail'), - ), - 'Source' => array( - ), - ); + self::$request = [ + 'Attributes' => [ + 'eduPersonTargetedID' => ['eptid@example.org'], + 'eduPersonAffiliation' => ['member'], + 'cn' => ['common name'], + 'mail' => ['user@example.org'], + ], + 'Destination' => [ + 'attributes' => ['cn', 'mail'], + ], + 'Source' => [ + ], + ]; } /** @@ -151,9 +151,9 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'cn', 'mail' - ); + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; @@ -167,9 +167,9 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testDefaultWithMetadata() { - $config = array( - 'default' => TRUE, - ); + $config = [ + 'default' => true, + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; @@ -183,10 +183,10 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testDefaultWithAttrs() { - $config = array( - 'default' => TRUE, + $config = [ + 'default' => true, 'eduPersonTargetedID', 'eduPersonAffiliation', - ); + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; @@ -204,11 +204,11 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testInvalidConfig() { - $config = array( - 'invalidArg' => TRUE, - ); + $config = [ + 'invalidArg' => true, + ]; - $result = self::processFilter($config, self::$request); + self::processFilter($config, self::$request); } /** @@ -218,11 +218,11 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testInvalidAttributeName() { - $config = array( - null - ); + $config = [ + null + ]; - $result = self::processFilter($config, self::$request); + self::processFilter($config, self::$request); } @@ -231,48 +231,48 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testMatchAttributeValues() { - $config = array( - 'eduPersonAffiliation' => array('member') - ); + $config = [ + 'eduPersonAffiliation' => ['member'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); - $config = array( - 'eduPersonAffiliation' => array('member','staff') - ); + $config = [ + 'eduPersonAffiliation' => ['member', 'staff'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); - $config = array( - 'eduPersonAffiliation' => array('student') - ); + $config = [ + 'eduPersonAffiliation' => ['student'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); - $config = array( - 'eduPersonAffiliation' => array('student','staff') - ); + $config = [ + 'eduPersonAffiliation' => ['student', 'staff'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); } - public function testBadOptionsNotTreatedAsValidValues() { - + public function testBadOptionsNotTreatedAsValidValues() + { // Ensure really misconfigured ignoreCase and regex options are not interpretted as valid valus - $config = array( - 'eduPersonAffiliation' => array('ignoreCase' => 'member', 'nomatch'), - 'mail' => array('regex' => 'user@example.org', 'nomatch') - ); + $config = [ + 'eduPersonAffiliation' => ['ignoreCase' => 'member', 'nomatch'], + 'mail' => ['regex' => 'user@example.org', 'nomatch'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); @@ -282,17 +282,18 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase * Verify that the true value for ignoreCase doesn't get converted into a string ('1') by * php and matched against an attribute value of '1' */ - public function testThatIgnoreCaseOptionNotMatchBooleanAsStringValue() { - $config = array( - 'someAttribute' => array('ignoreCase' => true, 'someValue') - ); + public function testThatIgnoreCaseOptionNotMatchBooleanAsStringValue() + { + $config = [ + 'someAttribute' => ['ignoreCase' => true, 'someValue'] + ]; - $request = array( - 'Attributes' => array( - 'someAttribute' => array('1'), //boolean true as a string + $request = [ + 'Attributes' => [ + 'someAttribute' => ['1'], //boolean true as a string - ), - ); + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); @@ -303,36 +304,36 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testMatchAttributeValuesIgnoreCase() { - $config = array( - 'eduPersonAffiliation' => array('ignoreCase' => true, 'meMber') - ); + $config = [ + 'eduPersonAffiliation' => ['ignoreCase' => true, 'meMber'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); - $config = array( - 'eduPersonAffiliation' => array('ignoreCase' => true, 'membeR','sTaff') - ); + $config = [ + 'eduPersonAffiliation' => ['ignoreCase' => true, 'membeR', 'sTaff'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); - $config = array( - 'eduPersonAffiliation' => array('ignoreCase' => true, 'Student') - ); + $config = [ + 'eduPersonAffiliation' => ['ignoreCase' => true, 'Student'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); - $config = array( - 'eduPersonAffiliation' => array('ignoreCase' => true, 'studeNt','sTaff') - ); + $config = [ + 'eduPersonAffiliation' => ['ignoreCase' => true, 'studeNt', 'sTaff'] + ]; $result = self::processFilter($config, self::$request); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); @@ -344,93 +345,93 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase public function testMatchAttributeValuesRegex() { // SSP Logger requires a configuration to be set. - \SimpleSAML\Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $state = self::$request; - $state['Attributes']['eduPersonEntitlement'] = array( + $state['Attributes']['eduPersonEntitlement'] = [ 'urn:mace:example.terena.org:tcs:personal-user', 'urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100', '1' //boolean true as a string - ); + ]; - $config = array( - 'eduPersonEntitlement' => array( + $config = [ + 'eduPersonEntitlement' => [ 'regex' => true, '/^urn:x-surfnet:surf/' - ) - ); + ] + ]; $result = self::processFilter($config, $state); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonEntitlement', $attributes); $this->assertEquals( - array('urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'), + ['urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'], $attributes['eduPersonEntitlement'] ); // Matching multiple lines shouldn't duplicate the attribute - $config = array( - 'eduPersonEntitlement' => array( + $config = [ + 'eduPersonEntitlement' => [ 'regex' => true, '/urn:x-surfnet:surf/', '/urn:x-surfnet/' - ) - ); + ] + ]; $result = self::processFilter($config, $state); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonEntitlement', $attributes); $this->assertEquals( - array('urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'), + ['urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'], $attributes['eduPersonEntitlement'] ); // Invalid and no-match regex expressions should not stop a valid regex from matching - $config = array( - 'eduPersonEntitlement' => array( + $config = [ + 'eduPersonEntitlement' => [ 'regex' => true, '/urn:mace:example.terena.org:tcs:no-match/', '$invalidRegex[', '/^URN:x-surf.*SURF.*n$/i' - ) - ); + ] + ]; $result = self::processFilter($config, $state); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonEntitlement', $attributes); $this->assertEquals( - array('urn:x-surfnet:surfdomeinen.nl:role:dnsadmin'), + ['urn:x-surfnet:surfdomeinen.nl:role:dnsadmin'], $attributes['eduPersonEntitlement'] ); // No matches should remove attribute - $config = array( - 'eduPersonEntitlement' => array( + $config = [ + 'eduPersonEntitlement' => [ 'regex' => true, '/urn:x-no-match/' - ) - ); + ] + ]; $result = self::processFilter($config, $state); $attributes = $result['Attributes']; $this->assertCount(0, $attributes); // A regex that matches an input value multiple times should work. - $config = array( - 'eduPersonEntitlement' => array( + $config = [ + 'eduPersonEntitlement' => [ 'regex' => true, '/surf/' - ) - ); + ] + ]; $result = self::processFilter($config, $state); $attributes = $result['Attributes']; $this->assertCount(1, $attributes); $this->assertArrayHasKey('eduPersonEntitlement', $attributes); $this->assertEquals( - array('urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'), + ['urn:x-surfnet:surfdomeinen.nl:role:dnsadmin', 'urn:x-surfnet:surf.nl:surfdrive:quota:100'], $attributes['eduPersonEntitlement'] ); } @@ -445,26 +446,26 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testMatchAttributeValuesNotArray() { - $config = array( - ); - - $request = array( - 'Attributes' => array( - 'eduPersonTargetedID' => array('eptid@example.org'), - 'eduPersonAffiliation' => array('member'), - 'cn' => array('user name'), - 'mail' => array('user@example.org'), - 'discardme' => array('somethingiswrong'), - ), - 'Destination' => array( - 'attributes' => array('eduPersonAffiliation' => 'student'), - ), - 'Source' => array( - ), - ); - - - $result = self::processFilter($config, $request); + $config = [ + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonTargetedID' => ['eptid@example.org'], + 'eduPersonAffiliation' => ['member'], + 'cn' => ['user name'], + 'mail' => ['user@example.org'], + 'discardme' => ['somethingiswrong'], + ], + 'Destination' => [ + 'attributes' => ['eduPersonAffiliation' => 'student'], + ], + 'Source' => [ + ], + ]; + + + self::processFilter($config, $request); } /** @@ -472,24 +473,24 @@ class Test_Core_Auth_Process_AttributeLimitTest extends TestCase */ public function testNoIntersection() { - $config = array( - 'default' => TRUE, - ); - - $request = array( - 'Attributes' => array( - 'eduPersonTargetedID' => array('eptid@example.org'), - 'eduPersonAffiliation' => array('member'), - 'cn' => array('user name'), - 'mail' => array('user@example.org'), - 'discardme' => array('somethingiswrong'), - ), - 'Destination' => array( - 'attributes' => array('urn:oid:1.2.840.113549.1.9.1'), - ), - 'Source' => array( - ), - ); + $config = [ + 'default' => true, + ]; + + $request = [ + 'Attributes' => [ + 'eduPersonTargetedID' => ['eptid@example.org'], + 'eduPersonAffiliation' => ['member'], + 'cn' => ['user name'], + 'mail' => ['user@example.org'], + 'discardme' => ['somethingiswrong'], + ], + 'Destination' => [ + 'attributes' => ['urn:oid:1.2.840.113549.1.9.1'], + ], + 'Source' => [ + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; diff --git a/tests/modules/core/lib/Auth/Process/AttributeMapTest.php b/tests/modules/core/lib/Auth/Process/AttributeMapTest.php index 5c50f59bd533ddad04c7299028717dae6ade71eb..7a14dc76c4a944c7dac0db8033431a998c9d87e4 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeMapTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeMapTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeMap filter. */ -class Test_Core_Auth_Process_AttributeMap extends TestCase +class AttributeMapTest extends TestCase { /** * Helper function to run the filter with a given configuration. diff --git a/tests/modules/core/lib/Auth/Process/AttributeRealmTest.php b/tests/modules/core/lib/Auth/Process/AttributeRealmTest.php index 75ea9441a31e7a4b78db68cbc45e4bea17030b0f..f7d0ef60637720f0041bd85d1e4d0b9e8bfcf9ac 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeRealmTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeRealmTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:AttributeRealm filter. */ -class Test_Core_Auth_Process_AttributeRealm extends TestCase +class AttributeRealmTest extends TestCase { /** @@ -17,7 +19,7 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeRealm($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\AttributeRealm($config, null); $filter->process($request); return $request; } @@ -27,16 +29,16 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testBasic() { - $config = array( - ); - $request = array( - 'Attributes' => array(), + $config = [ + ]; + $request = [ + 'Attributes' => [], 'UserID' => 'user2@example.org', - ); + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('realm', $attributes); - $this->assertEquals($attributes['realm'], array('example.org')); + $this->assertEquals($attributes['realm'], ['example.org']); } /** @@ -46,12 +48,12 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testNoUserID() { - $config = array( - ); - $request = array( - 'Attributes' => array(), - ); - $result = self::processFilter($config, $request); + $config = [ + ]; + $request = [ + 'Attributes' => [], + ]; + self::processFilter($config, $request); } /** @@ -59,21 +61,21 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testAttributeNameConfig() { - $config = array( + $config = [ 'attributename' => 'schacHomeOrganization', - ); - $request = array( - 'Attributes' => array( + ]; + $request = [ + 'Attributes' => [ 'displayName' => 'Joe User', 'schacGender' => 9, - ), + ], 'UserID' => 'user2@example.org', - ); + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('schacHomeOrganization', $attributes); $this->assertArrayHasKey('displayName', $attributes); - $this->assertEquals($attributes['schacHomeOrganization'], array('example.org')); + $this->assertEquals($attributes['schacHomeOrganization'], ['example.org']); } /** @@ -81,21 +83,21 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testTargetAttributeOverwritten() { - $config = array( + $config = [ 'attributename' => 'schacHomeOrganization', - ); - $request = array( - 'Attributes' => array( + ]; + $request = [ + 'Attributes' => [ 'displayName' => 'Joe User', 'schacGender' => 9, 'schacHomeOrganization' => 'example.com', - ), + ], 'UserID' => 'user2@example.org', - ); + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('schacHomeOrganization', $attributes); - $this->assertEquals($attributes['schacHomeOrganization'], array('example.org')); + $this->assertEquals($attributes['schacHomeOrganization'], ['example.org']); } /** @@ -103,13 +105,13 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testNoAtisNoOp() { - $config = array(); - $request = array( - 'Attributes' => array( + $config = []; + $request = [ + 'Attributes' => [ 'displayName' => 'Joe User', - ), + ], 'UserID' => 'user2', - ); + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('realm', $attributes); @@ -120,13 +122,13 @@ class Test_Core_Auth_Process_AttributeRealm extends TestCase */ public function testMultiAtisNoOp() { - $config = array(); - $request = array( - 'Attributes' => array( + $config = []; + $request = [ + 'Attributes' => [ 'displayName' => 'Joe User', - ), + ], 'UserID' => 'user2@home@example.org', - ); + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('realm', $attributes); diff --git a/tests/modules/core/lib/Auth/Process/AttributeValueMapTest.php b/tests/modules/core/lib/Auth/Process/AttributeValueMapTest.php index a6d601f06bfa821ab68f514fd471d1f37a8a4a47..ddf07427342248d0bd30e86c8374cfbe9c44b359 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeValueMapTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeValueMapTest.php @@ -34,26 +34,26 @@ class AttributeValueMapTest extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'sourceattribute' => 'memberOf', 'targetattribute' => 'eduPersonAffiliation', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', 'otherGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('memberOf', $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); } @@ -65,27 +65,27 @@ class AttributeValueMapTest extends TestCase */ public function testNoDuplicates() { - $config = array( + $config = [ 'sourceattribute' => 'memberOf', 'targetattribute' => 'eduPersonAffiliation', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', 'otherGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup', 'otherGroup'), - 'eduPersonAffiliation' => array('member', 'someValue'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup', 'otherGroup'], + 'eduPersonAffiliation' => ['member', 'someValue'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('memberOf', $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member', 'someValue')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member', 'someValue']); } @@ -97,28 +97,28 @@ class AttributeValueMapTest extends TestCase */ public function testReplace() { - $config = array( + $config = [ 'sourceattribute' => 'memberOf', 'targetattribute' => 'eduPersonAffiliation', '%replace', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', 'otherGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - 'eduPersonAffiliation' => array('someValue'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + 'eduPersonAffiliation' => ['someValue'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayNotHasKey('memberOf', $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['member']); } @@ -130,28 +130,28 @@ class AttributeValueMapTest extends TestCase */ public function testKeep() { - $config = array( + $config = [ 'sourceattribute' => 'memberOf', 'targetattribute' => 'eduPersonAffiliation', '%keep', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', 'otherGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - 'eduPersonAffiliation' => array('someValue'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + 'eduPersonAffiliation' => ['someValue'], + ], + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('memberOf', $attributes); $this->assertArrayHasKey('eduPersonAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonAffiliation'], array('someValue','member')); + $this->assertEquals($attributes['eduPersonAffiliation'], ['someValue', 'member']); } @@ -163,21 +163,21 @@ class AttributeValueMapTest extends TestCase */ public function testUnknownFlag() { - $config = array( + $config = [ '%test', 'targetattribute' => 'affiliation', 'sourceattribute' => 'memberOf', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; $result = self::processFilter($config, $request); $this->assertArrayHasKey('affiliation', $result['Attributes']); $this->assertArrayNotHasKey('memberOf', $result['Attributes']); @@ -195,19 +195,19 @@ class AttributeValueMapTest extends TestCase */ public function testMissingSourceAttribute() { - $config = array( + $config = [ 'targetattribute' => 'affiliation', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; self::processFilter($config, $request); } @@ -222,19 +222,19 @@ class AttributeValueMapTest extends TestCase */ public function testMissingTargetAttribute() { - $config = array( + $config = [ 'sourceattribute' => 'memberOf', - 'values' => array( - 'member' => array( + 'values' => [ + 'member' => [ 'theGroup', - ), - ), - ); - $request = array( - 'Attributes' => array( - 'memberOf' => array('theGroup'), - ), - ); + ], + ], + ]; + $request = [ + 'Attributes' => [ + 'memberOf' => ['theGroup'], + ], + ]; self::processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php index 0c04b777b2dcf9f54c6776a06a5a32828eb59280..533bb9f1187e1e52646e847376598416cf65d48e 100644 --- a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php +++ b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php @@ -1,4 +1,7 @@ <?php + +namespace SimpleSAML\Test\Module\core\Auth\Process; + // Alias the PHPUnit 6.0 ancestor if available, else fall back to legacy ancestor if (class_exists('\PHPUnit\Framework\TestCase', true) and !class_exists('\PHPUnit_Framework_TestCase', true)) { class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase', true); @@ -7,7 +10,7 @@ if (class_exists('\PHPUnit\Framework\TestCase', true) and !class_exists('\PHPUni /** * Test for the core:CardinalitySingle filter. */ -class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_TestCase +class CardinalitySingleTest extends \PHPUnit_Framework_TestCase { private $http; @@ -29,9 +32,9 @@ class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_Te protected function setUp() { - \SimpleSAML\Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $this->http = $this->getMockBuilder('SimpleSAML\Utils\HTTPAdapter') - ->setMethods(array('redirectTrustedURL')) + ->setMethods(['redirectTrustedURL']) ->getMock(); } @@ -40,17 +43,17 @@ class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_Te */ public function testSingleValuedUnchanged() { - $config = array( - 'singleValued' => array('eduPersonPrincipalName') - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com'), - ), - ); + $config = [ + 'singleValued' => ['eduPersonPrincipalName'] + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('eduPersonPrincipalName' => array('joe@example.com')); + $expectedData = ['eduPersonPrincipalName' => ['joe@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -59,33 +62,33 @@ class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_Te */ public function testFirstValue() { - $config = array( - 'firstValue' => array('eduPersonPrincipalName') - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com', 'bob@example.net'), - ), - ); + $config = [ + 'firstValue' => ['eduPersonPrincipalName'] + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com', 'bob@example.net'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('eduPersonPrincipalName' => array('joe@example.com')); + $expectedData = ['eduPersonPrincipalName' => ['joe@example.com']]; $this->assertEquals($expectedData, $attributes, "Only first value should be returned"); } public function testFirstValueUnchanged() { - $config = array( - 'firstValue' => array('eduPersonPrincipalName') - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com'), - ), - ); + $config = [ + 'firstValue' => ['eduPersonPrincipalName'] + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('eduPersonPrincipalName' => array('joe@example.com')); + $expectedData = ['eduPersonPrincipalName' => ['joe@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -94,35 +97,35 @@ class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_Te */ public function testFlatten() { - $config = array( - 'flatten' => array('eduPersonPrincipalName'), + $config = [ + 'flatten' => ['eduPersonPrincipalName'], 'flattenWith' => '|', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com', 'bob@example.net'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com', 'bob@example.net'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('eduPersonPrincipalName' => array('joe@example.com|bob@example.net')); + $expectedData = ['eduPersonPrincipalName' => ['joe@example.com|bob@example.net']]; $this->assertEquals($expectedData, $attributes, "Flattened string should be returned"); } public function testFlattenUnchanged() { - $config = array( - 'flatten' => array('eduPersonPrincipalName'), + $config = [ + 'flatten' => ['eduPersonPrincipalName'], 'flattenWith' => '|', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com'), - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('eduPersonPrincipalName' => array('joe@example.com')); + $expectedData = ['eduPersonPrincipalName' => ['joe@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -131,14 +134,14 @@ class Test_Core_Auth_Process_CardinalitySingleTest extends \PHPUnit_Framework_Te */ public function testAbort() { - $config = array( - 'singleValued' => array('eduPersonPrincipalName'), - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('joe@example.com', 'bob@example.net'), - ), - ); + $config = [ + 'singleValued' => ['eduPersonPrincipalName'], + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['joe@example.com', 'bob@example.net'], + ], + ]; $this->http->expects($this->once()) ->method('redirectTrustedURL'); diff --git a/tests/modules/core/lib/Auth/Process/CardinalityTest.php b/tests/modules/core/lib/Auth/Process/CardinalityTest.php index 8d94754445a17de1a02691f11daff701fe0e9ca2..1dec455bb82065eac4257f6d461fb9f2587aea38 100644 --- a/tests/modules/core/lib/Auth/Process/CardinalityTest.php +++ b/tests/modules/core/lib/Auth/Process/CardinalityTest.php @@ -1,5 +1,7 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + // Alias the PHPUnit 6.0 ancestor if available, else fall back to legacy ancestor if (class_exists('\PHPUnit\Framework\TestCase', true) and !class_exists('\PHPUnit_Framework_TestCase', true)) { class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase', true); @@ -8,7 +10,7 @@ if (class_exists('\PHPUnit\Framework\TestCase', true) and !class_exists('\PHPUni /** * Test for the core:Cardinality filter. */ -class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase +class CardinalityTest extends \PHPUnit_Framework_TestCase { private $http; @@ -30,9 +32,9 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase protected function setUp() { - \SimpleSAML\Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $this->http = $this->getMockBuilder('SimpleSAML\Utils\HTTPAdapter') - ->setMethods(array('redirectTrustedURL')) + ->setMethods(['redirectTrustedURL']) ->getMock(); } @@ -41,17 +43,17 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMinNoMax() { - $config = array( - 'mail' => array('min' => 1), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => 1], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('mail' => array('joe@example.com', 'bob@example.com')); + $expectedData = ['mail' => ['joe@example.com', 'bob@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -60,17 +62,17 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMaxNoMin() { - $config = array( - 'mail' => array('max' => 2), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['max' => 2], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('mail' => array('joe@example.com', 'bob@example.com')); + $expectedData = ['mail' => ['joe@example.com', 'bob@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -79,17 +81,17 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMaxMin() { - $config = array( - 'mail' => array('min' => 1, 'max' => 2), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => 1, 'max' => 2], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $attributes = $result['Attributes']; - $expectedData = array('mail' => array('joe@example.com', 'bob@example.com')); + $expectedData = ['mail' => ['joe@example.com', 'bob@example.com']]; $this->assertEquals($expectedData, $attributes, "Assertion values should not have changed"); } @@ -98,14 +100,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMaxOutOfBounds() { - $config = array( - 'mail' => array('max' => 2), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com', 'fred@example.com'), - ), - ); + $config = [ + 'mail' => ['max' => 2], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com', 'fred@example.com'], + ], + ]; $this->http->expects($this->once()) ->method('redirectTrustedURL'); @@ -118,14 +120,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMinOutOfBounds() { - $config = array( - 'mail' => array('min' => 3), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => 3], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $this->http->expects($this->once()) ->method('redirectTrustedURL'); @@ -138,12 +140,12 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMissingAttribute() { - $config = array( - 'mail' => array('min' => 1), - ); - $request = array( - 'Attributes' => array( ), - ); + $config = [ + 'mail' => ['min' => 1], + ]; + $request = [ + 'Attributes' => [], + ]; $this->http->expects($this->once()) ->method('redirectTrustedURL'); @@ -162,14 +164,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMinInvalid() { - $config = array( - 'mail' => array('min' => false), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => false], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $this->processFilter($config, $request); } @@ -180,14 +182,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMinNegative() { - $config = array( - 'mail' => array('min' => -1), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => -1], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $this->processFilter($config, $request); } @@ -198,14 +200,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMaxInvalid() { - $config = array( - 'mail' => array('max' => false), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['max' => false], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $this->processFilter($config, $request); } @@ -216,14 +218,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testMinGreaterThanMax() { - $config = array( - 'mail' => array('min' => 2, 'max' => 1), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); + $config = [ + 'mail' => ['min' => 2, 'max' => 1], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; $this->processFilter($config, $request); } @@ -234,14 +236,14 @@ class Test_Core_Auth_Process_CardinalityTest extends \PHPUnit_Framework_TestCase */ public function testInvalidAttributeName() { - $config = array( - array('min' => 2, 'max' => 1), - ); - $request = array( - 'Attributes' => array( - 'mail' => array('joe@example.com', 'bob@example.com'), - ), - ); - self::processFilter($config, $request); + $config = [ + ['min' => 2, 'max' => 1], + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['joe@example.com', 'bob@example.com'], + ], + ]; + $this->processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/Process/PHPTest.php b/tests/modules/core/lib/Auth/Process/PHPTest.php index c7331397389ddb73748e6a2b78bab8e243ad6f03..e37bee1adb2bd60098c1c04ed4ef789e55526a7e 100644 --- a/tests/modules/core/lib/Auth/Process/PHPTest.php +++ b/tests/modules/core/lib/Auth/Process/PHPTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:PHP filter. */ -class Test_Core_Auth_Process_PHP extends TestCase +class PHPTest extends TestCase { /** * Helper function to run the filter with a given configuration. @@ -28,7 +30,7 @@ class Test_Core_Auth_Process_PHP extends TestCase */ public function testInvalidConfiguration() { - $config = array(); + $config = []; $this->setExpectedException( "\SimpleSAML\Error\Exception", "core:PHP: missing mandatory configuration option 'code'." @@ -42,17 +44,17 @@ class Test_Core_Auth_Process_PHP extends TestCase */ public function testCodeDefined() { - $config = array( + $config = [ 'code' => ' $attributes["key"] = array("value"); ', - ); - $request = array('Attributes' => array()); - $expected = array( - 'Attributes' => array( - 'key' => array('value'), - ), - ); + ]; + $request = ['Attributes' => []]; + $expected = [ + 'Attributes' => [ + 'key' => ['value'], + ], + ]; $this->assertEquals($expected, $this->processFilter($config, $request)); } @@ -62,25 +64,25 @@ class Test_Core_Auth_Process_PHP extends TestCase */ public function testPreserveIncomingAttributes() { - $config = array( + $config = [ 'code' => ' $attributes["orig2"] = array("value0"); ', - ); - $request = array( - 'Attributes' => array( - 'orig1' => array('value1', 'value2'), - 'orig2' => array('value3'), - 'orig3' => array('value4') - ) - ); - $expected = array( - 'Attributes' => array( - 'orig1' => array('value1', 'value2'), - 'orig2' => array('value0'), - 'orig3' => array('value4') - ), - ); + ]; + $request = [ + 'Attributes' => [ + 'orig1' => ['value1', 'value2'], + 'orig2' => ['value3'], + 'orig3' => ['value4'] + ] + ]; + $expected = [ + 'Attributes' => [ + 'orig1' => ['value1', 'value2'], + 'orig2' => ['value0'], + 'orig3' => ['value4'] + ], + ]; $this->assertEquals($expected, $this->processFilter($config, $request)); } @@ -91,19 +93,19 @@ class Test_Core_Auth_Process_PHP extends TestCase */ public function testThrowExceptionFromFilter() { - $config = array( + $config = [ 'code' => ' if (empty($attributes["uid"])) { throw new Exception("Missing uid attribute."); } $attributes["uid"][0] = strtoupper($attributes["uid"][0]); ', - ); - $request = array( - 'Attributes' => array( - 'orig1' => array('value1', 'value2'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'orig1' => ['value1', 'value2'], + ] + ]; $this->setExpectedException( "Exception", @@ -111,4 +113,42 @@ class Test_Core_Auth_Process_PHP extends TestCase ); $this->processFilter($config, $request); } + + /** + * Check that the entire state can be adjusted. + */ + public function testStateCanBeModified() + { + + $config = array( + 'code' => ' + $attributes["orig2"] = array("value0"); + $state["newKey"] = ["newValue"]; + $state["Destination"]["attributes"][] = "givenName"; + ', + ); + $request = array( + 'Attributes' => array( + 'orig1' => array('value1', 'value2'), + 'orig2' => array('value3'), + 'orig3' => array('value4') + ), + 'Destination' => [ + 'attributes' => ['eduPersonPrincipalName'] + ], + ); + $expected = array( + 'Attributes' => array( + 'orig1' => array('value1', 'value2'), + 'orig2' => array('value0'), + 'orig3' => array('value4') + ), + 'Destination' => [ + 'attributes' => ['eduPersonPrincipalName', 'givenName'] + ], + 'newKey' => ['newValue'] + ); + + $this->assertEquals($expected, $this->processFilter($config, $request)); + } } diff --git a/tests/modules/core/lib/Auth/Process/ScopeAttributeTest.php b/tests/modules/core/lib/Auth/Process/ScopeAttributeTest.php index 843492678a7de14a8a8b1943a2d02c351e4af365..52b29234c3029dcafda913c7673a8c6217395731 100644 --- a/tests/modules/core/lib/Auth/Process/ScopeAttributeTest.php +++ b/tests/modules/core/lib/Auth/Process/ScopeAttributeTest.php @@ -1,13 +1,14 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:ScopeAttribute filter. */ -class Test_Core_Auth_Process_ScopeAttribute extends TestCase +class ScopeAttributeTest extends TestCase { - /* * Helper function to run the filter with a given configuration. * @@ -17,7 +18,7 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\ScopeAttribute($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\ScopeAttribute($config, null); $filter->process($request); return $request; } @@ -27,21 +28,21 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - 'eduPersonAffiliation' => array('member'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + 'eduPersonAffiliation' => ['member'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('eduPersonScopedAffiliation', $attributes); - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('member@example.com')); + $this->assertEquals($attributes['eduPersonScopedAffiliation'], ['member@example.com']); } /* @@ -49,21 +50,24 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testNoOverwrite() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - 'eduPersonAffiliation' => array('member'), - 'eduPersonScopedAffiliation' => array('library-walk-in@example.edu'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + 'eduPersonAffiliation' => ['member'], + 'eduPersonScopedAffiliation' => ['library-walk-in@example.edu'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('library-walk-in@example.edu', 'member@example.com')); + $this->assertEquals( + $attributes['eduPersonScopedAffiliation'], + ['library-walk-in@example.edu', 'member@example.com'] + ); } /* @@ -71,21 +75,21 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testNoDuplication() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - 'eduPersonAffiliation' => array('member'), - 'eduPersonScopedAffiliation' => array('member@example.com'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + 'eduPersonAffiliation' => ['member'], + 'eduPersonScopedAffiliation' => ['member@example.com'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('member@example.com')); + $this->assertEquals($attributes['eduPersonScopedAffiliation'], ['member@example.com']); } @@ -94,18 +98,18 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testNoSourceAttribute() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'mail' => array('j.doe@example.edu', 'john@example.org'), - 'eduPersonAffiliation' => array('member'), - 'eduPersonScopedAffiliation' => array('library-walk-in@example.edu'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['j.doe@example.edu', 'john@example.org'], + 'eduPersonAffiliation' => ['member'], + 'eduPersonScopedAffiliation' => ['library-walk-in@example.edu'], + ] + ]; $result = self::processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); } @@ -115,18 +119,18 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testNoScopeAttribute() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'mail' => array('j.doe@example.edu', 'john@example.org'), - 'eduPersonScopedAffiliation' => array('library-walk-in@example.edu'), - 'eduPersonPrincipalName' => array('jdoe@example.com'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['j.doe@example.edu', 'john@example.org'], + 'eduPersonScopedAffiliation' => ['library-walk-in@example.edu'], + 'eduPersonPrincipalName' => ['jdoe@example.com'], + ] + ]; $result = self::processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); } @@ -136,20 +140,20 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testMultiAt() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('john@doe@example.com'), - 'eduPersonAffiliation' => array('member'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['john@doe@example.com'], + 'eduPersonAffiliation' => ['member'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('member@doe@example.com')); + $this->assertEquals($attributes['eduPersonScopedAffiliation'], ['member@doe@example.com']); } /* @@ -157,20 +161,23 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testMultivaluedSource() { - $config = array( + $config = [ 'scopeAttribute' => 'eduPersonPrincipalName', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - 'eduPersonAffiliation' => array('member','staff','faculty'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + 'eduPersonAffiliation' => ['member', 'staff', 'faculty'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('member@example.com','staff@example.com','faculty@example.com')); + $this->assertEquals( + $attributes['eduPersonScopedAffiliation'], + ['member@example.com', 'staff@example.com', 'faculty@example.com'] + ); } /* @@ -178,42 +185,42 @@ class Test_Core_Auth_Process_ScopeAttribute extends TestCase */ public function testNoAt() { - $config = array( + $config = [ 'scopeAttribute' => 'schacHomeOrganization', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - ); - $request = array( - 'Attributes' => array( - 'schacHomeOrganization' => array('example.org'), - 'eduPersonAffiliation' => array('student'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'schacHomeOrganization' => ['example.org'], + 'eduPersonAffiliation' => ['student'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('student@example.org')); + $this->assertEquals($attributes['eduPersonScopedAffiliation'], ['student@example.org']); } - /* - * When the target attribute exists and onlyIfEmpty is set - */ - public function testOnlyIfEmpty() - { - $config = array( + /* + * When the target attribute exists and onlyIfEmpty is set + */ + public function testOnlyIfEmpty() + { + $config = [ 'scopeAttribute' => 'schacHomeOrganization', 'sourceAttribute' => 'eduPersonAffiliation', 'targetAttribute' => 'eduPersonScopedAffiliation', - 'onlyIfEmpty' => true, - ); - $request = array( - 'Attributes' => array( - 'schacHomeOrganization' => array('example.org'), - 'eduPersonAffiliation' => array('student'), - 'eduPersonScopedAffiliation' => array('staff@example.org', 'member@example.org'), - ) - ); + 'onlyIfEmpty' => true, + ]; + $request = [ + 'Attributes' => [ + 'schacHomeOrganization' => ['example.org'], + 'eduPersonAffiliation' => ['student'], + 'eduPersonScopedAffiliation' => ['staff@example.org', 'member@example.org'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['eduPersonScopedAffiliation'], array('staff@example.org', 'member@example.org')); - } + $this->assertEquals($attributes['eduPersonScopedAffiliation'], ['staff@example.org', 'member@example.org']); + } } diff --git a/tests/modules/core/lib/Auth/Process/ScopeFromAttributeTest.php b/tests/modules/core/lib/Auth/Process/ScopeFromAttributeTest.php index 1d24c38e90f358861d737f2d2c22d70dc53c99fa..a0abea39a7c0e1ae02383eb78cff579050cb6e77 100644 --- a/tests/modules/core/lib/Auth/Process/ScopeFromAttributeTest.php +++ b/tests/modules/core/lib/Auth/Process/ScopeFromAttributeTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:ScopeFromAttribute filter. */ -class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase +class ScopeFromAttributeTest extends TestCase { /* @@ -17,7 +19,7 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\ScopeFromAttribute($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\ScopeFromAttribute($config, null); $filter->process($request); return $request; } @@ -27,19 +29,19 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ public function testBasic() { - $config = array( + $config = [ 'sourceAttribute' => 'eduPersonPrincipalName', 'targetAttribute' => 'scope', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; $this->assertArrayHasKey('scope', $attributes); - $this->assertEquals($attributes['scope'], array('example.com')); + $this->assertEquals($attributes['scope'], ['example.com']); } /* @@ -47,19 +49,19 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ public function testNoOverwrite() { - $config = array( + $config = [ 'sourceAttribute' => 'eduPersonPrincipalName', 'targetAttribute' => 'scope', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - 'scope' => array('example.edu') - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + 'scope' => ['example.edu'] + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['scope'], array('example.edu')); + $this->assertEquals($attributes['scope'], ['example.edu']); } /* @@ -67,16 +69,16 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ public function testNoSourceAttribute() { - $config = array( + $config = [ 'sourceAttribute' => 'eduPersonPrincipalName', 'targetAttribute' => 'scope', - ); - $request = array( - 'Attributes' => array( - 'mail' => array('j.doe@example.edu', 'john@example.org'), - 'scope' => array('example.edu') - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'mail' => ['j.doe@example.edu', 'john@example.org'], + 'scope' => ['example.edu'] + ] + ]; $result = self::processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); } @@ -86,18 +88,18 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ public function testMultiAt() { - $config = array( + $config = [ 'sourceAttribute' => 'eduPersonPrincipalName', 'targetAttribute' => 'scope', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('john@doe@example.com'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['john@doe@example.com'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; - $this->assertEquals($attributes['scope'], array('example.com')); + $this->assertEquals($attributes['scope'], ['example.com']); } /* @@ -105,15 +107,15 @@ class Test_Core_Auth_Process_ScopeFromAttribute extends TestCase */ public function testNoAt() { - $config = array( + $config = [ 'sourceAttribute' => 'eduPersonPrincipalName', 'targetAttribute' => 'scope', - ); - $request = array( - 'Attributes' => array( - 'eduPersonPrincipalName' => array('johndoe'), - ) - ); + ]; + $request = [ + 'Attributes' => [ + 'eduPersonPrincipalName' => ['johndoe'], + ] + ]; $result = self::processFilter($config, $request); $attributes = $result['Attributes']; diff --git a/tests/modules/core/lib/Auth/Process/TargetedIDTest.php b/tests/modules/core/lib/Auth/Process/TargetedIDTest.php index e828db7795514618ddfe422514f95d59f57344f6..b4ef4ee4b0b11fbe32da02223e64cca8bbdc94d6 100644 --- a/tests/modules/core/lib/Auth/Process/TargetedIDTest.php +++ b/tests/modules/core/lib/Auth/Process/TargetedIDTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth\Process; + use PHPUnit\Framework\TestCase; /** * Test for the core:TargetedID filter. */ -class Test_Core_Auth_Process_TargetedID extends TestCase +class TargetedIDTest extends TestCase { /** * Helper function to run the filter with a given configuration. @@ -16,7 +18,7 @@ class Test_Core_Auth_Process_TargetedID extends TestCase */ private static function processFilter(array $config, array $request) { - $filter = new \SimpleSAML\Module\core\Auth\Process\TargetedID($config, NULL); + $filter = new \SimpleSAML\Module\core\Auth\Process\TargetedID($config, null); $filter->process($request); return $request; } @@ -26,12 +28,11 @@ class Test_Core_Auth_Process_TargetedID extends TestCase // */ // public function testBasic() // { -// $config = array( -// ); -// $request = array( -// 'Attributes' => array(), +// $config = []; +// $request = [ +// 'Attributes' => [], // 'UserID' => 'user2@example.org', -// ); +// ]; // $result = self::processFilter($config, $request); // $attributes = $result['Attributes']; // $this->assertArrayHasKey('eduPersonTargetedID', $attributes); @@ -44,22 +45,21 @@ class Test_Core_Auth_Process_TargetedID extends TestCase // */ // public function testWithSrcDst() // { -// $config = array( -// ); -// $request = array( -// 'Attributes' => array( +// $config = []; +// $request = [ +// 'Attributes' => [ // 'eduPersonTargetedID' => 'dummy', -// ), +// ], // 'UserID' => 'user2@example.org', -// 'Source' => array( +// 'Source' => [ // 'metadata-set' => 'saml20-idp-hosted', // 'entityid' => 'urn:example:src:id', -// ), -// 'Destination' => array( +// ], +// 'Destination' => [ // 'metadata-set' => 'saml20-sp-remote', // 'entityid' => 'joe', -// ), -// ); +// ], +// ]; // $result = self::processFilter($config, $request); // $attributes = $result['Attributes']; // $this->assertArrayHasKey('eduPersonTargetedID', $attributes); @@ -71,26 +71,28 @@ class Test_Core_Auth_Process_TargetedID extends TestCase // */ // public function testNameIdGeneration() // { -// $config = array( +// $config = [ // 'nameId' => true, -// ); +// ]; // $request = array( -// 'Attributes' => array( -// ), +// 'Attributes' => [], // 'UserID' => 'user2@example.org', -// 'Source' => array( +// 'Source' => [ // 'metadata-set' => 'saml20-idp-hosted', // 'entityid' => 'urn:example:src:id', -// ), -// 'Destination' => array( +// ], +// 'Destination' => [ // 'metadata-set' => 'saml20-sp-remote', // 'entityid' => 'joe', -// ), +// ], // ); // $result = self::processFilter($config, $request); // $attributes = $result['Attributes']; // $this->assertArrayHasKey('eduPersonTargetedID', $attributes); -// $this->assertRegExp('#^<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2\.0:assertion" NameQualifier="urn:example:src:id" SPNameQualifier="joe" Format="urn:oasis:names:tc:SAML:2\.0:nameid-format:persistent">[0-9a-f]{40}</saml:NameID>$#', $attributes['eduPersonTargetedID'][0]); +// $this->assertRegExp( +// '#^<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2\.0:assertion" NameQualifier="urn:example:src:id" SPNameQualifier="joe" Format="urn:oasis:names:tc:SAML:2\.0:nameid-format:persistent">[0-9a-f]{40}</saml:NameID>$#', +// $attributes['eduPersonTargetedID'][0] +// ); // } // // /** @@ -98,30 +100,29 @@ class Test_Core_Auth_Process_TargetedID extends TestCase // */ // public function testIdIsPersistent() // { -// $config = array( -// ); -// $request = array( -// 'Attributes' => array( +// $config = []; +// $request = [ +// 'Attributes' => [ // 'eduPersonTargetedID' => 'dummy', -// ), +// ], // 'UserID' => 'user2@example.org', -// 'Source' => array( +// 'Source' => [ // 'metadata-set' => 'saml20-idp-hosted', // 'entityid' => 'urn:example:src:id', -// ), -// 'Destination' => array( +// ], +// 'Destination' => [ // 'metadata-set' => 'saml20-sp-remote', // 'entityid' => 'joe', -// ), -// ); +// ], +// ]; // for ($i = 0; $i < 10; ++$i) { -// $result = self::processFilter($config, $request); -// $attributes = $result['Attributes']; -// $tid = $attributes['eduPersonTargetedID'][0]; -// if (isset($prevtid)) { -// $this->assertEquals($prevtid, $tid); -// $prevtid = $tid; -// } +// $result = self::processFilter($config, $request); +// $attributes = $result['Attributes']; +// $tid = $attributes['eduPersonTargetedID'][0]; +// if (isset($prevtid)) { +// $this->assertEquals($prevtid, $tid); +// $prevtid = $tid; +// } // } // } // @@ -130,33 +131,31 @@ class Test_Core_Auth_Process_TargetedID extends TestCase // */ // public function testIdIsUnique() // { -// $config = array( -// ); -// $request = array( -// 'Attributes' => array( -// ), +// $config = []; +// $request = [ +// 'Attributes' => [], // 'UserID' => 'user2@example.org', -// 'Source' => array( +// 'Source' => [ // 'metadata-set' => 'saml20-idp-hosted', // 'entityid' => 'urn:example:src:id', -// ), -// 'Destination' => array( +// ], +// 'Destination' => [ // 'metadata-set' => 'saml20-sp-remote', // 'entityid' => 'joe', -// ), -// ); -// $result = self::processFilter($config, $request); -// $tid1 = $result['Attributes']['eduPersonTargetedID'][0]; +// ], +// ]; +// $result = self::processFilter($config, $request); +// $tid1 = $result['Attributes']['eduPersonTargetedID'][0]; // // $request['UserID'] = 'user3@example.org'; -// $result = self::processFilter($config, $request); -// $tid2 = $result['Attributes']['eduPersonTargetedID'][0]; +// $result = self::processFilter($config, $request); +// $tid2 = $result['Attributes']['eduPersonTargetedID'][0]; // // $this->assertNotEquals($tid1, $tid2); // // $request['Destination']['entityid'] = 'urn:example.org:another-sp'; -// $result = self::processFilter($config, $request); -// $tid3 = $result['Attributes']['eduPersonTargetedID'][0]; +// $result = self::processFilter($config, $request); +// $tid3 = $result['Attributes']['eduPersonTargetedID'][0]; // // $this->assertNotEquals($tid2, $tid3); // } @@ -168,12 +167,11 @@ class Test_Core_Auth_Process_TargetedID extends TestCase */ public function testNoUserID() { - $config = array( - ); - $request = array( - 'Attributes' => array(), - ); - $result = self::processFilter($config, $request); + $config = []; + $request = [ + 'Attributes' => [], + ]; + self::processFilter($config, $request); } /** @@ -183,15 +181,15 @@ class Test_Core_Auth_Process_TargetedID extends TestCase */ public function testAttributeNotExists() { - $config = array( + $config = [ 'attributename' => 'uid', - ); - $request = array( - 'Attributes' => array( + ]; + $request = [ + 'Attributes' => [ 'displayName' => 'Jack Student', - ), - ); - $result = self::processFilter($config, $request); + ], + ]; + self::processFilter($config, $request); } /** @@ -201,15 +199,15 @@ class Test_Core_Auth_Process_TargetedID extends TestCase */ public function testConfigInvalidAttributeName() { - $config = array( + $config = [ 'attributename' => 5, - ); - $request = array( - 'Attributes' => array( + ]; + $request = [ + 'Attributes' => [ 'displayName' => 'Jack Student', - ), - ); - $result = self::processFilter($config, $request); + ], + ]; + self::processFilter($config, $request); } /** @@ -219,14 +217,14 @@ class Test_Core_Auth_Process_TargetedID extends TestCase */ public function testConfigInvalidNameId() { - $config = array( + $config = [ 'nameId' => 'persistent', - ); - $request = array( - 'Attributes' => array( + ]; + $request = [ + 'Attributes' => [ 'displayName' => 'Jack Student', - ), - ); - $result = self::processFilter($config, $request); + ], + ]; + self::processFilter($config, $request); } } diff --git a/tests/modules/core/lib/Auth/UserPassBaseTest.php b/tests/modules/core/lib/Auth/UserPassBaseTest.php index d70616800b1561327d3c716b9cde90b43aef474b..cd5a328acad88345e76d28676b4ab543697743cb 100644 --- a/tests/modules/core/lib/Auth/UserPassBaseTest.php +++ b/tests/modules/core/lib/Auth/UserPassBaseTest.php @@ -1,18 +1,20 @@ <?php +namespace SimpleSAML\Test\Module\core\Auth; + class UserPassBaseTest extends \PHPUnit_Framework_TestCase { public function testAuthenticateECPCallsLoginAndSetsAttributes() { - $state = array(); - $attributes = array('attrib' => 'val'); + $state = []; + $attributes = ['attrib' => 'val']; $username = $state['core:auth:username'] = 'username'; $password = $state['core:auth:password'] = 'password'; $stub = $this->getMockBuilder('\SimpleSAML\Module\core\Auth\UserPassBase') ->disableOriginalConstructor() - ->setMethods(array('login')) + ->setMethods(['login']) ->getMockForAbstractClass(); $stub->expects($this->once()) @@ -27,8 +29,8 @@ class UserPassBaseTest extends \PHPUnit_Framework_TestCase public function testAuthenticateECPCallsLoginWithForcedUsername() { - $state = array(); - $attributes = array(); + $state = []; + $attributes = []; $forcedUsername = 'forcedUsername'; @@ -37,7 +39,7 @@ class UserPassBaseTest extends \PHPUnit_Framework_TestCase $stub = $this->getMockBuilder('\SimpleSAML\Module\core\Auth\UserPassBase') ->disableOriginalConstructor() - ->setMethods(array('login')) + ->setMethods(['login']) ->getMockForAbstractClass(); $stub->expects($this->once()) diff --git a/tests/modules/core/lib/Auth/UserPassOrgBaseTest.php b/tests/modules/core/lib/Auth/UserPassOrgBaseTest.php index 3ee9098b878896066da8dad57e8ef508154d8e3d..7db0605b0679f534d9ea46d0a1c38db81d663e14 100644 --- a/tests/modules/core/lib/Auth/UserPassOrgBaseTest.php +++ b/tests/modules/core/lib/Auth/UserPassOrgBaseTest.php @@ -8,13 +8,13 @@ class UserPassOrgBaseTest extends \PHPUnit_Framework_TestCase { public function testRememberOrganizationEnabled() { - $config = array( + $config = [ 'ldap:LDAPMulti', 'remember.organization.enabled' => true, 'remember.organization.checked' => false, - 'my-org' => array( + 'my-org' => [ 'description' => 'My organization', // The rest of the options are the same as those available for // the LDAP authentication source. @@ -22,16 +22,13 @@ class UserPassOrgBaseTest extends \PHPUnit_Framework_TestCase 'dnpattern' => 'uid=%username%,ou=employees,dc=example,dc=org', // Whether SSL/TLS should be used when contacting the LDAP server. 'enable_tls' => false, - ) - ); + ] + ]; - // When PHP 5.4 support is dropped, replace with: - // $mockUserPassOrgBase = $this->getMockBuilder(\SimpleSAML\Module\core\Auth\UserPassOrgBase::class) - $mockUserPassOrgBase = $this->getMockBuilder(get_parent_class(new \SimpleSAML\Module\ldap\Auth\Source\LDAPMulti(array('AuthId' => 'my-org'), array()))) - ->setConstructorArgs(array(array('AuthId' => 'my-org'), &$config)) - ->setMethods(array()) + $mockUserPassOrgBase = $this->getMockBuilder(\SimpleSAML\Module\core\Auth\UserPassOrgBase::class) + ->setConstructorArgs([['AuthId' => 'my-org'], &$config]) + ->setMethods([]) ->getMockForAbstractClass(); - $this->assertTrue($mockUserPassOrgBase->getRememberOrganizationEnabled()); } } diff --git a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php index 49b17fd611d9180e7b33838f406e92a9a46bccf1..1d8f4d700006abf1c780d938902aae6cea14a498 100644 --- a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php +++ b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php @@ -1,11 +1,13 @@ <?php +namespace SimpleSAML\Test\Module\core\Storage; + use PHPUnit\Framework\TestCase; /** * Test for the SQLPermanentStorage class. */ -class Test_Core_Storage_SQLPermanentStorage extends TestCase +class SQLPermanentStorageTest extends TestCase { private static $sql; diff --git a/tests/modules/ldap/lib/Auth/Process/BaseFilterTest.php b/tests/modules/ldap/lib/Auth/Process/BaseFilterTest.php index 11f6efed6bbddc922a095bc6c1940529b6f5bf81..05f808ee55512182656552cd23be9ac50b09c890 100644 --- a/tests/modules/ldap/lib/Auth/Process/BaseFilterTest.php +++ b/tests/modules/ldap/lib/Auth/Process/BaseFilterTest.php @@ -1,8 +1,10 @@ <?php +namespace SimpleSAML\Test\Module\ldap\Auth\Process; + use PHPUnit\Framework\TestCase; -class BaseFilter_Test extends TestCase +class BaseFilterTest extends TestCase { public function testVarExportHidesLdapPassword() { @@ -15,11 +17,11 @@ class BaseFilter_Test extends TestCase $this->assertEquals( "array ( 'ldap.hostname' => 'ldap://172.17.101.32', 'ldap.port' => 389, 'ldap.password' => '********', )", - $method->invokeArgs($stub, array(array( + $method->invokeArgs($stub, [[ 'ldap.hostname' => 'ldap://172.17.101.32', 'ldap.port' => 389, 'ldap.password' => 'password', - ))) + ]]) ); } } diff --git a/tests/modules/saml/lib/Auth/Process/FilterScopesTest.php b/tests/modules/saml/lib/Auth/Process/FilterScopesTest.php index 1915c9c0e77316a4a7236e309ce6777ccb891cc9..20e9400b6dd685c233181a8da2f3fd8352e70192 100644 --- a/tests/modules/saml/lib/Auth/Process/FilterScopesTest.php +++ b/tests/modules/saml/lib/Auth/Process/FilterScopesTest.php @@ -34,51 +34,51 @@ class FilterScopesTest extends TestCase public function testValidScopes() { // test declared scopes - $config = array(); - $request = array( - 'Source' => array( - 'SingleSignOnService' => array( - array( + $config = []; + $request = [ + 'Source' => [ + 'SingleSignOnService' => [ + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://example.org/saml2/idp/SSOService.php', - ), - ), - 'scope' => array( + ], + ], + 'scope' => [ 'example.com', 'example.net', - ), - ), - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.com'), - ), - ); + ], + ], + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.com'], + ], + ]; $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); // test multiple values - $request['Attributes'] = array( - 'eduPersonPrincipalName' => array( + $request['Attributes'] = [ + 'eduPersonPrincipalName' => [ 'jdoe@example.com', 'jdoe@example.net', - ), - ); + ], + ]; $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); // test implicit scope - $request['Attributes'] = array( - 'eduPersonPrincipalName' => array('jdoe@example.org'), - ); + $request['Attributes'] = [ + 'eduPersonPrincipalName' => ['jdoe@example.org'], + ]; $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); // test alternative attributes - $config['attributes'] = array( + $config['attributes'] = [ 'mail', - ); - $request['Attributes'] = array( - 'mail' => array('john.doe@example.org'), - ); + ]; + $request['Attributes'] = [ + 'mail' => ['john.doe@example.org'], + ]; $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); @@ -95,43 +95,43 @@ class FilterScopesTest extends TestCase public function testInvalidScopes() { // test scope not matching anything, empty attribute - $config = array(); - $request = array( - 'Source' => array( - 'SingleSignOnService' => array( - array( + $config = []; + $request = [ + 'Source' => [ + 'SingleSignOnService' => [ + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://example.org/saml2/idp/SSOService.php', - ), - ), - 'scope' => array( + ], + ], + 'scope' => [ 'example.com', 'example.net', - ), - ), - 'Attributes' => array( - 'eduPersonPrincipalName' => array('jdoe@example.edu'), - ), - ); + ], + ], + 'Attributes' => [ + 'eduPersonPrincipalName' => ['jdoe@example.edu'], + ], + ]; $result = $this->processFilter($config, $request); - $this->assertEquals(array(), $result['Attributes']); + $this->assertEquals([], $result['Attributes']); // test some scopes allowed and some others not $request['Attributes']['eduPersonPrincipalName'][] = 'jdoe@example.com'; $result = $this->processFilter($config, $request); $this->assertEquals( - array( - 'eduPersonPrincipalName' => array( + [ + 'eduPersonPrincipalName' => [ 'jdoe@example.com', - ), - ), + ], + ], $result['Attributes'] ); // test attribute missing scope - $request['Attributes'] = array( - 'eduPersonPrincipalName' => array('jdoe'), - ); + $request['Attributes'] = [ + 'eduPersonPrincipalName' => ['jdoe'], + ]; $result = $this->processFilter($config, $request); $this->assertEquals($request['Attributes'], $result['Attributes']); } diff --git a/tests/modules/saml/lib/Auth/Process/NameIDAttributeTest.php b/tests/modules/saml/lib/Auth/Process/NameIDAttributeTest.php index 84799db9e227ecb503d2ff481a8ba6f2255d2aad..f20ee5b377935f3d9e204be8fd949d5f1b84a41f 100644 --- a/tests/modules/saml/lib/Auth/Process/NameIDAttributeTest.php +++ b/tests/modules/saml/lib/Auth/Process/NameIDAttributeTest.php @@ -1,4 +1,7 @@ <?php + +namespace SimpleSAML\Test\Module\saml\Auth\Process; + /** * Test for the saml:NameIDAttribute filter. * @@ -31,7 +34,7 @@ class NameIDAttributeTest extends TestCase */ public function testMinimalConfig() { - $config = array(); + $config = []; $nameId = new \SAML2\XML\saml\NameID(); $nameId->value = 'eugene@oombaas'; @@ -40,15 +43,15 @@ class NameIDAttributeTest extends TestCase $spId = 'eugeneSP'; $idpId = 'eugeneIdP'; - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => $spId, - ), - 'Destination' => array( + ], + 'Destination' => [ 'entityid' => $idpId, - ), + ], 'saml:sp:NameID' => $nameId, - ); + ]; $result = $this->processFilter($config, $request); $this->assertEquals("{$spId}!{$idpId}!{$nameId->value}", $result['Attributes']['nameid'][0]); } @@ -59,7 +62,7 @@ class NameIDAttributeTest extends TestCase public function testCustomAttributeName() { $attributeName = 'eugeneNameIDAttribute'; - $config = array('attribute' => $attributeName); + $config = ['attribute' => $attributeName]; $nameId = new \SAML2\XML\saml\NameID(); $nameId->value = 'eugene@oombaas'; @@ -68,15 +71,15 @@ class NameIDAttributeTest extends TestCase $spId = 'eugeneSP'; $idpId = 'eugeneIdP'; - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => $spId, - ), - 'Destination' => array( + ], + 'Destination' => [ 'entityid' => $idpId, - ), + ], 'saml:sp:NameID' => $nameId, - ); + ]; $result = $this->processFilter($config, $request); $this->assertTrue(isset($result['Attributes'][$attributeName])); $this->assertEquals("{$spId}!{$idpId}!{$nameId->value}", $result['Attributes'][$attributeName][0]); @@ -87,7 +90,7 @@ class NameIDAttributeTest extends TestCase */ public function testFormat() { - $config = array('format' => '%V'); + $config = ['format' => '%V']; $nameId = new \SAML2\XML\saml\NameID(); $nameId->value = 'eugene@oombaas'; @@ -96,15 +99,15 @@ class NameIDAttributeTest extends TestCase $spId = 'eugeneSP'; $idpId = 'eugeneIdP'; - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => $spId, - ), - 'Destination' => array( + ], + 'Destination' => [ 'entityid' => $idpId, - ), + ], 'saml:sp:NameID' => $nameId, - ); + ]; $result = $this->processFilter($config, $request); $this->assertEquals("{$nameId->value}", $result['Attributes']['nameid'][0]); } @@ -116,7 +119,7 @@ class NameIDAttributeTest extends TestCase public function testCustomAttributeNameAndFormat() { $attributeName = 'eugeneNameIDAttribute'; - $config = array('attribute' => $attributeName, 'format' => '%V'); + $config = ['attribute' => $attributeName, 'format' => '%V']; $nameId = new \SAML2\XML\saml\NameID(); $nameId->value = 'eugene@oombaas'; @@ -125,15 +128,15 @@ class NameIDAttributeTest extends TestCase $spId = 'eugeneSP'; $idpId = 'eugeneIdP'; - $request = array( - 'Source' => array( + $request = [ + 'Source' => [ 'entityid' => $spId, - ), - 'Destination' => array( + ], + 'Destination' => [ 'entityid' => $idpId, - ), + ], 'saml:sp:NameID' => $nameId, - ); + ]; $result = $this->processFilter($config, $request); $this->assertTrue(isset($result['Attributes'][$attributeName])); $this->assertEquals("{$nameId->value}", $result['Attributes'][$attributeName][0]); diff --git a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php index 502babca7e10c312d3b842f1aca4f5d3eac8a4c0..c1310986c847bbca8c195bfdd4fab7e6e2de8367 100644 --- a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php +++ b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php @@ -32,7 +32,7 @@ class ExitTestException extends \Exception * - Use introspection to make startSSO2Test available * - Override sendSAML2AuthnRequest() to catch the AuthnRequest being sent */ -class SP_Tester extends \SimpleSAML\Module\saml\Auth\Source\SP +class SPTester extends \SimpleSAML\Module\saml\Auth\Source\SP { public function __construct($info, $config) @@ -55,11 +55,11 @@ class SP_Tester extends \SimpleSAML\Module\saml\Auth\Source\SP { // Exit test. Continuing would mean running into a assert(FALSE) throw new ExitTestException( - array( + [ 'state' => $state, 'binding' => $binding, 'ar' => $ar, - ) + ] ); } } @@ -68,7 +68,7 @@ class SP_Tester extends \SimpleSAML\Module\saml\Auth\Source\SP /** * Set of test cases for \SimpleSAML\Module\saml\Auth\Source\SP. */ -class SP_Test extends TestCase +class SPTest extends TestCase { private $idpMetadata = null; @@ -91,17 +91,17 @@ class SP_Test extends TestCase protected function setUp() { - $this->idpConfigArray = array( + $this->idpConfigArray = [ 'metadata-set' => 'saml20-idp-remote', 'entityid' => 'https://engine.surfconext.nl/authentication/idp/metadata', - 'SingleSignOnService' => array( - array( + 'SingleSignOnService' => [ + [ 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://engine.surfconext.nl/authentication/idp/single-sign-on', - ), - ), - 'keys' => array( - array( + ], + ], + 'keys' => [ + [ 'encryption' => false, 'signing' => true, 'type' => 'X509Certificate', @@ -121,11 +121,11 @@ class SP_Test extends TestCase 'ZkQO8EsscJPPy/Zp4uHAnADWACkOUHiCbcKiUUFu66dX0Wr/v53Gekz487GgVRs8HEeT9MU1reBKRgdENR8PNg4rbQfLc'. '3YQKLWK7yWnn/RenjDpuCiePj8N8/80tGgrNgK/6fzM3zI18sSywnXLswxqDb/J+jgVxnQ6MrsTf1urM8MnfcxG/82oHI'. 'wfMh/sXPCZpo+DTLkhQxctJ3M=', - ), - ), - ); + ], + ], + ]; - $this->config = Configuration::loadFromArray(array(), '[ARRAY]', 'simplesaml'); + $this->config = Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); } @@ -137,11 +137,11 @@ class SP_Test extends TestCase * * @return \SAML2\AuthnRequest The AuthnRequest generated. */ - private function createAuthnRequest($state = array()) + private function createAuthnRequest($state = []) { - $info = array('AuthId' => 'default-sp'); - $config = array(); - $as = new SP_Tester($info, $config); + $info = ['AuthId' => 'default-sp']; + $config = []; + $as = new SPTester($info, $config); /** @var \SAML2\AuthnRequest $ar */ $ar = null; @@ -187,9 +187,9 @@ class SP_Test extends TestCase */ public function testNameID() { - $state = array( - 'saml:NameID' => array('Value' => 'user@example.org', 'Format' => \SAML2\Constants::NAMEID_UNSPECIFIED) - ); + $state = [ + 'saml:NameID' => ['Value' => 'user@example.org', 'Format' => \SAML2\Constants::NAMEID_UNSPECIFIED] + ]; /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); @@ -219,9 +219,9 @@ class SP_Test extends TestCase */ public function testAuthnContextClassRef() { - $state = array( + $state = [ 'saml:AuthnContextClassRef' => 'http://example.com/myAuthnContextClassRef' - ); + ]; /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); @@ -248,9 +248,9 @@ class SP_Test extends TestCase */ public function testForcedAuthn() { - $state = array( + $state = [ 'ForceAuthn' => true - ); + ]; /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); diff --git a/tests/modules/saml/lib/IdP/SAML2Test.php b/tests/modules/saml/lib/IdP/SAML2Test.php index 76efcedb2316fd1c699f5d42fc642347f20c00af..ef94baf9a28b7bf2510cfba38ba5d95d1820dcce 100644 --- a/tests/modules/saml/lib/IdP/SAML2Test.php +++ b/tests/modules/saml/lib/IdP/SAML2Test.php @@ -1,12 +1,19 @@ <?php -class SAML2Test extends \PHPUnit_Framework_TestCase +namespace SimpleSAML\Test\Module\saml\IdP; + +use SimpleSAML\Configuration; +use SimpleSAML\IdP; +use SimpleSAML\Module\saml\IdP\SAML2; +use SimpleSAML\Test\Utils\ClearStateTestCase; + +class SAML2Test extends ClearStateTestCase { public function testProcessSOAPAuthnRequest() { $username = $_SERVER['PHP_AUTH_USER'] = 'username'; $password = $_SERVER['PHP_AUTH_PW'] = 'password'; - $state = array(); + $state = []; \SimpleSAML\Module\saml\IdP\SAML2::processSOAPAuthnRequest($state); @@ -20,7 +27,10 @@ class SAML2Test extends \PHPUnit_Framework_TestCase $_SERVER['PHP_AUTH_PW'] = 'password'; unset($_SERVER['PHP_AUTH_USER']); - $state = array(); + $state = []; + Configuration::loadFromArray([ + 'baseurlpath' => 'https://idp.example.com/', + ], '', 'simplesaml'); \SimpleSAML\Module\saml\IdP\SAML2::processSOAPAuthnRequest($state); } @@ -31,8 +41,199 @@ class SAML2Test extends \PHPUnit_Framework_TestCase $_SERVER['PHP_AUTH_USER'] = 'username'; unset($_SERVER['PHP_AUTH_PW']); - $state = array(); + $state = []; \SimpleSAML\Module\saml\IdP\SAML2::processSOAPAuthnRequest($state); } + + /** + * Default values for the state array expected to be generated at the start of logins + * @var array + */ + private $defaultExpectedAuthState = [ + 'Responder' =>['\SimpleSAML\Module\saml\IdP\SAML2', 'sendResponse'], + '\SimpleSAML\Auth\State.exceptionFunc' => ['\SimpleSAML\Module\saml\IdP\SAML2', 'handleAuthError'], + 'saml:RelayState' => null, + 'saml:RequestId' => null, + 'saml:IDPList' => [], + 'saml:ProxyCount' => null, + 'saml:RequesterID' => null, + 'ForceAuthn' => false, + 'isPassive' => false, + 'saml:ConsumerURL' => 'SP-specific', + 'saml:Binding' => 'SP-specific', + 'saml:NameIDFormat' => null, + 'saml:AllowCreate' => true, + 'saml:Extensions' => null, + 'saml:RequestedAuthnContext' => null]; + + /** + * Test that invoking the idp initiated endpoint with the minimum necessary parameters works. + */ + public function testIdPInitiatedLoginMinimumParams() + { + $state = $this->idpInitiatedHelper(['spentityid' => 'https://some-sp-entity-id']); + $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); + + $this->assertStringStartsWith( + 'http://idp.examlple.com/saml2/idp/SSOService.php?spentityid=https%3A%2F%2Fsome-sp-entity-id&cookie', + $state['\SimpleSAML\Auth\State.restartURL'] + ); + unset($state['saml:AuthnRequestReceivedAt']); // timestamp can't be tested in equality assertion + unset($state['SPMetadata']); // entityid asserted above + unset($state['\SimpleSAML\Auth\State.restartURL']); // url contains a cookie time which varies by test + + $expectedState = $this->defaultExpectedAuthState; + $expectedState[ 'saml:ConsumerURL'] = 'https://example.com/Shibboleth.sso/SAML2/POST'; + $expectedState[ 'saml:Binding'] = 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'; + + $this->assertEquals($expectedState, $state); + } + + /** + * Test that invoking the idp initiated endpoint with the optional parameters works. + */ + public function testIdPInitiatedLoginOptionalParams() + { + $state = $this->idpInitiatedHelper([ + 'spentityid' => 'https://some-sp-entity-id', + 'RelayState' => 'http://relay', + 'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:PAOS', + 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', + + ]); + $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); + + //currently only spentityid and relay state are used in the restart url. + $this->assertStringStartsWith( + 'http://idp.examlple.com/saml2/idp/SSOService.php?' + . 'spentityid=https%3A%2F%2Fsome-sp-entity-id&RelayState=http%3A%2F%2Frelay&cookieTime', + $state['\SimpleSAML\Auth\State.restartURL'] + ); + unset($state['saml:AuthnRequestReceivedAt']); // timestamp can't be tested in equality assertion + unset($state['SPMetadata']); // entityid asserted above + unset($state['\SimpleSAML\Auth\State.restartURL']); // url contains a cookie time which varies by test + + $expectedState = $this->defaultExpectedAuthState; + $expectedState['saml:ConsumerURL'] = 'https://example.com/Shibboleth.sso/SAML2/ECP'; + $expectedState['saml:Binding'] = 'urn:oasis:names:tc:SAML:2.0:bindings:PAOS'; + $expectedState['saml:NameIDFormat'] = 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'; + $expectedState['saml:RelayState'] = 'http://relay'; + + $this->assertEquals($expectedState, $state); + } + + /** + * Test that invoking the idp initiated endpoint using minimum shib params works + */ + public function testIdPInitShibCompatyMinimumParams() + { + //https://wiki.shibboleth.net/confluence/display/IDP30/UnsolicitedSSOConfiguration + // Shib uses the param providerId instead of spentityid + $state = $this->idpInitiatedHelper(['providerId' => 'https://some-sp-entity-id']); + $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); + + $this->assertStringStartsWith( + 'http://idp.examlple.com/saml2/idp/SSOService.php?spentityid=https%3A%2F%2Fsome-sp-entity-id&cookie', + $state['\SimpleSAML\Auth\State.restartURL'] + ); + unset($state['saml:AuthnRequestReceivedAt']); // timestamp can't be tested in equality assertion + unset($state['SPMetadata']); // entityid asserted above + unset($state['\SimpleSAML\Auth\State.restartURL']); // url contains a cookie time which varies by test + + $expectedState = $this->defaultExpectedAuthState; + $expectedState[ 'saml:ConsumerURL'] = 'https://example.com/Shibboleth.sso/SAML2/POST'; + $expectedState[ 'saml:Binding'] = 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST'; + + $this->assertEquals($expectedState, $state); + } + + /** + * Test that invoking the idp initiated endpoint using minimum shib params works + */ + public function testIdPInitShibCompatOptionalParams() + { + $state = $this->idpInitiatedHelper([ + 'providerId' => 'https://some-sp-entity-id', + 'target' => 'http://relay', + 'shire' => 'https://example.com/Shibboleth.sso/SAML2/ECP', + ]); + $this->assertEquals('https://some-sp-entity-id', $state['SPMetadata']['entityid']); + + //currently only spentityid and relay state are used in the restart url. + $this->assertStringStartsWith( + 'http://idp.examlple.com/saml2/idp/SSOService.php?' + . 'spentityid=https%3A%2F%2Fsome-sp-entity-id&RelayState=http%3A%2F%2Frelay&cookieTime', + $state['\SimpleSAML\Auth\State.restartURL'] + ); + unset($state['saml:AuthnRequestReceivedAt']); // timestamp can't be tested in equality assertion + unset($state['SPMetadata']); // entityid asserted above + unset($state['\SimpleSAML\Auth\State.restartURL']); // url contains a cookie time which varies by test + + $expectedState = $this->defaultExpectedAuthState; + $expectedState['saml:ConsumerURL'] = 'https://example.com/Shibboleth.sso/SAML2/ECP'; + $expectedState['saml:Binding'] = 'urn:oasis:names:tc:SAML:2.0:bindings:PAOS'; + $expectedState['saml:RelayState'] = 'http://relay'; + + $this->assertEquals($expectedState, $state); + } + + /** + * Invoke IDP initiated login with the given query parameters. + * Callers should validate the return state array or confirm appropriate exceptions are returned. + * + * @param array $queryParams + * @return string[] The state array used for handling the authentication request. + */ + private function idpInitiatedHelper(array $queryParams) + { + /** @var $idpStub \PHPUnit_Framework_MockObject_MockObject|IdP */ + $idpStub = $this->getMockBuilder(IdP::class) + ->disableOriginalConstructor() + ->getMock(); + $idpMetadata = Configuration::loadFromArray([ + 'entityid' => 'https://idp-entity.id', + 'saml20.ecp' => true, //enable additional bindings so we can test selection logic + ]); + + $idpStub->method("getConfig") + ->willReturn($idpMetadata); + + // phpcs:disable + $spMetadataXml = <<< 'EOT' +<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://some-sp-entity-id"> + <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol"> + <md:AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.com/Shibboleth.sso/SAML2/POST" /> + <md:AssertionConsumerService index="2" Binding="urn:oasis:names:tc:SAML:2.0:bindings:PAOS" Location="https://example.com/Shibboleth.sso/SAML2/ECP" /> + </md:SPSSODescriptor> +</EntityDescriptor> +EOT; + // phpcs:enable + + Configuration::loadFromArray([ + 'baseurlpath' => 'https://idp.example.com/', + 'metadata.sources' => [ + ["type" => "xml", 'xml' => $spMetadataXml], + ], + ], '', 'simplesaml'); + + // Since we aren't really running on a webserver some of the url calculations done, such as for restart url + // won't line up perfectly + $_REQUEST = $_REQUEST + $queryParams; + $_SERVER['HTTP_HOST'] = 'idp.examlple.com'; + $_SERVER['REQUEST_URI'] = '/saml2/idp/SSOService.php?' . http_build_query($queryParams); + + + $state = []; + $idpStub->expects($this->once()) + ->method('handleAuthenticationRequest') + ->with($this->callback(function ($arg) use (&$state) { + $state = $arg; + return true; + })); + + SAML2::receiveAuthnRequest($idpStub); + + return $state; + } } diff --git a/tests/www/IndexTest.php b/tests/www/IndexTest.php index be7d060121a32b0d275f17f41a811a857e9cd9e1..7d3bcedd02f685e30e698c17b95fd03da2cd880b 100644 --- a/tests/www/IndexTest.php +++ b/tests/www/IndexTest.php @@ -72,12 +72,12 @@ class IndexTest extends TestCase } // test most basic redirection - $this->updateConfig(array( + $this->updateConfig([ 'baseurlpath' => 'http://example.org/simplesaml/' - )); - $resp = $this->server->get('/index.php', array(), array( + ]); + $resp = $this->server->get('/index.php', [], [ CURLOPT_FOLLOWLOCATION => 0, - )); + ]); $this->assertEquals('302', $resp['code']); $this->assertEquals( 'http://example.org/simplesaml/module.php/core/frontpage_welcome.php', @@ -85,12 +85,12 @@ class IndexTest extends TestCase ); // test non-default path and https - $this->updateConfig(array( + $this->updateConfig([ 'baseurlpath' => 'https://example.org/' - )); - $resp = $this->server->get('/index.php', array(), array( + ]); + $resp = $this->server->get('/index.php', [], [ CURLOPT_FOLLOWLOCATION => 0, - )); + ]); $this->assertEquals('302', $resp['code']); $this->assertEquals( 'https://example.org/module.php/core/frontpage_welcome.php', @@ -98,12 +98,12 @@ class IndexTest extends TestCase ); // test URL guessing - $this->updateConfig(array( + $this->updateConfig([ 'baseurlpath' => '/simplesaml/' - )); - $resp = $this->server->get('/index.php', array(), array( + ]); + $resp = $this->server->get('/index.php', [], [ CURLOPT_FOLLOWLOCATION => 0, - )); + ]); $this->assertEquals('302', $resp['code']); $this->assertEquals( 'http://'.$this->server_addr.'/simplesaml/module.php/core/frontpage_welcome.php', diff --git a/tests/www/TemplateTest.php b/tests/www/TemplateTest.php index dda326a62788f6639985dfe2fca869f6a3155589..06dfe10808c2ea612f0050eeb3c20a915fd99f72 100644 --- a/tests/www/TemplateTest.php +++ b/tests/www/TemplateTest.php @@ -27,7 +27,7 @@ class TemplateTest extends TestCase $basedir = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'templates'; // Base templates - $files = array_diff(scandir($basedir), array('.', '..')); + $files = array_diff(scandir($basedir), ['.', '..']); foreach ($files as $file) { if (preg_match('/.twig$/', $file)) { $t = new Template($config, $file); @@ -46,7 +46,7 @@ class TemplateTest extends TestCase foreach (Module::getModules() as $module) { $basedir = Module::getModuleDir($module).DIRECTORY_SEPARATOR.'templates'; if (file_exists($basedir)) { - $files = array_diff(scandir($basedir), array('.', '..')); + $files = array_diff(scandir($basedir), ['.', '..']); foreach ($files as $file) { if (preg_match('/.twig$/', $file)) { $t = new Template($config, $module.':'.$file); diff --git a/www/_include.php b/www/_include.php index 74eb6b2192393970fbe1be0f827d4c302265e3f5..1960627f87cb594f71cd95355bec4f4d57ca05ca 100644 --- a/www/_include.php +++ b/www/_include.php @@ -16,7 +16,7 @@ function SimpleSAML_exception_handler($exception) } elseif ($exception instanceof \Exception) { $e = new \SimpleSAML\Error\Error('UNHANDLEDEXCEPTION', $exception); $e->show(); - } else if (class_exists('Error') && $exception instanceof \Error) { + } elseif (class_exists('Error') && $exception instanceof \Error) { $code = $exception->getCode(); $errno = ($code > 0) ? $code : E_ERROR; $errstr = $exception->getMessage(); @@ -31,15 +31,6 @@ set_exception_handler('SimpleSAML_exception_handler'); // log full backtrace on errors and warnings function SimpleSAML_error_handler($errno, $errstr, $errfile = null, $errline = 0, $errcontext = null) { - if (!class_exists('\SimpleSAML\Logger')) { - /* We are probably logging a deprecation-warning during parsing. Unfortunately, the autoloader is disabled at - * this point, so we should stop here. - * - * See PHP bug: https://bugs.php.net/bug.php?id=47987 - */ - return false; - } - if (\SimpleSAML\Logger::isErrorMasked($errno)) { // masked error return false; diff --git a/www/admin/hostnames.php b/www/admin/hostnames.php index fa93ab5d8a8bf4bb21b079bd601d9041ad29b4fb..2948ef12da122a024b8a594f76d90a9f7f91df5f 100644 --- a/www/admin/hostnames.php +++ b/www/admin/hostnames.php @@ -9,21 +9,21 @@ $session = \SimpleSAML\Session::getSessionFromRequest(); // Check if valid local session exists.. \SimpleSAML\Utils\Auth::requireAdmin(); -$attributes = array(); - -$attributes['HTTP_HOST'] = array($_SERVER['HTTP_HOST']); -$attributes['HTTPS'] = isset($_SERVER['HTTPS']) ? array($_SERVER['HTTPS']) : array(); -$attributes['SERVER_PROTOCOL'] = array($_SERVER['SERVER_PROTOCOL']); -$attributes['SERVER_PORT'] = array($_SERVER['SERVER_PORT']); - -$attributes['getBaseURL()'] = array(\SimpleSAML\Utils\HTTP::getBaseURL()); -$attributes['getSelfHost()'] = array(\SimpleSAML\Utils\HTTP::getSelfHost()); -$attributes['getSelfHostWithNonStandardPort()'] = array(\SimpleSAML\Utils\HTTP::getSelfHostWithNonStandardPort()); -$attributes['selfURLhost()'] = array(\SimpleSAML\Utils\HTTP::getSelfURLHost()); -$attributes['selfURLNoQuery()'] = array(\SimpleSAML\Utils\HTTP::getSelfURLNoQuery()); -$attributes['getSelfHostWithPath()'] = array(\SimpleSAML\Utils\HTTP::getSelfHostWithPath()); -$attributes['getFirstPathElement()'] = array(\SimpleSAML\Utils\HTTP::getFirstPathElement()); -$attributes['selfURL()'] = array(\SimpleSAML\Utils\HTTP::getSelfURL()); +$attributes = []; + +$attributes['HTTP_HOST'] = [$_SERVER['HTTP_HOST']]; +$attributes['HTTPS'] = isset($_SERVER['HTTPS']) ? [$_SERVER['HTTPS']] : []; +$attributes['SERVER_PROTOCOL'] = [$_SERVER['SERVER_PROTOCOL']]; +$attributes['SERVER_PORT'] = [$_SERVER['SERVER_PORT']]; + +$attributes['getBaseURL()'] = [\SimpleSAML\Utils\HTTP::getBaseURL()]; +$attributes['getSelfHost()'] = [\SimpleSAML\Utils\HTTP::getSelfHost()]; +$attributes['getSelfHostWithNonStandardPort()'] = [\SimpleSAML\Utils\HTTP::getSelfHostWithNonStandardPort()]; +$attributes['selfURLhost()'] = [\SimpleSAML\Utils\HTTP::getSelfURLHost()]; +$attributes['selfURLNoQuery()'] = [\SimpleSAML\Utils\HTTP::getSelfURLNoQuery()]; +$attributes['getSelfHostWithPath()'] = [\SimpleSAML\Utils\HTTP::getSelfHostWithPath()]; +$attributes['getFirstPathElement()'] = [\SimpleSAML\Utils\HTTP::getFirstPathElement()]; +$attributes['selfURL()'] = [\SimpleSAML\Utils\HTTP::getSelfURL()]; $template = new \SimpleSAML\XHTML\Template($config, 'hostnames.php'); diff --git a/www/admin/index.php b/www/admin/index.php index ca17976f222ffac5f04761ec42bd114b5711d82b..41e9c200af4a8218ad2d143ccd4dfe9f0ce14e5c 100644 --- a/www/admin/index.php +++ b/www/admin/index.php @@ -9,12 +9,12 @@ $session = \SimpleSAML\Session::getSessionFromRequest(); // Check if valid local session exists.. \SimpleSAML\Utils\Auth::requireAdmin(); -$adminpages = array( +$adminpages = [ 'hostnames.php' => 'Diagnostics on hostname, port and protocol', 'phpinfo.php' => 'PHP info', '../module.php/sanitycheck/index.php' => 'Sanity check of your SimpleSAMLphp setup', 'sandbox.php' => 'Sandbox for testing changes to layout and css', -); +]; $logouturl = \SimpleSAML\Utils\Auth::getAdminLogoutURL(); diff --git a/www/admin/metadata-converter.php b/www/admin/metadata-converter.php index db3114fb41c2d612af77659f2b71d8aba29f1fe6..5ce928ac5987d8aa3b00ea5ea716613cf7988550 100644 --- a/www/admin/metadata-converter.php +++ b/www/admin/metadata-converter.php @@ -19,12 +19,12 @@ if (!empty($xmldata)) { // get all metadata for the entities foreach ($entities as &$entity) { - $entity = array( + $entity = [ 'shib13-sp-remote' => $entity->getMetadata1xSP(), 'shib13-idp-remote' => $entity->getMetadata1xIdP(), 'saml20-sp-remote' => $entity->getMetadata20SP(), 'saml20-idp-remote' => $entity->getMetadata20IdP(), - ); + ]; } // transpose from $entities[entityid][type] to $output[type][entityid] @@ -34,7 +34,6 @@ if (!empty($xmldata)) { foreach ($output as $type => &$entities) { $text = ''; foreach ($entities as $entityId => $entityMetadata) { - if ($entityMetadata === null) { continue; } @@ -49,7 +48,7 @@ if (!empty($xmldata)) { } } else { $xmldata = ''; - $output = array(); + $output = []; } $template = new \SimpleSAML\XHTML\Template($config, 'metadata-converter.php', 'admin'); diff --git a/www/assets/css/src/default-rtl.css b/www/assets/css/src/default-rtl.css index abce8dcdfa252cc6111e3991bfad236ae7f78ee2..3df1c9ce86998b56833c14cdb020a736ab6318e0 100644 --- a/www/assets/css/src/default-rtl.css +++ b/www/assets/css/src/default-rtl.css @@ -2,173 +2,173 @@ /* THE BIG GUYS */ html { - direction: rtl; + direction: rtl; } #header{ - background: linear-gradient(-141deg, #b8002c 0%, #db0100 51%, #e8410c 75%); + background: linear-gradient(-141deg, #b8002c 0%, #db0100 51%, #e8410c 75%); } #footer{ - background: linear-gradient(-141deg, #b8002c 0%, #db0100 51%, #e8410c 75%); + background: linear-gradient(-141deg, #b8002c 0%, #db0100 51%, #e8410c 75%); } /* LISTS */ ul { - margin: .3em 2em 1.5em 0; + margin: .3em 2em 1.5em 0; } li { - margin-right: 2em; + margin-right: 2em; } /* TYPOGRAPHY */ dl dd { - margin-right: 3em; + margin-right: 3em; } .efieldlist { - border-right: 1px solid #e6e6e6; + border-right: 1px solid #e6e6e6; } div.caution { - padding: .2em 60px .2em .2em; - background-position: right; + padding: .2em 60px .2em .2em; + background-position: right; } th.rowtitle { - text-align: right; + text-align: right; } .enablebox table { - margin-right: 1em; + margin-right: 1em; } .enablebox.mini table { - float: left; + float: left; } .enablebox tr td { - padding: .5px .5em 1px 1em; + padding: .5px .5em 1px 1em; } /* Attribute presentation in example page */ table.attributes td.attrname { - text-align: left; + text-align: left; } fieldset.fancyfieldset { - margin: 2em 0px 1em 1em; + margin: 2em 0px 1em 1em; } fieldset.fancyfieldset legend { - margin-right: 2em; + margin-right: 2em; } /* Reverse Float Left <-> Right */ .right { - float: left; + float: left; } .left { - float: right; + float: right; } .v-center-right{ - right: 0; + right: 0; } .logo-footer-right{ - left:0; - right: auto; + left:0; + right: auto; } .message-box { - border-left-style: initial; - border-left-width: 0; - border-left-color: none; - border-right-style: solid; - border-right-width: 0.3125rem; + border-left-style: initial; + order-left-width: 0; + border-left-color: none; + border-right-style: solid; + border-right-width: 0.3125rem; } .message-box.error{ - border-right-color: #cc4b37; + border-right-color: #cc4b37; } .message-box.success{ - border-right-color: #46cc48; + border-right-color: #46cc48; } .code-box-title .clipboard-btn { - right: auto; - left: 0; - margin-left: 4px; - margin-right: auto; + right: auto; + left: 0; + margin-left: 4px; + margin-right: auto; } /*selectize elements*/ div .item{ - float: right; + float: right; } .selectize-input{ - padding-right:8px; + padding-right:8px; } .selectize-input:after{ - transform: translate(-8px, 0); + transform: translate(-8px, 0); } /*purecss elements*/ .pure-form-aligned .pure-control-group label { - text-align: left; - margin: 0 0 0 1em; + text-align: left; + margin: 0 0 0 1em; } @media only screen and (max-width : 480px) { - .pure-form-aligned .pure-control-group label { - text-align: right; - } + .pure-form-aligned .pure-control-group label { + text-align: right; + } } .pure-form-aligned .pure-controls { - margin: 1.5em 11em 0 0; + margin: 1.5em 11em 0 0; } .pure-form .pure-help-inline, .pure-form-message-inline { - padding-left: 0; - padding-right: 0.3em; + padding-left: 0; + padding-right: 0.3em; } .pure-select{ - float: left; + float: left; } .pure-table-attributes ul{ - margin:0; + margin:0; } .pure-table-attributes li{ - margin:0; + margin:0; } /* language side menu on medium and small screens*/ #layout.active #menu { - right: initial; - left: 11em; + right: initial; + left: 11em; } #layout.active .menu-link { - right: initial; - left: 11em; + right: initial; + left: 11em; } #menu { - right: initial; - margin-right: 0; - margin-left: -11em; /* "#menu" width */ - left: 0; + right: initial; + margin-right: 0; + margin-left: -11em; /* "#menu" width */ + left: 0; } #menu a { - padding: 0.6em 0.6em 0.6em 0em; + padding: 0.6em 0.6em 0.6em 0em; } .menu-link { - right: initial; - left: 0; /* "#menu width" */ + right: initial; + left: 0; /* "#menu width" */ } /* -- Responsive Styles (Media Queries) ------------------------------------- */ @media screen and (max-width: 0em), screen and (min-width: 40em) { - #layout.active { - right: auto; - left: 11em; - } - #menuLink.menu-link.active { - right: auto; - left: 13em; - } - #foot.active { - margin-right: auto; - margin-left: 11em; - } + #layout.active { + right: auto; + left: 11em; + } + #menuLink.menu-link.active { + right: auto; + left: 13em; + } + #foot.active { + margin-right: auto; + margin-left: 11em; + } } diff --git a/www/assets/js/src/language.js b/www/assets/js/src/language.js index 6666a5504637abbaf9627510c5e32048d485b836..0f4484728bd92788c217c3cc2248827fe0a3c10a 100644 --- a/www/assets/js/src/language.js +++ b/www/assets/js/src/language.js @@ -1,7 +1,7 @@ -$(document).ready(function() { +$(document).ready(function () { // get available languages - var languages = $.map($('#language_selector option') ,function(option) { + var languages = $.map($('#language_selector option') ,function (option) { return option.text.toLowerCase(); }); @@ -9,8 +9,7 @@ $(document).ready(function() { if (-1 !== $.inArray( $('#language_selector-selectized').prev().text().toLowerCase(), languages - ) - ) { + )) { e.currentTarget.submit(); } }); diff --git a/www/assets/js/src/script.js b/www/assets/js/src/script.js index 7748abb05c26559a912f457f106f5e117eee4759..61e710f17f404359af63b5ac95d974625169fb18 100644 --- a/www/assets/js/src/script.js +++ b/www/assets/js/src/script.js @@ -3,11 +3,12 @@ * * @param id The id of the element which should receive focus. */ -function SimpleSAML_focus(id) { - element = document.getElementById(id); - if(element != null) { - element.focus(); - } +function SimpleSAML_focus(id) +{ + element = document.getElementById(id); + if (element != null) { + element.focus(); + } } @@ -16,13 +17,14 @@ function SimpleSAML_focus(id) { * * @param id The id of the element which should be shown. */ -function SimpleSAML_show(id) { - element = document.getElementById(id); - if (element == null) { - return; - } +function SimpleSAML_show(id) +{ + element = document.getElementById(id); + if (element == null) { + return; + } - element.style.display = 'block'; + element.style.display = 'block'; } @@ -31,38 +33,39 @@ function SimpleSAML_show(id) { * * @param id The id of the element which should be hidden. */ -function SimpleSAML_hide(id) { - element = document.getElementById(id); - if (element == null) { - return; - } +function SimpleSAML_hide(id) +{ + element = document.getElementById(id); + if (element == null) { + return; + } - element.style.display = 'none'; + element.style.display = 'none'; } // Attach the `fileselect` event to all file inputs on the page -$(document).on('change', ':file', function() { +$(document).on('change', ':file', function () { var input = $(this), numFiles = input.get(0).files ? input.get(0).files.length : 1, label = input.val().replace(/\\/g, '/').replace(/.*\//, ''); input.trigger('fileselect', [numFiles, label]); }); -$(document).ready(function() { +$(document).ready(function () { $('.language-menu').selectize(); $('#organization').selectize(); new ClipboardJS('.clipboard-btn'); // Watch for custom `fileselect` event - $(':file').on('fileselect', function(event, numFiles, label) { + $(':file').on('fileselect', function (event, numFiles, label) { var input = $(this).parents('.pure-button-group').find(':text'), log = numFiles > 1 ? numFiles + ' files selected' : label; - if( input.length ) { + if (input.length) { input.val(log); } else { - if( log ) { + if (log) { document.getElementById('show-file').innerHTML = log; } } diff --git a/www/assets/js/src/side_menu.js b/www/assets/js/src/side_menu.js index 4ba1b214b5df8e2cf8fe0ff4a15e76cb3c18b7b0..ef81946439db1fa19384a8c8bd23ff5622ad35c2 100644 --- a/www/assets/js/src/side_menu.js +++ b/www/assets/js/src/side_menu.js @@ -6,12 +6,13 @@ content = document.getElementById('content'); footer = document.getElementById('foot'); - function toggleClass(element, className) { + function toggleClass(element, className) + { var classes = element.className.split(/\s+/), length = classes.length, i = 0; - for(; i < length; i++) { + for (; i < length; i++) { if (classes[i] === className) { classes.splice(i, 1); break; @@ -25,7 +26,8 @@ element.className = classes.join(' '); } - function toggleAll(e) { + function toggleAll(e) + { var active = 'active'; e.preventDefault(); @@ -39,7 +41,7 @@ toggleAll(e); }; - content.onclick = function(e) { + content.onclick = function (e) { if (menu.className.indexOf('active') !== -1) { toggleAll(e); } diff --git a/www/authmemcookie.php b/www/authmemcookie.php index 032c05f4c568d10c8c6fe50b20f249bf2ac01a99..9825c62f54bc6ed9032b981eb43ae0882f989af9 100644 --- a/www/authmemcookie.php +++ b/www/authmemcookie.php @@ -40,7 +40,7 @@ try { // generate the authentication information $attributes = $s->getAttributes(); - $authData = array(); + $authData = []; // username $usernameAttr = $amc->getUsernameAttr(); @@ -63,7 +63,7 @@ try { } $authData['Groups'] = $attributes[$groupsAttr]; } else { - $authData['Groups'] = array(); + $authData['Groups'] = []; } $authData['RemoteIP'] = $_SERVER['REMOTE_ADDR']; diff --git a/www/errorreport.php b/www/errorreport.php index 4ffe52452765c566be4f4422d3da2bec0e804046..0193e4767b589133c67e27bbef489fc0f9d072b9 100644 --- a/www/errorreport.php +++ b/www/errorreport.php @@ -26,7 +26,7 @@ try { } if ($data === null) { - $data = array( + $data = [ 'exceptionMsg' => 'not set', 'exceptionTrace' => 'not set', 'reportId' => $reportId, @@ -34,7 +34,7 @@ if ($data === null) { 'url' => 'not set', 'version' => $config->getVersion(), 'referer' => 'not set', - ); + ]; if (isset($session)) { $data['trackId'] = $session->getTrackID(); @@ -69,11 +69,11 @@ $message = <<<MESSAGE <p>Track ID:</p> <pre>%s</pre> -<p>Version: <tt>%s</tt></p> +<p>Version: <code>%s</code></p> -<p>Report ID: <tt>%s</tt></p> +<p>Report ID: <code>%s</code></p> -<p>Referer: <tt>%s</tt></p> +<p>Referer: <code>%s</code></p> <hr /> <div class="footer"> diff --git a/www/resources/default-rtl.css b/www/resources/default-rtl.css index 0113f82f1059079f5ec98d560e8843968ed850b4..df092c3d2ba09a3e277878d5d607357cb38936f2 100644 --- a/www/resources/default-rtl.css +++ b/www/resources/default-rtl.css @@ -2,69 +2,69 @@ /* THE BIG GUYS */ html { - direction: rtl; + direction: rtl; } /* LISTS */ ul { - margin: .3em 2em 1.5em 0; + margin: .3em 2em 1.5em 0; } li { - margin-right: 2em; + margin-right: 2em; } #wrap { - text-align: right; + text-align: right; } /* TYPOGRAPHY */ dl dd { - margin-right: 3em; + margin-right: 3em; } .efieldlist { - border-right: 1px solid #e6e6e6; + border-right: 1px solid #e6e6e6; } div.caution { - padding: .2em 60px .2em .2em; - background-position: right; + padding: .2em 60px .2em .2em; + background-position: right; } th.rowtitle { - text-align: right; + text-align: right; } .enablebox table { - margin-right: 1em; + margin-right: 1em; } .enablebox.mini table { - float: left; + float: left; } .enablebox tr td { - padding: .5px .5em 1px 1em; + padding: .5px .5em 1px 1em; } /* Attribute presentation in example page */ table.attributes td.attrname { - text-align: left; + text-align: left; } fieldset.fancyfieldset { - margin: 2em 0px 1em 1em; + margin: 2em 0px 1em 1em; } fieldset.fancyfieldset legend { - margin-right: 2em; + margin-right: 2em; } -.ui-tabs .ui-tabs-nav li { - float: right; +.ui-tabs .ui-tabs-nav li { + float: right; } /* Reverse Float Left <-> Right */ .float-r { - float: left; + float: left; } .float-l { - float: right; + float: right; } diff --git a/www/resources/default.css b/www/resources/default.css index 3c0371bb5cffa5add05af9b70e4fa132be57d426..f033b771621ec1542e5ce77240e5adf123545e84 100644 --- a/www/resources/default.css +++ b/www/resources/default.css @@ -2,474 +2,467 @@ /* THE BIG GUYS */ * { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } body { - text-align: center; - padding: 10px 0; - background: #1c1c1c; -/* background-image: url(icons/ssplogo-fish.png); - background-repeat: no-repeat; */ - color: #333; - font: 83%/1.5 arial,tahoma,verdana,sans-serif; + text-align: center; + padding: 10px 0; + background: #1c1c1c; +/* background-image: url(icons/ssplogo-fish.png); */ +/* background-repeat: no-repeat; */ + color: #333; + font: 83%/1.5 arial,tahoma,verdana,sans-serif; } .body-embed { - padding: 0; - background: #ffffff; - font: 83%/1.5 arial,tahoma,verdana,sans-serif; + padding: 0; + background: #ffffff; + font: 83%/1.5 arial,tahoma,verdana,sans-serif; } img { - border: none; - display: block; + border: none; + display: block; } hr { - margin: 1em 0; - background: #eee; - height: 1px; - color: #eee; - border: none; - clear: both; + margin: 1em 0; + background: #eee; + height: 1px; + color: #eee; + border: none; + clear: both; } /* LINKS */ a, a:link, a:link, a:link, a:hover { - - text-decoration: none; - color: #777; - border-bottom: 1px dotted #ccc; - font-weight: normal; + text-decoration: none; + color: #777; + border-bottom: 1px dotted #ccc; + font-weight: normal; } - a:link, a:visited { - text-decoration: none; - color: #777; - border-bottom: 1px dotted #ccc; - font-weight: normal; + text-decoration: none; + color: #777; + border-bottom: 1px dotted #ccc; + font-weight: normal; } .ui-tabs-nav a { - border: none ! important; - text-decoration: none; + border: none ! important; + text-decoration: none; } a:visited { - color: #999; + color: #999; } a:hover, a:active { - color: #069; - text-decoration: none; - color: #333; - border-bottom: 1px solid #333; + color: #069; + text-decoration: none; + color: #333; + border-bottom: 1px solid #333; } #header a { - color: #fff; - text-decoration: none; + color: #fff; + text-decoration: none; } /* LISTS */ ul { - margin: .3em 0 1.5em 2em; + margin: .3em 0 1.5em 2em; } ul.related { - margin-top: -1em; + margin-top: -1em; } li { - margin-left: 2em; + margin-left: 2em; } dt { - font-weight: bold; + font-weight: bold; } #wrap { - background: #fff; + background: #fff; - border: 1px solid #fff; - position: relative; - text-align: left; + border: 1px solid #fff; + position: relative; + text-align: left; - margin: 20px 75px 2em 75px; - max-width: 950px; + margin: 20px 75px 2em 75px; + max-width: 950px; } #languagebar { - padding-left: 10px; - padding-right: 10px; + padding-left: 10px; + padding-right: 10px; } #languagebar a:link, #languagebar a:visited { - text-decoration: none; - color: #777; - border-bottom: 1px dotted #ccc; - font-weight: normal; + text-decoration: none; + color: #777; + border-bottom: 1px dotted #ccc; + font-weight: normal; } #languagebar a:hover { - text-decoration: none; - color: #333; - border-bottom: 1px solid #333; - + text-decoration: none; + color: #333; + border-bottom: 1px solid #333; } #header { - background: #666 url("header-bkg.png") repeat-x 0 100%; - margin: 0px; - padding: 0 0 8px; + background: #666 url("header-bkg.png") repeat-x 0 100%; + margin: 0px; + padding: 0 0 8px; } #header h1 { - color: #fff; - font-size: 145%; - padding: 20px 20px 12px; + color: #fff; + font-size: 145%; + padding: 20px 20px 12px; } - #content, #footer { - padding: 0 20px; + padding: 0 20px; } /* TYPOGRAPHY */ p, ul, ol { - margin: 0 0 1.5em; + margin: 0 0 1.5em; } h1, h2, h3, h4, h5, h6 { - letter-spacing: -1px; - font-family: arial,verdana,sans-serif; - margin: 1.2em 0 .3em; - color: #000; - border-bottom: 1px solid #eee; - padding-bottom: .1em; + letter-spacing: -1px; + font-family: arial,verdana,sans-serif; + margin: 1.2em 0 .3em; + color: #000; + border-bottom: 1px solid #eee; + padding-bottom: .1em; } h1 { - font-size: 196%; - margin-top: 0; - border: none; + font-size: 196%; + margin-top: 0; + border: none; } h2 { - font-size: 136%; + font-size: 136%; } h3 { - font-size: 126%; + font-size: 126%; } h4 { - font-size: 116%; - font-weight: bold; + font-size: 116%; + font-weight: bold; } h5 { - font-size: 106%; + font-size: 106%; } h6 { - font-size: 96%; + font-size: 96%; } input { - border: 1px solid #ddd; - border-radius: 3px; - padding: 5px; - line-height: 1.5em; + border: 1px solid #ddd; + border-radius: 3px; + padding: 5px; + line-height: 1.5em; } h1 a { - text-decoration: none; - border: none ! important; - color: white; + text-decoration: none; + border: none ! important; + color: white; } h1 a:hover { - border-bottom: 1px dotted #eee; + border-bottom: 1px dotted #eee; } #content { - margin-top: 2em; + margin-top: 2em; } .old { - text-decoration: line-through; + text-decoration: line-through; } dl dt { - color: #333; + color: #333; } dl dd { - color: #666; - margin-left: 3em; -/* font-family: monospace; */ + color: #666; + margin-left: 3em; +/* font-family: monospace; */ } .efieldlist { - padding: .4em; - margin: .8em; - border-top: 1px solid #e6e6e6; - border-left: 1px solid #e6e6e6; + padding: .4em; + margin: .8em; + border-top: 1px solid #e6e6e6; + border-left: 1px solid #e6e6e6; } .efieldlist.warning { - background-color: #922; - border: 1px solid #333; - color: white; + background-color: #922; + border: 1px solid #333; + color: white; } .efieldlist.warning h5 { - color: white; + color: white; } .efieldlist h5 { - font-weight: bold; - color: #200; - margin: .3em; + font-weight: bold; + color: #200; + margin: .3em; } .trackidtext { - border: 1px dashed #aaa; - background: #eaeaea; - padding: .6em; - margin: .4em; + border: 1px dashed #aaa; + background: #eaeaea; + padding: .6em; + margin: .4em; } .trackidtext .trackid { - border: 1px solid #ccc; - background: #eee; - margin: .4em; - padding: .4em; - font-family: monospace; - font-size: large; + border: 1px solid #ccc; + background: #eee; + margin: .4em; + padding: .4em; + font-family: monospace; + font-size: large; } div.caution { - background-color: #FF9; - background-image: url('icons/experience/gtk-dialog-warning.48x48.png'); - background-repeat: no-repeat; - border: thin solid #444; - padding: .2em .2em .2em 60px; - margin: 1em 0px 1em 0px; + background-color: #FF9; + background-image: url('icons/experience/gtk-dialog-warning.48x48.png'); + background-repeat: no-repeat; + border: thin solid #444; + padding: .2em .2em .2em 60px; + margin: 1em 0px 1em 0px; } th.rowtitle { - text-align: left; + text-align: left; } .enablebox table { - border: 1px solid #eee; - - margin-left: 1em; + border: 1px solid #eee; + margin-left: 1em; } .enablebox.mini table { - float: right; + float: right; } .enablebox tr td { - padding: .5px 1em 1px .5em; - margin: 0px; + padding: .5px 1em 1px .5em; + margin: 0px; } .enablebox { - font-size: 85%; + font-size: 85%; } .enablebox tr.enabled td { - background: #eee; + background: #eee; } .enablebox tr.disabled td { - background: #ccc; + background: #ccc; } .metadatabox { - overflow: scroll; - border: 1px solid #eee; - padding: 0.5em; - border-radius: 3px; + overflow: scroll; + border: 1px solid #eee; + padding: 0.5em; + border-radius: 3px; } div.preferredidp { - border: 1px dashed #ccc; - background: #eee; - padding: 2px 2em 2px 2em; + border: 1px dashed #ccc; + background: #eee; + padding: 2px 2em 2px 2em; } table.modules { - border-collapse: collapse; + border-collapse: collapse; } table.modules tr td { - border-bottom: 1px solid #ddd; + border-bottom: 1px solid #ddd; } table.modules tr.even td { - background: #f0f0f0; + background: #f0f0f0; } /* Attribute presentation in example page */ table.attributes { - width: 100%; - margin: 0px; - border: 1px solid #bbb; - border-collapse: collapse; + width: 100%; + margin: 0px; + border: 1px solid #bbb; + border-collapse: collapse; } table.attributes td.attrname { - text-align: right; + text-align: right; } table.attributes tr.even td { - background: #eee; + background: #eee; } table.attributes tr td { - border-bottom: 1px solid #bbb; - border-left: 0px; - border-right: 0px; - background: #fff; - padding-top: 5px; - padding-left: 1em; - padding-right: 1em; - - vertical-align: top; + border-bottom: 1px solid #bbb; + border-left: 0px; + border-right: 0px; + background: #fff; + padding-top: 5px; + padding-left: 1em; + padding-right: 1em; + vertical-align: top; } .attrvalue { - word-break: break-all; - word-wrap: break-word; + word-break: break-all; + word-wrap: break-word; } table#table_with_attributes tr:last-child td { - border-bottom: none; + border-bottom: none; } fieldset.fancyfieldset { - margin: 2em 1em 1em 0px; - border: 1px solid #bbb; + margin: 2em 1em 1em 0px; + border: 1px solid #bbb; } fieldset.fancyfieldset legend { - margin-left: 2em; - padding: 3px 2em 3px 2em; - border: 1px solid #bbb; + margin-left: 2em; + padding: 3px 2em 3px 2em; + border: 1px solid #bbb; } div#confirmation input { - margin-top: .5em; - margin-bottom: .5em; + margin-top: .5em; + margin-bottom: .5em; } div#confirmation { - border: 1px solid #aaa; - background: #eee; - padding: .6em 1em .1em 1em; + border: 1px solid #aaa; + background: #eee; + padding: .6em 1em .1em 1em; } caption { - display: none; + display: none; } /* Left-to-Right CSS for RTL (Right to Left Support) */ .float-r { - float: right; + float: right; } .float-l { - float: left; + float: left; } #mobile_remember_username, #mobile_remember_me { - display: none; + display: none; } @media handheld, only screen and (max-width: 480px), only screen and (max-device-width: 480px) { - #header, #languagebar, #footer, .erroricon, .loginicon, .logintext, - #regular_remember_username, #regular_remember_me { - display: none; - } - body { - font-size: 20px; - } - #wrap { - margin: 0; - } - h1,h2,h3,h4 { - font-size: 110%; - } - - #content { - margin-bottom: 10px; - padding: 0; - padding-left: 5px; - } - input[type="text"], input[type="password"] { - height: 1.5em; - font-size: 1em; - } - .youareadmin { - font-size: 50%; - } - #mobilesubmit, #mobile_remember_username, #mobile_remember_me { - display: table-row; - } + #header, #languagebar, #footer, .erroricon, .loginicon, .logintext, + #regular_remember_username, #regular_remember_me { + display: none; + } + body { + font-size: 20px; + } + #wrap { + margin: 0; + } + h1,h2,h3,h4 { + font-size: 110%; + } + + #content { + margin-bottom: 10px; + padding: 0; + padding-left: 5px; + } + input[type="text"], input[type="password"] { + height: 1.5em; + font-size: 1em; + } + .youareadmin { + font-size: 50%; + } + #mobilesubmit, #mobile_remember_username, #mobile_remember_me { + display: table-row; + } } .btn, .btnaddonright { - color: #000000; - border: 1px solid #eee; - border-radius: 3px; - background-color: #eee; - background-image: linear-gradient(#fcfcfc, #eee); - text-align: center; - padding: 5px; - cursor: hand; + color: #000000; + border: 1px solid #eee; + border-radius: 3px; + background-color: #eee; + background-image: linear-gradient(#fcfcfc, #eee); + text-align: center; + padding: 5px; + cursor: hand; } .btn:hover, .btnaddonright:hover { - border-color: #ccc; - background-color: #ddd; - background-image: linear-gradient(#eee, #ddd); - + border-color: #ccc; + background-color: #ddd; + background-image: linear-gradient(#eee, #ddd); } .btn img, .btnaddonright img { - max-height: 15px; - max-width: 15px; + max-height: 15px; + max-width: 15px; } .topright { - position: absolute; - right: 2em; + position: absolute; + right: 2em; } .input-group { - display: table; + display: table; } .input-group pre { - background: white; - position: relative; - width: 100%; - vertical-align: middle; - border: 1px solid #eee; - padding: 0.5em; - display: table-cell; + background: white; + position: relative; + width: 100%; + vertical-align: middle; + border: 1px solid #eee; + padding: 0.5em; + display: table-cell; } .input-group .btnaddonright { - position: relative; - display: inline-block; - border-bottom-left-radius: 0; - border-bottom-right-radius: 3px; - border-top-left-radius: 0; - border-top-right-radius: 3px; - border-left: none; + position: relative; + display: inline-block; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; + border-left: none; } .input-group .btnaddonright:hover { - border-left: 1px solid #ccc; + border-left: 1px solid #ccc; } .input-group .input-left { - border-bottom-left-radius: 3px; - border-bottom-right-radius: 0; - border-top-left-radius: 3px; - border-top-right-radius: 0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + border-top-left-radius: 3px; + border-top-right-radius: 0; } diff --git a/www/resources/post.js b/www/resources/post.js index f551736512e1afdcdb94a81ed0c92783d130ec38..043bec73322079eb6d6e8bfd9f39bbb3b654615f 100644 --- a/www/resources/post.js +++ b/www/resources/post.js @@ -2,6 +2,6 @@ * Automatically click the input button to redirect the user to * the SSO */ -window.onload = function(){ +window.onload = function () { document.getElementById('postLoginSubmitButton').click(); -}; \ No newline at end of file +}; diff --git a/www/resources/script.js b/www/resources/script.js index 3adf1b1f88e7573cc37c8dad40769a5e5fac264b..a195c24cb8fa8a1180dbec33e05796be5490af42 100644 --- a/www/resources/script.js +++ b/www/resources/script.js @@ -3,11 +3,12 @@ * * @param id The id of the element which should receive focus. */ -function SimpleSAML_focus(id) { - element = document.getElementById(id); - if(element != null) { - element.focus(); - } +function SimpleSAML_focus(id) +{ + element = document.getElementById(id); + if (element != null) { + element.focus(); + } } @@ -16,13 +17,14 @@ function SimpleSAML_focus(id) { * * @param id The id of the element which should be shown. */ -function SimpleSAML_show(id) { - element = document.getElementById(id); - if (element == null) { - return; - } +function SimpleSAML_show(id) +{ + element = document.getElementById(id); + if (element == null) { + return; + } - element.style.display = 'block'; + element.style.display = 'block'; } @@ -31,11 +33,12 @@ function SimpleSAML_show(id) { * * @param id The id of the element which should be hidden. */ -function SimpleSAML_hide(id) { - element = document.getElementById(id); - if (element == null) { - return; - } +function SimpleSAML_hide(id) +{ + element = document.getElementById(id); + if (element == null) { + return; + } - element.style.display = 'none'; + element.style.display = 'none'; } diff --git a/www/resources/slo.css b/www/resources/slo.css index f1ac2fd4daa4278f68565efafe3b9e1190703d26..13946bcbaa5fb1175d41cfd65d315194b0c22294 100644 --- a/www/resources/slo.css +++ b/www/resources/slo.css @@ -1,19 +1,18 @@ table#slostatustable { -/* width: 100%; */ - border-collapse: collapse; - margin-bottom: 1em; +/* width: 100%; */ + border-collapse: collapse; + margin-bottom: 1em; } table#slostatustable tr td { -/* border-top: 1px solid #ccc; */ - padding-left: 4px; - padding-right: 4px; +/* border-top: 1px solid #ccc; */ + padding-left: 4px; + padding-right: 4px; } table#slostatustable tr td.statustext { - min-width: 5em; - padding-left: 0px; + min-width: 5em; + padding-left: 0px; } - table#slostatustable tr td.statustext span { display: none; } table#slostatustable tr.completed td.statustext span.completed { display: inline; } table#slostatustable tr.onhold td.statustext span.onhold { display: inline; } @@ -21,66 +20,62 @@ table#slostatustable tr.inprogress td.statustext span.inprogress { display: inli table#slostatustable tr.failed td.statustext span.failed { display: inline; } table#slostatustable tr td.icons img { -/* margin: 3px; */ - display: none; +/* margin: 3px; */ + display: none; } table#slostatustable tr.completed td.icons img.completed { display: inline; } table#slostatustable tr.onhold td.icons img.onhold { display: inline; } table#slostatustable tr.inprogress td.icons img.inprogress { display: inline; } table#slostatustable tr.failed td.icons img.failed { display: inline; } - iframe.hiddeniframe { - display: none; + display: none; } /* From old CSS - - div.allcompleted#interrupt { - display: none; + display: none; } div#interrupt a:link { - color: #036; - border-bottom: 1px dotted #036; - text-decoration: none; + color: #036; + border-bottom: 1px dotted #036; + text-decoration: none; } div#interrupt a:hover { - border-bottom: 1px solid #036; + border-bottom: 1px solid #036; } div#interrupt { - display: block; - border: 3px solid #036; - background: #39F; - padding: 1em; - margin: .2em; + display: block; + border: 3px solid #036; + background: #39F; + padding: 1em; + margin: .2em; } div#iscompleted { - display: none; - border: 3px solid #993; - background: #FF9; - padding: 1em; - margin: .2em; + display: none; + border: 3px solid #993; + background: #FF9; + padding: 1em; + margin: .2em; } div.allcompleted#iscompleted { - display: block ! important; + display: block ! important; } div.inprogress, div.loggedout { - - background: #eee; - color: #444; - padding: .2em 1em; - margin: .2em; + background: #eee; + color: #444; + padding: .2em 1em; + margin: .2em; } div.inprogress { - border: 1px dotted #888; + border: 1px dotted #888; } div.loggedout { - border: 1px solid #888; - background: #9f9 ! important ; + border: 1px solid #888; + background: #9f9 ! important; } iframe.hiddeniframe { - display: none; + display: none; } - */ +*/ diff --git a/www/saml2/idp/ArtifactResolutionService.php b/www/saml2/idp/ArtifactResolutionService.php index 975e8d8260d2a5851cd37d8afef44d59679cf772..16a99dc62e1285bb179ff4d8cd46ba8c44c26410 100644 --- a/www/saml2/idp/ArtifactResolutionService.php +++ b/www/saml2/idp/ArtifactResolutionService.php @@ -47,7 +47,7 @@ if (!($request instanceof \SAML2\ArtifactResolve)) { } $issuer = $request->getIssuer(); -$spMetadata = $metadata->getMetadataConfig($issuer, 'saml20-sp-remote'); +$spMetadata = $metadata->getMetaDataConfig($issuer, 'saml20-sp-remote'); $artifact = $request->getArtifact(); diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php index 77f9e20f099c924fb5c4341f6327a2961689ca9e..984fb9252d7ce0402701c3e0a08ef6c5257e51a6 100644 --- a/www/saml2/idp/metadata.php +++ b/www/saml2/idp/metadata.php @@ -26,18 +26,18 @@ try { $_GET['idpentityid'] : $metadata->getMetaDataCurrentEntityID('saml20-idp-hosted'); $idpmeta = $metadata->getMetaDataConfig($idpentityid, 'saml20-idp-hosted'); - $availableCerts = array(); + $availableCerts = []; - $keys = array(); + $keys = []; $certInfo = Crypto::loadPublicKey($idpmeta, false, 'new_'); if ($certInfo !== null) { $availableCerts['new_idp.crt'] = $certInfo; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => true, 'X509Certificate' => $certInfo['certData'], - ); + ]; $hasNewCert = true; } else { $hasNewCert = false; @@ -45,29 +45,29 @@ try { $certInfo = Crypto::loadPublicKey($idpmeta, true); $availableCerts['idp.crt'] = $certInfo; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => ($hasNewCert ? false : true), 'X509Certificate' => $certInfo['certData'], - ); + ]; if ($idpmeta->hasValue('https.certificate')) { $httpsCert = Crypto::loadPublicKey($idpmeta, true, 'https.'); assert(isset($httpsCert['certData'])); $availableCerts['https.crt'] = $httpsCert; - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => false, 'X509Certificate' => $httpsCert['certData'], - ); + ]; } - $metaArray = array( + $metaArray = [ 'metadata-set' => 'saml20-idp-remote', 'entityid' => $idpentityid, - ); + ]; $ssob = $metadata->getGenerated('SingleSignOnServiceBinding', 'saml20-idp-hosted'); $slob = $metadata->getGenerated('SingleLogoutServiceBinding', 'saml20-idp-hosted'); @@ -76,30 +76,30 @@ try { if (is_array($ssob)) { foreach ($ssob as $binding) { - $metaArray['SingleSignOnService'][] = array( + $metaArray['SingleSignOnService'][] = [ 'Binding' => $binding, 'Location' => $ssol, - ); + ]; } } else { - $metaArray['SingleSignOnService'][] = array( + $metaArray['SingleSignOnService'][] = [ 'Binding' => $ssob, 'Location' => $ssol, - ); + ]; } if (is_array($slob)) { foreach ($slob as $binding) { - $metaArray['SingleLogoutService'][] = array( + $metaArray['SingleLogoutService'][] = [ 'Binding' => $binding, 'Location' => $slol, - ); + ]; } } else { - $metaArray['SingleLogoutService'][] = array( + $metaArray['SingleLogoutService'][] = [ 'Binding' => $slob, 'Location' => $slol, - ); + ]; } if (count($keys) === 1) { @@ -110,31 +110,31 @@ try { if ($idpmeta->getBoolean('saml20.sendartifact', false)) { // Artifact sending enabled - $metaArray['ArtifactResolutionService'][] = array( + $metaArray['ArtifactResolutionService'][] = [ 'index' => 0, 'Location' => HTTP::getBaseURL().'saml2/idp/ArtifactResolutionService.php', 'Binding' => Constants::BINDING_SOAP, - ); + ]; } if ($idpmeta->getBoolean('saml20.hok.assertion', false)) { // Prepend HoK SSO Service endpoint. - array_unshift($metaArray['SingleSignOnService'], array( + array_unshift($metaArray['SingleSignOnService'], [ 'hoksso:ProtocolBinding' => Constants::BINDING_HTTP_REDIRECT, 'Binding' => Constants::BINDING_HOK_SSO, 'Location' => HTTP::getBaseURL().'saml2/idp/SSOService.php' - )); + ]); } if ($idpmeta->getBoolean('saml20.ecp', false)) { - $metaArray['SingleSignOnService'][] = array( + $metaArray['SingleSignOnService'][] = [ 'index' => 0, 'Binding' => Constants::BINDING_SOAP, 'Location' => HTTP::getBaseURL().'saml2/idp/SSOService.php', - ); + ]; } - $metaArray['NameIDFormat'] = $idpmeta->getString( + $metaArray['NameIDFormat'] = $idpmeta->getArrayizeString( 'NameIDFormat', 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient' ); @@ -218,11 +218,15 @@ try { $t->data['clipboard.js'] = true; $t->data['available_certs'] = $availableCerts; - $certdata = array(); + $certdata = []; foreach (array_keys($availableCerts) as $availableCert) { $certdata[$availableCert]['name'] = $availableCert; $certdata[$availableCert]['url'] = SimpleSAML\Module::getModuleURL('saml/idp/certs.php').'/'.$availableCert; - $certdata[$availableCert]['comment'] = ($availableCerts[$availableCert]['certFingerprint'][0] === 'afe71c28ef740bc87425be13a2263d37971da1f9' ? 'This is the default certificate. Generate a new certificate if this is a production system.' : ''); + $certdata[$availableCert]['comment'] = ( + $availableCerts[$availableCert]['certFingerprint'][0] === 'afe71c28ef740bc87425be13a2263d37971da1f9' ? + 'This is the default certificate. Generate a new certificate if this is a production system.' : + '' + ); } $t->data['certdata'] = $certdata; $t->data['header'] = 'saml20-idp'; // TODO: Replace with headerString in 2.0 diff --git a/www/shib13/idp/metadata.php b/www/shib13/idp/metadata.php index edb474eedaf12b2bb3b3e61554dfc153115c5296..acd5ee33a46b99877db0598eba10d367d8e1e023 100644 --- a/www/shib13/idp/metadata.php +++ b/www/shib13/idp/metadata.php @@ -20,30 +20,30 @@ try { $_GET['idpentityid'] : $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted'); $idpmeta = $metadata->getMetaDataConfig($idpentityid, 'shib13-idp-hosted'); - $keys = array(); + $keys = []; $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, false, 'new_'); if ($certInfo !== null) { - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => false, 'X509Certificate' => $certInfo['certData'], - ); + ]; } $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, true); - $keys[] = array( + $keys[] = [ 'type' => 'X509Certificate', 'signing' => true, 'encryption' => false, 'X509Certificate' => $certInfo['certData'], - ); + ]; - $metaArray = array( + $metaArray = [ 'metadata-set' => 'shib13-idp-remote', 'entityid' => $idpentityid, 'SingleSignOnService' => $metadata->getGenerated('SingleSignOnService', 'shib13-idp-hosted'), - ); + ]; if (count($keys) === 1) { $metaArray['certData'] = $keys[0]['X509Certificate']; @@ -51,7 +51,7 @@ try { $metaArray['keys'] = $keys; } - $metaArray['NameIDFormat'] = $idpmeta->getString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier'); + $metaArray['NameIDFormat'] = $idpmeta->getArrayizeString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier'); if ($idpmeta->hasValue('OrganizationName')) { $metaArray['OrganizationName'] = $idpmeta->getLocalizedString('OrganizationName'); @@ -71,11 +71,11 @@ try { $metaBuilder = new \SimpleSAML\Metadata\SAMLBuilder($idpentityid); $metaBuilder->addMetadataIdP11($metaArray); $metaBuilder->addOrganizationInfo($metaArray); - $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact(array( + $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact([ 'emailAddress' => $config->getString('technicalcontact_email', null), 'name' => $config->getString('technicalcontact_name', null), 'contactType' => 'technical', - ))); + ])); $metaxml = $metaBuilder->getEntityDescriptorText(); // sign the metadata if enabled @@ -91,7 +91,7 @@ try { $t->data['headerString'] = \SimpleSAML\Locale\Translate::noop('metadata_shib13-idp'); $t->data['metaurl'] = \SimpleSAML\Utils\HTTP::addURLParameters( \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), - array('output' => 'xml') + ['output' => 'xml'] ); $t->data['metadata'] = htmlspecialchars($metaxml); $t->data['metadataflat'] = htmlspecialchars($metaflat);