Changeset 2692352
- Timestamp:
- 03/11/2022 08:06:47 AM (4 years ago)
- Location:
- next-active-directory-integration
- Files:
-
- 2 deleted
- 56 edited
- 1 copied
-
tags/2.3.2 (copied) (copied from next-active-directory-integration/trunk)
-
tags/2.3.2/classes/Adi/Authentication/LoginService.php (modified) (1 diff)
-
tags/2.3.2/classes/Adi/Authentication/SingleSignOn/Service.php (modified) (2 diffs)
-
tags/2.3.2/classes/Adi/Configuration/Options.php (modified) (3 diffs)
-
tags/2.3.2/classes/Adi/Configuration/Ui/Layout.php (modified) (1 diff)
-
tags/2.3.2/classes/Adi/Init.php (modified) (2 diffs)
-
tags/2.3.2/classes/Adi/Synchronization/Abstract.php (modified) (1 diff)
-
tags/2.3.2/classes/Adi/Synchronization/WordPress.php (modified) (5 diffs)
-
tags/2.3.2/classes/Adi/User/Manager.php (modified) (2 diffs)
-
tags/2.3.2/classes/Ldap/Attribute/Service.php (modified) (1 diff)
-
tags/2.3.2/classes/Ldap/Connection.php (modified) (1 diff)
-
tags/2.3.2/classes/Multisite/Configuration/Persistence/BlogConfigurationRepository.php (modified) (1 diff)
-
tags/2.3.2/composer.lock (modified) (54 diffs)
-
tags/2.3.2/index.php (modified) (1 diff)
-
tags/2.3.2/js/app/blog-options/controllers/security.controller.js (modified) (3 diffs)
-
tags/2.3.2/js/app/profile-options/controllers/security.controller.js (modified) (3 diffs)
-
tags/2.3.2/readme.txt (modified) (9 diffs)
-
tags/2.3.2/vendor/adLDAP/adLDAP.php (modified) (4 diffs)
-
tags/2.3.2/vendor/autoload.php (modified) (1 diff)
-
tags/2.3.2/vendor/composer/autoload_files.php (modified) (1 diff)
-
tags/2.3.2/vendor/composer/autoload_real.php (modified) (5 diffs)
-
tags/2.3.2/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/2.3.2/vendor/composer/installed.json (modified) (9 diffs)
-
tags/2.3.2/vendor/composer/installed.php (modified) (5 diffs)
-
tags/2.3.2/vendor/paragonie/random_compat/.github (deleted)
-
tags/2.3.2/vendor/paragonie/random_compat/composer.json (modified) (1 diff)
-
tags/2.3.2/vendor/paragonie/random_compat/lib/random.php (modified) (1 diff)
-
tags/2.3.2/vendor/twig/twig/CHANGELOG (modified) (1 diff)
-
tags/2.3.2/vendor/twig/twig/src/Environment.php (modified) (1 diff)
-
tags/2.3.2/vendor/twig/twig/src/Extension/CoreExtension.php (modified) (9 diffs)
-
trunk/classes/Adi/Authentication/LoginService.php (modified) (1 diff)
-
trunk/classes/Adi/Authentication/SingleSignOn/Service.php (modified) (2 diffs)
-
trunk/classes/Adi/Configuration/Options.php (modified) (3 diffs)
-
trunk/classes/Adi/Configuration/Ui/Layout.php (modified) (1 diff)
-
trunk/classes/Adi/Init.php (modified) (2 diffs)
-
trunk/classes/Adi/Synchronization/Abstract.php (modified) (1 diff)
-
trunk/classes/Adi/Synchronization/WordPress.php (modified) (5 diffs)
-
trunk/classes/Adi/User/Manager.php (modified) (2 diffs)
-
trunk/classes/Ldap/Attribute/Service.php (modified) (1 diff)
-
trunk/classes/Ldap/Connection.php (modified) (1 diff)
-
trunk/classes/Multisite/Configuration/Persistence/BlogConfigurationRepository.php (modified) (1 diff)
-
trunk/composer.lock (modified) (54 diffs)
-
trunk/index.php (modified) (1 diff)
-
trunk/js/app/blog-options/controllers/security.controller.js (modified) (3 diffs)
-
trunk/js/app/profile-options/controllers/security.controller.js (modified) (3 diffs)
-
trunk/readme.txt (modified) (9 diffs)
-
trunk/vendor/adLDAP/adLDAP.php (modified) (4 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_files.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (5 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.json (modified) (9 diffs)
-
trunk/vendor/composer/installed.php (modified) (5 diffs)
-
trunk/vendor/paragonie/random_compat/.github (deleted)
-
trunk/vendor/paragonie/random_compat/composer.json (modified) (1 diff)
-
trunk/vendor/paragonie/random_compat/lib/random.php (modified) (1 diff)
-
trunk/vendor/twig/twig/CHANGELOG (modified) (1 diff)
-
trunk/vendor/twig/twig/src/Environment.php (modified) (1 diff)
-
trunk/vendor/twig/twig/src/Extension/CoreExtension.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
next-active-directory-integration/tags/2.3.2/classes/Adi/Authentication/LoginService.php
r2641799 r2692352 113 113 add_filter('wp_authenticate_user', array($this->loginSucceededService, 'checkUserEnabled'), 10, 2); 114 114 115 // @see#142: register an additional filter for checking if the username is excluded115 // #142: register an additional filter for checking if the username is excluded 116 116 add_filter(NEXT_AD_INT_PREFIX . 'auth_form_login_requires_ad_authentication', array($this, 'requiresActiveDirectoryAuthentication'), 10, 1); 117 117 } -
next-active-directory-integration/tags/2.3.2/classes/Adi/Authentication/SingleSignOn/Service.php
r2641799 r2692352 75 75 // after login has succeeded, we want the current identified user to be automatically logged in 76 76 add_filter(NEXT_AD_INT_PREFIX . 'login_succeeded', array($this, 'loginUser'), 19, 1); 77 // @see#142: register an additional filter for checking if the username is excluded; please note that this differs from the parent's basic_login_requires_ad_authentication filter77 // #142: register an additional filter for checking if the username is excluded; please note that this differs from the parent's basic_login_requires_ad_authentication filter 78 78 add_filter(NEXT_AD_INT_PREFIX . 'auth_sso_login_requires_ad_authentication', array($this, 'requiresActiveDirectoryAuthentication'), 10, 1); 79 79 } … … 169 169 $profileMatch = $this->ssoProfileLocator->locate($credentials); 170 170 171 // #152, NADISUP-7: Critical WordPress error if a matching profile for SSO authentication can not be found 172 if (!$profileMatch) { 173 throw new NextADInt_Adi_Authentication_Exception("Unable to locate a matching profile for '" . $credentials->getLogin() . "'"); 174 } 175 171 176 // a valid profile is required for login 172 177 $validation->validateProfile($profileMatch->getProfile()); 173 178 174 179 $this->logger->debug("Valid SSO profile for type '" . $profileMatch->getType() . "' found"); 175 180 // fire a hook to inform that one of the SSO profiles has been matched -
next-active-directory-integration/tags/2.3.2/classes/Adi/Configuration/Options.php
r2641799 r2692352 109 109 // Custom Login Page 110 110 const CUSTOM_LOGIN_PAGE_ENABLED = 'custom_login_page_enabled'; 111 const CUSTOM_LOGIN_PAGE_URI = 'custom_login_page_uri'; 111 112 112 113 // additional attribute mapping … … 190 191 191 192 /** 192 * This method generates all the meta information for a option elements.193 * The keys (like self::DOMAIN_CONTROLLERS, self::PORT) and it isvalues are option elements.193 * This method generates all the meta information for an option elements. 194 * The keys (like self::DOMAIN_CONTROLLERS, self::PORT) and their values are option elements. 194 195 * The key is the internal name for the option and the value is the option meta data. 195 196 * … … 1168 1169 $transient => false, 1169 1170 ), 1171 self::CUSTOM_LOGIN_PAGE_URI => array( 1172 $title => __('Custom login page URI', 'next-active-directory-integration'), 1173 $type => NextADInt_Multisite_Option_Type::TEXT, 1174 $description => __('URI of a custom login page where authentication against the Active Directory will be enabled. By default, the custom login page\'s URI is <em>/login</em>.', 1175 'next-active-directory-integration'), 1176 $detail => __('If you use a custom login page URI like <em>/login</em>, please enter it to enable Active Directory authentication check on this page.', 'next-active-directory-integration'), 1177 $angularAttributes => 'ng-disabled="(!option.custom_login_page_enabled', 1178 $default => '/login', 1179 $sanitizer => array('string'), 1180 $showPermission => true, 1181 $transient => false, 1182 ), 1170 1183 // Maximum number of failed login attempts before the account is blocked 1171 1184 self::MAX_LOGIN_ATTEMPTS => array( -
next-active-directory-integration/tags/2.3.2/classes/Adi/Configuration/Ui/Layout.php
r2641799 r2692352 235 235 self::OPTIONS => array( 236 236 NextADInt_Adi_Configuration_Options::ENABLE_SMARTCARD_USER_LOGIN, 237 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_ENABLED 237 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_ENABLED, 238 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_URI 238 239 ), 239 240 ), -
next-active-directory-integration/tags/2.3.2/classes/Adi/Init.php
r2331595 r2692352 233 233 * Signal that NADI registration has been finished. It simply calls the WordPress action 'nadi_loaded' 234 234 * @since 2.1.8 235 * @ see ADI-672235 * @issue ADI-672 236 236 */ 237 237 public function finishRegistration() { … … 486 486 487 487 if ($customLoginPageEnabled) { 488 if (isset($_SERVER["REQUEST_URI"]) && strpos($_SERVER["REQUEST_URI"], '/login') !== false) { 488 $loginUri = $this->dc()->getConfiguration()->getOptionValue(NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_URI); 489 490 if (isset($_SERVER["REQUEST_URI"]) && strpos($_SERVER["REQUEST_URI"], $loginUri) !== false) { 489 491 $r = true; 490 492 } -
next-active-directory-integration/tags/2.3.2/classes/Adi/Synchronization/Abstract.php
r2517646 r2692352 169 169 $sid = NextADInt_ActiveDirectory_Sid::of($userDomainSid); 170 170 171 // @see#138: the SID can be null if this user has been imported in a previous version171 // #138: the SID can be null if this user has been imported in a previous version 172 172 if (!$this->connection->getActiveDirectoryContext()->isMember($sid)) { 173 173 $this->logger->warning('User with name ' . $user->user_login . 'is not a member of one of the configured domains.'); -
next-active-directory-integration/tags/2.3.2/classes/Adi/Synchronization/WordPress.php
r2641799 r2692352 280 280 $uac = $attributes[$key][0]; 281 281 282 // @see GH-132: https://github.com/NeosIT/active-directory-integration2/issues/132282 // #132: https://github.com/NeosIT/active-directory-integration2/issues/132 283 283 // With PHP 8 we got hit by https://github.com/php/php-src/pull/5331 284 284 return (int)$uac; … … 293 293 * @return bool 294 294 */ 295 public function isNormalAccount( $uac)296 { 297 298 // @seeADI-517: Improved logging for UAC Binary Flag check to make it more transparent for the user and improve debugging.295 public function isNormalAccount(int $uac) 296 { 297 298 // ADI-517: Improved logging for UAC Binary Flag check to make it more transparent for the user and improve debugging. 299 299 switch ($uac) { 300 300 case (($uac & self::UF_INTERDOMAIN_TRUST_ACCOUNT) === self::UF_INTERDOMAIN_TRUST_ACCOUNT): … … 329 329 * @return bool 330 330 */ 331 public function isSmartCardRequired( $uac)331 public function isSmartCardRequired(int $uac) 332 332 { 333 333 if (($uac & self::UF_SMARTCARD_REQUIRED) === 0) { … … 346 346 * @return bool 347 347 */ 348 public function isAccountDisabled( $uac)348 public function isAccountDisabled(int $uac) 349 349 { 350 350 if (($uac & self::UF_ACCOUNT_DISABLE) === self::UF_ACCOUNT_DISABLE) { … … 412 412 413 413 // ADI-223: Check if user is disabled in Active Directory 414 $uac = $ ldapAttributes->getFilteredValue('useraccountcontrol');414 $uac = $this->userAccountControl($ldapAttributes->getRaw()); 415 415 $isUserDisabled = $this->isAccountDisabled($uac); 416 416 -
next-active-directory-integration/tags/2.3.2/classes/Adi/User/Manager.php
r2517646 r2692352 579 579 * </ul> 580 580 * 581 * @ see ADI-691581 * @issue ADI-691 582 582 * @param WP_User $wpUser |null 583 583 * @param $preferredEmail … … 658 658 * 659 659 * @since 2.1.9 660 * @ see ADI-691660 * @issue ADI-691 661 661 * @param WP_User|null $wpUserToChange null, if user has not been created yet 662 662 * @param $preferredEmail -
next-active-directory-integration/tags/2.3.2/classes/Ldap/Attribute/Service.php
r2513920 r2692352 175 175 * @param NextADInt_Ldap_UserQuery $userQuery 176 176 * @return NextADInt_Ldap_Attributes 177 * @ see ADI-713177 * @issue ADI-713 178 178 */ 179 179 public function resolveLdapAttributes(NextADInt_Ldap_UserQuery $userQuery) -
next-active-directory-integration/tags/2.3.2/classes/Ldap/Connection.php
r2513920 r2692352 432 432 * @param array $attributeNames 433 433 * @return array|boolean the $bestMatch exactly one match or false 434 * @ see ADI-713434 * @issue ADI-713 435 435 * @since 2.1.13 436 436 */ -
next-active-directory-integration/tags/2.3.2/classes/Multisite/Configuration/Persistence/BlogConfigurationRepository.php
r2517867 r2692352 190 190 function getDefaultValue($siteId, $optionName, $option) 191 191 { 192 // gh-#127: PHP 7.4 compatibility; warning if $option is not an array but null192 // #127: PHP 7.4 compatibility; warning if $option is not an array but null 193 193 if (!is_array($option)) { 194 194 $this->logger->warn("Option '" . $optionName . "' in site with ID '" . $siteId . "' has no option configuration"); -
next-active-directory-integration/tags/2.3.2/composer.lock
r2662231 r2692352 158 158 { 159 159 "name": "paragonie/random_compat", 160 "version": "v2.0.2 0",160 "version": "v2.0.21", 161 161 "source": { 162 162 "type": "git", 163 163 "url": "https://github.com/paragonie/random_compat.git", 164 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a"165 }, 166 "dist": { 167 "type": "zip", 168 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/ 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",169 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",164 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae" 165 }, 166 "dist": { 167 "type": "zip", 168 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 169 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 170 170 "shasum": "" 171 171 }, … … 174 174 }, 175 175 "require-dev": { 176 "phpunit/phpunit": " 4.*|5.*"176 "phpunit/phpunit": "*" 177 177 }, 178 178 "suggest": { … … 208 208 "source": "https://github.com/paragonie/random_compat" 209 209 }, 210 "time": "202 1-04-17T09:33:01+00:00"210 "time": "2022-02-16T17:07:03+00:00" 211 211 }, 212 212 { … … 262 262 { 263 263 "name": "symfony/polyfill-ctype", 264 "version": "v1.2 4.0",264 "version": "v1.25.0", 265 265 "source": { 266 266 "type": "git", … … 294 294 }, 295 295 "autoload": { 296 "files": [ 297 "bootstrap.php" 298 ], 296 299 "psr-4": { 297 300 "Symfony\\Polyfill\\Ctype\\": "" 298 }, 299 "files": [ 300 "bootstrap.php" 301 ] 301 } 302 302 }, 303 303 "notification-url": "https://packagist.org/downloads/", … … 324 324 ], 325 325 "support": { 326 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.2 4.0"326 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 327 327 }, 328 328 "funding": [ … … 373 373 }, 374 374 "autoload": { 375 "files": [ 376 "bootstrap.php" 377 ], 375 378 "psr-4": { 376 379 "Symfony\\Polyfill\\Mbstring\\": "" 377 }, 378 "files": [ 379 "bootstrap.php" 380 ] 380 } 381 381 }, 382 382 "notification-url": "https://packagist.org/downloads/", … … 424 424 { 425 425 "name": "twig/twig", 426 "version": "v3.3. 7",426 "version": "v3.3.8", 427 427 "source": { 428 428 "type": "git", 429 429 "url": "https://github.com/twigphp/Twig.git", 430 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b"431 }, 432 "dist": { 433 "type": "zip", 434 "url": "https://api.github.com/repos/twigphp/Twig/zipball/ 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",435 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",430 "reference": "972d8604a92b7054828b539f2febb0211dd5945c" 431 }, 432 "dist": { 433 "type": "zip", 434 "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c", 435 "reference": "972d8604a92b7054828b539f2febb0211dd5945c", 436 436 "shasum": "" 437 437 }, … … 484 484 "support": { 485 485 "issues": "https://github.com/twigphp/Twig/issues", 486 "source": "https://github.com/twigphp/Twig/tree/v3.3. 7"486 "source": "https://github.com/twigphp/Twig/tree/v3.3.8" 487 487 }, 488 488 "funding": [ … … 496 496 } 497 497 ], 498 "time": "2022-0 1-03T21:15:37+00:00"498 "time": "2022-02-04T06:59:48+00:00" 499 499 } 500 500 ], … … 547 547 { 548 548 "name": "antecedent/patchwork", 549 "version": "2.1. 19",549 "version": "2.1.21", 550 550 "source": { 551 551 "type": "git", 552 552 "url": "https://github.com/antecedent/patchwork.git", 553 "reference": " 94fe587cb0a6c1695b1ddc650e877231be80b8bc"554 }, 555 "dist": { 556 "type": "zip", 557 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/ 94fe587cb0a6c1695b1ddc650e877231be80b8bc",558 "reference": " 94fe587cb0a6c1695b1ddc650e877231be80b8bc",553 "reference": "25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d" 554 }, 555 "dist": { 556 "type": "zip", 557 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d", 558 "reference": "25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d", 559 559 "shasum": "" 560 560 }, … … 589 589 "support": { 590 590 "issues": "https://github.com/antecedent/patchwork/issues", 591 "source": "https://github.com/antecedent/patchwork/tree/2.1. 19"592 }, 593 "time": "2022-0 1-20T04:47:04+00:00"591 "source": "https://github.com/antecedent/patchwork/tree/2.1.21" 592 }, 593 "time": "2022-02-07T07:28:34+00:00" 594 594 }, 595 595 { 596 596 "name": "doctrine/instantiator", 597 "version": "1.4. 0",597 "version": "1.4.1", 598 598 "source": { 599 599 "type": "git", 600 600 "url": "https://github.com/doctrine/instantiator.git", 601 "reference": " d56bf6102915de5702778fe20f2de3b2fe570b5b"602 }, 603 "dist": { 604 "type": "zip", 605 "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ d56bf6102915de5702778fe20f2de3b2fe570b5b",606 "reference": " d56bf6102915de5702778fe20f2de3b2fe570b5b",601 "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" 602 }, 603 "dist": { 604 "type": "zip", 605 "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", 606 "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", 607 607 "shasum": "" 608 608 }, … … 611 611 }, 612 612 "require-dev": { 613 "doctrine/coding-standard": "^ 8.0",613 "doctrine/coding-standard": "^9", 614 614 "ext-pdo": "*", 615 615 "ext-phar": "*", 616 "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 617 "phpstan/phpstan": "^0.12", 618 "phpstan/phpstan-phpunit": "^0.12", 619 "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 616 "phpbench/phpbench": "^0.16 || ^1", 617 "phpstan/phpstan": "^1.4", 618 "phpstan/phpstan-phpunit": "^1", 619 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 620 "vimeo/psalm": "^4.22" 620 621 }, 621 622 "type": "library", … … 644 645 "support": { 645 646 "issues": "https://github.com/doctrine/instantiator/issues", 646 "source": "https://github.com/doctrine/instantiator/tree/1.4. 0"647 "source": "https://github.com/doctrine/instantiator/tree/1.4.1" 647 648 }, 648 649 "funding": [ … … 660 661 } 661 662 ], 662 "time": "202 0-11-10T18:47:58+00:00"663 "time": "2022-03-03T08:28:38+00:00" 663 664 }, 664 665 { … … 784 785 { 785 786 "name": "myclabs/deep-copy", 786 "version": "1.1 0.2",787 "version": "1.11.0", 787 788 "source": { 788 789 "type": "git", 789 790 "url": "https://github.com/myclabs/DeepCopy.git", 790 "reference": " 776f831124e9c62e1a2c601ecc52e776d8bb7220"791 }, 792 "dist": { 793 "type": "zip", 794 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ 776f831124e9c62e1a2c601ecc52e776d8bb7220",795 "reference": " 776f831124e9c62e1a2c601ecc52e776d8bb7220",791 "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" 792 }, 793 "dist": { 794 "type": "zip", 795 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", 796 "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", 796 797 "shasum": "" 797 798 }, … … 799 800 "php": "^7.1 || ^8.0" 800 801 }, 801 "require-dev": { 802 "doctrine/collections": "^1.0", 803 "doctrine/common": "^2.6", 804 "phpunit/phpunit": "^7.1" 805 }, 806 "type": "library", 807 "autoload": { 802 "conflict": { 803 "doctrine/collections": "<1.6.8", 804 "doctrine/common": "<2.13.3 || >=3,<3.2.2" 805 }, 806 "require-dev": { 807 "doctrine/collections": "^1.6.8", 808 "doctrine/common": "^2.13.3 || ^3.2.2", 809 "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 810 }, 811 "type": "library", 812 "autoload": { 813 "files": [ 814 "src/DeepCopy/deep_copy.php" 815 ], 808 816 "psr-4": { 809 817 "DeepCopy\\": "src/DeepCopy/" 810 }, 811 "files": [ 812 "src/DeepCopy/deep_copy.php" 813 ] 818 } 814 819 }, 815 820 "notification-url": "https://packagist.org/downloads/", … … 827 832 "support": { 828 833 "issues": "https://github.com/myclabs/DeepCopy/issues", 829 "source": "https://github.com/myclabs/DeepCopy/tree/1.1 0.2"834 "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" 830 835 }, 831 836 "funding": [ … … 835 840 } 836 841 ], 837 "time": "202 0-11-13T09:40:50+00:00"842 "time": "2022-03-03T13:19:32+00:00" 838 843 }, 839 844 { … … 1065 1070 { 1066 1071 "name": "phar-io/version", 1067 "version": "3. 1.0",1072 "version": "3.2.1", 1068 1073 "source": { 1069 1074 "type": "git", 1070 1075 "url": "https://github.com/phar-io/version.git", 1071 "reference": " bae7c545bef187884426f042434e561ab1ddb182"1072 }, 1073 "dist": { 1074 "type": "zip", 1075 "url": "https://api.github.com/repos/phar-io/version/zipball/ bae7c545bef187884426f042434e561ab1ddb182",1076 "reference": " bae7c545bef187884426f042434e561ab1ddb182",1076 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 1077 }, 1078 "dist": { 1079 "type": "zip", 1080 "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1081 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1077 1082 "shasum": "" 1078 1083 }, … … 1110 1115 "support": { 1111 1116 "issues": "https://github.com/phar-io/version/issues", 1112 "source": "https://github.com/phar-io/version/tree/3. 1.0"1113 }, 1114 "time": "202 1-02-23T14:00:09+00:00"1117 "source": "https://github.com/phar-io/version/tree/3.2.1" 1118 }, 1119 "time": "2022-02-21T01:04:05+00:00" 1115 1120 }, 1116 1121 { … … 1343 1348 { 1344 1349 "name": "phpunit/php-code-coverage", 1345 "version": "9.2.1 0",1350 "version": "9.2.15", 1346 1351 "source": { 1347 1352 "type": "git", 1348 1353 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1349 "reference": " d5850aaf931743067f4bfc1ae4cbd06468400687"1350 }, 1351 "dist": { 1352 "type": "zip", 1353 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ d5850aaf931743067f4bfc1ae4cbd06468400687",1354 "reference": " d5850aaf931743067f4bfc1ae4cbd06468400687",1354 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" 1355 }, 1356 "dist": { 1357 "type": "zip", 1358 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1359 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1355 1360 "shasum": "" 1356 1361 }, … … 1408 1413 "support": { 1409 1414 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1410 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.1 0"1415 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" 1411 1416 }, 1412 1417 "funding": [ … … 1416 1421 } 1417 1422 ], 1418 "time": "202 1-12-05T09:12:13+00:00"1423 "time": "2022-03-07T09:28:20+00:00" 1419 1424 }, 1420 1425 { … … 1721 1726 }, 1722 1727 "autoload": { 1728 "files": [ 1729 "src/Framework/Assert/Functions.php" 1730 ], 1723 1731 "classmap": [ 1724 1732 "src/" 1725 ],1726 "files": [1727 "src/Framework/Assert/Functions.php"1728 1733 ] 1729 1734 }, … … 2321 2326 { 2322 2327 "name": "sebastian/global-state", 2323 "version": "5.0. 3",2328 "version": "5.0.5", 2324 2329 "source": { 2325 2330 "type": "git", 2326 2331 "url": "https://github.com/sebastianbergmann/global-state.git", 2327 "reference": " 23bd5951f7ff26f12d4e3242864df3e08dec4e49"2328 }, 2329 "dist": { 2330 "type": "zip", 2331 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ 23bd5951f7ff26f12d4e3242864df3e08dec4e49",2332 "reference": " 23bd5951f7ff26f12d4e3242864df3e08dec4e49",2332 "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" 2333 }, 2334 "dist": { 2335 "type": "zip", 2336 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2337 "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2333 2338 "shasum": "" 2334 2339 }, … … 2373 2378 "support": { 2374 2379 "issues": "https://github.com/sebastianbergmann/global-state/issues", 2375 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0. 3"2380 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" 2376 2381 }, 2377 2382 "funding": [ … … 2381 2386 } 2382 2387 ], 2383 "time": "202 1-06-11T13:31:12+00:00"2388 "time": "2022-02-14T08:28:10+00:00" 2384 2389 }, 2385 2390 { … … 2781 2786 { 2782 2787 "name": "symfony/console", 2783 "version": "v5.4. 2",2788 "version": "v5.4.5", 2784 2789 "source": { 2785 2790 "type": "git", 2786 2791 "url": "https://github.com/symfony/console.git", 2787 "reference": " a2c6b7ced2eb7799a35375fb9022519282b5405e"2788 }, 2789 "dist": { 2790 "type": "zip", 2791 "url": "https://api.github.com/repos/symfony/console/zipball/ a2c6b7ced2eb7799a35375fb9022519282b5405e",2792 "reference": " a2c6b7ced2eb7799a35375fb9022519282b5405e",2792 "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad" 2793 }, 2794 "dist": { 2795 "type": "zip", 2796 "url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad", 2797 "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad", 2793 2798 "shasum": "" 2794 2799 }, … … 2860 2865 ], 2861 2866 "support": { 2862 "source": "https://github.com/symfony/console/tree/v5.4. 2"2867 "source": "https://github.com/symfony/console/tree/v5.4.5" 2863 2868 }, 2864 2869 "funding": [ … … 2876 2881 } 2877 2882 ], 2878 "time": "202 1-12-20T16:11:12+00:00"2883 "time": "2022-02-24T12:45:35+00:00" 2879 2884 }, 2880 2885 { … … 2947 2952 { 2948 2953 "name": "symfony/finder", 2949 "version": "v5.4. 2",2954 "version": "v5.4.3", 2950 2955 "source": { 2951 2956 "type": "git", 2952 2957 "url": "https://github.com/symfony/finder.git", 2953 "reference": " e77046c252be48c48a40816187ed527703c8f76c"2954 }, 2955 "dist": { 2956 "type": "zip", 2957 "url": "https://api.github.com/repos/symfony/finder/zipball/ e77046c252be48c48a40816187ed527703c8f76c",2958 "reference": " e77046c252be48c48a40816187ed527703c8f76c",2958 "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" 2959 }, 2960 "dist": { 2961 "type": "zip", 2962 "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", 2963 "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", 2959 2964 "shasum": "" 2960 2965 }, … … 2990 2995 "homepage": "https://symfony.com", 2991 2996 "support": { 2992 "source": "https://github.com/symfony/finder/tree/v5.4. 2"2997 "source": "https://github.com/symfony/finder/tree/v5.4.3" 2993 2998 }, 2994 2999 "funding": [ … … 3006 3011 } 3007 3012 ], 3008 "time": "202 1-12-15T11:06:13+00:00"3013 "time": "2022-01-26T16:34:36+00:00" 3009 3014 }, 3010 3015 { 3011 3016 "name": "symfony/polyfill-intl-grapheme", 3012 "version": "v1.2 4.0",3017 "version": "v1.25.0", 3013 3018 "source": { 3014 3019 "type": "git", … … 3039 3044 }, 3040 3045 "autoload": { 3046 "files": [ 3047 "bootstrap.php" 3048 ], 3041 3049 "psr-4": { 3042 3050 "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3043 }, 3044 "files": [ 3045 "bootstrap.php" 3046 ] 3051 } 3047 3052 }, 3048 3053 "notification-url": "https://packagist.org/downloads/", … … 3071 3076 ], 3072 3077 "support": { 3073 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.2 4.0"3078 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" 3074 3079 }, 3075 3080 "funding": [ … … 3091 3096 { 3092 3097 "name": "symfony/polyfill-intl-normalizer", 3093 "version": "v1.2 4.0",3098 "version": "v1.25.0", 3094 3099 "source": { 3095 3100 "type": "git", … … 3120 3125 }, 3121 3126 "autoload": { 3122 "psr-4": {3123 "Symfony\\Polyfill\\Intl\\Normalizer\\": ""3124 },3125 3127 "files": [ 3126 3128 "bootstrap.php" 3127 3129 ], 3130 "psr-4": { 3131 "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3132 }, 3128 3133 "classmap": [ 3129 3134 "Resources/stubs" … … 3155 3160 ], 3156 3161 "support": { 3157 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.2 4.0"3162 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" 3158 3163 }, 3159 3164 "funding": [ … … 3175 3180 { 3176 3181 "name": "symfony/polyfill-php73", 3177 "version": "v1.2 4.0",3182 "version": "v1.25.0", 3178 3183 "source": { 3179 3184 "type": "git", … … 3201 3206 }, 3202 3207 "autoload": { 3203 "psr-4": {3204 "Symfony\\Polyfill\\Php73\\": ""3205 },3206 3208 "files": [ 3207 3209 "bootstrap.php" 3208 3210 ], 3211 "psr-4": { 3212 "Symfony\\Polyfill\\Php73\\": "" 3213 }, 3209 3214 "classmap": [ 3210 3215 "Resources/stubs" … … 3234 3239 ], 3235 3240 "support": { 3236 "source": "https://github.com/symfony/polyfill-php73/tree/v1.2 4.0"3241 "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" 3237 3242 }, 3238 3243 "funding": [ … … 3254 3259 { 3255 3260 "name": "symfony/polyfill-php80", 3256 "version": "v1.2 4.0",3261 "version": "v1.25.0", 3257 3262 "source": { 3258 3263 "type": "git", 3259 3264 "url": "https://github.com/symfony/polyfill-php80.git", 3260 "reference": " 57b712b08eddb97c762a8caa32c84e037892d2e9"3261 }, 3262 "dist": { 3263 "type": "zip", 3264 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/ 57b712b08eddb97c762a8caa32c84e037892d2e9",3265 "reference": " 57b712b08eddb97c762a8caa32c84e037892d2e9",3265 "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" 3266 }, 3267 "dist": { 3268 "type": "zip", 3269 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", 3270 "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", 3266 3271 "shasum": "" 3267 3272 }, … … 3280 3285 }, 3281 3286 "autoload": { 3282 "psr-4": {3283 "Symfony\\Polyfill\\Php80\\": ""3284 },3285 3287 "files": [ 3286 3288 "bootstrap.php" 3287 3289 ], 3290 "psr-4": { 3291 "Symfony\\Polyfill\\Php80\\": "" 3292 }, 3288 3293 "classmap": [ 3289 3294 "Resources/stubs" … … 3317 3322 ], 3318 3323 "support": { 3319 "source": "https://github.com/symfony/polyfill-php80/tree/v1.2 4.0"3324 "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" 3320 3325 }, 3321 3326 "funding": [ … … 3333 3338 } 3334 3339 ], 3335 "time": "202 1-09-13T13:58:33+00:00"3340 "time": "2022-03-04T08:16:47+00:00" 3336 3341 }, 3337 3342 { 3338 3343 "name": "symfony/process", 3339 "version": "v5.4. 2",3344 "version": "v5.4.5", 3340 3345 "source": { 3341 3346 "type": "git", 3342 3347 "url": "https://github.com/symfony/process.git", 3343 "reference": " 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4"3344 }, 3345 "dist": { 3346 "type": "zip", 3347 "url": "https://api.github.com/repos/symfony/process/zipball/ 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",3348 "reference": " 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",3348 "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" 3349 }, 3350 "dist": { 3351 "type": "zip", 3352 "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", 3353 "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", 3349 3354 "shasum": "" 3350 3355 }, … … 3379 3384 "homepage": "https://symfony.com", 3380 3385 "support": { 3381 "source": "https://github.com/symfony/process/tree/v5.4. 2"3386 "source": "https://github.com/symfony/process/tree/v5.4.5" 3382 3387 }, 3383 3388 "funding": [ … … 3395 3400 } 3396 3401 ], 3397 "time": "202 1-12-27T21:01:00+00:00"3402 "time": "2022-01-30T18:16:22+00:00" 3398 3403 }, 3399 3404 { … … 3481 3486 { 3482 3487 "name": "symfony/string", 3483 "version": "v6.0. 2",3488 "version": "v6.0.3", 3484 3489 "source": { 3485 3490 "type": "git", 3486 3491 "url": "https://github.com/symfony/string.git", 3487 "reference": " bae261d0c3ac38a1f802b4dfed42094296100631"3488 }, 3489 "dist": { 3490 "type": "zip", 3491 "url": "https://api.github.com/repos/symfony/string/zipball/ bae261d0c3ac38a1f802b4dfed42094296100631",3492 "reference": " bae261d0c3ac38a1f802b4dfed42094296100631",3492 "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" 3493 }, 3494 "dist": { 3495 "type": "zip", 3496 "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", 3497 "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", 3493 3498 "shasum": "" 3494 3499 }, … … 3511 3516 "type": "library", 3512 3517 "autoload": { 3513 "psr-4": {3514 "Symfony\\Component\\String\\": ""3515 },3516 3518 "files": [ 3517 3519 "Resources/functions.php" 3518 3520 ], 3521 "psr-4": { 3522 "Symfony\\Component\\String\\": "" 3523 }, 3519 3524 "exclude-from-classmap": [ 3520 3525 "/Tests/" … … 3546 3551 ], 3547 3552 "support": { 3548 "source": "https://github.com/symfony/string/tree/v6.0. 2"3553 "source": "https://github.com/symfony/string/tree/v6.0.3" 3549 3554 }, 3550 3555 "funding": [ … … 3562 3567 } 3563 3568 ], 3564 "time": "202 1-12-16T22:13:01+00:00"3569 "time": "2022-01-02T09:55:41+00:00" 3565 3570 }, 3566 3571 { 3567 3572 "name": "symfony/yaml", 3568 "version": "v5.4. 2",3573 "version": "v5.4.3", 3569 3574 "source": { 3570 3575 "type": "git", 3571 3576 "url": "https://github.com/symfony/yaml.git", 3572 "reference": " b9eb163846a61bb32dfc147f7859e274fab38b58"3573 }, 3574 "dist": { 3575 "type": "zip", 3576 "url": "https://api.github.com/repos/symfony/yaml/zipball/ b9eb163846a61bb32dfc147f7859e274fab38b58",3577 "reference": " b9eb163846a61bb32dfc147f7859e274fab38b58",3577 "reference": "e80f87d2c9495966768310fc531b487ce64237a2" 3578 }, 3579 "dist": { 3580 "type": "zip", 3581 "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", 3582 "reference": "e80f87d2c9495966768310fc531b487ce64237a2", 3578 3583 "shasum": "" 3579 3584 }, … … 3621 3626 "homepage": "https://symfony.com", 3622 3627 "support": { 3623 "source": "https://github.com/symfony/yaml/tree/v5.4. 2"3628 "source": "https://github.com/symfony/yaml/tree/v5.4.3" 3624 3629 }, 3625 3630 "funding": [ … … 3637 3642 } 3638 3643 ], 3639 "time": "202 1-12-16T21:58:21+00:00"3644 "time": "2022-01-26T16:32:32+00:00" 3640 3645 }, 3641 3646 { -
next-active-directory-integration/tags/2.3.2/index.php
r2662231 r2692352 4 4 Plugin URI: https://www.active-directory-wp.com 5 5 Description: Enterprise-ready solution to authenticate, authorize and synchronize your Active Directory users to WordPress. Next Active Directory Authentication supports NTLM and Kerberos for Single Sign On. 6 Version: 2.3. 16 Version: 2.3.2 7 7 Author: active-directory-wp.com 8 8 Author URI: https://active-directory-wp.com -
next-active-directory-integration/tags/2.3.2/js/app/blog-options/controllers/security.controller.js
r2513920 r2692352 26 26 enable_smartcard_user_login: $valueHelper.findValue("enable_smartcard_user_login", data), 27 27 custom_login_page_enabled: $valueHelper.findValue("custom_login_page_enabled", data), 28 custom_login_page_uri: $valueHelper.findValue("custom_login_page_uri", data), 28 29 max_login_attempts: $valueHelper.findValue("max_login_attempts", data), 29 30 block_time: $valueHelper.findValue("block_time", data), … … 42 43 enable_smartcard_user_login: $valueHelper.findPermission("enable_smartcard_user_login", data), 43 44 custom_login_page_enabled: $valueHelper.findPermission("custom_login_page_enabled", data), 45 custom_login_page_uri: $valueHelper.findPermission("custom_login_page_uri", data), 44 46 max_login_attempts: $valueHelper.findPermission("max_login_attempts", data), 45 47 block_time: $valueHelper.findPermission("block_time", data), … … 56 58 enable_smartcard_user_login: $valueHelper.findMessage("enable_smartcard_user_login", data), 57 59 custom_login_page_enabled: $valueHelper.findMessage("custom_login_page_enabled", data), 60 custom_login_page_uri: $valueHelper.findMessage("custom_login_page_uri", data), 58 61 max_login_attempts: $valueHelper.findMessage("max_login_attempts", data), 59 62 block_time: $valueHelper.findMessage("block_time", data), -
next-active-directory-integration/tags/2.3.2/js/app/profile-options/controllers/security.controller.js
r2513920 r2692352 28 28 enable_smartcard_user_login: $valueHelper.findValue("enable_smartcard_user_login", data), 29 29 custom_login_page_enabled: $valueHelper.findValue("custom_login_page_enabled", data), 30 custom_login_page_uri: $valueHelper.findValue("custom_login_page_uri", data), 30 31 max_login_attempts: $valueHelper.findValue("max_login_attempts", data), 31 32 block_time: $valueHelper.findValue("block_time", data), … … 46 47 enable_smartcard_user_login: $valueHelper.findPermission("enable_smartcard_user_login", data), 47 48 custom_login_page_enabled: $valueHelper.findPermission("custom_login_page_enabled", data), 49 custom_login_page_uri: $valueHelper.findPermission("custom_login_page_uri", data), 48 50 max_login_attempts: $valueHelper.findPermission("max_login_attempts", data), 49 51 block_time: $valueHelper.findPermission("block_time", data), … … 60 62 enable_smartcard_user_login: $valueHelper.findMessage("enable_smartcard_user_login", data), 61 63 custom_login_page_enabled: $valueHelper.findMessage("custom_login_page_enabled", data), 64 custom_login_page_uri: $valueHelper.findMessage("custom_login_page_uri", data), 62 65 max_login_attempts: $valueHelper.findMessage("max_login_attempts", data), 63 66 block_time: $valueHelper.findMessage("block_time", data), -
next-active-directory-integration/tags/2.3.2/readme.txt
r2662231 r2692352 1 1 === Next Active Directory Integration === 2 2 Contributors: neosit,tobi823,fatsquirrel,schakko,medan123 3 Tags: authentication, active directory, ldap, authorization, security, windows, sso3 Tags: authentication, active directory, ldap, ldaps, authorization, security, windows, sso, login, domain, controller 4 4 Requires at least: 5.6 5 5 Tested up to: 5.9 6 Stable tag: 2.3. 16 Stable tag: 2.3.2 7 7 License: GPLv3 8 Donate link: https://active-directory-wp.com 8 9 9 10 Next Active Directory Integration allows WordPress to authenticate, authorize, create and update users against Microsoft Active Directory. … … 129 130 For detailed information you can visit the official [GitHub repository of Next Active Directory Integration](https://github.com/NeosIT/active-directory-integration2) 130 131 132 = 2.3.2 = 133 * FIXED: Critical WordPress error if a matching profile for SSO authentication can not be found (#152, NADISUP-7) 134 * FIXED: Uncaught TypeError when checking userAccountControl attribute (#151) 135 * FIXED: For specific Active Directory forest structures, the NETBIOS name can not be resolved during verification of the credentials (#153, NADISUP-8) 136 * ADDED: Option for specifying a custom login page URI; special thanks to GitHub user *czoIg* for contributing this functionality (#154) 137 131 138 = 2.3.1 = 132 139 * CHANGED: WordPress 5.9 compatibility has been checked … … 134 141 135 142 = 2.3.0 = 136 * FIXED: when a user can not be found by email address, findByProxyAddress returns false (gh-#146). Configured *Sync to WordPress* credentials are still required for logging in with email addresses.137 * FIXED: when using SSO-based logins, the "Exclude usernames from authentication" option still applies ( gh-#142)138 * ADDED: hooks for checking if NADI's authentication applies for a given username ( gh-#142)143 * FIXED: when a user can not be found by email address, findByProxyAddress returns false. Configured *Sync to WordPress* credentials are still required for logging in with email addresses. (#146) 144 * FIXED: when using SSO-based logins, the "Exclude usernames from authentication" option still applies (#142) 145 * ADDED: hooks for checking if NADI's authentication applies for a given username (#142) 139 146 * CHANGED: WordPress 5.8.1 compatibility has been checked 140 147 * CHANGED: WordPress 5.8.2 compatibility has been checked 141 * REMOVED: Parameter $useLocalWordPressUser in NextADInt_Adi_Mail_Notification ( gh-#135)142 * REMOVED: Option 'Automatic user creation'. This option has been implicitly enabled for all installations and is no longer required ( gh-#134)143 * CHANGED: PHP 8.1 compatibility has been checked; Twig has to be updated with the next release ( gh-#148)148 * REMOVED: Parameter $useLocalWordPressUser in NextADInt_Adi_Mail_Notification (#135) 149 * REMOVED: Option 'Automatic user creation'. This option has been implicitly enabled for all installations and is no longer required (#134) 150 * CHANGED: PHP 8.1 compatibility has been checked; Twig has to be updated with the next release (#148) 144 151 145 152 = 2.2.3 = 146 * FIXED: Sync to WordPress fails if user is no longer present in Active Directory ( gh-#141)153 * FIXED: Sync to WordPress fails if user is no longer present in Active Directory (#141) 147 154 148 155 = 2.2.2 = 149 * FIXED: Boolean options can't be persisted correctly with 2.2.1 ( gh-#140)156 * FIXED: Boolean options can't be persisted correctly with 2.2.1 (#140) 150 157 151 158 = 2.2.1 = 152 * FIXED: Missing meta_key "domainsid" results in TypeError or NextADInt_ActiveDirectory_Context::isMember ( gh-#133)153 * FIXED: Warning: Trying to access array offset on value of type null ( gh-#139)159 * FIXED: Missing meta_key "domainsid" results in TypeError or NextADInt_ActiveDirectory_Context::isMember (#133) 160 * FIXED: Warning: Trying to access array offset on value of type null (#139) 154 161 155 162 = 2.2.0 = … … 161 168 * CHANGED: WordPress 5.6.1 compatibility has been checked 162 169 * CHANGED: WordPress 5.7 compatibility has been checked 163 * CHANGED: PHP 8.0 compatibility has been added (ADI-718, gh-#132, gh-#137)170 * CHANGED: PHP 8.0 compatibility has been added (ADI-718, #132, #137) 164 171 * FIXED: Deprecation warning when trying to send mail notification for blocked users (ADI-719) 165 * FIXED: Option "Blog admin sets the option value." had no effect in Multisite environments ( gh-#124)166 * DEPRECATION-WARNING: For the upcoming release 2.3.0 we will remove "Internal password migration" ( gh-#136), "Automatic user creation" (gh-#134) and "Email address conflict handling" (gh-#133)172 * FIXED: Option "Blog admin sets the option value." had no effect in Multisite environments (#124) 173 * DEPRECATION-WARNING: For the upcoming release 2.3.0 we will remove "Internal password migration" (#136), "Automatic user creation" (#134) and "Email address conflict handling" (#133) 167 174 * DEV: Slightly transition new issues to GitHub instead of internal Jira 168 175 169 176 = 2.1.12 = 170 * ADDED: PR gh-#107: allow self signed certificates177 * ADDED: allow self signed certificates (#107) 171 178 * CHANGED: notices for minimum PHP version 7.2 due to EOL of PHP 7.1 172 179 * FIXED: Test compatibility with latest stable PHPUnit version 173 * FIXED: gh-#127: PHP 7.4 compatibility and deprecation of some ldap_* functions180 * FIXED: PHP 7.4 compatibility and deprecation of some ldap_* functions (#127) 174 181 * FIXED: various typos and formatting errors in the administration user interface 175 182 * ADDED: hook for triggering Sync To WordPress and Sync To AD (ADI-526) … … 183 190 * CHANGED: Twig version updated to 1.41.0 (ADI-707) 184 191 * FIXED: When a non-existing user inside in WordPress authenticates in a multisite environment the first time, a warning is triggered (ADI-705) 185 * FIXED: A deleted user from Active Directory is mapped to the wrong user in WordPress; thanks to T. Kowalchuk(ADI-702)192 * FIXED: A deleted user from Active Directory is mapped to the wrong user in WordPress; thanks to *T. Kowalchuk* (ADI-702) 186 193 * FIXED: PHP warning if user is deleted from Active Directory (ADI-701) 187 194 * FIXED: PHP error if touching of log file failed 188 195 * FIXED: "-DISABLED" suffix is added everytime a user is synchronized (ADI-697, NADIS-110) 189 196 * ADDED: hook next_ad_int_user_before_disable (ADI-699) 190 * FIXED: curly brace access ( GitHub#119)197 * FIXED: curly brace access (#119) 191 198 192 199 = 2.1.9 = … … 203 210 = 2.1.8 = 204 211 * FIXED: compatibility issues when using the Woffice theme (ADI-659) 205 * FIXED: missing email parameter when creating users (GitHub #74 Thanks to nefarius, ADI-615)206 * FIXED: an issue with the 'Prevent email change' option (https://wordpress.org/support/topic/new-user-creation-error/ Thanks to mlipenk,ADI-670)207 * ADDED: new hook to hide the 'Log in using SSO' option (https://wordpress.org/support/topic/remove-link-log-in-using-sso-on-login-page/ Thanks to vyatcheslav,ADI-672)212 * FIXED: missing email parameter when creating users; thanks to *nefarius* (#74, ADI-615) 213 * FIXED: an issue with the 'Prevent email change' option, https://wordpress.org/support/topic/new-user-creation-error/; thanks to *mlipenk* (ADI-670) 214 * ADDED: new hook to hide the 'Log in using SSO' option, https://wordpress.org/support/topic/remove-link-log-in-using-sso-on-login-page/; thanks to *vyatcheslav* (ADI-672) 208 215 * FIXED: refactored post authentication logic into separate services (ADI-671, ADI-673) 209 216 … … 212 219 213 220 = 2.1.6 = 214 * FIXED: custom authentication filters were not registered properly (ADI-665) this will fix SSO related issues221 * FIXED: custom authentication filters were not registered properly and this fixes SSO related issues (ADI-665) 215 222 * FIXED: test authentication will now properly check for authorization groups again 216 223 217 224 = 2.1.5 = 218 225 * FIXED: replaced all references to the deprecated each-function with foreach (ADI-628) 219 * FIXED: authorization groups will now properly prevent users from logging in (ADI-664, https://wordpress.org/support/topic/authorization-groups-not-working/ Thanks to shmew22, GitHub #92 Thanks to pokertour)220 * FIXED: the menu-visibility options were missing inside the profile-tab (ADI-663, https://wordpress.org/support/topic/menu-items-missing-3/ Thanks to 5tu)221 * ADDED: 2 new filters to allow for custom validation during the authentication process (ADI-657, GitHub #89 Thanks to Destabilizator)226 * FIXED: authorization groups will now properly prevent users from logging in, https://wordpress.org/support/topic/authorization-groups-not-working/; thanks to *shmew22*, *pokertour* (ADI-664, #92) 227 * FIXED: the menu-visibility options were missing inside the profile-tab, https://wordpress.org/support/topic/menu-items-missing-3/; thanks to *5tu* (ADI-663); 228 * ADDED: 2 new filters to allow for custom validation during the authentication process; thanks to *Destabilizator* (ADI-657, #89) 222 229 223 230 = 2.1.4 = … … 228 235 229 236 = 2.1.3 = 230 * ADD : added message on the profile configuration page to inform customers about end of PHP version <7.1 support231 * ADD : json response for "Sync to WordPress" triggered via powershell232 * ADD : improved logging in within the Connection.php class233 * ADD : missing German translations234 * ADD : PHP_AUTH_USER to SSO username variables237 * ADDED: added message on the profile configuration page to inform customers about end of PHP version <7.1 support 238 * ADDED: json response for "Sync to WordPress" triggered via powershell 239 * ADDED: improved logging in within the Connection.php class 240 * ADDED: missing German translations 241 * ADDED: PHP_AUTH_USER to SSO username variables 235 242 * FIXED: app.config and password.controller.config being flagged by customer firewalls / security plugins which resulted in them not being loaded properly (renamed them) 236 243 * FIXED: redirect to target site not working properly after being authenticated via NADI SSO … … 244 251 245 252 = 2.1.1 = 246 * ADD : Github#59 proxy address login (Special thanks to Github user *nedwidek* for contributing this functionality)247 * ADD : profile picture ad attributes to the ad attributes dropdown at the ad attributes configuration page248 * ADD : Github#44 claims based authentication (Special thanks to Github user *rgottsch* for contributing this functionality)249 * ADD : new option to decide if you want to grant smart card users access to the WordPress environment250 * ADD : links to the specific documentation pages for each configuration page251 * ADD : Github#64 powershell script to trigger "Sync to WordPress" and "Sync to AD" (Special thanks to Github user *nemchik* for contributing this)252 * FIX : Github#49 its now possible to enter an empty base dn253 * FIX : adjusted base DN description254 * FIX : Github#59 typo in LoginService.php253 * ADDED: proxy address login; special thanks to *nedwidek* for contributing this functionality (#59) 254 * ADDED: profile picture ad attributes to the ad attributes dropdown at the ad attributes configuration page 255 * ADDED: claims based authentication; special thanks to *rgottsch* for contributing this functionality (#44) 256 * ADDED: new option to decide if you want to grant smart card users access to the WordPress environment 257 * ADDED: links to the specific documentation pages for each configuration page 258 * ADDED: powershell script to trigger "Sync to WordPress" and "Sync to AD"; special thanks to *nemchik* for contributing this (#64) 259 * FIXED: it is now possible to enter an empty base dn (#49) 260 * FIXED: adjusted base DN description 261 * FIXED: typo in LoginService.php (#59) 255 262 * REMOVED: whitespaces inside the rendered curl and wget tags 256 263 * REMOVED: old code that caused an warning with PHP 7.2.0 changes to count() and sizeOf() 257 264 258 265 = 2.1.0 = 259 * ADD : NADI is now using Monolog for everything related to logs260 * ADD : added a button to manually persist "Logging" configurations261 * FIX : user attributes are now correctly logged262 * FIX : fixed a problem where the port configuration for LDAPS was not used263 * FIX : updated twig to the latest 1.x version. (2.x requires >= PHP 7.0.0)264 * ADD : debug logs messages will be not displayed in the frontend log anymore in order to prevent an overflow265 * ADD : dummy logger in order to prevent outdated premium extensions from crashing266 * ADDED: NADI is now using Monolog for everything related to logs 267 * ADDED: added a button to manually persist "Logging" configurations 268 * FIXED: user attributes are now correctly logged 269 * FIXED: fixed a problem where the port configuration for LDAPS was not used 270 * FIXED: updated twig to the latest 1.x version. (2.x requires >= PHP 7.0.0) 271 * ADDED: debug logs messages will be not displayed in the frontend log anymore in order to prevent an overflow 272 * ADDED: dummy logger in order to prevent outdated premium extensions from crashing 266 273 * REMOVED: removed log4php from NADI 267 274 268 275 = 2.0.14 = 269 * ADD : added frontend information banners for NADI premium extensions270 * ADD : added frontend information about why "Sync to WordPress" can not be started271 * FIX : members of not mapped security groups will now receive the default role "Subscriber"272 * FIX : "Clean existing Roles" is now default set to false273 * ADD : added new style for configuration page274 * FIX : fixed some style issues275 * ADD : added logic to determine if a NADI option already exists in the DB to prevent the problem saving options with default value true276 * ADD : added detailed log on which UAC flag is responsible for users not beeing imported277 * FIX : fixed logs destroying the user profile while trying to update a user profile / also catchedexception278 * FIX : fixed template conditions causing problems in Microsoft Edge276 * ADDED: added frontend information banners for NADI premium extensions 277 * ADDED: added frontend information about why "Sync to WordPress" can not be started 278 * FIXED: members of not mapped security groups will now receive the default role "Subscriber" 279 * FIXED: "Clean existing Roles" is now default set to false 280 * ADDED: added new style for configuration page 281 * FIXED: fixed some style issues 282 * ADDED: added logic to determine if a NADI option already exists in the DB to prevent the problem saving options with default value true 283 * ADDED: added detailed log on which UAC flag is responsible for users not being imported 284 * FIXED: fixed logs destroying the user profile while trying to update a user profile / also caught exception 285 * FIXED: fixed template conditions causing problems in Microsoft Edge 279 286 280 287 281 288 = 2.0.13 = 282 * FIX : switched from mcrypt to defuse/php-encryption283 * FIX : decoupled password update from user update to allow for automatic password updates without 'auto update user' set to true284 * FIX : marked brute force protection deprecated285 * FIX : minor bugs when using ldap over ssl286 * ADD : sync to ad now uses the GUID for syncronization287 * FIX : verify domain controller connectivity before incrementing brute force protection counter288 * FIX : custom attributes inside the user profile will prioritize the custom description (thanks to mzemann)289 * FIX : changed the look of Sync to AD, Sync to WordPress and Test authentication290 * ADD : added row to users list for premium extension (custom user role management)291 * FIX : added the complete dirname when using require_once inside index.php (GitHub#47)289 * FIXED: switched from mcrypt to defuse/php-encryption 290 * FIXED: decoupled password update from user update to allow for automatic password updates without 'auto update user' set to true 291 * FIXED: marked brute force protection deprecated 292 * FIXED: minor bugs when using ldap over ssl 293 * ADDED: sync to ad now uses the GUID for synchronization 294 * FIXED: verify domain controller connectivity before incrementing brute force protection counter 295 * FIXED: custom attributes inside the user profile will prioritize the custom description; thanks to *mzemann* 296 * FIXED: changed the look of Sync to AD, Sync to WordPress and Test authentication 297 * ADDED: added row to users list for premium extension (custom user role management) 298 * FIXED: added the complete dirname when using require_once inside index.php (#47) 292 299 293 300 = 2.0.12 = 294 * ADD : internationalization for all plugin strings (ADI-432 ADI-436 see https://translate.wordpress.org/projects/wp-plugins/next-active-directory-integration)295 * FIX : roles are now mapped using the GUID instead of sAMAccountName (ADI-428)296 * ADD : option for preventing disabled users to be synchronized to WordPress (ADI-223)297 * ADD : validation for Base DN298 * FIX : problem when sending brute force protection notifications via email (ADI-464)299 * FIX : non NADI users being blocked by the brute force protection300 * FIX : brute force protection now checks for the whole username (ADI-424)301 * FIX : updating user profiles without bind user (ADI-439)302 * FIX : countdown for brute force protection (ADI-456)301 * ADDED: internationalization for all plugin strings, see https://translate.wordpress.org/projects/wp-plugins/next-active-directory-integration (ADI-432, ADI-436) 302 * FIXED: roles are now mapped using the GUID instead of sAMAccountName (ADI-428) 303 * ADDED: option for preventing disabled users to be synchronized to WordPress (ADI-223) 304 * ADDED: validation for Base DN 305 * FIXED: problem when sending brute force protection notifications via email (ADI-464) 306 * FIXED: non NADI users being blocked by the brute force protection 307 * FIXED: brute force protection now checks for the whole username (ADI-424) 308 * FIXED: updating user profiles without bind user (ADI-439) 309 * FIXED: countdown for brute force protection (ADI-456) 303 310 304 311 = 2.0.11 = 305 * ADD : NTLM support for SSO (sponsored by Vogels - www.vogels.com)306 * ADD : implementation of hooks to provide an API (ADI-145)307 * ADD : premium extensions available for support license subscribers308 * ADD : log reason for not being able to increase max_execution_time (ADI-396)309 * ADD : log message that AD security group could not be found (ADI-397)310 * ADD : improve logging number of users to import from AD to WordPress (ADI-414)311 * FIX : synchronization does not work b/c getDomainSid returns "S-0" (ADI-412)312 * FIX : "Test authentication" does not allow characters like a backward slash (ADI-421)313 * FIX : permanent redirects after successful authentication (ADI-422)314 * FIX : error "the current user is being initialized without using $wp->init()" when using BuddyPress (ADI-416)315 * FIX : blocking of users with long user names (ADI-330)316 * FIX : get_blog_details replaced with get_site to maintain compatibility with WordPress 4.7+ (ADI-419)317 * FIX : restrict output of debug LDAP user information to only an amount of characters (ADI-420)318 * FIX : Sync to WordPress: default WordPress role "Subscriber" is not assigned (ADI-401)319 * FIX : Users with admin role granted by WordPress lose their role when logging into the site for the first time (ADI-380)312 * ADDED: NTLM support for SSO (sponsored by Vogels - www.vogels.com) 313 * ADDED: implementation of hooks to provide an API (ADI-145) 314 * ADDED: premium extensions available for support license subscribers 315 * ADDED: log reason for not being able to increase max_execution_time (ADI-396) 316 * ADDED: log message that AD security group could not be found (ADI-397) 317 * ADDED: improve logging number of users to import from AD to WordPress (ADI-414) 318 * FIXED: synchronization does not work b/c getDomainSid returns "S-0" (ADI-412) 319 * FIXED: "Test authentication" does not allow characters like a backward slash (ADI-421) 320 * FIXED: permanent redirects after successful authentication (ADI-422) 321 * FIXED: error "the current user is being initialized without using $wp->init()" when using BuddyPress (ADI-416) 322 * FIXED: blocking of users with long user names (ADI-330) 323 * FIXED: get_blog_details replaced with get_site to maintain compatibility with WordPress 4.7+ (ADI-419) 324 * FIXED: restrict output of debug LDAP user information to only an amount of characters (ADI-420) 325 * FIXED: Sync to WordPress: default WordPress role "Subscriber" is not assigned (ADI-401) 326 * FIXED: Users with admin role granted by WordPress lose their role when logging into the site for the first time (ADI-380) 320 327 321 328 = 2.0.10 = 322 * ADD : option to enable/disable authentication using XML-RPC323 * FIX : reworked user interface324 * FIX : sync ends after deleted account is no longer present in Active Directory325 * FIX : integration tests326 * FIX : emails will not be sent to administrators (GitHub #27 Thanks to kyleflan)327 * FIX : users can now be disabled from WordPress328 * ADD : HTTP_X_REMOTE_USER is now an option in the SSO configuration (GitHub #29 Thanks to laughtonsm)329 * ADDED: option to enable/disable authentication using XML-RPC 330 * FIXED: reworked user interface 331 * FIXED: sync ends after deleted account is no longer present in Active Directory 332 * FIXED: integration tests 333 * FIXED: emails will not be sent to administrators; thanks to *kyleflan* (#27) 334 * FIXED: users can now be disabled from WordPress 335 * ADDED: HTTP_X_REMOTE_USER is now an option in the SSO configuration; thanks to *laughtonsm* (#29) 329 336 330 337 = 2.0.9 = 331 * FIX : add missing default value for method parameter338 * FIXED: add missing default value for method parameter 332 339 333 340 = 2.0.8 = 334 * FIX : remove PHP 5.6 code (GitHub #22 Thanks to requincreative)341 * FIXED: remove PHP 5.6 code; thanks to *requincreative* (#22) 335 342 336 343 = 2.0.7 = 337 * ADD : custom user roles can be used in "Role equivalent groups"338 * ADD : the logger is disabled by default (and can be enabled inside the configuration)339 * ADD : log file path can be configured (default is wp-content/plugins/next-active-directory-integration/logs/debug.log)344 * ADDED: custom user roles can be used in "Role equivalent groups" 345 * ADDED: the logger is disabled by default (and can be enabled inside the configuration) 346 * ADDED: log file path can be configured (default is wp-content/plugins/next-active-directory-integration/logs/debug.log) 340 347 341 348 = 2.0.6 = 342 * FIX : show activation notice only after activating this plugin (https://wordpress.org/support/topic/activate-plugin-notification-bug/ Thanks to bobchou9)343 * FIX : SSO/verify-password errors by un-quoting values in $_GET/$_POST/$_SERVER. WordPress quotes all entries in $_GET/$_POST/$_SERVER automatically (GitHub #20 Thanks to plantjes)349 * FIXED: show activation notice only after activating this plugin (https://wordpress.org/support/topic/activate-plugin-notification-bug/); thanks to bobchou9 350 * FIXED: SSO/verify-password errors by un-quoting values in $_GET/$_POST/$_SERVER. WordPress quotes all entries in $_GET/$_POST/$_SERVER automatically; thanks to plantjes (#20) 344 351 345 352 = 2.0.5 = 346 * FIX : check if AD result is not empty before accessing distinguished name (GitHub #16 Thanks to petterannerwall)347 * ADD : optional support for Down-Level User Name (like TEST\klammer) (GitHub#18)353 * FIXED: check if AD result is not empty before accessing distinguished name; thanks to petterannerwall (#16) 354 * ADDED: optional support for Down-Level User Name (like TEST\klammer) (#18) 348 355 349 356 = 2.0.4 = 350 * ADD : make log pattern configurable (https://wordpress.org/support/topic/please-add-timestamps-to-the-debug-log-file/ Thanks to tmuikku)357 * ADDED: make log pattern configurable (https://wordpress.org/support/topic/please-add-timestamps-to-the-debug-log-file/); Thanks to tmuikku 351 358 352 359 = 2.0.3 = 353 * FIX : brute force protection is now be disabled (GitHub #14 Thanks to Munnday (David Munn))354 * FIX : the max count of login tries and the block time are now editable360 * FIXED: brute force protection is now be disabled; thanks to Munnday (David Munn) (#14) 361 * FIXED: the max count of login tries and the block time are now editable 355 362 356 363 = 2.0.2 = 357 * FIX : SSO caused a PHP error during login (GitHub #13 Thanks to Jason Taylor and Munnday (David Munn))364 * FIXED: SSO caused a PHP error during login; thanks to Jason Taylor and Munnday (David Munn) (#13) 358 365 359 366 = 2.0.1 = 360 * FIX : missing german translation367 * FIXED: missing german translation 361 368 362 369 = 2.0.0 = 363 * ADD : support for WordPress Multisite through profiles364 * ADD : Profiles can be customized, including the permission of every option365 * ADD : support for PHP7366 * ADD : detailed documentation at https://www.active-directory-wp.com/docs/Getting_Started.html367 * ADD : experimental support for multiple Active Directory domains; see FAQ368 * ADD : easier handling and description of encryption methods for LDAP369 * ADD : additional columns in Multisite overview for networks and users370 * ADD : user names can be explicitly excluded from authentication371 * ADD : menu entries of *Next ADI* can be hidden372 * ADD : *Next ADI* can be disabled per Multisite site environment373 * CHANGE : large user interface improvements374 * CHANGE : complete rewrite of the PHP backend375 * CHANGE : userPrincipalName is leading attribute for user identification instead of sAMAccountName376 * FIX : Role Equivalent Groups can be mapped to multiple WordPress roles instead of only one370 * ADDED: support for WordPress Multisite through profiles 371 * ADDED: Profiles can be customized, including the permission of every option 372 * ADDED: support for PHP7 373 * ADDED: detailed documentation at https://www.active-directory-wp.com/docs/Getting_Started.html 374 * ADDED: experimental support for multiple Active Directory domains; see FAQ 375 * ADDED: easier handling and description of encryption methods for LDAP 376 * ADDED: additional columns in Multisite overview for networks and users 377 * ADDED: user names can be explicitly excluded from authentication 378 * ADDED: menu entries of *Next ADI* can be hidden 379 * ADDED: *Next ADI* can be disabled per Multisite site environment 380 * CHANGED: large user interface improvements 381 * CHANGED: complete rewrite of the PHP backend 382 * CHANGED: userPrincipalName is leading attribute for user identification instead of sAMAccountName 383 * FIXED: Role Equivalent Groups can be mapped to multiple WordPress roles instead of only one 377 384 * and much much more we can not list here. Please take the time and read the official documentation :-) 378 385 -
next-active-directory-integration/tags/2.3.2/vendor/adLDAP/adLDAP.php
r2641799 r2692352 824 824 825 825 // Let's use paging if available 826 // gh-#127: PHP 7.4 compatibility; ldap_control_paged* is deprecated826 // #127: PHP 7.4 compatibility; ldap_control_paged* is deprecated 827 827 if (function_exists('ldap_control_paged_result')) { 828 828 … … 1015 1015 1016 1016 // Let's use paging if available 1017 // gh-#127: PHP 7.4 compatibility; ldap_control_paged* is deprecated1017 // #127: PHP 7.4 compatibility; ldap_control_paged* is deprecated 1018 1018 if (function_exists('ldap_control_paged_result')) { 1019 1019 … … 1365 1365 return $entries; 1366 1366 } 1367 1367 1368 return false; 1368 1369 } 1369 1370 1370 /** 1371 * Get a configuration entry form the CN=Partitions,CN=Configuration object 1372 * 1371 const PARTITIONS_PREFIX = "CN=Partitions,CN=Configuration,"; 1372 const NETBIOS_MATCHER = "(&(netbiosname=*))"; 1373 const NCNAME_ATTRIBUTE = 'ncname'; 1374 1375 /** 1376 * Get a configuration entry form the CN=Partitions,CN=Configuration object. 1377 * Due to the nature of Active Directory forests, this method is not so simple. 1378 * 1379 * @since #153 this method has been extended to support Active Directory forests 1373 1380 * @param $filter 1374 1381 * @return bool 1375 1382 */ 1376 public function get_configuration($filter) 1377 { 1378 $tmp = "CN=Partitions,CN=Configuration," . $this->_base_dn; 1379 $sr = ldap_search($this->_conn,$tmp,"(&(netbiosname=*))", array()); 1380 $entries = ldap_get_entries($this->_conn, $sr); 1381 1382 if ($entries[0]['count'] >= 1) { 1383 $result = $entries[0][$filter][0]; 1384 1385 return $result; 1386 } 1387 1388 return false; 1389 } 1383 public function get_configuration($filter) 1384 { 1385 // in a single Active Directory domain environment, we'll probably find the partition CN below CN=Partitions,CN=Configuration,${BASE_DN}. 1386 // in a Active Directory domain forest, this can be a little bit more complex. The base DN could be DC=sub,DC=test,DC=ad but the CN for the partition can be CN=Partitions,CN=Configuration,DC=test,DC=ad (note the missing DC=sub). 1387 $distinguishedNameCandidates = array(); 1388 $leafs = explode(",", $this->_base_dn); 1389 1390 // we create a list of DN search candidates in which the configuration is probably stored, beginning with the most concrete DN (DC=sub,DC=test,DC=ad) and ending with the most top-level DN (DC=ad) 1391 for ($i = 0, $m = sizeof($leafs); $i < $m; $i++) { 1392 $distinguishedNameCandidates[] = self::PARTITIONS_PREFIX . implode(",", array_slice($leafs, $i)); 1393 } 1394 1395 $sanitizedBaseDn = $this->sanitizeDistinguishedName($this->_base_dn); 1396 $r = FALSE; 1397 $hasBestMatch = FALSE; 1398 1399 // iterate over each of the available parts 1400 foreach ($distinguishedNameCandidates as $distinguishedName) { 1401 // try to find the configuration below e.g. CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad 1402 $sr = $this->_ldap_search($distinguishedName, self::NETBIOS_MATCHER, array()); 1403 1404 // handle error code 32, "No such object" when configuration partition can not be found by given DN 1405 if (!$sr) { 1406 continue; 1407 } 1408 1409 $entries = $this->_ldap_get_entries($sr); 1410 1411 // if no entries are available, this is probably the wrong search tree. We move a level up (now: CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad; next: CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad) 1412 if (!$entries) { 1413 continue; 1414 } 1415 1416 $count = (int)$entries['count']; 1417 1418 if ($count >= 1) { 1419 // after having found our configuration partition DN (e.g. CN=Partitions,CN=Configuration,DC=test,DC=ad), we need to check each of the CNs in there with the netbiosname attribute if they match the specified base DN: 1420 // in a AD forest, we would have the following entries below CN=Partitions,CN=Configuration,DC=test,DC=ad: 1421 // - CN=SUB,CN=Partitions,CN=Configuration,DC=test,DC=ad 1422 // - CN=FOREST-1,CN=Partitions,CN=Configuration,DC=test,DC=ad 1423 // - CN=FOREST-2,CN=Partitions,CN=Configuration,DC=test,DC=ad 1424 for ($idx = 0, $m = $count; $idx < $m; $idx++) { 1425 // the first entry is our best match if we don't find a better match 1426 if (!$r) { 1427 $r = $entries[$idx][$filter][0]; 1428 } 1429 1430 // the attribute nCName contains the base DN for a partition. If this matches the specified base DN, we are good to go. 1431 // possible caveat: the base DN good be too unspecific so that the wrong partition is used; this could only happy in a AD forest - in a single forest, there is only one entry available. 1432 $sanitizedNCname = $this->sanitizeDistinguishedName($entries[$idx][self::NCNAME_ATTRIBUTE][0]); 1433 1434 if ($sanitizedNCname == $sanitizedBaseDn) { 1435 $r = $entries[$idx][$filter][0]; 1436 1437 // end outer loop 1438 $hasBestMatch = TRUE; 1439 // end this loop 1440 break; 1441 } 1442 } 1443 } 1444 1445 if ($hasBestMatch) { 1446 break; 1447 } 1448 1449 } 1450 1451 return $r; 1452 } 1453 1454 /** 1455 * Removes any whitespaces in front and at the end and lowers the string 1456 * @param $dn 1457 * @return string 1458 */ 1459 public function sanitizeDistinguishedName($dn) 1460 { 1461 return trim(strtolower($dn)); 1462 } 1463 1464 /** 1465 * Forward method to <em>php_ldap</em>'s ldap_get_entries to make adLDAP testable. 1466 * 1467 * @param $result 1468 * @return array 1469 */ 1470 protected function _ldap_get_entries($result) 1471 { 1472 return ldap_get_entries($this->_conn, $result); 1473 } 1474 1475 /** 1476 * Forward method to <em>php_ldap</em>'s ldap_search to make adLDAP testable. 1477 * 1478 * @param $base 1479 * @param $filter 1480 * @param array $attributes 1481 * @param int $attributes_only 1482 * @param int $sizelimit 1483 * @param int $timelimit 1484 * @param int $deref 1485 * @param null $controls 1486 * @return array 1487 */ 1488 protected function _ldap_search($base, $filter, $attributes = [], int $attributes_only = 0, int $sizelimit = -1, int $timelimit = -1, int $deref = LDAP_DEREF_NEVER, $controls = null) 1489 { 1490 return ldap_search($this->_conn, $base, $filter, $attributes, $attributes_only, $sizelimit, $timelimit, $deref, $controls); 1491 } 1390 1492 1391 1493 /** … … 2946 3048 $sr = ldap_search($this->_conn,$this->_base_dn,$filter,$fields); 2947 3049 2948 // @see#146: if search failed, $sr will be false and we have to return3050 // #146: if search failed, $sr will be false and we have to return 2949 3051 if ($sr === FALSE) { 2950 3052 return FALSE; -
next-active-directory-integration/tags/2.3.2/vendor/autoload.php
r2662231 r2692352 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1::getLoader();7 return ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25::getLoader(); -
next-active-directory-integration/tags/2.3.2/vendor/composer/autoload_files.php
r2662231 r2692352 8 8 return array( 9 9 '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php', 10 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 10 11 '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 11 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',12 12 ); -
next-active-directory-integration/tags/2.3.2/vendor/composer/autoload_real.php
r2662231 r2692352 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc15 class ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); 29 spl_autoload_unregister(array('ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25', 'loadClassLoader')); 30 30 31 31 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); … … 33 33 require __DIR__ . '/autoload_static.php'; 34 34 35 call_user_func(\Composer\Autoload\ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::getInitializer($loader));35 call_user_func(\Composer\Autoload\ComposerStaticInit134232ed870c926a87ebeb152d531d25::getInitializer($loader)); 36 36 } else { 37 37 $map = require __DIR__ . '/autoload_namespaces.php'; … … 54 54 55 55 if ($useStaticLoader) { 56 $includeFiles = Composer\Autoload\ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$files;56 $includeFiles = Composer\Autoload\ComposerStaticInit134232ed870c926a87ebeb152d531d25::$files; 57 57 } else { 58 58 $includeFiles = require __DIR__ . '/autoload_files.php'; 59 59 } 60 60 foreach ($includeFiles as $fileIdentifier => $file) { 61 composerRequire d668969de90e07bc3e6c5441ee782cc1($fileIdentifier, $file);61 composerRequire134232ed870c926a87ebeb152d531d25($fileIdentifier, $file); 62 62 } 63 63 … … 71 71 * @return void 72 72 */ 73 function composerRequire d668969de90e07bc3e6c5441ee782cc1($fileIdentifier, $file)73 function composerRequire134232ed870c926a87ebeb152d531d25($fileIdentifier, $file) 74 74 { 75 75 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
next-active-directory-integration/tags/2.3.2/vendor/composer/autoload_static.php
r2662231 r2692352 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit d668969de90e07bc3e6c5441ee782cc17 class ComposerStaticInit134232ed870c926a87ebeb152d531d25 8 8 { 9 9 public static $files = array ( 10 10 '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php', 11 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', 11 12 '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', 12 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',13 13 ); 14 14 … … 77 77 { 78 78 return \Closure::bind(function () use ($loader) { 79 $loader->prefixLengthsPsr4 = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$prefixLengthsPsr4;80 $loader->prefixDirsPsr4 = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$prefixDirsPsr4;81 $loader->classMap = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$classMap;79 $loader->prefixLengthsPsr4 = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$prefixLengthsPsr4; 80 $loader->prefixDirsPsr4 = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$prefixDirsPsr4; 81 $loader->classMap = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$classMap; 82 82 83 83 }, null, ClassLoader::class); -
next-active-directory-integration/tags/2.3.2/vendor/composer/installed.json
r2662231 r2692352 158 158 { 159 159 "name": "paragonie/random_compat", 160 "version": "v2.0.2 0",161 "version_normalized": "2.0.2 0.0",160 "version": "v2.0.21", 161 "version_normalized": "2.0.21.0", 162 162 "source": { 163 163 "type": "git", 164 164 "url": "https://github.com/paragonie/random_compat.git", 165 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a"166 }, 167 "dist": { 168 "type": "zip", 169 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/ 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",170 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",165 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae" 166 }, 167 "dist": { 168 "type": "zip", 169 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 170 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 171 171 "shasum": "" 172 172 }, … … 175 175 }, 176 176 "require-dev": { 177 "phpunit/phpunit": " 4.*|5.*"177 "phpunit/phpunit": "*" 178 178 }, 179 179 "suggest": { 180 180 "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 181 181 }, 182 "time": "202 1-04-17T09:33:01+00:00",182 "time": "2022-02-16T17:07:03+00:00", 183 183 "type": "library", 184 184 "installation-source": "dist", … … 268 268 { 269 269 "name": "symfony/polyfill-ctype", 270 "version": "v1.2 4.0",271 "version_normalized": "1.2 4.0.0",270 "version": "v1.25.0", 271 "version_normalized": "1.25.0.0", 272 272 "source": { 273 273 "type": "git", … … 303 303 "installation-source": "dist", 304 304 "autoload": { 305 "files": [ 306 "bootstrap.php" 307 ], 305 308 "psr-4": { 306 309 "Symfony\\Polyfill\\Ctype\\": "" 307 }, 308 "files": [ 309 "bootstrap.php" 310 ] 310 } 311 311 }, 312 312 "notification-url": "https://packagist.org/downloads/", … … 333 333 ], 334 334 "support": { 335 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.2 4.0"335 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 336 336 }, 337 337 "funding": [ … … 385 385 "installation-source": "dist", 386 386 "autoload": { 387 "files": [ 388 "bootstrap.php" 389 ], 387 390 "psr-4": { 388 391 "Symfony\\Polyfill\\Mbstring\\": "" 389 }, 390 "files": [ 391 "bootstrap.php" 392 ] 392 } 393 393 }, 394 394 "notification-url": "https://packagist.org/downloads/", … … 436 436 { 437 437 "name": "twig/twig", 438 "version": "v3.3. 7",439 "version_normalized": "3.3. 7.0",438 "version": "v3.3.8", 439 "version_normalized": "3.3.8.0", 440 440 "source": { 441 441 "type": "git", 442 442 "url": "https://github.com/twigphp/Twig.git", 443 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b"444 }, 445 "dist": { 446 "type": "zip", 447 "url": "https://api.github.com/repos/twigphp/Twig/zipball/ 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",448 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",443 "reference": "972d8604a92b7054828b539f2febb0211dd5945c" 444 }, 445 "dist": { 446 "type": "zip", 447 "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c", 448 "reference": "972d8604a92b7054828b539f2febb0211dd5945c", 449 449 "shasum": "" 450 450 }, … … 458 458 "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" 459 459 }, 460 "time": "2022-0 1-03T21:15:37+00:00",460 "time": "2022-02-04T06:59:48+00:00", 461 461 "type": "library", 462 462 "extra": { … … 499 499 "support": { 500 500 "issues": "https://github.com/twigphp/Twig/issues", 501 "source": "https://github.com/twigphp/Twig/tree/v3.3. 7"501 "source": "https://github.com/twigphp/Twig/tree/v3.3.8" 502 502 }, 503 503 "funding": [ -
next-active-directory-integration/tags/2.3.2/vendor/composer/installed.php
r2662231 r2692352 1 1 <?php return array( 2 2 'root' => array( 3 'pretty_version' => '2.3. 1',4 'version' => '2.3. 1.0',3 'pretty_version' => '2.3.2', 4 'version' => '2.3.2.0', 5 5 'type' => 'library', 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' 37e1f656389d0d03aaab30f1d5053e618e625af9',8 'reference' => 'e49bb008caab50a3a561224e91d43829a274c2ad', 9 9 'name' => '__root__', 10 10 'dev' => false, … … 12 12 'versions' => array( 13 13 '__root__' => array( 14 'pretty_version' => '2.3. 1',15 'version' => '2.3. 1.0',14 'pretty_version' => '2.3.2', 15 'version' => '2.3.2.0', 16 16 'type' => 'library', 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => ' 37e1f656389d0d03aaab30f1d5053e618e625af9',19 'reference' => 'e49bb008caab50a3a561224e91d43829a274c2ad', 20 20 'dev_requirement' => false, 21 21 ), … … 39 39 ), 40 40 'paragonie/random_compat' => array( 41 'pretty_version' => 'v2.0.2 0',42 'version' => '2.0.2 0.0',41 'pretty_version' => 'v2.0.21', 42 'version' => '2.0.21.0', 43 43 'type' => 'library', 44 44 'install_path' => __DIR__ . '/../paragonie/random_compat', 45 45 'aliases' => array(), 46 'reference' => ' 0f1f60250fccffeaf5dda91eea1c018aed1adc2a',46 'reference' => '96c132c7f2f7bc3230723b66e89f8f150b29d5ae', 47 47 'dev_requirement' => false, 48 48 ), … … 63 63 ), 64 64 'symfony/polyfill-ctype' => array( 65 'pretty_version' => 'v1.2 4.0',66 'version' => '1.2 4.0.0',65 'pretty_version' => 'v1.25.0', 66 'version' => '1.25.0.0', 67 67 'type' => 'library', 68 68 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', … … 81 81 ), 82 82 'twig/twig' => array( 83 'pretty_version' => 'v3.3. 7',84 'version' => '3.3. 7.0',83 'pretty_version' => 'v3.3.8', 84 'version' => '3.3.8.0', 85 85 'type' => 'library', 86 86 'install_path' => __DIR__ . '/../twig/twig', 87 87 'aliases' => array(), 88 'reference' => ' 8f168c6ffa3ce76d1786b3cd52275424a3fc675b',88 'reference' => '972d8604a92b7054828b539f2febb0211dd5945c', 89 89 'dev_requirement' => false, 90 90 ), -
next-active-directory-integration/tags/2.3.2/vendor/paragonie/random_compat/composer.json
r1944146 r2692352 26 26 }, 27 27 "require-dev": { 28 "phpunit/phpunit": " 4.*|5.*"28 "phpunit/phpunit": "*" 29 29 }, 30 30 "suggest": { -
next-active-directory-integration/tags/2.3.2/vendor/paragonie/random_compat/lib/random.php
r2517646 r2692352 184 184 $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1'); 185 185 /** @psalm-suppress TypeDoesNotContainType */ 186 if ( method_exists($RandomCompatCOMtest, 'GetRandom')) {186 if (is_callable(array($RandomCompatCOMtest, 'GetRandom'))) { 187 187 // See random_bytes_com_dotnet.php 188 188 require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_com_dotnet.php'; -
next-active-directory-integration/tags/2.3.2/vendor/twig/twig/CHANGELOG
r2662231 r2692352 1 # 3.3.8 (2022-02-04) 2 3 * Fix a security issue when in a sandbox: the `sort` filter must require a Closure for the `arrow` parameter 4 1 5 # 3.3.7 (2022-01-03) 2 6 -
next-active-directory-integration/tags/2.3.2/vendor/twig/twig/src/Environment.php
r2662231 r2692352 39 39 class Environment 40 40 { 41 public const VERSION = '3.3. 7';42 public const VERSION_ID = 3030 7;41 public const VERSION = '3.3.8'; 42 public const VERSION_ID = 30308; 43 43 public const MAJOR_VERSION = 3; 44 44 public const MINOR_VERSION = 3; 45 public const RELEASE_VERSION = 7;45 public const RELEASE_VERSION = 8; 46 46 public const EXTRA_VERSION = ''; 47 47 -
next-active-directory-integration/tags/2.3.2/vendor/twig/twig/src/Extension/CoreExtension.php
r2662231 r2692352 202 202 new TwigFilter('join', 'twig_join_filter'), 203 203 new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]), 204 new TwigFilter('sort', 'twig_sort_filter' ),204 new TwigFilter('sort', 'twig_sort_filter', ['needs_environment' => true]), 205 205 new TwigFilter('merge', 'twig_array_merge'), 206 206 new TwigFilter('batch', 'twig_array_batch'), … … 544 544 function twig_round($value, $precision = 0, $method = 'common') 545 545 { 546 $value = (float) $value; 547 546 548 if ('common' === $method) { 547 549 return round($value, $precision); … … 551 553 throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); 552 554 } 553 554 $value = (float) $value;555 555 556 556 return $method($value * 10 ** $precision) / 10 ** $precision; … … 888 888 * @return array 889 889 */ 890 function twig_sort_filter( $array, $arrow = null)890 function twig_sort_filter(Environment $env, $array, $arrow = null) 891 891 { 892 892 if ($array instanceof \Traversable) { … … 897 897 898 898 if (null !== $arrow) { 899 twig_check_arrow_in_sandbox($env, $arrow, 'sort', 'filter'); 900 899 901 uasort($array, $arrow); 900 902 } else { … … 1640 1642 } 1641 1643 1642 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1643 throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.'); 1644 } 1644 twig_check_arrow_in_sandbox($env, $arrow, 'filter', 'filter'); 1645 1645 1646 1646 if (\is_array($array)) { … … 1654 1654 function twig_array_map(Environment $env, $array, $arrow) 1655 1655 { 1656 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1657 throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.'); 1658 } 1656 twig_check_arrow_in_sandbox($env, $arrow, 'map', 'filter'); 1659 1657 1660 1658 $r = []; … … 1668 1666 function twig_array_reduce(Environment $env, $array, $arrow, $initial = null) 1669 1667 { 1670 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1671 throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.'); 1672 } 1668 twig_check_arrow_in_sandbox($env, $arrow, 'reduce', 'filter'); 1673 1669 1674 1670 if (!\is_array($array)) { … … 1682 1678 return array_reduce($array, $arrow, $initial); 1683 1679 } 1684 } 1680 1681 function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type) 1682 { 1683 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1684 throw new RuntimeError(sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type)); 1685 } 1686 } 1687 } -
next-active-directory-integration/trunk/classes/Adi/Authentication/LoginService.php
r2641799 r2692352 113 113 add_filter('wp_authenticate_user', array($this->loginSucceededService, 'checkUserEnabled'), 10, 2); 114 114 115 // @see#142: register an additional filter for checking if the username is excluded115 // #142: register an additional filter for checking if the username is excluded 116 116 add_filter(NEXT_AD_INT_PREFIX . 'auth_form_login_requires_ad_authentication', array($this, 'requiresActiveDirectoryAuthentication'), 10, 1); 117 117 } -
next-active-directory-integration/trunk/classes/Adi/Authentication/SingleSignOn/Service.php
r2641799 r2692352 75 75 // after login has succeeded, we want the current identified user to be automatically logged in 76 76 add_filter(NEXT_AD_INT_PREFIX . 'login_succeeded', array($this, 'loginUser'), 19, 1); 77 // @see#142: register an additional filter for checking if the username is excluded; please note that this differs from the parent's basic_login_requires_ad_authentication filter77 // #142: register an additional filter for checking if the username is excluded; please note that this differs from the parent's basic_login_requires_ad_authentication filter 78 78 add_filter(NEXT_AD_INT_PREFIX . 'auth_sso_login_requires_ad_authentication', array($this, 'requiresActiveDirectoryAuthentication'), 10, 1); 79 79 } … … 169 169 $profileMatch = $this->ssoProfileLocator->locate($credentials); 170 170 171 // #152, NADISUP-7: Critical WordPress error if a matching profile for SSO authentication can not be found 172 if (!$profileMatch) { 173 throw new NextADInt_Adi_Authentication_Exception("Unable to locate a matching profile for '" . $credentials->getLogin() . "'"); 174 } 175 171 176 // a valid profile is required for login 172 177 $validation->validateProfile($profileMatch->getProfile()); 173 178 174 179 $this->logger->debug("Valid SSO profile for type '" . $profileMatch->getType() . "' found"); 175 180 // fire a hook to inform that one of the SSO profiles has been matched -
next-active-directory-integration/trunk/classes/Adi/Configuration/Options.php
r2641799 r2692352 109 109 // Custom Login Page 110 110 const CUSTOM_LOGIN_PAGE_ENABLED = 'custom_login_page_enabled'; 111 const CUSTOM_LOGIN_PAGE_URI = 'custom_login_page_uri'; 111 112 112 113 // additional attribute mapping … … 190 191 191 192 /** 192 * This method generates all the meta information for a option elements.193 * The keys (like self::DOMAIN_CONTROLLERS, self::PORT) and it isvalues are option elements.193 * This method generates all the meta information for an option elements. 194 * The keys (like self::DOMAIN_CONTROLLERS, self::PORT) and their values are option elements. 194 195 * The key is the internal name for the option and the value is the option meta data. 195 196 * … … 1168 1169 $transient => false, 1169 1170 ), 1171 self::CUSTOM_LOGIN_PAGE_URI => array( 1172 $title => __('Custom login page URI', 'next-active-directory-integration'), 1173 $type => NextADInt_Multisite_Option_Type::TEXT, 1174 $description => __('URI of a custom login page where authentication against the Active Directory will be enabled. By default, the custom login page\'s URI is <em>/login</em>.', 1175 'next-active-directory-integration'), 1176 $detail => __('If you use a custom login page URI like <em>/login</em>, please enter it to enable Active Directory authentication check on this page.', 'next-active-directory-integration'), 1177 $angularAttributes => 'ng-disabled="(!option.custom_login_page_enabled', 1178 $default => '/login', 1179 $sanitizer => array('string'), 1180 $showPermission => true, 1181 $transient => false, 1182 ), 1170 1183 // Maximum number of failed login attempts before the account is blocked 1171 1184 self::MAX_LOGIN_ATTEMPTS => array( -
next-active-directory-integration/trunk/classes/Adi/Configuration/Ui/Layout.php
r2641799 r2692352 235 235 self::OPTIONS => array( 236 236 NextADInt_Adi_Configuration_Options::ENABLE_SMARTCARD_USER_LOGIN, 237 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_ENABLED 237 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_ENABLED, 238 NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_URI 238 239 ), 239 240 ), -
next-active-directory-integration/trunk/classes/Adi/Init.php
r2331595 r2692352 233 233 * Signal that NADI registration has been finished. It simply calls the WordPress action 'nadi_loaded' 234 234 * @since 2.1.8 235 * @ see ADI-672235 * @issue ADI-672 236 236 */ 237 237 public function finishRegistration() { … … 486 486 487 487 if ($customLoginPageEnabled) { 488 if (isset($_SERVER["REQUEST_URI"]) && strpos($_SERVER["REQUEST_URI"], '/login') !== false) { 488 $loginUri = $this->dc()->getConfiguration()->getOptionValue(NextADInt_Adi_Configuration_Options::CUSTOM_LOGIN_PAGE_URI); 489 490 if (isset($_SERVER["REQUEST_URI"]) && strpos($_SERVER["REQUEST_URI"], $loginUri) !== false) { 489 491 $r = true; 490 492 } -
next-active-directory-integration/trunk/classes/Adi/Synchronization/Abstract.php
r2517646 r2692352 169 169 $sid = NextADInt_ActiveDirectory_Sid::of($userDomainSid); 170 170 171 // @see#138: the SID can be null if this user has been imported in a previous version171 // #138: the SID can be null if this user has been imported in a previous version 172 172 if (!$this->connection->getActiveDirectoryContext()->isMember($sid)) { 173 173 $this->logger->warning('User with name ' . $user->user_login . 'is not a member of one of the configured domains.'); -
next-active-directory-integration/trunk/classes/Adi/Synchronization/WordPress.php
r2641799 r2692352 280 280 $uac = $attributes[$key][0]; 281 281 282 // @see GH-132: https://github.com/NeosIT/active-directory-integration2/issues/132282 // #132: https://github.com/NeosIT/active-directory-integration2/issues/132 283 283 // With PHP 8 we got hit by https://github.com/php/php-src/pull/5331 284 284 return (int)$uac; … … 293 293 * @return bool 294 294 */ 295 public function isNormalAccount( $uac)296 { 297 298 // @seeADI-517: Improved logging for UAC Binary Flag check to make it more transparent for the user and improve debugging.295 public function isNormalAccount(int $uac) 296 { 297 298 // ADI-517: Improved logging for UAC Binary Flag check to make it more transparent for the user and improve debugging. 299 299 switch ($uac) { 300 300 case (($uac & self::UF_INTERDOMAIN_TRUST_ACCOUNT) === self::UF_INTERDOMAIN_TRUST_ACCOUNT): … … 329 329 * @return bool 330 330 */ 331 public function isSmartCardRequired( $uac)331 public function isSmartCardRequired(int $uac) 332 332 { 333 333 if (($uac & self::UF_SMARTCARD_REQUIRED) === 0) { … … 346 346 * @return bool 347 347 */ 348 public function isAccountDisabled( $uac)348 public function isAccountDisabled(int $uac) 349 349 { 350 350 if (($uac & self::UF_ACCOUNT_DISABLE) === self::UF_ACCOUNT_DISABLE) { … … 412 412 413 413 // ADI-223: Check if user is disabled in Active Directory 414 $uac = $ ldapAttributes->getFilteredValue('useraccountcontrol');414 $uac = $this->userAccountControl($ldapAttributes->getRaw()); 415 415 $isUserDisabled = $this->isAccountDisabled($uac); 416 416 -
next-active-directory-integration/trunk/classes/Adi/User/Manager.php
r2517646 r2692352 579 579 * </ul> 580 580 * 581 * @ see ADI-691581 * @issue ADI-691 582 582 * @param WP_User $wpUser |null 583 583 * @param $preferredEmail … … 658 658 * 659 659 * @since 2.1.9 660 * @ see ADI-691660 * @issue ADI-691 661 661 * @param WP_User|null $wpUserToChange null, if user has not been created yet 662 662 * @param $preferredEmail -
next-active-directory-integration/trunk/classes/Ldap/Attribute/Service.php
r2513920 r2692352 175 175 * @param NextADInt_Ldap_UserQuery $userQuery 176 176 * @return NextADInt_Ldap_Attributes 177 * @ see ADI-713177 * @issue ADI-713 178 178 */ 179 179 public function resolveLdapAttributes(NextADInt_Ldap_UserQuery $userQuery) -
next-active-directory-integration/trunk/classes/Ldap/Connection.php
r2513920 r2692352 432 432 * @param array $attributeNames 433 433 * @return array|boolean the $bestMatch exactly one match or false 434 * @ see ADI-713434 * @issue ADI-713 435 435 * @since 2.1.13 436 436 */ -
next-active-directory-integration/trunk/classes/Multisite/Configuration/Persistence/BlogConfigurationRepository.php
r2517867 r2692352 190 190 function getDefaultValue($siteId, $optionName, $option) 191 191 { 192 // gh-#127: PHP 7.4 compatibility; warning if $option is not an array but null192 // #127: PHP 7.4 compatibility; warning if $option is not an array but null 193 193 if (!is_array($option)) { 194 194 $this->logger->warn("Option '" . $optionName . "' in site with ID '" . $siteId . "' has no option configuration"); -
next-active-directory-integration/trunk/composer.lock
r2662231 r2692352 158 158 { 159 159 "name": "paragonie/random_compat", 160 "version": "v2.0.2 0",160 "version": "v2.0.21", 161 161 "source": { 162 162 "type": "git", 163 163 "url": "https://github.com/paragonie/random_compat.git", 164 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a"165 }, 166 "dist": { 167 "type": "zip", 168 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/ 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",169 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",164 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae" 165 }, 166 "dist": { 167 "type": "zip", 168 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 169 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 170 170 "shasum": "" 171 171 }, … … 174 174 }, 175 175 "require-dev": { 176 "phpunit/phpunit": " 4.*|5.*"176 "phpunit/phpunit": "*" 177 177 }, 178 178 "suggest": { … … 208 208 "source": "https://github.com/paragonie/random_compat" 209 209 }, 210 "time": "202 1-04-17T09:33:01+00:00"210 "time": "2022-02-16T17:07:03+00:00" 211 211 }, 212 212 { … … 262 262 { 263 263 "name": "symfony/polyfill-ctype", 264 "version": "v1.2 4.0",264 "version": "v1.25.0", 265 265 "source": { 266 266 "type": "git", … … 294 294 }, 295 295 "autoload": { 296 "files": [ 297 "bootstrap.php" 298 ], 296 299 "psr-4": { 297 300 "Symfony\\Polyfill\\Ctype\\": "" 298 }, 299 "files": [ 300 "bootstrap.php" 301 ] 301 } 302 302 }, 303 303 "notification-url": "https://packagist.org/downloads/", … … 324 324 ], 325 325 "support": { 326 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.2 4.0"326 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 327 327 }, 328 328 "funding": [ … … 373 373 }, 374 374 "autoload": { 375 "files": [ 376 "bootstrap.php" 377 ], 375 378 "psr-4": { 376 379 "Symfony\\Polyfill\\Mbstring\\": "" 377 }, 378 "files": [ 379 "bootstrap.php" 380 ] 380 } 381 381 }, 382 382 "notification-url": "https://packagist.org/downloads/", … … 424 424 { 425 425 "name": "twig/twig", 426 "version": "v3.3. 7",426 "version": "v3.3.8", 427 427 "source": { 428 428 "type": "git", 429 429 "url": "https://github.com/twigphp/Twig.git", 430 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b"431 }, 432 "dist": { 433 "type": "zip", 434 "url": "https://api.github.com/repos/twigphp/Twig/zipball/ 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",435 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",430 "reference": "972d8604a92b7054828b539f2febb0211dd5945c" 431 }, 432 "dist": { 433 "type": "zip", 434 "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c", 435 "reference": "972d8604a92b7054828b539f2febb0211dd5945c", 436 436 "shasum": "" 437 437 }, … … 484 484 "support": { 485 485 "issues": "https://github.com/twigphp/Twig/issues", 486 "source": "https://github.com/twigphp/Twig/tree/v3.3. 7"486 "source": "https://github.com/twigphp/Twig/tree/v3.3.8" 487 487 }, 488 488 "funding": [ … … 496 496 } 497 497 ], 498 "time": "2022-0 1-03T21:15:37+00:00"498 "time": "2022-02-04T06:59:48+00:00" 499 499 } 500 500 ], … … 547 547 { 548 548 "name": "antecedent/patchwork", 549 "version": "2.1. 19",549 "version": "2.1.21", 550 550 "source": { 551 551 "type": "git", 552 552 "url": "https://github.com/antecedent/patchwork.git", 553 "reference": " 94fe587cb0a6c1695b1ddc650e877231be80b8bc"554 }, 555 "dist": { 556 "type": "zip", 557 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/ 94fe587cb0a6c1695b1ddc650e877231be80b8bc",558 "reference": " 94fe587cb0a6c1695b1ddc650e877231be80b8bc",553 "reference": "25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d" 554 }, 555 "dist": { 556 "type": "zip", 557 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d", 558 "reference": "25c1fa0cd9a6e6d0d13863d8df8f050b6733f16d", 559 559 "shasum": "" 560 560 }, … … 589 589 "support": { 590 590 "issues": "https://github.com/antecedent/patchwork/issues", 591 "source": "https://github.com/antecedent/patchwork/tree/2.1. 19"592 }, 593 "time": "2022-0 1-20T04:47:04+00:00"591 "source": "https://github.com/antecedent/patchwork/tree/2.1.21" 592 }, 593 "time": "2022-02-07T07:28:34+00:00" 594 594 }, 595 595 { 596 596 "name": "doctrine/instantiator", 597 "version": "1.4. 0",597 "version": "1.4.1", 598 598 "source": { 599 599 "type": "git", 600 600 "url": "https://github.com/doctrine/instantiator.git", 601 "reference": " d56bf6102915de5702778fe20f2de3b2fe570b5b"602 }, 603 "dist": { 604 "type": "zip", 605 "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ d56bf6102915de5702778fe20f2de3b2fe570b5b",606 "reference": " d56bf6102915de5702778fe20f2de3b2fe570b5b",601 "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" 602 }, 603 "dist": { 604 "type": "zip", 605 "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", 606 "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", 607 607 "shasum": "" 608 608 }, … … 611 611 }, 612 612 "require-dev": { 613 "doctrine/coding-standard": "^ 8.0",613 "doctrine/coding-standard": "^9", 614 614 "ext-pdo": "*", 615 615 "ext-phar": "*", 616 "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 617 "phpstan/phpstan": "^0.12", 618 "phpstan/phpstan-phpunit": "^0.12", 619 "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 616 "phpbench/phpbench": "^0.16 || ^1", 617 "phpstan/phpstan": "^1.4", 618 "phpstan/phpstan-phpunit": "^1", 619 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 620 "vimeo/psalm": "^4.22" 620 621 }, 621 622 "type": "library", … … 644 645 "support": { 645 646 "issues": "https://github.com/doctrine/instantiator/issues", 646 "source": "https://github.com/doctrine/instantiator/tree/1.4. 0"647 "source": "https://github.com/doctrine/instantiator/tree/1.4.1" 647 648 }, 648 649 "funding": [ … … 660 661 } 661 662 ], 662 "time": "202 0-11-10T18:47:58+00:00"663 "time": "2022-03-03T08:28:38+00:00" 663 664 }, 664 665 { … … 784 785 { 785 786 "name": "myclabs/deep-copy", 786 "version": "1.1 0.2",787 "version": "1.11.0", 787 788 "source": { 788 789 "type": "git", 789 790 "url": "https://github.com/myclabs/DeepCopy.git", 790 "reference": " 776f831124e9c62e1a2c601ecc52e776d8bb7220"791 }, 792 "dist": { 793 "type": "zip", 794 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ 776f831124e9c62e1a2c601ecc52e776d8bb7220",795 "reference": " 776f831124e9c62e1a2c601ecc52e776d8bb7220",791 "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" 792 }, 793 "dist": { 794 "type": "zip", 795 "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", 796 "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", 796 797 "shasum": "" 797 798 }, … … 799 800 "php": "^7.1 || ^8.0" 800 801 }, 801 "require-dev": { 802 "doctrine/collections": "^1.0", 803 "doctrine/common": "^2.6", 804 "phpunit/phpunit": "^7.1" 805 }, 806 "type": "library", 807 "autoload": { 802 "conflict": { 803 "doctrine/collections": "<1.6.8", 804 "doctrine/common": "<2.13.3 || >=3,<3.2.2" 805 }, 806 "require-dev": { 807 "doctrine/collections": "^1.6.8", 808 "doctrine/common": "^2.13.3 || ^3.2.2", 809 "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 810 }, 811 "type": "library", 812 "autoload": { 813 "files": [ 814 "src/DeepCopy/deep_copy.php" 815 ], 808 816 "psr-4": { 809 817 "DeepCopy\\": "src/DeepCopy/" 810 }, 811 "files": [ 812 "src/DeepCopy/deep_copy.php" 813 ] 818 } 814 819 }, 815 820 "notification-url": "https://packagist.org/downloads/", … … 827 832 "support": { 828 833 "issues": "https://github.com/myclabs/DeepCopy/issues", 829 "source": "https://github.com/myclabs/DeepCopy/tree/1.1 0.2"834 "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" 830 835 }, 831 836 "funding": [ … … 835 840 } 836 841 ], 837 "time": "202 0-11-13T09:40:50+00:00"842 "time": "2022-03-03T13:19:32+00:00" 838 843 }, 839 844 { … … 1065 1070 { 1066 1071 "name": "phar-io/version", 1067 "version": "3. 1.0",1072 "version": "3.2.1", 1068 1073 "source": { 1069 1074 "type": "git", 1070 1075 "url": "https://github.com/phar-io/version.git", 1071 "reference": " bae7c545bef187884426f042434e561ab1ddb182"1072 }, 1073 "dist": { 1074 "type": "zip", 1075 "url": "https://api.github.com/repos/phar-io/version/zipball/ bae7c545bef187884426f042434e561ab1ddb182",1076 "reference": " bae7c545bef187884426f042434e561ab1ddb182",1076 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 1077 }, 1078 "dist": { 1079 "type": "zip", 1080 "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1081 "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1077 1082 "shasum": "" 1078 1083 }, … … 1110 1115 "support": { 1111 1116 "issues": "https://github.com/phar-io/version/issues", 1112 "source": "https://github.com/phar-io/version/tree/3. 1.0"1113 }, 1114 "time": "202 1-02-23T14:00:09+00:00"1117 "source": "https://github.com/phar-io/version/tree/3.2.1" 1118 }, 1119 "time": "2022-02-21T01:04:05+00:00" 1115 1120 }, 1116 1121 { … … 1343 1348 { 1344 1349 "name": "phpunit/php-code-coverage", 1345 "version": "9.2.1 0",1350 "version": "9.2.15", 1346 1351 "source": { 1347 1352 "type": "git", 1348 1353 "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1349 "reference": " d5850aaf931743067f4bfc1ae4cbd06468400687"1350 }, 1351 "dist": { 1352 "type": "zip", 1353 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ d5850aaf931743067f4bfc1ae4cbd06468400687",1354 "reference": " d5850aaf931743067f4bfc1ae4cbd06468400687",1354 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" 1355 }, 1356 "dist": { 1357 "type": "zip", 1358 "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1359 "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 1355 1360 "shasum": "" 1356 1361 }, … … 1408 1413 "support": { 1409 1414 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1410 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.1 0"1415 "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" 1411 1416 }, 1412 1417 "funding": [ … … 1416 1421 } 1417 1422 ], 1418 "time": "202 1-12-05T09:12:13+00:00"1423 "time": "2022-03-07T09:28:20+00:00" 1419 1424 }, 1420 1425 { … … 1721 1726 }, 1722 1727 "autoload": { 1728 "files": [ 1729 "src/Framework/Assert/Functions.php" 1730 ], 1723 1731 "classmap": [ 1724 1732 "src/" 1725 ],1726 "files": [1727 "src/Framework/Assert/Functions.php"1728 1733 ] 1729 1734 }, … … 2321 2326 { 2322 2327 "name": "sebastian/global-state", 2323 "version": "5.0. 3",2328 "version": "5.0.5", 2324 2329 "source": { 2325 2330 "type": "git", 2326 2331 "url": "https://github.com/sebastianbergmann/global-state.git", 2327 "reference": " 23bd5951f7ff26f12d4e3242864df3e08dec4e49"2328 }, 2329 "dist": { 2330 "type": "zip", 2331 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ 23bd5951f7ff26f12d4e3242864df3e08dec4e49",2332 "reference": " 23bd5951f7ff26f12d4e3242864df3e08dec4e49",2332 "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" 2333 }, 2334 "dist": { 2335 "type": "zip", 2336 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2337 "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", 2333 2338 "shasum": "" 2334 2339 }, … … 2373 2378 "support": { 2374 2379 "issues": "https://github.com/sebastianbergmann/global-state/issues", 2375 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0. 3"2380 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" 2376 2381 }, 2377 2382 "funding": [ … … 2381 2386 } 2382 2387 ], 2383 "time": "202 1-06-11T13:31:12+00:00"2388 "time": "2022-02-14T08:28:10+00:00" 2384 2389 }, 2385 2390 { … … 2781 2786 { 2782 2787 "name": "symfony/console", 2783 "version": "v5.4. 2",2788 "version": "v5.4.5", 2784 2789 "source": { 2785 2790 "type": "git", 2786 2791 "url": "https://github.com/symfony/console.git", 2787 "reference": " a2c6b7ced2eb7799a35375fb9022519282b5405e"2788 }, 2789 "dist": { 2790 "type": "zip", 2791 "url": "https://api.github.com/repos/symfony/console/zipball/ a2c6b7ced2eb7799a35375fb9022519282b5405e",2792 "reference": " a2c6b7ced2eb7799a35375fb9022519282b5405e",2792 "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad" 2793 }, 2794 "dist": { 2795 "type": "zip", 2796 "url": "https://api.github.com/repos/symfony/console/zipball/d8111acc99876953f52fe16d4c50eb60940d49ad", 2797 "reference": "d8111acc99876953f52fe16d4c50eb60940d49ad", 2793 2798 "shasum": "" 2794 2799 }, … … 2860 2865 ], 2861 2866 "support": { 2862 "source": "https://github.com/symfony/console/tree/v5.4. 2"2867 "source": "https://github.com/symfony/console/tree/v5.4.5" 2863 2868 }, 2864 2869 "funding": [ … … 2876 2881 } 2877 2882 ], 2878 "time": "202 1-12-20T16:11:12+00:00"2883 "time": "2022-02-24T12:45:35+00:00" 2879 2884 }, 2880 2885 { … … 2947 2952 { 2948 2953 "name": "symfony/finder", 2949 "version": "v5.4. 2",2954 "version": "v5.4.3", 2950 2955 "source": { 2951 2956 "type": "git", 2952 2957 "url": "https://github.com/symfony/finder.git", 2953 "reference": " e77046c252be48c48a40816187ed527703c8f76c"2954 }, 2955 "dist": { 2956 "type": "zip", 2957 "url": "https://api.github.com/repos/symfony/finder/zipball/ e77046c252be48c48a40816187ed527703c8f76c",2958 "reference": " e77046c252be48c48a40816187ed527703c8f76c",2958 "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" 2959 }, 2960 "dist": { 2961 "type": "zip", 2962 "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", 2963 "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", 2959 2964 "shasum": "" 2960 2965 }, … … 2990 2995 "homepage": "https://symfony.com", 2991 2996 "support": { 2992 "source": "https://github.com/symfony/finder/tree/v5.4. 2"2997 "source": "https://github.com/symfony/finder/tree/v5.4.3" 2993 2998 }, 2994 2999 "funding": [ … … 3006 3011 } 3007 3012 ], 3008 "time": "202 1-12-15T11:06:13+00:00"3013 "time": "2022-01-26T16:34:36+00:00" 3009 3014 }, 3010 3015 { 3011 3016 "name": "symfony/polyfill-intl-grapheme", 3012 "version": "v1.2 4.0",3017 "version": "v1.25.0", 3013 3018 "source": { 3014 3019 "type": "git", … … 3039 3044 }, 3040 3045 "autoload": { 3046 "files": [ 3047 "bootstrap.php" 3048 ], 3041 3049 "psr-4": { 3042 3050 "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3043 }, 3044 "files": [ 3045 "bootstrap.php" 3046 ] 3051 } 3047 3052 }, 3048 3053 "notification-url": "https://packagist.org/downloads/", … … 3071 3076 ], 3072 3077 "support": { 3073 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.2 4.0"3078 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" 3074 3079 }, 3075 3080 "funding": [ … … 3091 3096 { 3092 3097 "name": "symfony/polyfill-intl-normalizer", 3093 "version": "v1.2 4.0",3098 "version": "v1.25.0", 3094 3099 "source": { 3095 3100 "type": "git", … … 3120 3125 }, 3121 3126 "autoload": { 3122 "psr-4": {3123 "Symfony\\Polyfill\\Intl\\Normalizer\\": ""3124 },3125 3127 "files": [ 3126 3128 "bootstrap.php" 3127 3129 ], 3130 "psr-4": { 3131 "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3132 }, 3128 3133 "classmap": [ 3129 3134 "Resources/stubs" … … 3155 3160 ], 3156 3161 "support": { 3157 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.2 4.0"3162 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" 3158 3163 }, 3159 3164 "funding": [ … … 3175 3180 { 3176 3181 "name": "symfony/polyfill-php73", 3177 "version": "v1.2 4.0",3182 "version": "v1.25.0", 3178 3183 "source": { 3179 3184 "type": "git", … … 3201 3206 }, 3202 3207 "autoload": { 3203 "psr-4": {3204 "Symfony\\Polyfill\\Php73\\": ""3205 },3206 3208 "files": [ 3207 3209 "bootstrap.php" 3208 3210 ], 3211 "psr-4": { 3212 "Symfony\\Polyfill\\Php73\\": "" 3213 }, 3209 3214 "classmap": [ 3210 3215 "Resources/stubs" … … 3234 3239 ], 3235 3240 "support": { 3236 "source": "https://github.com/symfony/polyfill-php73/tree/v1.2 4.0"3241 "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" 3237 3242 }, 3238 3243 "funding": [ … … 3254 3259 { 3255 3260 "name": "symfony/polyfill-php80", 3256 "version": "v1.2 4.0",3261 "version": "v1.25.0", 3257 3262 "source": { 3258 3263 "type": "git", 3259 3264 "url": "https://github.com/symfony/polyfill-php80.git", 3260 "reference": " 57b712b08eddb97c762a8caa32c84e037892d2e9"3261 }, 3262 "dist": { 3263 "type": "zip", 3264 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/ 57b712b08eddb97c762a8caa32c84e037892d2e9",3265 "reference": " 57b712b08eddb97c762a8caa32c84e037892d2e9",3265 "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" 3266 }, 3267 "dist": { 3268 "type": "zip", 3269 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", 3270 "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", 3266 3271 "shasum": "" 3267 3272 }, … … 3280 3285 }, 3281 3286 "autoload": { 3282 "psr-4": {3283 "Symfony\\Polyfill\\Php80\\": ""3284 },3285 3287 "files": [ 3286 3288 "bootstrap.php" 3287 3289 ], 3290 "psr-4": { 3291 "Symfony\\Polyfill\\Php80\\": "" 3292 }, 3288 3293 "classmap": [ 3289 3294 "Resources/stubs" … … 3317 3322 ], 3318 3323 "support": { 3319 "source": "https://github.com/symfony/polyfill-php80/tree/v1.2 4.0"3324 "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" 3320 3325 }, 3321 3326 "funding": [ … … 3333 3338 } 3334 3339 ], 3335 "time": "202 1-09-13T13:58:33+00:00"3340 "time": "2022-03-04T08:16:47+00:00" 3336 3341 }, 3337 3342 { 3338 3343 "name": "symfony/process", 3339 "version": "v5.4. 2",3344 "version": "v5.4.5", 3340 3345 "source": { 3341 3346 "type": "git", 3342 3347 "url": "https://github.com/symfony/process.git", 3343 "reference": " 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4"3344 }, 3345 "dist": { 3346 "type": "zip", 3347 "url": "https://api.github.com/repos/symfony/process/zipball/ 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",3348 "reference": " 2b3ba8722c4aaf3e88011be5e7f48710088fb5e4",3348 "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" 3349 }, 3350 "dist": { 3351 "type": "zip", 3352 "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", 3353 "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", 3349 3354 "shasum": "" 3350 3355 }, … … 3379 3384 "homepage": "https://symfony.com", 3380 3385 "support": { 3381 "source": "https://github.com/symfony/process/tree/v5.4. 2"3386 "source": "https://github.com/symfony/process/tree/v5.4.5" 3382 3387 }, 3383 3388 "funding": [ … … 3395 3400 } 3396 3401 ], 3397 "time": "202 1-12-27T21:01:00+00:00"3402 "time": "2022-01-30T18:16:22+00:00" 3398 3403 }, 3399 3404 { … … 3481 3486 { 3482 3487 "name": "symfony/string", 3483 "version": "v6.0. 2",3488 "version": "v6.0.3", 3484 3489 "source": { 3485 3490 "type": "git", 3486 3491 "url": "https://github.com/symfony/string.git", 3487 "reference": " bae261d0c3ac38a1f802b4dfed42094296100631"3488 }, 3489 "dist": { 3490 "type": "zip", 3491 "url": "https://api.github.com/repos/symfony/string/zipball/ bae261d0c3ac38a1f802b4dfed42094296100631",3492 "reference": " bae261d0c3ac38a1f802b4dfed42094296100631",3492 "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" 3493 }, 3494 "dist": { 3495 "type": "zip", 3496 "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", 3497 "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", 3493 3498 "shasum": "" 3494 3499 }, … … 3511 3516 "type": "library", 3512 3517 "autoload": { 3513 "psr-4": {3514 "Symfony\\Component\\String\\": ""3515 },3516 3518 "files": [ 3517 3519 "Resources/functions.php" 3518 3520 ], 3521 "psr-4": { 3522 "Symfony\\Component\\String\\": "" 3523 }, 3519 3524 "exclude-from-classmap": [ 3520 3525 "/Tests/" … … 3546 3551 ], 3547 3552 "support": { 3548 "source": "https://github.com/symfony/string/tree/v6.0. 2"3553 "source": "https://github.com/symfony/string/tree/v6.0.3" 3549 3554 }, 3550 3555 "funding": [ … … 3562 3567 } 3563 3568 ], 3564 "time": "202 1-12-16T22:13:01+00:00"3569 "time": "2022-01-02T09:55:41+00:00" 3565 3570 }, 3566 3571 { 3567 3572 "name": "symfony/yaml", 3568 "version": "v5.4. 2",3573 "version": "v5.4.3", 3569 3574 "source": { 3570 3575 "type": "git", 3571 3576 "url": "https://github.com/symfony/yaml.git", 3572 "reference": " b9eb163846a61bb32dfc147f7859e274fab38b58"3573 }, 3574 "dist": { 3575 "type": "zip", 3576 "url": "https://api.github.com/repos/symfony/yaml/zipball/ b9eb163846a61bb32dfc147f7859e274fab38b58",3577 "reference": " b9eb163846a61bb32dfc147f7859e274fab38b58",3577 "reference": "e80f87d2c9495966768310fc531b487ce64237a2" 3578 }, 3579 "dist": { 3580 "type": "zip", 3581 "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", 3582 "reference": "e80f87d2c9495966768310fc531b487ce64237a2", 3578 3583 "shasum": "" 3579 3584 }, … … 3621 3626 "homepage": "https://symfony.com", 3622 3627 "support": { 3623 "source": "https://github.com/symfony/yaml/tree/v5.4. 2"3628 "source": "https://github.com/symfony/yaml/tree/v5.4.3" 3624 3629 }, 3625 3630 "funding": [ … … 3637 3642 } 3638 3643 ], 3639 "time": "202 1-12-16T21:58:21+00:00"3644 "time": "2022-01-26T16:32:32+00:00" 3640 3645 }, 3641 3646 { -
next-active-directory-integration/trunk/index.php
r2662231 r2692352 4 4 Plugin URI: https://www.active-directory-wp.com 5 5 Description: Enterprise-ready solution to authenticate, authorize and synchronize your Active Directory users to WordPress. Next Active Directory Authentication supports NTLM and Kerberos for Single Sign On. 6 Version: 2.3. 16 Version: 2.3.2 7 7 Author: active-directory-wp.com 8 8 Author URI: https://active-directory-wp.com -
next-active-directory-integration/trunk/js/app/blog-options/controllers/security.controller.js
r2513920 r2692352 26 26 enable_smartcard_user_login: $valueHelper.findValue("enable_smartcard_user_login", data), 27 27 custom_login_page_enabled: $valueHelper.findValue("custom_login_page_enabled", data), 28 custom_login_page_uri: $valueHelper.findValue("custom_login_page_uri", data), 28 29 max_login_attempts: $valueHelper.findValue("max_login_attempts", data), 29 30 block_time: $valueHelper.findValue("block_time", data), … … 42 43 enable_smartcard_user_login: $valueHelper.findPermission("enable_smartcard_user_login", data), 43 44 custom_login_page_enabled: $valueHelper.findPermission("custom_login_page_enabled", data), 45 custom_login_page_uri: $valueHelper.findPermission("custom_login_page_uri", data), 44 46 max_login_attempts: $valueHelper.findPermission("max_login_attempts", data), 45 47 block_time: $valueHelper.findPermission("block_time", data), … … 56 58 enable_smartcard_user_login: $valueHelper.findMessage("enable_smartcard_user_login", data), 57 59 custom_login_page_enabled: $valueHelper.findMessage("custom_login_page_enabled", data), 60 custom_login_page_uri: $valueHelper.findMessage("custom_login_page_uri", data), 58 61 max_login_attempts: $valueHelper.findMessage("max_login_attempts", data), 59 62 block_time: $valueHelper.findMessage("block_time", data), -
next-active-directory-integration/trunk/js/app/profile-options/controllers/security.controller.js
r2513920 r2692352 28 28 enable_smartcard_user_login: $valueHelper.findValue("enable_smartcard_user_login", data), 29 29 custom_login_page_enabled: $valueHelper.findValue("custom_login_page_enabled", data), 30 custom_login_page_uri: $valueHelper.findValue("custom_login_page_uri", data), 30 31 max_login_attempts: $valueHelper.findValue("max_login_attempts", data), 31 32 block_time: $valueHelper.findValue("block_time", data), … … 46 47 enable_smartcard_user_login: $valueHelper.findPermission("enable_smartcard_user_login", data), 47 48 custom_login_page_enabled: $valueHelper.findPermission("custom_login_page_enabled", data), 49 custom_login_page_uri: $valueHelper.findPermission("custom_login_page_uri", data), 48 50 max_login_attempts: $valueHelper.findPermission("max_login_attempts", data), 49 51 block_time: $valueHelper.findPermission("block_time", data), … … 60 62 enable_smartcard_user_login: $valueHelper.findMessage("enable_smartcard_user_login", data), 61 63 custom_login_page_enabled: $valueHelper.findMessage("custom_login_page_enabled", data), 64 custom_login_page_uri: $valueHelper.findMessage("custom_login_page_uri", data), 62 65 max_login_attempts: $valueHelper.findMessage("max_login_attempts", data), 63 66 block_time: $valueHelper.findMessage("block_time", data), -
next-active-directory-integration/trunk/readme.txt
r2662231 r2692352 1 1 === Next Active Directory Integration === 2 2 Contributors: neosit,tobi823,fatsquirrel,schakko,medan123 3 Tags: authentication, active directory, ldap, authorization, security, windows, sso3 Tags: authentication, active directory, ldap, ldaps, authorization, security, windows, sso, login, domain, controller 4 4 Requires at least: 5.6 5 5 Tested up to: 5.9 6 Stable tag: 2.3. 16 Stable tag: 2.3.2 7 7 License: GPLv3 8 Donate link: https://active-directory-wp.com 8 9 9 10 Next Active Directory Integration allows WordPress to authenticate, authorize, create and update users against Microsoft Active Directory. … … 129 130 For detailed information you can visit the official [GitHub repository of Next Active Directory Integration](https://github.com/NeosIT/active-directory-integration2) 130 131 132 = 2.3.2 = 133 * FIXED: Critical WordPress error if a matching profile for SSO authentication can not be found (#152, NADISUP-7) 134 * FIXED: Uncaught TypeError when checking userAccountControl attribute (#151) 135 * FIXED: For specific Active Directory forest structures, the NETBIOS name can not be resolved during verification of the credentials (#153, NADISUP-8) 136 * ADDED: Option for specifying a custom login page URI; special thanks to GitHub user *czoIg* for contributing this functionality (#154) 137 131 138 = 2.3.1 = 132 139 * CHANGED: WordPress 5.9 compatibility has been checked … … 134 141 135 142 = 2.3.0 = 136 * FIXED: when a user can not be found by email address, findByProxyAddress returns false (gh-#146). Configured *Sync to WordPress* credentials are still required for logging in with email addresses.137 * FIXED: when using SSO-based logins, the "Exclude usernames from authentication" option still applies ( gh-#142)138 * ADDED: hooks for checking if NADI's authentication applies for a given username ( gh-#142)143 * FIXED: when a user can not be found by email address, findByProxyAddress returns false. Configured *Sync to WordPress* credentials are still required for logging in with email addresses. (#146) 144 * FIXED: when using SSO-based logins, the "Exclude usernames from authentication" option still applies (#142) 145 * ADDED: hooks for checking if NADI's authentication applies for a given username (#142) 139 146 * CHANGED: WordPress 5.8.1 compatibility has been checked 140 147 * CHANGED: WordPress 5.8.2 compatibility has been checked 141 * REMOVED: Parameter $useLocalWordPressUser in NextADInt_Adi_Mail_Notification ( gh-#135)142 * REMOVED: Option 'Automatic user creation'. This option has been implicitly enabled for all installations and is no longer required ( gh-#134)143 * CHANGED: PHP 8.1 compatibility has been checked; Twig has to be updated with the next release ( gh-#148)148 * REMOVED: Parameter $useLocalWordPressUser in NextADInt_Adi_Mail_Notification (#135) 149 * REMOVED: Option 'Automatic user creation'. This option has been implicitly enabled for all installations and is no longer required (#134) 150 * CHANGED: PHP 8.1 compatibility has been checked; Twig has to be updated with the next release (#148) 144 151 145 152 = 2.2.3 = 146 * FIXED: Sync to WordPress fails if user is no longer present in Active Directory ( gh-#141)153 * FIXED: Sync to WordPress fails if user is no longer present in Active Directory (#141) 147 154 148 155 = 2.2.2 = 149 * FIXED: Boolean options can't be persisted correctly with 2.2.1 ( gh-#140)156 * FIXED: Boolean options can't be persisted correctly with 2.2.1 (#140) 150 157 151 158 = 2.2.1 = 152 * FIXED: Missing meta_key "domainsid" results in TypeError or NextADInt_ActiveDirectory_Context::isMember ( gh-#133)153 * FIXED: Warning: Trying to access array offset on value of type null ( gh-#139)159 * FIXED: Missing meta_key "domainsid" results in TypeError or NextADInt_ActiveDirectory_Context::isMember (#133) 160 * FIXED: Warning: Trying to access array offset on value of type null (#139) 154 161 155 162 = 2.2.0 = … … 161 168 * CHANGED: WordPress 5.6.1 compatibility has been checked 162 169 * CHANGED: WordPress 5.7 compatibility has been checked 163 * CHANGED: PHP 8.0 compatibility has been added (ADI-718, gh-#132, gh-#137)170 * CHANGED: PHP 8.0 compatibility has been added (ADI-718, #132, #137) 164 171 * FIXED: Deprecation warning when trying to send mail notification for blocked users (ADI-719) 165 * FIXED: Option "Blog admin sets the option value." had no effect in Multisite environments ( gh-#124)166 * DEPRECATION-WARNING: For the upcoming release 2.3.0 we will remove "Internal password migration" ( gh-#136), "Automatic user creation" (gh-#134) and "Email address conflict handling" (gh-#133)172 * FIXED: Option "Blog admin sets the option value." had no effect in Multisite environments (#124) 173 * DEPRECATION-WARNING: For the upcoming release 2.3.0 we will remove "Internal password migration" (#136), "Automatic user creation" (#134) and "Email address conflict handling" (#133) 167 174 * DEV: Slightly transition new issues to GitHub instead of internal Jira 168 175 169 176 = 2.1.12 = 170 * ADDED: PR gh-#107: allow self signed certificates177 * ADDED: allow self signed certificates (#107) 171 178 * CHANGED: notices for minimum PHP version 7.2 due to EOL of PHP 7.1 172 179 * FIXED: Test compatibility with latest stable PHPUnit version 173 * FIXED: gh-#127: PHP 7.4 compatibility and deprecation of some ldap_* functions180 * FIXED: PHP 7.4 compatibility and deprecation of some ldap_* functions (#127) 174 181 * FIXED: various typos and formatting errors in the administration user interface 175 182 * ADDED: hook for triggering Sync To WordPress and Sync To AD (ADI-526) … … 183 190 * CHANGED: Twig version updated to 1.41.0 (ADI-707) 184 191 * FIXED: When a non-existing user inside in WordPress authenticates in a multisite environment the first time, a warning is triggered (ADI-705) 185 * FIXED: A deleted user from Active Directory is mapped to the wrong user in WordPress; thanks to T. Kowalchuk(ADI-702)192 * FIXED: A deleted user from Active Directory is mapped to the wrong user in WordPress; thanks to *T. Kowalchuk* (ADI-702) 186 193 * FIXED: PHP warning if user is deleted from Active Directory (ADI-701) 187 194 * FIXED: PHP error if touching of log file failed 188 195 * FIXED: "-DISABLED" suffix is added everytime a user is synchronized (ADI-697, NADIS-110) 189 196 * ADDED: hook next_ad_int_user_before_disable (ADI-699) 190 * FIXED: curly brace access ( GitHub#119)197 * FIXED: curly brace access (#119) 191 198 192 199 = 2.1.9 = … … 203 210 = 2.1.8 = 204 211 * FIXED: compatibility issues when using the Woffice theme (ADI-659) 205 * FIXED: missing email parameter when creating users (GitHub #74 Thanks to nefarius, ADI-615)206 * FIXED: an issue with the 'Prevent email change' option (https://wordpress.org/support/topic/new-user-creation-error/ Thanks to mlipenk,ADI-670)207 * ADDED: new hook to hide the 'Log in using SSO' option (https://wordpress.org/support/topic/remove-link-log-in-using-sso-on-login-page/ Thanks to vyatcheslav,ADI-672)212 * FIXED: missing email parameter when creating users; thanks to *nefarius* (#74, ADI-615) 213 * FIXED: an issue with the 'Prevent email change' option, https://wordpress.org/support/topic/new-user-creation-error/; thanks to *mlipenk* (ADI-670) 214 * ADDED: new hook to hide the 'Log in using SSO' option, https://wordpress.org/support/topic/remove-link-log-in-using-sso-on-login-page/; thanks to *vyatcheslav* (ADI-672) 208 215 * FIXED: refactored post authentication logic into separate services (ADI-671, ADI-673) 209 216 … … 212 219 213 220 = 2.1.6 = 214 * FIXED: custom authentication filters were not registered properly (ADI-665) this will fix SSO related issues221 * FIXED: custom authentication filters were not registered properly and this fixes SSO related issues (ADI-665) 215 222 * FIXED: test authentication will now properly check for authorization groups again 216 223 217 224 = 2.1.5 = 218 225 * FIXED: replaced all references to the deprecated each-function with foreach (ADI-628) 219 * FIXED: authorization groups will now properly prevent users from logging in (ADI-664, https://wordpress.org/support/topic/authorization-groups-not-working/ Thanks to shmew22, GitHub #92 Thanks to pokertour)220 * FIXED: the menu-visibility options were missing inside the profile-tab (ADI-663, https://wordpress.org/support/topic/menu-items-missing-3/ Thanks to 5tu)221 * ADDED: 2 new filters to allow for custom validation during the authentication process (ADI-657, GitHub #89 Thanks to Destabilizator)226 * FIXED: authorization groups will now properly prevent users from logging in, https://wordpress.org/support/topic/authorization-groups-not-working/; thanks to *shmew22*, *pokertour* (ADI-664, #92) 227 * FIXED: the menu-visibility options were missing inside the profile-tab, https://wordpress.org/support/topic/menu-items-missing-3/; thanks to *5tu* (ADI-663); 228 * ADDED: 2 new filters to allow for custom validation during the authentication process; thanks to *Destabilizator* (ADI-657, #89) 222 229 223 230 = 2.1.4 = … … 228 235 229 236 = 2.1.3 = 230 * ADD : added message on the profile configuration page to inform customers about end of PHP version <7.1 support231 * ADD : json response for "Sync to WordPress" triggered via powershell232 * ADD : improved logging in within the Connection.php class233 * ADD : missing German translations234 * ADD : PHP_AUTH_USER to SSO username variables237 * ADDED: added message on the profile configuration page to inform customers about end of PHP version <7.1 support 238 * ADDED: json response for "Sync to WordPress" triggered via powershell 239 * ADDED: improved logging in within the Connection.php class 240 * ADDED: missing German translations 241 * ADDED: PHP_AUTH_USER to SSO username variables 235 242 * FIXED: app.config and password.controller.config being flagged by customer firewalls / security plugins which resulted in them not being loaded properly (renamed them) 236 243 * FIXED: redirect to target site not working properly after being authenticated via NADI SSO … … 244 251 245 252 = 2.1.1 = 246 * ADD : Github#59 proxy address login (Special thanks to Github user *nedwidek* for contributing this functionality)247 * ADD : profile picture ad attributes to the ad attributes dropdown at the ad attributes configuration page248 * ADD : Github#44 claims based authentication (Special thanks to Github user *rgottsch* for contributing this functionality)249 * ADD : new option to decide if you want to grant smart card users access to the WordPress environment250 * ADD : links to the specific documentation pages for each configuration page251 * ADD : Github#64 powershell script to trigger "Sync to WordPress" and "Sync to AD" (Special thanks to Github user *nemchik* for contributing this)252 * FIX : Github#49 its now possible to enter an empty base dn253 * FIX : adjusted base DN description254 * FIX : Github#59 typo in LoginService.php253 * ADDED: proxy address login; special thanks to *nedwidek* for contributing this functionality (#59) 254 * ADDED: profile picture ad attributes to the ad attributes dropdown at the ad attributes configuration page 255 * ADDED: claims based authentication; special thanks to *rgottsch* for contributing this functionality (#44) 256 * ADDED: new option to decide if you want to grant smart card users access to the WordPress environment 257 * ADDED: links to the specific documentation pages for each configuration page 258 * ADDED: powershell script to trigger "Sync to WordPress" and "Sync to AD"; special thanks to *nemchik* for contributing this (#64) 259 * FIXED: it is now possible to enter an empty base dn (#49) 260 * FIXED: adjusted base DN description 261 * FIXED: typo in LoginService.php (#59) 255 262 * REMOVED: whitespaces inside the rendered curl and wget tags 256 263 * REMOVED: old code that caused an warning with PHP 7.2.0 changes to count() and sizeOf() 257 264 258 265 = 2.1.0 = 259 * ADD : NADI is now using Monolog for everything related to logs260 * ADD : added a button to manually persist "Logging" configurations261 * FIX : user attributes are now correctly logged262 * FIX : fixed a problem where the port configuration for LDAPS was not used263 * FIX : updated twig to the latest 1.x version. (2.x requires >= PHP 7.0.0)264 * ADD : debug logs messages will be not displayed in the frontend log anymore in order to prevent an overflow265 * ADD : dummy logger in order to prevent outdated premium extensions from crashing266 * ADDED: NADI is now using Monolog for everything related to logs 267 * ADDED: added a button to manually persist "Logging" configurations 268 * FIXED: user attributes are now correctly logged 269 * FIXED: fixed a problem where the port configuration for LDAPS was not used 270 * FIXED: updated twig to the latest 1.x version. (2.x requires >= PHP 7.0.0) 271 * ADDED: debug logs messages will be not displayed in the frontend log anymore in order to prevent an overflow 272 * ADDED: dummy logger in order to prevent outdated premium extensions from crashing 266 273 * REMOVED: removed log4php from NADI 267 274 268 275 = 2.0.14 = 269 * ADD : added frontend information banners for NADI premium extensions270 * ADD : added frontend information about why "Sync to WordPress" can not be started271 * FIX : members of not mapped security groups will now receive the default role "Subscriber"272 * FIX : "Clean existing Roles" is now default set to false273 * ADD : added new style for configuration page274 * FIX : fixed some style issues275 * ADD : added logic to determine if a NADI option already exists in the DB to prevent the problem saving options with default value true276 * ADD : added detailed log on which UAC flag is responsible for users not beeing imported277 * FIX : fixed logs destroying the user profile while trying to update a user profile / also catchedexception278 * FIX : fixed template conditions causing problems in Microsoft Edge276 * ADDED: added frontend information banners for NADI premium extensions 277 * ADDED: added frontend information about why "Sync to WordPress" can not be started 278 * FIXED: members of not mapped security groups will now receive the default role "Subscriber" 279 * FIXED: "Clean existing Roles" is now default set to false 280 * ADDED: added new style for configuration page 281 * FIXED: fixed some style issues 282 * ADDED: added logic to determine if a NADI option already exists in the DB to prevent the problem saving options with default value true 283 * ADDED: added detailed log on which UAC flag is responsible for users not being imported 284 * FIXED: fixed logs destroying the user profile while trying to update a user profile / also caught exception 285 * FIXED: fixed template conditions causing problems in Microsoft Edge 279 286 280 287 281 288 = 2.0.13 = 282 * FIX : switched from mcrypt to defuse/php-encryption283 * FIX : decoupled password update from user update to allow for automatic password updates without 'auto update user' set to true284 * FIX : marked brute force protection deprecated285 * FIX : minor bugs when using ldap over ssl286 * ADD : sync to ad now uses the GUID for syncronization287 * FIX : verify domain controller connectivity before incrementing brute force protection counter288 * FIX : custom attributes inside the user profile will prioritize the custom description (thanks to mzemann)289 * FIX : changed the look of Sync to AD, Sync to WordPress and Test authentication290 * ADD : added row to users list for premium extension (custom user role management)291 * FIX : added the complete dirname when using require_once inside index.php (GitHub#47)289 * FIXED: switched from mcrypt to defuse/php-encryption 290 * FIXED: decoupled password update from user update to allow for automatic password updates without 'auto update user' set to true 291 * FIXED: marked brute force protection deprecated 292 * FIXED: minor bugs when using ldap over ssl 293 * ADDED: sync to ad now uses the GUID for synchronization 294 * FIXED: verify domain controller connectivity before incrementing brute force protection counter 295 * FIXED: custom attributes inside the user profile will prioritize the custom description; thanks to *mzemann* 296 * FIXED: changed the look of Sync to AD, Sync to WordPress and Test authentication 297 * ADDED: added row to users list for premium extension (custom user role management) 298 * FIXED: added the complete dirname when using require_once inside index.php (#47) 292 299 293 300 = 2.0.12 = 294 * ADD : internationalization for all plugin strings (ADI-432 ADI-436 see https://translate.wordpress.org/projects/wp-plugins/next-active-directory-integration)295 * FIX : roles are now mapped using the GUID instead of sAMAccountName (ADI-428)296 * ADD : option for preventing disabled users to be synchronized to WordPress (ADI-223)297 * ADD : validation for Base DN298 * FIX : problem when sending brute force protection notifications via email (ADI-464)299 * FIX : non NADI users being blocked by the brute force protection300 * FIX : brute force protection now checks for the whole username (ADI-424)301 * FIX : updating user profiles without bind user (ADI-439)302 * FIX : countdown for brute force protection (ADI-456)301 * ADDED: internationalization for all plugin strings, see https://translate.wordpress.org/projects/wp-plugins/next-active-directory-integration (ADI-432, ADI-436) 302 * FIXED: roles are now mapped using the GUID instead of sAMAccountName (ADI-428) 303 * ADDED: option for preventing disabled users to be synchronized to WordPress (ADI-223) 304 * ADDED: validation for Base DN 305 * FIXED: problem when sending brute force protection notifications via email (ADI-464) 306 * FIXED: non NADI users being blocked by the brute force protection 307 * FIXED: brute force protection now checks for the whole username (ADI-424) 308 * FIXED: updating user profiles without bind user (ADI-439) 309 * FIXED: countdown for brute force protection (ADI-456) 303 310 304 311 = 2.0.11 = 305 * ADD : NTLM support for SSO (sponsored by Vogels - www.vogels.com)306 * ADD : implementation of hooks to provide an API (ADI-145)307 * ADD : premium extensions available for support license subscribers308 * ADD : log reason for not being able to increase max_execution_time (ADI-396)309 * ADD : log message that AD security group could not be found (ADI-397)310 * ADD : improve logging number of users to import from AD to WordPress (ADI-414)311 * FIX : synchronization does not work b/c getDomainSid returns "S-0" (ADI-412)312 * FIX : "Test authentication" does not allow characters like a backward slash (ADI-421)313 * FIX : permanent redirects after successful authentication (ADI-422)314 * FIX : error "the current user is being initialized without using $wp->init()" when using BuddyPress (ADI-416)315 * FIX : blocking of users with long user names (ADI-330)316 * FIX : get_blog_details replaced with get_site to maintain compatibility with WordPress 4.7+ (ADI-419)317 * FIX : restrict output of debug LDAP user information to only an amount of characters (ADI-420)318 * FIX : Sync to WordPress: default WordPress role "Subscriber" is not assigned (ADI-401)319 * FIX : Users with admin role granted by WordPress lose their role when logging into the site for the first time (ADI-380)312 * ADDED: NTLM support for SSO (sponsored by Vogels - www.vogels.com) 313 * ADDED: implementation of hooks to provide an API (ADI-145) 314 * ADDED: premium extensions available for support license subscribers 315 * ADDED: log reason for not being able to increase max_execution_time (ADI-396) 316 * ADDED: log message that AD security group could not be found (ADI-397) 317 * ADDED: improve logging number of users to import from AD to WordPress (ADI-414) 318 * FIXED: synchronization does not work b/c getDomainSid returns "S-0" (ADI-412) 319 * FIXED: "Test authentication" does not allow characters like a backward slash (ADI-421) 320 * FIXED: permanent redirects after successful authentication (ADI-422) 321 * FIXED: error "the current user is being initialized without using $wp->init()" when using BuddyPress (ADI-416) 322 * FIXED: blocking of users with long user names (ADI-330) 323 * FIXED: get_blog_details replaced with get_site to maintain compatibility with WordPress 4.7+ (ADI-419) 324 * FIXED: restrict output of debug LDAP user information to only an amount of characters (ADI-420) 325 * FIXED: Sync to WordPress: default WordPress role "Subscriber" is not assigned (ADI-401) 326 * FIXED: Users with admin role granted by WordPress lose their role when logging into the site for the first time (ADI-380) 320 327 321 328 = 2.0.10 = 322 * ADD : option to enable/disable authentication using XML-RPC323 * FIX : reworked user interface324 * FIX : sync ends after deleted account is no longer present in Active Directory325 * FIX : integration tests326 * FIX : emails will not be sent to administrators (GitHub #27 Thanks to kyleflan)327 * FIX : users can now be disabled from WordPress328 * ADD : HTTP_X_REMOTE_USER is now an option in the SSO configuration (GitHub #29 Thanks to laughtonsm)329 * ADDED: option to enable/disable authentication using XML-RPC 330 * FIXED: reworked user interface 331 * FIXED: sync ends after deleted account is no longer present in Active Directory 332 * FIXED: integration tests 333 * FIXED: emails will not be sent to administrators; thanks to *kyleflan* (#27) 334 * FIXED: users can now be disabled from WordPress 335 * ADDED: HTTP_X_REMOTE_USER is now an option in the SSO configuration; thanks to *laughtonsm* (#29) 329 336 330 337 = 2.0.9 = 331 * FIX : add missing default value for method parameter338 * FIXED: add missing default value for method parameter 332 339 333 340 = 2.0.8 = 334 * FIX : remove PHP 5.6 code (GitHub #22 Thanks to requincreative)341 * FIXED: remove PHP 5.6 code; thanks to *requincreative* (#22) 335 342 336 343 = 2.0.7 = 337 * ADD : custom user roles can be used in "Role equivalent groups"338 * ADD : the logger is disabled by default (and can be enabled inside the configuration)339 * ADD : log file path can be configured (default is wp-content/plugins/next-active-directory-integration/logs/debug.log)344 * ADDED: custom user roles can be used in "Role equivalent groups" 345 * ADDED: the logger is disabled by default (and can be enabled inside the configuration) 346 * ADDED: log file path can be configured (default is wp-content/plugins/next-active-directory-integration/logs/debug.log) 340 347 341 348 = 2.0.6 = 342 * FIX : show activation notice only after activating this plugin (https://wordpress.org/support/topic/activate-plugin-notification-bug/ Thanks to bobchou9)343 * FIX : SSO/verify-password errors by un-quoting values in $_GET/$_POST/$_SERVER. WordPress quotes all entries in $_GET/$_POST/$_SERVER automatically (GitHub #20 Thanks to plantjes)349 * FIXED: show activation notice only after activating this plugin (https://wordpress.org/support/topic/activate-plugin-notification-bug/); thanks to bobchou9 350 * FIXED: SSO/verify-password errors by un-quoting values in $_GET/$_POST/$_SERVER. WordPress quotes all entries in $_GET/$_POST/$_SERVER automatically; thanks to plantjes (#20) 344 351 345 352 = 2.0.5 = 346 * FIX : check if AD result is not empty before accessing distinguished name (GitHub #16 Thanks to petterannerwall)347 * ADD : optional support for Down-Level User Name (like TEST\klammer) (GitHub#18)353 * FIXED: check if AD result is not empty before accessing distinguished name; thanks to petterannerwall (#16) 354 * ADDED: optional support for Down-Level User Name (like TEST\klammer) (#18) 348 355 349 356 = 2.0.4 = 350 * ADD : make log pattern configurable (https://wordpress.org/support/topic/please-add-timestamps-to-the-debug-log-file/ Thanks to tmuikku)357 * ADDED: make log pattern configurable (https://wordpress.org/support/topic/please-add-timestamps-to-the-debug-log-file/); Thanks to tmuikku 351 358 352 359 = 2.0.3 = 353 * FIX : brute force protection is now be disabled (GitHub #14 Thanks to Munnday (David Munn))354 * FIX : the max count of login tries and the block time are now editable360 * FIXED: brute force protection is now be disabled; thanks to Munnday (David Munn) (#14) 361 * FIXED: the max count of login tries and the block time are now editable 355 362 356 363 = 2.0.2 = 357 * FIX : SSO caused a PHP error during login (GitHub #13 Thanks to Jason Taylor and Munnday (David Munn))364 * FIXED: SSO caused a PHP error during login; thanks to Jason Taylor and Munnday (David Munn) (#13) 358 365 359 366 = 2.0.1 = 360 * FIX : missing german translation367 * FIXED: missing german translation 361 368 362 369 = 2.0.0 = 363 * ADD : support for WordPress Multisite through profiles364 * ADD : Profiles can be customized, including the permission of every option365 * ADD : support for PHP7366 * ADD : detailed documentation at https://www.active-directory-wp.com/docs/Getting_Started.html367 * ADD : experimental support for multiple Active Directory domains; see FAQ368 * ADD : easier handling and description of encryption methods for LDAP369 * ADD : additional columns in Multisite overview for networks and users370 * ADD : user names can be explicitly excluded from authentication371 * ADD : menu entries of *Next ADI* can be hidden372 * ADD : *Next ADI* can be disabled per Multisite site environment373 * CHANGE : large user interface improvements374 * CHANGE : complete rewrite of the PHP backend375 * CHANGE : userPrincipalName is leading attribute for user identification instead of sAMAccountName376 * FIX : Role Equivalent Groups can be mapped to multiple WordPress roles instead of only one370 * ADDED: support for WordPress Multisite through profiles 371 * ADDED: Profiles can be customized, including the permission of every option 372 * ADDED: support for PHP7 373 * ADDED: detailed documentation at https://www.active-directory-wp.com/docs/Getting_Started.html 374 * ADDED: experimental support for multiple Active Directory domains; see FAQ 375 * ADDED: easier handling and description of encryption methods for LDAP 376 * ADDED: additional columns in Multisite overview for networks and users 377 * ADDED: user names can be explicitly excluded from authentication 378 * ADDED: menu entries of *Next ADI* can be hidden 379 * ADDED: *Next ADI* can be disabled per Multisite site environment 380 * CHANGED: large user interface improvements 381 * CHANGED: complete rewrite of the PHP backend 382 * CHANGED: userPrincipalName is leading attribute for user identification instead of sAMAccountName 383 * FIXED: Role Equivalent Groups can be mapped to multiple WordPress roles instead of only one 377 384 * and much much more we can not list here. Please take the time and read the official documentation :-) 378 385 -
next-active-directory-integration/trunk/vendor/adLDAP/adLDAP.php
r2641799 r2692352 824 824 825 825 // Let's use paging if available 826 // gh-#127: PHP 7.4 compatibility; ldap_control_paged* is deprecated826 // #127: PHP 7.4 compatibility; ldap_control_paged* is deprecated 827 827 if (function_exists('ldap_control_paged_result')) { 828 828 … … 1015 1015 1016 1016 // Let's use paging if available 1017 // gh-#127: PHP 7.4 compatibility; ldap_control_paged* is deprecated1017 // #127: PHP 7.4 compatibility; ldap_control_paged* is deprecated 1018 1018 if (function_exists('ldap_control_paged_result')) { 1019 1019 … … 1365 1365 return $entries; 1366 1366 } 1367 1367 1368 return false; 1368 1369 } 1369 1370 1370 /** 1371 * Get a configuration entry form the CN=Partitions,CN=Configuration object 1372 * 1371 const PARTITIONS_PREFIX = "CN=Partitions,CN=Configuration,"; 1372 const NETBIOS_MATCHER = "(&(netbiosname=*))"; 1373 const NCNAME_ATTRIBUTE = 'ncname'; 1374 1375 /** 1376 * Get a configuration entry form the CN=Partitions,CN=Configuration object. 1377 * Due to the nature of Active Directory forests, this method is not so simple. 1378 * 1379 * @since #153 this method has been extended to support Active Directory forests 1373 1380 * @param $filter 1374 1381 * @return bool 1375 1382 */ 1376 public function get_configuration($filter) 1377 { 1378 $tmp = "CN=Partitions,CN=Configuration," . $this->_base_dn; 1379 $sr = ldap_search($this->_conn,$tmp,"(&(netbiosname=*))", array()); 1380 $entries = ldap_get_entries($this->_conn, $sr); 1381 1382 if ($entries[0]['count'] >= 1) { 1383 $result = $entries[0][$filter][0]; 1384 1385 return $result; 1386 } 1387 1388 return false; 1389 } 1383 public function get_configuration($filter) 1384 { 1385 // in a single Active Directory domain environment, we'll probably find the partition CN below CN=Partitions,CN=Configuration,${BASE_DN}. 1386 // in a Active Directory domain forest, this can be a little bit more complex. The base DN could be DC=sub,DC=test,DC=ad but the CN for the partition can be CN=Partitions,CN=Configuration,DC=test,DC=ad (note the missing DC=sub). 1387 $distinguishedNameCandidates = array(); 1388 $leafs = explode(",", $this->_base_dn); 1389 1390 // we create a list of DN search candidates in which the configuration is probably stored, beginning with the most concrete DN (DC=sub,DC=test,DC=ad) and ending with the most top-level DN (DC=ad) 1391 for ($i = 0, $m = sizeof($leafs); $i < $m; $i++) { 1392 $distinguishedNameCandidates[] = self::PARTITIONS_PREFIX . implode(",", array_slice($leafs, $i)); 1393 } 1394 1395 $sanitizedBaseDn = $this->sanitizeDistinguishedName($this->_base_dn); 1396 $r = FALSE; 1397 $hasBestMatch = FALSE; 1398 1399 // iterate over each of the available parts 1400 foreach ($distinguishedNameCandidates as $distinguishedName) { 1401 // try to find the configuration below e.g. CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad 1402 $sr = $this->_ldap_search($distinguishedName, self::NETBIOS_MATCHER, array()); 1403 1404 // handle error code 32, "No such object" when configuration partition can not be found by given DN 1405 if (!$sr) { 1406 continue; 1407 } 1408 1409 $entries = $this->_ldap_get_entries($sr); 1410 1411 // if no entries are available, this is probably the wrong search tree. We move a level up (now: CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad; next: CN=Partitions,CN=Configuration,DC=sub,DC=test,DC=ad) 1412 if (!$entries) { 1413 continue; 1414 } 1415 1416 $count = (int)$entries['count']; 1417 1418 if ($count >= 1) { 1419 // after having found our configuration partition DN (e.g. CN=Partitions,CN=Configuration,DC=test,DC=ad), we need to check each of the CNs in there with the netbiosname attribute if they match the specified base DN: 1420 // in a AD forest, we would have the following entries below CN=Partitions,CN=Configuration,DC=test,DC=ad: 1421 // - CN=SUB,CN=Partitions,CN=Configuration,DC=test,DC=ad 1422 // - CN=FOREST-1,CN=Partitions,CN=Configuration,DC=test,DC=ad 1423 // - CN=FOREST-2,CN=Partitions,CN=Configuration,DC=test,DC=ad 1424 for ($idx = 0, $m = $count; $idx < $m; $idx++) { 1425 // the first entry is our best match if we don't find a better match 1426 if (!$r) { 1427 $r = $entries[$idx][$filter][0]; 1428 } 1429 1430 // the attribute nCName contains the base DN for a partition. If this matches the specified base DN, we are good to go. 1431 // possible caveat: the base DN good be too unspecific so that the wrong partition is used; this could only happy in a AD forest - in a single forest, there is only one entry available. 1432 $sanitizedNCname = $this->sanitizeDistinguishedName($entries[$idx][self::NCNAME_ATTRIBUTE][0]); 1433 1434 if ($sanitizedNCname == $sanitizedBaseDn) { 1435 $r = $entries[$idx][$filter][0]; 1436 1437 // end outer loop 1438 $hasBestMatch = TRUE; 1439 // end this loop 1440 break; 1441 } 1442 } 1443 } 1444 1445 if ($hasBestMatch) { 1446 break; 1447 } 1448 1449 } 1450 1451 return $r; 1452 } 1453 1454 /** 1455 * Removes any whitespaces in front and at the end and lowers the string 1456 * @param $dn 1457 * @return string 1458 */ 1459 public function sanitizeDistinguishedName($dn) 1460 { 1461 return trim(strtolower($dn)); 1462 } 1463 1464 /** 1465 * Forward method to <em>php_ldap</em>'s ldap_get_entries to make adLDAP testable. 1466 * 1467 * @param $result 1468 * @return array 1469 */ 1470 protected function _ldap_get_entries($result) 1471 { 1472 return ldap_get_entries($this->_conn, $result); 1473 } 1474 1475 /** 1476 * Forward method to <em>php_ldap</em>'s ldap_search to make adLDAP testable. 1477 * 1478 * @param $base 1479 * @param $filter 1480 * @param array $attributes 1481 * @param int $attributes_only 1482 * @param int $sizelimit 1483 * @param int $timelimit 1484 * @param int $deref 1485 * @param null $controls 1486 * @return array 1487 */ 1488 protected function _ldap_search($base, $filter, $attributes = [], int $attributes_only = 0, int $sizelimit = -1, int $timelimit = -1, int $deref = LDAP_DEREF_NEVER, $controls = null) 1489 { 1490 return ldap_search($this->_conn, $base, $filter, $attributes, $attributes_only, $sizelimit, $timelimit, $deref, $controls); 1491 } 1390 1492 1391 1493 /** … … 2946 3048 $sr = ldap_search($this->_conn,$this->_base_dn,$filter,$fields); 2947 3049 2948 // @see#146: if search failed, $sr will be false and we have to return3050 // #146: if search failed, $sr will be false and we have to return 2949 3051 if ($sr === FALSE) { 2950 3052 return FALSE; -
next-active-directory-integration/trunk/vendor/autoload.php
r2662231 r2692352 5 5 require_once __DIR__ . '/composer/autoload_real.php'; 6 6 7 return ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1::getLoader();7 return ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25::getLoader(); -
next-active-directory-integration/trunk/vendor/composer/autoload_files.php
r2662231 r2692352 8 8 return array( 9 9 '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php', 10 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 10 11 '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 11 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',12 12 ); -
next-active-directory-integration/trunk/vendor/composer/autoload_real.php
r2662231 r2692352 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc15 class ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); 29 spl_autoload_unregister(array('ComposerAutoloaderInit d668969de90e07bc3e6c5441ee782cc1', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit134232ed870c926a87ebeb152d531d25', 'loadClassLoader')); 30 30 31 31 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); … … 33 33 require __DIR__ . '/autoload_static.php'; 34 34 35 call_user_func(\Composer\Autoload\ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::getInitializer($loader));35 call_user_func(\Composer\Autoload\ComposerStaticInit134232ed870c926a87ebeb152d531d25::getInitializer($loader)); 36 36 } else { 37 37 $map = require __DIR__ . '/autoload_namespaces.php'; … … 54 54 55 55 if ($useStaticLoader) { 56 $includeFiles = Composer\Autoload\ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$files;56 $includeFiles = Composer\Autoload\ComposerStaticInit134232ed870c926a87ebeb152d531d25::$files; 57 57 } else { 58 58 $includeFiles = require __DIR__ . '/autoload_files.php'; 59 59 } 60 60 foreach ($includeFiles as $fileIdentifier => $file) { 61 composerRequire d668969de90e07bc3e6c5441ee782cc1($fileIdentifier, $file);61 composerRequire134232ed870c926a87ebeb152d531d25($fileIdentifier, $file); 62 62 } 63 63 … … 71 71 * @return void 72 72 */ 73 function composerRequire d668969de90e07bc3e6c5441ee782cc1($fileIdentifier, $file)73 function composerRequire134232ed870c926a87ebeb152d531d25($fileIdentifier, $file) 74 74 { 75 75 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
next-active-directory-integration/trunk/vendor/composer/autoload_static.php
r2662231 r2692352 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit d668969de90e07bc3e6c5441ee782cc17 class ComposerStaticInit134232ed870c926a87ebeb152d531d25 8 8 { 9 9 public static $files = array ( 10 10 '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php', 11 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', 11 12 '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', 12 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',13 13 ); 14 14 … … 77 77 { 78 78 return \Closure::bind(function () use ($loader) { 79 $loader->prefixLengthsPsr4 = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$prefixLengthsPsr4;80 $loader->prefixDirsPsr4 = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$prefixDirsPsr4;81 $loader->classMap = ComposerStaticInit d668969de90e07bc3e6c5441ee782cc1::$classMap;79 $loader->prefixLengthsPsr4 = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$prefixLengthsPsr4; 80 $loader->prefixDirsPsr4 = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$prefixDirsPsr4; 81 $loader->classMap = ComposerStaticInit134232ed870c926a87ebeb152d531d25::$classMap; 82 82 83 83 }, null, ClassLoader::class); -
next-active-directory-integration/trunk/vendor/composer/installed.json
r2662231 r2692352 158 158 { 159 159 "name": "paragonie/random_compat", 160 "version": "v2.0.2 0",161 "version_normalized": "2.0.2 0.0",160 "version": "v2.0.21", 161 "version_normalized": "2.0.21.0", 162 162 "source": { 163 163 "type": "git", 164 164 "url": "https://github.com/paragonie/random_compat.git", 165 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a"166 }, 167 "dist": { 168 "type": "zip", 169 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/ 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",170 "reference": " 0f1f60250fccffeaf5dda91eea1c018aed1adc2a",165 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae" 166 }, 167 "dist": { 168 "type": "zip", 169 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 170 "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae", 171 171 "shasum": "" 172 172 }, … … 175 175 }, 176 176 "require-dev": { 177 "phpunit/phpunit": " 4.*|5.*"177 "phpunit/phpunit": "*" 178 178 }, 179 179 "suggest": { 180 180 "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 181 181 }, 182 "time": "202 1-04-17T09:33:01+00:00",182 "time": "2022-02-16T17:07:03+00:00", 183 183 "type": "library", 184 184 "installation-source": "dist", … … 268 268 { 269 269 "name": "symfony/polyfill-ctype", 270 "version": "v1.2 4.0",271 "version_normalized": "1.2 4.0.0",270 "version": "v1.25.0", 271 "version_normalized": "1.25.0.0", 272 272 "source": { 273 273 "type": "git", … … 303 303 "installation-source": "dist", 304 304 "autoload": { 305 "files": [ 306 "bootstrap.php" 307 ], 305 308 "psr-4": { 306 309 "Symfony\\Polyfill\\Ctype\\": "" 307 }, 308 "files": [ 309 "bootstrap.php" 310 ] 310 } 311 311 }, 312 312 "notification-url": "https://packagist.org/downloads/", … … 333 333 ], 334 334 "support": { 335 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.2 4.0"335 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 336 336 }, 337 337 "funding": [ … … 385 385 "installation-source": "dist", 386 386 "autoload": { 387 "files": [ 388 "bootstrap.php" 389 ], 387 390 "psr-4": { 388 391 "Symfony\\Polyfill\\Mbstring\\": "" 389 }, 390 "files": [ 391 "bootstrap.php" 392 ] 392 } 393 393 }, 394 394 "notification-url": "https://packagist.org/downloads/", … … 436 436 { 437 437 "name": "twig/twig", 438 "version": "v3.3. 7",439 "version_normalized": "3.3. 7.0",438 "version": "v3.3.8", 439 "version_normalized": "3.3.8.0", 440 440 "source": { 441 441 "type": "git", 442 442 "url": "https://github.com/twigphp/Twig.git", 443 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b"444 }, 445 "dist": { 446 "type": "zip", 447 "url": "https://api.github.com/repos/twigphp/Twig/zipball/ 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",448 "reference": " 8f168c6ffa3ce76d1786b3cd52275424a3fc675b",443 "reference": "972d8604a92b7054828b539f2febb0211dd5945c" 444 }, 445 "dist": { 446 "type": "zip", 447 "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c", 448 "reference": "972d8604a92b7054828b539f2febb0211dd5945c", 449 449 "shasum": "" 450 450 }, … … 458 458 "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" 459 459 }, 460 "time": "2022-0 1-03T21:15:37+00:00",460 "time": "2022-02-04T06:59:48+00:00", 461 461 "type": "library", 462 462 "extra": { … … 499 499 "support": { 500 500 "issues": "https://github.com/twigphp/Twig/issues", 501 "source": "https://github.com/twigphp/Twig/tree/v3.3. 7"501 "source": "https://github.com/twigphp/Twig/tree/v3.3.8" 502 502 }, 503 503 "funding": [ -
next-active-directory-integration/trunk/vendor/composer/installed.php
r2662231 r2692352 1 1 <?php return array( 2 2 'root' => array( 3 'pretty_version' => '2.3. 1',4 'version' => '2.3. 1.0',3 'pretty_version' => '2.3.2', 4 'version' => '2.3.2.0', 5 5 'type' => 'library', 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' 37e1f656389d0d03aaab30f1d5053e618e625af9',8 'reference' => 'e49bb008caab50a3a561224e91d43829a274c2ad', 9 9 'name' => '__root__', 10 10 'dev' => false, … … 12 12 'versions' => array( 13 13 '__root__' => array( 14 'pretty_version' => '2.3. 1',15 'version' => '2.3. 1.0',14 'pretty_version' => '2.3.2', 15 'version' => '2.3.2.0', 16 16 'type' => 'library', 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => ' 37e1f656389d0d03aaab30f1d5053e618e625af9',19 'reference' => 'e49bb008caab50a3a561224e91d43829a274c2ad', 20 20 'dev_requirement' => false, 21 21 ), … … 39 39 ), 40 40 'paragonie/random_compat' => array( 41 'pretty_version' => 'v2.0.2 0',42 'version' => '2.0.2 0.0',41 'pretty_version' => 'v2.0.21', 42 'version' => '2.0.21.0', 43 43 'type' => 'library', 44 44 'install_path' => __DIR__ . '/../paragonie/random_compat', 45 45 'aliases' => array(), 46 'reference' => ' 0f1f60250fccffeaf5dda91eea1c018aed1adc2a',46 'reference' => '96c132c7f2f7bc3230723b66e89f8f150b29d5ae', 47 47 'dev_requirement' => false, 48 48 ), … … 63 63 ), 64 64 'symfony/polyfill-ctype' => array( 65 'pretty_version' => 'v1.2 4.0',66 'version' => '1.2 4.0.0',65 'pretty_version' => 'v1.25.0', 66 'version' => '1.25.0.0', 67 67 'type' => 'library', 68 68 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', … … 81 81 ), 82 82 'twig/twig' => array( 83 'pretty_version' => 'v3.3. 7',84 'version' => '3.3. 7.0',83 'pretty_version' => 'v3.3.8', 84 'version' => '3.3.8.0', 85 85 'type' => 'library', 86 86 'install_path' => __DIR__ . '/../twig/twig', 87 87 'aliases' => array(), 88 'reference' => ' 8f168c6ffa3ce76d1786b3cd52275424a3fc675b',88 'reference' => '972d8604a92b7054828b539f2febb0211dd5945c', 89 89 'dev_requirement' => false, 90 90 ), -
next-active-directory-integration/trunk/vendor/paragonie/random_compat/composer.json
r1944146 r2692352 26 26 }, 27 27 "require-dev": { 28 "phpunit/phpunit": " 4.*|5.*"28 "phpunit/phpunit": "*" 29 29 }, 30 30 "suggest": { -
next-active-directory-integration/trunk/vendor/paragonie/random_compat/lib/random.php
r2517646 r2692352 184 184 $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1'); 185 185 /** @psalm-suppress TypeDoesNotContainType */ 186 if ( method_exists($RandomCompatCOMtest, 'GetRandom')) {186 if (is_callable(array($RandomCompatCOMtest, 'GetRandom'))) { 187 187 // See random_bytes_com_dotnet.php 188 188 require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_com_dotnet.php'; -
next-active-directory-integration/trunk/vendor/twig/twig/CHANGELOG
r2662231 r2692352 1 # 3.3.8 (2022-02-04) 2 3 * Fix a security issue when in a sandbox: the `sort` filter must require a Closure for the `arrow` parameter 4 1 5 # 3.3.7 (2022-01-03) 2 6 -
next-active-directory-integration/trunk/vendor/twig/twig/src/Environment.php
r2662231 r2692352 39 39 class Environment 40 40 { 41 public const VERSION = '3.3. 7';42 public const VERSION_ID = 3030 7;41 public const VERSION = '3.3.8'; 42 public const VERSION_ID = 30308; 43 43 public const MAJOR_VERSION = 3; 44 44 public const MINOR_VERSION = 3; 45 public const RELEASE_VERSION = 7;45 public const RELEASE_VERSION = 8; 46 46 public const EXTRA_VERSION = ''; 47 47 -
next-active-directory-integration/trunk/vendor/twig/twig/src/Extension/CoreExtension.php
r2662231 r2692352 202 202 new TwigFilter('join', 'twig_join_filter'), 203 203 new TwigFilter('split', 'twig_split_filter', ['needs_environment' => true]), 204 new TwigFilter('sort', 'twig_sort_filter' ),204 new TwigFilter('sort', 'twig_sort_filter', ['needs_environment' => true]), 205 205 new TwigFilter('merge', 'twig_array_merge'), 206 206 new TwigFilter('batch', 'twig_array_batch'), … … 544 544 function twig_round($value, $precision = 0, $method = 'common') 545 545 { 546 $value = (float) $value; 547 546 548 if ('common' === $method) { 547 549 return round($value, $precision); … … 551 553 throw new RuntimeError('The round filter only supports the "common", "ceil", and "floor" methods.'); 552 554 } 553 554 $value = (float) $value;555 555 556 556 return $method($value * 10 ** $precision) / 10 ** $precision; … … 888 888 * @return array 889 889 */ 890 function twig_sort_filter( $array, $arrow = null)890 function twig_sort_filter(Environment $env, $array, $arrow = null) 891 891 { 892 892 if ($array instanceof \Traversable) { … … 897 897 898 898 if (null !== $arrow) { 899 twig_check_arrow_in_sandbox($env, $arrow, 'sort', 'filter'); 900 899 901 uasort($array, $arrow); 900 902 } else { … … 1640 1642 } 1641 1643 1642 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1643 throw new RuntimeError('The callable passed to "filter" filter must be a Closure in sandbox mode.'); 1644 } 1644 twig_check_arrow_in_sandbox($env, $arrow, 'filter', 'filter'); 1645 1645 1646 1646 if (\is_array($array)) { … … 1654 1654 function twig_array_map(Environment $env, $array, $arrow) 1655 1655 { 1656 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1657 throw new RuntimeError('The callable passed to the "map" filter must be a Closure in sandbox mode.'); 1658 } 1656 twig_check_arrow_in_sandbox($env, $arrow, 'map', 'filter'); 1659 1657 1660 1658 $r = []; … … 1668 1666 function twig_array_reduce(Environment $env, $array, $arrow, $initial = null) 1669 1667 { 1670 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1671 throw new RuntimeError('The callable passed to the "reduce" filter must be a Closure in sandbox mode.'); 1672 } 1668 twig_check_arrow_in_sandbox($env, $arrow, 'reduce', 'filter'); 1673 1669 1674 1670 if (!\is_array($array)) { … … 1682 1678 return array_reduce($array, $arrow, $initial); 1683 1679 } 1684 } 1680 1681 function twig_check_arrow_in_sandbox(Environment $env, $arrow, $thing, $type) 1682 { 1683 if (!$arrow instanceof Closure && $env->hasExtension('\Twig\Extension\SandboxExtension') && $env->getExtension('\Twig\Extension\SandboxExtension')->isSandboxed()) { 1684 throw new RuntimeError(sprintf('The callable passed to the "%s" %s must be a Closure in sandbox mode.', $thing, $type)); 1685 } 1686 } 1687 }
Note: See TracChangeset
for help on using the changeset viewer.