History log of /plugin/pureldap/ (Results 1 – 25 of 64)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
bd9ae31f21-Jul-2025 Andreas Gohr <andi@splitbrain.org>

Version upped

fb75804e17-Jul-2025 Andreas Gohr <gohr@cosmocode.de>

Parse AD bind error messages for more info for the user

This is mainly to tell users when their password expired or needs to be
changed.

1d29cbda02-Apr-2025 Andreas Gohr <andi@splitbrain.org>

Version upped

8de3879102-Apr-2025 Andreas Gohr <andi@splitbrain.org>

fix potential issue where attributes return null

0588146e05-Dec-2023 Andreas Gohr <andi@splitbrain.org>

Version upped

9bafffea05-Dec-2023 Andreas Gohr <andi@splitbrain.org>

prefer userPrincipalName over samAccountName

This allows for longer usernames than 20 chars.

This assumes that all userPrincipalNames use the same Domain as
configured in the plugin. If that's not

prefer userPrincipalName over samAccountName

This allows for longer usernames than 20 chars.

This assumes that all userPrincipalNames use the same Domain as
configured in the plugin. If that's not the case things will probably
not work or behave strangely.

show more ...

208fe81a05-Dec-2023 Andreas Gohr <andi@splitbrain.org>

automatic code style fixes

f79066d921-Aug-2023 Andreas Gohr <andi@splitbrain.org>

Version upped

fde03b2621-Aug-2023 Andreas Gohr <andi@splitbrain.org>

better debugging and handling of suffix

People tend to configure the suffix with a prepended @. This will fail
logins in non-obvious ways. We now strip the @ prefix and also give the
connecting user

better debugging and handling of suffix

People tend to configure the suffix with a prepended @. This will fail
logins in non-obvious ways. We now strip the @ prefix and also give the
connecting user in the debug message

show more ...

29300d2707-Aug-2023 Andreas Gohr <andi@splitbrain.org>

Version upped

d66c308007-Aug-2023 Andreas Gohr <andi@splitbrain.org>

fix error when plugin is enabled but not configured

In this case the action handler should not be registered.

6b6e3de703-Aug-2023 Andreas Gohr <andi@splitbrain.org>

Version upped

0f498d0603-Aug-2023 Andreas Gohr <andi@splitbrain.org>

implement password expiry warnings. fixes #4

0da9026003-Aug-2023 Andreas Gohr <andi@splitbrain.org>

update test action

7550be2602-Aug-2023 Andreas Gohr <andi@splitbrain.org>

Version upped

08ace39202-Aug-2023 Andreas Gohr <andi@splitbrain.org>

support password changes

Internally this also changes the behviour to stay authenticated as the
actual user if the user logged in. This is needed to allow self-service
password changes.

This commit

support password changes

Internally this also changes the behviour to stay authenticated as the
actual user if the user logged in. This is needed to allow self-service
password changes.

This commit also contains a few cleanups.

show more ...

dad993c501-Aug-2023 Andreas Gohr <andi@splitbrain.org>

dependencies updated


composer.json
composer.lock
vendor/autoload.php
vendor/composer/ClassLoader.php
vendor/composer/InstalledVersions.php
vendor/composer/autoload_classmap.php
vendor/composer/autoload_namespaces.php
vendor/composer/autoload_psr4.php
vendor/composer/autoload_real.php
vendor/composer/autoload_static.php
vendor/composer/installed.json
vendor/composer/installed.php
vendor/freedsx/asn1/CHANGELOG.md
vendor/freedsx/asn1/composer.json
vendor/freedsx/asn1/ecs.php
vendor/freedsx/asn1/ruleset.xml
vendor/freedsx/asn1/src/FreeDSx/Asn1/Asn1.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Encoder/BerEncoder.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Encoder/CerDerTrait.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Encoder/DerEncoder.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Encoder/EncoderInterface.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Encoders.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Exception/EncoderException.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/AbstractTimeType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/AbstractType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/BigIntTrait.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/BitStringType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/CharacterStringType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/GeneralizedTimeType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/RealType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/RelativeOidType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/SetTrait.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/SetType.php
vendor/freedsx/asn1/src/FreeDSx/Asn1/Type/UtcTimeType.php
vendor/freedsx/ldap/CHANGELOG.md
vendor/freedsx/ldap/composer.json
vendor/freedsx/ldap/ecs.php
vendor/freedsx/ldap/phpstan.neon
vendor/freedsx/ldap/ruleset.xml
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/DirSyncRequestControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/DirSyncResponseControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/ExpectedEntryCountControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/ExtendedDnControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/PolicyHintsControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/SdFlagsControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Ad/SetOwnerControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Control.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/ControlBag.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/PagingControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/PwdPolicyError.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/PwdPolicyResponseControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Sorting/SortKey.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Sorting/SortingControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Sorting/SortingResponseControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Vlv/VlvControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Vlv/VlvResponseControl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Control/Vlv/VlvTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Controls.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Attribute.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Change.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Changes.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Dn.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Entries.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Entry.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/EscapeTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Option.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Options.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Entry/Rdn.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/BindException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/ConnectionException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/FilterParseException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/InvalidArgumentException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/OperationException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/ProtocolException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/ReferralException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/RuntimeException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/SkipReferralException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/UnexpectedValueException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/UnsolicitedNotificationException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Exception/UrlParseException.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapClient.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapServer.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapUrl.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapUrlExtension.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LdapUrlTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/LoggerTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/LdapResult.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/AbandonRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/AddRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/AnonBindRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/BindRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/CancelRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/CompareRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/DeleteRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/DnRequestInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/ExtendedRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/ModifyDnRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/ModifyRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/PasswordModifyRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/RequestInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/SaslBindRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/SearchRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/SimpleBindRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Request/UnbindRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/AddResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/BindResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/CompareResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/DeleteResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/ExtendedResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/IntermediateResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/ModifyDnResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/ModifyResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/PasswordModifyResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/ResponseInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/SearchResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/SearchResultDone.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/SearchResultEntry.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/Response/SearchResultReference.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operation/ResultCode.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Operations.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientBasicHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientExtendedOperationHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientProtocolContext.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientReferralHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientSaslBindHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientSearchHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientStartTlsHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ClientUnbindHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/MessageCreationTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/RequestHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ClientProtocolHandler/ResponseHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/ClientProtocolHandlerFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/ExtendedResponseFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/FilterFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/ResponseFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/ServerBindHandlerFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Factory/ServerProtocolHandlerFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/LdapEncoder.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/LdapMessage.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/LdapMessageRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/LdapMessageResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/LdapQueue.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ProtocolElementInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Queue/ClientQueue.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Queue/MessageWrapper/SaslMessageWrapper.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Queue/MessageWrapperInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/Queue/ServerQueue.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ReferralContext.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerAuthorization.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/BaseServerHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/BindHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerAnonBindHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerBindHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerDispatchHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerPagingHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerPagingUnsupportedHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerProtocolHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerRootDseHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerSearchHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerSearchTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerStartTlsHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerUnbindHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Protocol/ServerProtocolHandler/ServerWhoAmIHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/ReferralChaserInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/DirSync.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/AndFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/ApproximateFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/AttributeValueAssertionTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/EqualityFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/FilterAttributeTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/FilterContainerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/FilterContainerTrait.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/FilterInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/GreaterThanOrEqualFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/LessThanOrEqualFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/MatchingRuleFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/NotFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/OrFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/PresentFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filter/SubstringFilter.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/FilterParser.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Filters.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Paging.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/RangeRetrieval.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Search/Vlv.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/ChildProcess.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/HandlerFactoryInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Paging/PagingRequest.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Paging/PagingRequestComparator.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Paging/PagingRequests.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Paging/PagingResponse.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestContext.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/GenericRequestHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/HandlerFactory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/PagingHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/ProxyHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/ProxyPagingHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/ProxyRequestHandler.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/RequestHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHandler/RootDseHandlerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/RequestHistory.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/ServerRunner/PcntlServerRunner.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/ServerRunner/ServerRunnerInterface.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Token/AnonToken.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Token/BindToken.php
vendor/freedsx/ldap/src/FreeDSx/Ldap/Server/Token/TokenInterface.php
vendor/freedsx/socket/CHANGELOG.md
vendor/freedsx/socket/composer.json
vendor/freedsx/socket/phpstan.neon
vendor/freedsx/socket/src/FreeDSx/Socket/Queue/MessageQueue.php
vendor/freedsx/socket/src/FreeDSx/Socket/Socket.php
vendor/freedsx/socket/src/FreeDSx/Socket/SocketPool.php
vendor/freedsx/socket/src/FreeDSx/Socket/SocketServer.php
vendor/psr/log/LICENSE
vendor/psr/log/Psr/Log/AbstractLogger.php
vendor/psr/log/Psr/Log/InvalidArgumentException.php
vendor/psr/log/Psr/Log/LogLevel.php
vendor/psr/log/Psr/Log/LoggerAwareInterface.php
vendor/psr/log/Psr/Log/LoggerAwareTrait.php
vendor/psr/log/Psr/Log/LoggerInterface.php
vendor/psr/log/Psr/Log/LoggerTrait.php
vendor/psr/log/Psr/Log/NullLogger.php
vendor/psr/log/Psr/Log/Test/DummyTest.php
vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
vendor/psr/log/Psr/Log/Test/TestLogger.php
vendor/psr/log/README.md
vendor/psr/log/composer.json
e5da8fd901-Aug-2023 Andreas Gohr <andi@splitbrain.org>

minor cleanup

75f2389202-Feb-2022 Andreas Gohr <andi@splitbrain.org>

Version upped

cf64217402-Feb-2022 Andreas Gohr <andi@splitbrain.org>

Delete PHILOSOPHY.md

this is now moved to a DokuWiki page


5dcabeda30-Jul-2021 Andreas Gohr <andi@splitbrain.org>

make use of file system caching optional

e7339d5a29-Jul-2021 Andreas Gohr <andi@splitbrain.org>

Local handling of nested groups

All previous attempts to handle nested groups in a performant matter
failed. Neither recursive requests nor using the
LDAP_MATCHING_RULE_IN_CHAIN mechanism were suffi

Local handling of nested groups

All previous attempts to handle nested groups in a performant matter
failed. Neither recursive requests nor using the
LDAP_MATCHING_RULE_IN_CHAIN mechanism were sufficently fast enough to do
bulk requests on users.

This now takes a completely different approach. When recursive groups
are enabled, a single (paged) request for all groups is done. The list
of these groups together with their parent info is then used to resolve
any nested group memberships.

The group cache is saved in filesystem for the duration of the security
timeout configuration.

Future enhancements should:

* see if the cache class could also be used for other caches currently
implemented in Client.php
* make the use of filesystem caching configurable

show more ...

746af42c28-Jul-2021 Andreas Gohr <andi@splitbrain.org>

fix the double call to getUserGroups()

7a36c1b428-Jul-2021 Andreas Gohr <andi@splitbrain.org>

add support for nested groups when filtering users by group

And this is where we hit the performance problems. A naive approach is
to simply run a query using LDAP_MATCHING_RULE_IN_CHAIN on the memb

add support for nested groups when filtering users by group

And this is where we hit the performance problems. A naive approach is
to simply run a query using LDAP_MATCHING_RULE_IN_CHAIN on the memberOf
attribute. But this is super slow (thanks Microsoft!)

Instead we first look up the given filter groups (to allow for substring
matching), then resolve them recursively and then build a or filter for
all found groups.

Still takes about 3 to 4 seconds :-/

show more ...

f17bb68b28-Jul-2021 Andreas Gohr <andi@splitbrain.org>

new approach for recursive groups

Instead of implementing the recursion client side, we ask the AD server
to resolve nested group memberships for us. This saves potentially many
network requests but

new approach for recursive groups

Instead of implementing the recursion client side, we ask the AD server
to resolve nested group memberships for us. This saves potentially many
network requests but may have performance penalties on the AD server
side. However it ensures, we can't make a mistake and thus makes our
code safer to run - also turns out my first attempt was checking nested
groups backwards.

See https://stackoverflow.com/q/40024425 for more discussions on
performance for this.

A config option allows to use the former much faster approach for setups
without nested groups.

Still to do: supporting user lookups by group this way.

show more ...

123