What problem does it solve? Developers working on OrangeHRM need to understand how login attempts flow through the pluggable authentication provider chain, and how to add new providers, configure LDAP, register OAuth2 clients, or debug login failures without reading the entire codebase. ## Core Features & Use Cases - Provider chain reference: Documents AuthProviderChain, AbstractAuthProvider, priority ordering, and the false-vs-throw semantics that control fallthrough between providers. - Concrete provider coverage: Explains LocalAuthProvider (bcrypt password verification), LDAPAuthProvider (bind plus user sync via LDAPService/LDAPSyncService), the OAuth2 server (league/oauth2-server), and OIDC SSO (jumbojett/openid-connect-php). - Recipes and checklists: Step-by-step guides for adding a new auth provider, registering an OAuth2 client, configuring LDAP, and debugging "user can't log in" scenarios. - Use Case: When integrating a SAML provider, follow Recipe 1 to create an AbstractAuthProvider subclass with a unique priority and register it in the plugin's initialize() method. ## Quick Start Ask the agent to explain how OrangeHRM decides which authentication provider handles a login attempt and how to add a new one.