Full Code of auth0/laravel-auth0 for AI

main ddfaa0dd16a2 cached
303 files
662.8 KB
167.6k tokens
606 symbols
1 requests
Download .txt
Showing preview only (739K chars total). Download the full file or copy to clipboard to get everything.
Repository: auth0/laravel-auth0
Branch: main
Commit: ddfaa0dd16a2
Files: 303
Total size: 662.8 KB

Directory structure:
gitextract_de5m7bm0/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── SUPPORT.md
│   ├── actions/
│   │   ├── get-prerelease/
│   │   │   └── action.yml
│   │   ├── get-version/
│   │   │   └── action.yml
│   │   ├── publish-package/
│   │   │   └── action.yml
│   │   ├── release-create/
│   │   │   └── action.yml
│   │   ├── rl-scanner/
│   │   │   └── action.yml
│   │   ├── setup/
│   │   │   └── action.yml
│   │   ├── tag-create/
│   │   │   └── action.yml
│   │   └── tag-exists/
│   │       └── action.yml
│   ├── dependabot.yml
│   └── workflows/
│       ├── claude-code-review.yml
│       ├── matrix.json
│       ├── release.yml
│       ├── rl-scanner.yml
│       ├── snyk.yml
│       └── tests.yml
├── .gitignore
├── .php-cs-fixer.dist.php
├── .phpcs.xml.dist
├── .semgrepignore
├── .shiprc
├── .version
├── CHANGELOG.ARCHIVE.md
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── UPGRADE.md
├── codecov.yml
├── composer.json
├── config/
│   └── auth0.php
├── deprecated/
│   ├── Cache/
│   │   ├── LaravelCacheItem.php
│   │   └── LaravelCachePool.php
│   ├── Contract/
│   │   ├── Auth/
│   │   │   ├── Guard.php
│   │   │   └── User/
│   │   │       ├── Provider.php
│   │   │       └── Repository.php
│   │   ├── Auth0.php
│   │   ├── Configuration.php
│   │   ├── Entities/
│   │   │   └── Credential.php
│   │   ├── Event/
│   │   │   ├── Auth0Event.php
│   │   │   ├── Configuration/
│   │   │   │   ├── Building.php
│   │   │   │   └── Built.php
│   │   │   ├── Middleware/
│   │   │   │   ├── StatefulRequest.php
│   │   │   │   └── StatelessRequest.php
│   │   │   ├── Stateful/
│   │   │   │   ├── AuthenticationFailed.php
│   │   │   │   ├── AuthenticationSucceeded.php
│   │   │   │   ├── LoginAttempting.php
│   │   │   │   ├── TokenExpired.php
│   │   │   │   ├── TokenRefreshFailed.php
│   │   │   │   └── TokenRefreshSucceeded.php
│   │   │   └── Stateless/
│   │   │       ├── TokenVerificationAttempting.php
│   │   │       ├── TokenVerificationFailed.php
│   │   │       └── TokenVerificationSucceeded.php
│   │   ├── Exception/
│   │   │   ├── AuthenticationException.php
│   │   │   ├── GuardException.php
│   │   │   ├── SessionException.php
│   │   │   └── Stateful/
│   │   │       └── CallbackException.php
│   │   ├── Http/
│   │   │   ├── Controller/
│   │   │   │   └── Stateful/
│   │   │   │       ├── Callback.php
│   │   │   │       ├── Login.php
│   │   │   │       └── Logout.php
│   │   │   └── Middleware/
│   │   │       ├── Stateful/
│   │   │       │   ├── Authenticate.php
│   │   │       │   └── AuthenticateOptional.php
│   │   │       └── Stateless/
│   │   │           ├── Authorize.php
│   │   │           └── AuthorizeOptional.php
│   │   ├── Model/
│   │   │   ├── Stateful/
│   │   │   │   └── User.php
│   │   │   ├── Stateless/
│   │   │   │   └── User.php
│   │   │   └── User.php
│   │   └── ServiceProvider.php
│   ├── Event/
│   │   ├── Configuration/
│   │   │   ├── Building.php
│   │   │   └── Built.php
│   │   ├── Middleware/
│   │   │   ├── StatefulRequest.php
│   │   │   └── StatelessRequest.php
│   │   ├── Stateful/
│   │   │   ├── AuthenticationFailed.php
│   │   │   ├── AuthenticationSucceeded.php
│   │   │   ├── LoginAttempting.php
│   │   │   ├── TokenExpired.php
│   │   │   ├── TokenRefreshFailed.php
│   │   │   └── TokenRefreshSucceeded.php
│   │   └── Stateless/
│   │       ├── TokenVerificationAttempting.php
│   │       ├── TokenVerificationFailed.php
│   │       └── TokenVerificationSucceeded.php
│   ├── Exception/
│   │   ├── AuthenticationException.php
│   │   ├── GuardException.php
│   │   ├── SessionException.php
│   │   └── Stateful/
│   │       └── CallbackException.php
│   ├── Http/
│   │   ├── Controller/
│   │   │   └── Stateful/
│   │   │       ├── Callback.php
│   │   │       ├── Login.php
│   │   │       └── Logout.php
│   │   └── Middleware/
│   │       ├── Guard.php
│   │       ├── Stateful/
│   │       │   ├── Authenticate.php
│   │       │   └── AuthenticateOptional.php
│   │       └── Stateless/
│   │           ├── Authorize.php
│   │           └── AuthorizeOptional.php
│   ├── Model/
│   │   ├── Imposter.php
│   │   ├── Stateful/
│   │   │   └── User.php
│   │   ├── Stateless/
│   │   │   └── User.php
│   │   └── User.php
│   ├── README.md
│   └── Store/
│       └── LaravelSession.php
├── docs/
│   ├── BackchannelLogout.md
│   ├── Configuration.md
│   ├── Cookies.md
│   ├── Deployment.md
│   ├── Eloquent.md
│   ├── Events.md
│   ├── Installation.md
│   ├── Management.md
│   ├── Octane.md
│   ├── Sessions.md
│   ├── Support.md
│   ├── Telescope.md
│   └── Users.md
├── opslevel.yml
├── phpstan.neon.dist
├── phpunit.xml.dist
├── psalm.xml.dist
├── rector.php
├── src/
│   ├── Auth/
│   │   └── Guard.php
│   ├── Auth0.php
│   ├── Bridges/
│   │   ├── BridgeAbstract.php
│   │   ├── BridgeContract.php
│   │   ├── CacheBridge.php
│   │   ├── CacheBridgeAbstract.php
│   │   ├── CacheBridgeContract.php
│   │   ├── CacheItemBridge.php
│   │   ├── CacheItemBridgeAbstract.php
│   │   ├── CacheItemBridgeContract.php
│   │   ├── SessionBridge.php
│   │   ├── SessionBridgeAbstract.php
│   │   └── SessionBridgeContract.php
│   ├── Configuration.php
│   ├── ConfigurationContract.php
│   ├── Controllers/
│   │   ├── CallbackController.php
│   │   ├── CallbackControllerAbstract.php
│   │   ├── CallbackControllerContract.php
│   │   ├── ControllerAbstract.php
│   │   ├── ControllerContract.php
│   │   ├── LoginController.php
│   │   ├── LoginControllerAbstract.php
│   │   ├── LoginControllerContract.php
│   │   ├── LogoutController.php
│   │   ├── LogoutControllerAbstract.php
│   │   └── LogoutControllerContract.php
│   ├── Entities/
│   │   ├── CredentialEntity.php
│   │   ├── CredentialEntityAbstract.php
│   │   ├── CredentialEntityContract.php
│   │   ├── EntityAbstract.php
│   │   ├── EntityContract.php
│   │   ├── InstanceEntity.php
│   │   ├── InstanceEntityAbstract.php
│   │   ├── InstanceEntityContract.php
│   │   └── InstanceEntityTrait.php
│   ├── Events/
│   │   ├── Auth0EventContract.php
│   │   ├── AuthenticationFailed.php
│   │   ├── AuthenticationFailedAbstract.php
│   │   ├── AuthenticationFailedContract.php
│   │   ├── AuthenticationSucceeded.php
│   │   ├── AuthenticationSucceededAbstract.php
│   │   ├── AuthenticationSucceededContract.php
│   │   ├── Configuration/
│   │   │   ├── BuildingConfigurationEvent.php
│   │   │   ├── BuildingConfigurationEventAbstract.php
│   │   │   ├── BuildingConfigurationEventContract.php
│   │   │   ├── BuiltConfigurationEvent.php
│   │   │   ├── BuiltConfigurationEventAbstract.php
│   │   │   └── BuiltConfigurationEventContract.php
│   │   ├── EventAbstract.php
│   │   ├── EventContract.php
│   │   ├── LoginAttempting.php
│   │   ├── LoginAttemptingAbstract.php
│   │   ├── LoginAttemptingContract.php
│   │   ├── Middleware/
│   │   │   ├── StatefulMiddlewareRequest.php
│   │   │   ├── StatefulMiddlewareRequestAbstract.php
│   │   │   ├── StatefulMiddlewareRequestContract.php
│   │   │   ├── StatelessMiddlewareRequest.php
│   │   │   ├── StatelessMiddlewareRequestAbstract.php
│   │   │   └── StatelessMiddlewareRequestContract.php
│   │   ├── TokenExpired.php
│   │   ├── TokenExpiredAbstract.php
│   │   ├── TokenExpiredContract.php
│   │   ├── TokenRefreshFailed.php
│   │   ├── TokenRefreshFailedAbstract.php
│   │   ├── TokenRefreshFailedContract.php
│   │   ├── TokenRefreshSucceeded.php
│   │   ├── TokenRefreshSucceededAbstract.php
│   │   ├── TokenRefreshSucceededContract.php
│   │   ├── TokenVerificationAttempting.php
│   │   ├── TokenVerificationAttemptingAbstract.php
│   │   ├── TokenVerificationAttemptingContract.php
│   │   ├── TokenVerificationFailed.php
│   │   ├── TokenVerificationFailedAbstract.php
│   │   ├── TokenVerificationFailedContract.php
│   │   ├── TokenVerificationSucceeded.php
│   │   ├── TokenVerificationSucceededAbstract.php
│   │   └── TokenVerificationSucceededContract.php
│   ├── Events.php
│   ├── EventsContract.php
│   ├── Exceptions/
│   │   ├── AuthenticationException.php
│   │   ├── AuthenticationExceptionAbstract.php
│   │   ├── AuthenticationExceptionContract.php
│   │   ├── ControllerException.php
│   │   ├── ControllerExceptionAbstract.php
│   │   ├── ControllerExceptionContract.php
│   │   ├── Controllers/
│   │   │   ├── CallbackControllerException.php
│   │   │   ├── CallbackControllerExceptionAbstract.php
│   │   │   └── CallbackControllerExceptionContract.php
│   │   ├── ExceptionAbstract.php
│   │   ├── ExceptionContract.php
│   │   ├── GuardException.php
│   │   ├── GuardExceptionAbstract.php
│   │   ├── GuardExceptionContract.php
│   │   ├── SessionException.php
│   │   ├── SessionExceptionAbstract.php
│   │   └── SessionExceptionContract.php
│   ├── Facade/
│   │   └── Auth0.php
│   ├── Guards/
│   │   ├── AuthenticationGuard.php
│   │   ├── AuthenticationGuardContract.php
│   │   ├── AuthorizationGuard.php
│   │   ├── AuthorizationGuardContract.php
│   │   ├── GuardAbstract.php
│   │   └── GuardContract.php
│   ├── Middleware/
│   │   ├── AuthenticateMiddleware.php
│   │   ├── AuthenticateMiddlewareAbstract.php
│   │   ├── AuthenticateMiddlewareContract.php
│   │   ├── AuthenticateOptionalMiddleware.php
│   │   ├── AuthenticateOptionalMiddlewareAbstract.php
│   │   ├── AuthenticateOptionalMiddlewareContract.php
│   │   ├── AuthenticatorMiddleware.php
│   │   ├── AuthenticatorMiddlewareContract.php
│   │   ├── AuthorizeMiddleware.php
│   │   ├── AuthorizeMiddlewareAbstract.php
│   │   ├── AuthorizeMiddlewareContract.php
│   │   ├── AuthorizeOptionalMiddleware.php
│   │   ├── AuthorizeOptionalMiddlewareAbstract.php
│   │   ├── AuthorizeOptionalMiddlewareContract.php
│   │   ├── AuthorizerMiddleware.php
│   │   ├── AuthorizerMiddlewareContract.php
│   │   ├── GuardMiddleware.php
│   │   ├── GuardMiddlewareAbstract.php
│   │   ├── GuardMiddlewareContract.php
│   │   ├── MiddlewareAbstract.php
│   │   └── MiddlewareContract.php
│   ├── Service.php
│   ├── ServiceAbstract.php
│   ├── ServiceContract.php
│   ├── ServiceProvider.php
│   ├── ServiceProviderAbstract.php
│   ├── ServiceProviderContract.php
│   ├── Traits/
│   │   ├── ActingAsAuth0User.php
│   │   └── Impersonate.php
│   ├── UserProvider.php
│   ├── UserProviderAbstract.php
│   ├── UserProviderContract.php
│   ├── UserRepository.php
│   ├── UserRepositoryAbstract.php
│   ├── UserRepositoryContract.php
│   └── Users/
│       ├── ImposterUser.php
│       ├── ImposterUserContract.php
│       ├── StatefulUser.php
│       ├── StatefulUserContract.php
│       ├── StatelessUser.php
│       ├── StatelessUserContract.php
│       ├── UserAbstract.php
│       ├── UserContract.php
│       └── UserTrait.php
└── tests/
    ├── Pest.php
    ├── TestCase.php
    └── Unit/
        ├── Auth/
        │   ├── GuardStatefulTest.php
        │   ├── GuardStatelessTest.php
        │   └── GuardTest.php
        ├── Bridges/
        │   ├── CacheBridgeTest.php
        │   ├── CacheItemBridgeTest.php
        │   └── SessionBridgeTest.php
        ├── ConfigurationTest.php
        ├── Controllers/
        │   ├── CallbackControllerTest.php
        │   ├── LoginControllerTest.php
        │   └── LogoutControllerTest.php
        ├── Entities/
        │   ├── CredentialEntityTest.php
        │   └── InstanceEntityTest.php
        ├── Guards/
        │   ├── AuthenticationGuardTest.php
        │   └── AuthorizationGuardTest.php
        ├── Middleware/
        │   ├── AuthenticateMiddlewareTest.php
        │   ├── AuthenticateOptionalMiddlewareTest.php
        │   ├── AuthenticatorMiddlewareTest.php
        │   ├── AuthorizeMiddlewareTest.php
        │   ├── AuthorizeOptionalMiddlewareTest.php
        │   ├── AuthorizerMiddlewareTest.php
        │   └── GuardMiddlewareTest.php
        ├── ServiceProviderTest.php
        ├── ServiceTest.php
        ├── Traits/
        │   ├── ActingAsAuth0UserTest.php
        │   └── ImpersonateTest.php
        ├── UserProviderTest.php
        ├── UserRepositoryTest.php
        └── Users/
            └── UserTest.php

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[docker-compose.yml]
indent_size = 4


================================================
FILE: .gitattributes
================================================
.editorconfig          export-ignore
.gitattributes         export-ignore
.github/               export-ignore
.gitignore             export-ignore
.php-cs-fixer.dist.php export-ignore
.semgrepignore         export-ignore
.shiprc                export-ignore
CHANGELOG.ARCHIVE.md   export-ignore
CHANGELOG.md           export-ignore
docs/                  export-ignore
EXAMPLES.md            export-ignore
examples/              export-ignore
opslevel.yml           export-ignore
phpstan.neon.dist      export-ignore
phpunit.xml.dist       export-ignore
psalm.xml.dist         export-ignore
rector.php             export-ignore
tests/                 export-ignore
UPGRADE.md             export-ignore
vendor/                export-ignore


================================================
FILE: .github/CODEOWNERS
================================================
*	@auth0/project-dx-sdks-engineer-codeowner


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Code of Conduct

Before making any contributions to this repo, please review Auth0's [Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). By contributing, you agree to uphold this code.


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contribution Guide

-   [Getting Involved](#getting-involved)
-   [Support Questions](#support-questions)
-   [Code Contributions](#code-contributions)
-   [Security Vulnerabilities](#security-vulnerabilities)
-   [Coding Style](#coding-style)
    -   [PHPDoc](#phpdoc)
-   [Code of Conduct](#code-of-conduct)

## Getting Involved

To encourage active collaboration, Auth0 strongly encourages pull requests, not just bug reports. Pull requests will only be reviewed when marked as "ready for review" (not in the "draft" state) and all tests for new features are passing. Lingering, non-active pull requests left in the "draft" state will eventually be closed.

If you file a bug report, your issue should contain a title and a clear description of the issue. You should also include as much relevant information as possible and a code sample that demonstrates the issue. The goal of a bug report is to make it easy for yourself - and others - to replicate the bug and develop a fix.

Remember, bug reports are created in the hope that others with the same problem will be able to collaborate with you on solving it. Do not expect that the bug report will automatically see any activity or that others will jump to fix it. Creating a bug report serves to help you and others start on the path of fixing the problem. If you want to chip in, you can help out by fixing any bugs listed in our issue trackers.

## Support Questions

Auth0's GitHub issue trackers are not intended to provide integration support. Instead, please refer your questions to the [Auth0 Community](https://community.auth0.com).

## Code Contributions

You may propose new features or improvements to existing SDK behavior by creating a feature request within the repository's issue tracker. If you are willing to implement at least some of the code that would be needed to complete the feature, please fork the repository and submit a pull request.

All development should be done in individual forks using dedicated branches, and submitted against the `main` default branch.

Pull request titles must follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) rules so our changelogs can be automatically generated. Commits messages are irrelevant as they will be squashed into the Pull request's title during a merge.

The following types are allowed:

-   _feat:_ A new feature
-   _perf:_ A code change that improves performance
-   _refactor:_ A code change that neither fixes a bug nor adds a feature
-   _build:_ Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
-   _ci:_ Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
-   _style:_ Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc)
-   _fix:_ A bug fix
-   _security:_ A change that improves security
-   _docs:_ Documentation only changes
-   _test:_ Adding missing tests or correcting existing tests

## Security Vulnerabilities

If you discover a security vulnerability within this SDK, please review Auth0's [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues. All security vulnerabilities will be promptly addressed.

## Unit Testing and 100% Minimum Coverage

We use [PEST](https://pestphp.com/) for testing. You can run `composer pest` to run the test suite. You can also run `composer pest:coverage` to generate a code coverage report.

We require 100% code coverage for all new features. If you are adding a new feature, please add tests to cover all of the new code. If you are fixing a bug, please add a test that reproduces the bug and then shows that it has been fixed.

Pull requests that do not meet the minimum coverage requirements will not be merged.

## Static Analysis

We use [PHPStan](https://phpstan.org) and [Psalm](https://psalm.dev/) for static analysis. You can use `composer phpstan` and `composer psalm` to run them.

## Coding Style

We use [PHP CS Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) to ensure that code styling is consistent. You can run `composer phpcs` to check for any code style issues. `composer phpcs:fix` will attempt to automatically fix the issues, but be cautious as it may not always get it right.

We also use [Rector](https://github.com/rectorphp/rector) to catch edge cases where more optimal refactoring can be made. You can run `composer rector` to check for any recommendations, and `composer rector:fix` to accept the suggestions.

It's important to note that our GitHub CI will also run these checks for pull requests, but you should run these locally first to avoid any surprises when you push your code. If you disagree with one of these recommendations, please bring it up in the pull request so we can discuss it. We may decide to adjust the styling rules if we feel it's warranted, but we prefer to avoid it if possible.

### PHPDoc

All public methods and classes should be documented with PHPDoc blocks.

Below is an example of a valid documentation block. Note that the @param attribute is followed by two spaces, the argument type, two more spaces, and finally the variable name:

```php
/**
 * Register a binding with the container.
 *
 * @param  string|array  $abstract
 * @param  \Closure|string|null  $concrete
 * @param  bool  $shared
 * @return void
 *
 * @throws \Exception
 */
public function bind($abstract, $concrete = null, $shared = false)
{
    //
}
```

## Code of Conduct

Before making any contributions to this repo, please review Auth0's [Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). By contributing, you agree to uphold this code.


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Report a Bug
description: Encountering unexpected problems or unintended behavior? Let us know!

body:
  - type: markdown
    attributes:
      value: |
        **Please do not report security vulnerabilities here**. The [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues.

  - type: checkboxes
    id: checklist
    attributes:
      label: Checklist
      options:
        - label: This can be reproduced using [the quickstart sample application](https://github.com/auth0-samples/laravel).
          required: true
        - label: I have looked at [the README](https://github.com/auth0/laravel-auth0/#readme) and have not found a solution.
          required: true
        - label: I have looked at [the `docs` directory](https://github.com/auth0/laravel-auth0/blob/main/docs) and have not found a solution.
          required: true
        - label: I have searched [previous issues](https://github.com/auth0/laravel-auth0/issues) and have not found a solution.
          required: true
        - label: I have searched [the Auth0 Community](https://community.auth0.com/tag/laravel) and have not found a solution.
          required: true
        - label: I agree to uphold [the Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md).
          required: true

  - type: dropdown
    id: laravel
    attributes:
      label: Laravel Version
      description: What version of Laravel are you using? (`composer show | grep laravel/framework`)
      options:
        - 10
        - 9
        - Other (specify below)
    validations:
      required: true

  - type: dropdown
    id: sdk
    attributes:
      label: SDK Version
      description: What version of our SDK are you using? (`composer show | grep auth0/login`)
      options:
        - 7.13
        - 7.12
        - 7.11
        - 7.10
        - 7.9
        - 7.8
        - 7.7
        - 7.6
        - 7.5
        - 7.4
        - 7.3
        - 7.2
        - 7.1
        - 7.0
        - Other (specify below)
    validations:
      required: true

  - type: dropdown
    id: php
    attributes:
      label: PHP Version
      description: What version of PHP are you running? (`php -v`)
      options:
        - PHP 8.3
        - PHP 8.2
        - Other (specify below)
    validations:
      required: true

  - type: textarea
    id: bug-description
    attributes:
      label: Description
      description: Provide a description of the issue, including what you expected to happen.
    validations:
      required: true

  - type: textarea
    id: bug-reproduction
    attributes:
      label: How can we reproduce this issue?
      description: Detail the steps taken to reproduce this error. If possible, please provide a GitHub repository to demonstrate the issue.
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Report Auth0-PHP Issues
    url: https://github.com/auth0/auth0-PHP/
    about: For issues relating to the Auth0-PHP SDK, please report them in that repository.
  - name: Community Support
    url: https://community.auth0.com/tag/laravel
    about: Please ask general usage questions here.
  - name: Responsible Disclosure Program
    url: https://auth0.com/whitehat
    about: Please do not report security vulnerabilities on the public GitHub issue tracker. The Responsible Disclosure Program details the procedure for disclosing security issues.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Suggest a Feature
description: Help us improve the SDK by suggest new features and improvements.

body:
  - type: markdown
    attributes:
      value: Thanks for taking the time to help us improve this SDK!

  - type: checkboxes
    id: checklist
    attributes:
      label: Checklist
      options:
        - label: I agree to uphold [the Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md).
          required: true

  - type: textarea
    id: feature-description
    attributes:
      label: Description
      description: Please provide a summary of the change you'd like considered, including any relevant context.
    validations:
      required: true


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
  Please only send pull requests to branches that are actively supported.
  Pull requests without an adequate title, description, or tests will be closed.
-->

### Changes

<!--
  What is changing, and why this is important?
-->

### References

<!--
  Link to any associated issues.
-->

### Testing

<!--
  Tests must be added for new functionality, and existing tests should complete without errors.
  100% test coverage is required.
-->

### Contributor Checklist

-   [ ] I have read the [Auth0 general contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md)
-   [ ] I have read the [Auth0 code of conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md)


================================================
FILE: .github/SECURITY.md
================================================
# Security Policy

**PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY, [SEE BELOW](#reporting-a-vulnerability).**

## Supported Versions

Please see [our support policy](https://github.com/auth0/laravel-auth0#requirements) for information on supported versions for security releases.

## Reporting a Vulnerability

If you discover a security vulnerability within this SDK, please review Auth0's [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues. All security vulnerabilities will be promptly addressed.


================================================
FILE: .github/SUPPORT.md
================================================
# Support Questions

Auth0's GitHub issue trackers are not intended to provide integration support. Instead, please refer your questions to the [Auth0 Community](https://community.auth0.com).


================================================
FILE: .github/actions/get-prerelease/action.yml
================================================
name: Return a boolean indicating if the version contains prerelease identifiers

#
# Returns a simple true/false boolean indicating whether the version indicates it's a prerelease or not.
#
# TODO: Remove once the common repo is public.
#

inputs:
  version:
    required: true

outputs:
  prerelease:
    value: ${{ steps.get_prerelease.outputs.PRERELEASE }}

runs:
  using: composite

  steps:
    - id: get_prerelease
      shell: bash
      run: |
        if [[ "${VERSION}" == *"beta"* || "${VERSION}" == *"alpha"* ]]; then
          echo "PRERELEASE=true" >> $GITHUB_OUTPUT
        else
          echo "PRERELEASE=false" >> $GITHUB_OUTPUT
        fi
      env:
        VERSION: ${{ inputs.version }}


================================================
FILE: .github/actions/get-version/action.yml
================================================
name: Return the version extracted from the branch name

#
# Returns the version from a branch name of a pull request. It expects the branch name to be in the format release/vX.Y.Z, release/X.Y.Z, release/vX.Y.Z-beta.N. etc.
#
# TODO: Remove once the common repo is public.
#

outputs:
  version:
    value: ${{ steps.get_version.outputs.VERSION }}

runs:
  using: composite

  steps:
    - id: get_version
      shell: bash
      run: |
        VERSION=$(head -1 .version)
        echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT


================================================
FILE: .github/actions/publish-package/action.yml
================================================
name: Publish release to package manager

inputs:
  token:
    required: true
  files:
    required: false
  name:
    required: true
  body:
    required: true
  tag:
    required: true
  commit:
    required: true
  draft:
    default: false
    required: false
  prerelease:
    default: false
    required: false

runs:
  using: composite

  steps:
    # Nothing to do for PHP.
    - run: exit 0
      shell: bash


================================================
FILE: .github/actions/release-create/action.yml
================================================
name: Create a GitHub release

#
# Creates a GitHub release with the given version.
#
# TODO: Remove once the common repo is public.
#

inputs:
  token:
    required: true
  files:
    required: false
  name:
    required: true
  body:
    required: true
  tag:
    required: true
  commit:
    required: true
  draft:
    default: false
    required: false
  prerelease:
    default: false
    required: false
  fail_on_unmatched_files:
    default: true
    required: false

runs:
  using: composite

  steps:
    - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
      with:
        body: ${{ inputs.body }}
        name: ${{ inputs.name }}
        tag_name: ${{ inputs.tag }}
        target_commitish: ${{ inputs.commit }}
        draft: ${{ inputs.draft }}
        prerelease: ${{ inputs.prerelease }}
        fail_on_unmatched_files: ${{ inputs.fail_on_unmatched_files }}
        files: ${{ inputs.files }}
      env:
        GITHUB_TOKEN: ${{ inputs.token }}


================================================
FILE: .github/actions/rl-scanner/action.yml
================================================
name: 'Reversing Labs Scanner'
description: 'Runs the Reversing Labs scanner on a specified artifact.'
inputs:
  artifact-path:
    description: 'Path to the artifact to be scanned.'
    required: true
  version:
    description: 'Version of the artifact.'
    required: true

runs:
  using: 'composite'
  steps:
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.10'

    - name: Install Python dependencies
      shell: bash
      run: |
        pip install boto3 requests

    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        role-to-assume: ${{ env.PRODSEC_TOOLS_ARN }}
        aws-region: us-east-1
        mask-aws-account-id: true

    - name: Install RL Wrapper
      shell: bash
      run: |
        pip install rl-wrapper>=1.0.0 --index-url "https://${{ env.PRODSEC_TOOLS_USER }}:${{ env.PRODSEC_TOOLS_TOKEN }}@a0us.jfrog.io/artifactory/api/pypi/python-local/simple"

    - name: Run RL Scanner
      shell: bash
      env:
        RLSECURE_LICENSE: ${{ env.RLSECURE_LICENSE }}
        RLSECURE_SITE_KEY: ${{ env.RLSECURE_SITE_KEY }}
        SIGNAL_HANDLER_TOKEN: ${{ env.SIGNAL_HANDLER_TOKEN }}
        PYTHONUNBUFFERED: 1
      run: |
        if [ ! -f "${{ inputs.artifact-path }}" ]; then
          echo "Artifact not found: ${{ inputs.artifact-path }}"
          exit 1
        fi

        rl-wrapper \
          --artifact "${{ inputs.artifact-path }}" \
          --name "${{ github.event.repository.name }}" \
          --version "${{ inputs.version }}" \
          --repository "${{ github.repository }}" \
          --commit "${{ github.sha }}" \
          --build-env "github_actions" \
          --suppress_output

        # Check the outcome of the scanner
        if [ $? -ne 0 ]; then
          echo "RL Scanner failed."
          echo "scan-status=failed" >> $GITHUB_ENV
          exit 1
        else
          echo "RL Scanner passed."
          echo "scan-status=success" >> $GITHUB_ENV
        fi

outputs:
  scan-status:
    description: 'The outcome of the scan process.'
    value: ${{ env.scan-status }}

================================================
FILE: .github/actions/setup/action.yml
================================================
name: Prepare PHP
description: Prepare the PHP environment

inputs:
  php:
    description: The PHP version to use
    required: true
  coverage:
    description: The coverage extension to use
    required: false
    default: 'none'
  extensions:
    description: The PHP extensions to use
    required: false
    default: 'none, mbstring, curl, simplexml, dom, xmlwriter, xml, tokenizer, fileinfo, pdo'
  runner:
    description: The runner OS
    required: false
    default: 'ubuntu-latest'

runs:
  using: composite

  steps:
    - name: Setup PHP
      uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # pin@2.25.4
      with:
        php-version: ${{ inputs.php }}
        extensions: ${{ inputs.extensions }}
        coverage: ${{ inputs.coverage }}
      env:
        runner: ${{ inputs.runner }}

    - name: Get Composer cache directory
      id: composer-cache
      shell: bash
      run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

    - name: Cache dependencies
      uses: actions/cache@v3
      with:
        path: ${{ steps.composer-cache.outputs.dir }}
        key: ${{ runner.os }}-composer-${{ inputs.php }}-${{ hashFiles('**/composer.lock') }}
        restore-keys: ${{ runner.os }}-composer-${{ inputs.php }}-

    - name: Install dependencies
      shell: bash
      run: composer install --prefer-dist


================================================
FILE: .github/actions/tag-create/action.yml
================================================
name: Create a repository tag

#
# Creates a tag with the given version.
#
# TODO: Remove once the common repo is public.
#

inputs:
  token:
    required: true
  tag:
    required: true

runs:
  using: composite

  steps:
    - shell: bash
      run: |
        git config user.name "${AUTHOR_USERNAME}"
        git config user.email "${AUTHOR_EMAIL}"
      env:
        AUTHOR_USERNAME: ${{ github.event.pull_request.user.login }}
        AUTHOR_EMAIL: ${{ github.event.pull_request.user.email }}

    - shell: bash
      run: |
        git tag -a ${TAG_NAME} -m "Version ${TAG_NAME}"
        git push --follow-tags
      env:
        TAG_NAME: ${{ inputs.tag }}
        GITHUB_TOKEN: ${{ inputs.token }}


================================================
FILE: .github/actions/tag-exists/action.yml
================================================
name: Return a boolean indicating if a tag already exists for the repository

#
# Returns a simple true/false boolean indicating whether the tag exists or not.
#
# TODO: Remove once the common repo is public.
#

inputs:
  token:
    required: true
  tag:
    required: true

outputs:
  exists:
    description: 'Whether the tag exists or not'
    value: ${{ steps.tag-exists.outputs.EXISTS }}

runs:
  using: composite

  steps:
    - id: tag-exists
      shell: bash
      run: |
        GET_API_URL="https://api.github.com/repos/${GITHUB_REPOSITORY}/git/ref/tags/${TAG_NAME}"
        http_status_code=$(curl -LI $GET_API_URL -o /dev/null -w '%{http_code}\n' -s -H "Authorization: token ${GITHUB_TOKEN}")
        if [ "$http_status_code" -ne "404" ] ; then
          echo "EXISTS=true" >> $GITHUB_OUTPUT
        else
          echo "EXISTS=false" >> $GITHUB_OUTPUT
        fi
      env:
        TAG_NAME: ${{ inputs.tag }}
        GITHUB_TOKEN: ${{ inputs.token }}


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"


================================================
FILE: .github/workflows/claude-code-review.yml
================================================
name: Claude Code PR Review

on:
  issue_comment:
    types: [ created ]
  pull_request_review_comment:
    types: [ created ]
  pull_request_review:
    types: [ submitted ]

jobs:
  claude-review:
    permissions:
      contents: write
      issues: write
      pull-requests: write
      id-token: write
    uses: auth0/auth0-ai-pr-analyzer-gh-action/.github/workflows/claude-code-review.yml@main

================================================
FILE: .github/workflows/matrix.json
================================================
{
  "include": [
    { "php": "8.2" },
    { "php": "8.3" },
    { "php": "8.4" }
  ]
}


================================================
FILE: .github/workflows/release.yml
================================================
name: Create GitHub Release

on:
  pull_request:
    types:
      - closed



permissions:
  contents: write
  id-token: write # This is required for requesting the JWT

### TODO: Replace instances of './.github/actions/' w/ `auth0/dx-sdk-actions/` and append `@latest` after the common `dx-sdk-actions` repo is made public.
### TODO: Also remove `get-prerelease`, `get-version`, `release-create`, `tag-create` and `tag-exists` actions from this repo's .github/actions folder once the repo is public.

jobs:
  rl-scanner:
    uses: ./.github/workflows/rl-scanner.yml
    with:
      php-version: 8.2
      artifact-name: 'laravel-auth0.zip'
    secrets:
      RLSECURE_LICENSE: ${{ secrets.RLSECURE_LICENSE }}
      RLSECURE_SITE_KEY: ${{ secrets.RLSECURE_SITE_KEY }}
      SIGNAL_HANDLER_TOKEN: ${{ secrets.SIGNAL_HANDLER_TOKEN }}
      PRODSEC_TOOLS_USER: ${{ secrets.PRODSEC_TOOLS_USER }}
      PRODSEC_TOOLS_TOKEN: ${{ secrets.PRODSEC_TOOLS_TOKEN }}
      PRODSEC_TOOLS_ARN: ${{ secrets.PRODSEC_TOOLS_ARN }}

  release:
    if: github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/')
    needs: rl-scanner
    runs-on: ubuntu-latest

    steps:
      # Checkout the code
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # Get the version from the branch name
      - id: get_version
        uses: ./.github/actions/get-version

      # Get the prerelease flag from the branch name
      - id: get_prerelease
        uses: ./.github/actions/get-prerelease
        with:
          version: ${{ steps.get_version.outputs.version }}

      # Check if the tag already exists
      - id: tag_exists
        uses: ./.github/actions/tag-exists
        with:
          tag: ${{ steps.get_version.outputs.version }}
          token: ${{ secrets.GITHUB_TOKEN }}

      # If the tag already exists, exit with an error
      - if: steps.tag_exists.outputs.exists == 'true'
        run: exit 1

      # Publish the release to our package manager
      - uses: ./.github/actions/publish-package
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          name: ${{ steps.get_version.outputs.version }}
          body: ${{ github.event.pull_request.body }}
          tag: ${{ steps.get_version.outputs.version }}
          commit: ${{ github.sha }}
          prerelease: ${{ steps.get_prerelease.outputs.prerelease }}

      # Create a tag for the release
      - uses: ./.github/actions/tag-create
        with:
          tag: ${{ steps.get_version.outputs.version }}
          token: ${{ secrets.GITHUB_TOKEN }}

      # Create a release for the tag
      - uses: ./.github/actions/release-create
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          name: ${{ steps.get_version.outputs.version }}
          body: ${{ github.event.pull_request.body }}
          tag: ${{ steps.get_version.outputs.version }}
          commit: ${{ github.sha }}
          prerelease: ${{ steps.get_prerelease.outputs.prerelease }}


================================================
FILE: .github/workflows/rl-scanner.yml
================================================
name: RL-Secure Workflow

on:
  workflow_call:
    inputs:
      php-version:
        required: true
        type: string
      artifact-name:
        required: true
        type: string
    secrets:
      RLSECURE_LICENSE:
        required: true
      RLSECURE_SITE_KEY:
        required: true
      SIGNAL_HANDLER_TOKEN:
        required: true
      PRODSEC_TOOLS_USER:
        required: true
      PRODSEC_TOOLS_TOKEN:
        required: true
      PRODSEC_TOOLS_ARN:
        required: true

jobs:
  rl-scanner:
    if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/'))
    runs-on: ubuntu-latest
    outputs:
      scan-status: ${{ steps.rl-scan-conclusion.outcome }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha || github.sha || github.ref }}

      - name: Setup PHP
        uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # pin@2.25.4
        with:
          php-version: ${{ inputs.php-version }}

      - name: Build Laravel
        shell: bash
        run: |
          zip -r ${{ inputs.artifact-name }} ./*

      - name: Get Artifact Version
        id: get_version
        uses: ./.github/actions/get-version

      - name: Run RL Scanner
        id: rl-scan-conclusion
        uses: ./.github/actions/rl-scanner
        with:
          artifact-path: "$(pwd)/${{ inputs.artifact-name }}"
          version: "${{ steps.get_version.outputs.version }}"
        env:
          RLSECURE_LICENSE: ${{ secrets.RLSECURE_LICENSE }}
          RLSECURE_SITE_KEY: ${{ secrets.RLSECURE_SITE_KEY }}
          SIGNAL_HANDLER_TOKEN: ${{ secrets.SIGNAL_HANDLER_TOKEN }}
          PRODSEC_TOOLS_USER: ${{ secrets.PRODSEC_TOOLS_USER }}
          PRODSEC_TOOLS_TOKEN: ${{ secrets.PRODSEC_TOOLS_TOKEN }}
          PRODSEC_TOOLS_ARN: ${{ secrets.PRODSEC_TOOLS_ARN }}

      - name: Output scan result
        run: echo "scan-status=${{ steps.rl-scan-conclusion.outcome }}" >> $GITHUB_ENV

================================================
FILE: .github/workflows/snyk.yml
================================================
name: Snyk

on:
  merge_group:
  pull_request:
    types:
      - opened
      - synchronize
  push:
    branches:
      - main
  schedule:
    - cron: "30 0 1,15 * *"

permissions:
  contents: read

env:
  DX_SDKS_SNYK_ORGANIZATION: 8303ea71-ac72-4ae6-9cd0-ae2f3eda82b7
  DX_SDKS_SNYK_PROJECT: auth0/laravel-auth0
  DX_SDKS_SNYK_TAGS: Refactoring-target:DX,Refactoring-origin:auth0-sdks
  DX_SDKS_SNYK_REMOTE_REPO_URL: https://github.com/auth0/laravel-auth0

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
  configure:
    name: Configure
    runs-on: ubuntu-latest

    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}

    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.merge_commit_sha || github.ref }}

      - id: set-matrix
        run: echo "matrix=$(jq -c . < ./.github/workflows/matrix.json)" >> $GITHUB_OUTPUT

  check:
    needs: [configure]

    name: Check for Vulnerabilities
    runs-on: ubuntu-latest

    steps:
      - if: github.actor == 'dependabot[bot]' || github.event_name == 'merge_group'
        run: exit 0

      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.merge_commit_sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ fromJson(needs.configure.outputs.matrix).include[0].php }}

      - run: npm install snyk -g

      - if: github.ref == 'refs/heads/main'
        run: snyk monitor --file=composer.lock --org=$SNYK_ORGANIZATION --project-name=$SNYK_PROJECT --project-tags=$SNYK_TAGS --remote-repo-url=$SNYK_REMOTE_REPO --target-reference="$(git branch --show-current)"
        env:
          SNYK_TOKEN: ${{ secrets.DX_SDKS_SNYK_TOKEN }}
          SNYK_ORGANIZATION: ${{ env.DX_SDKS_SNYK_ORGANIZATION }}
          SNYK_PROJECT: ${{ env.DX_SDKS_SNYK_PROJECT }}
          SNYK_TAGS: ${{ env.DX_SDKS_SNYK_TAGS }}
          SNYK_REMOTE_REPO: ${{ env.DX_SDKS_SNYK_REMOTE_REPO_URL }}
        continue-on-error: true

      - run: snyk test --file=composer.lock --org=$SNYK_ORGANIZATION --project-name=$SNYK_PROJECT --remote-repo-url=$SNYK_REMOTE_REPO
        env:
          SNYK_TOKEN: ${{ secrets.DX_SDKS_SNYK_TOKEN }}
          SNYK_ORGANIZATION: ${{ env.DX_SDKS_SNYK_ORGANIZATION }}
          SNYK_PROJECT: ${{ env.DX_SDKS_SNYK_PROJECT }}
          SNYK_TAGS: ${{ env.DX_SDKS_SNYK_TAGS }}
          SNYK_REMOTE_REPO: ${{ env.DX_SDKS_SNYK_REMOTE_REPO_URL }}


================================================
FILE: .github/workflows/tests.yml
================================================
name: Build and Test

on:
  merge_group:
  workflow_dispatch:
  pull_request:
    types:
      - opened
      - synchronize
  push:
    branches:
      - main

permissions: {}

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
  configure:
    name: Configure
    runs-on: ubuntu-latest

    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - id: set-matrix
        run: echo "matrix=$(jq -c . < ./.github/workflows/matrix.json)" >> $GITHUB_OUTPUT

  prepare:
    name: Prepare Dependencies
    needs: [configure]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

  composer-normalize:
    name: Composer Normalize
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer normalize --dry-run --diff

  composer-validate:
    name: Composer Validate
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer validate

  pest:
    name: PEST
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}
          coverage: pcov

      - if: matrix.php == '8.2'
        run: composer pest:coverage

      - if: matrix.php == '8.2'
        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@3.1.4
        with:
          directory: ./coverage/
          flags: unittestsvalidate

  phpstan:
    name: PHPStan
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer phpstan

  psalm:
    name: Psalm
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer psalm

  rector:
    name: Rector
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer rector

  php-cs-fixer:
    name: PHP CS Fixer
    needs: [configure, prepare]
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.configure.outputs.matrix) }}

    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha || github.ref }}

      - uses: ./.github/actions/setup
        with:
          php: ${{ matrix.php }}

      - run: composer phpcs


================================================
FILE: .gitignore
================================================
build/
vendor/
coverage/
tmp/
.idea/
.env
.DS_Store
composer.lock
composer.phar
.phpunit.result.cache
composer.local.json
composer.local.json_
.php-cs-fixer.cache
composer.local.old
.vscode
pest.log
NOTES.md

# AI tools
.claude


================================================
FILE: .php-cs-fixer.dist.php
================================================
<?php

declare(strict_types=1);

return (new PhpCsFixer\Config())
    ->setRiskyAllowed(true)
    ->setRules([
        'array_indentation' => true,
        'array_push' => true,
        'array_syntax' => ['syntax' => 'short'],
        'assign_null_coalescing_to_coalesce_equal' => true,
        'backtick_to_shell_exec' => true,
        'binary_operator_spaces' => true,
        'blank_line_after_namespace' => true,
        'blank_line_after_opening_tag' => true,
        'blank_line_before_statement' => true,
        'blank_line_between_import_groups' => true,
        'braces' => true,
        'cast_spaces' => true,
        'class_attributes_separation' => ['elements' => ['const' => 'one', 'method' => 'one', 'property' => 'one', 'trait_import' => 'one', 'case' => 'one']],
        'class_definition' => ['multi_line_extends_each_single_line' => true, 'single_line' => true, 'single_item_single_line' => true, 'space_before_parenthesis' => false, 'inline_constructor_arguments' => false],
        'class_reference_name_casing' => true,
        'clean_namespace' => true,
        'combine_consecutive_issets' => true,
        'combine_consecutive_unsets' => true,
        'combine_nested_dirname' => true,
        'comment_to_phpdoc' => ['ignored_tags' => ['codeCoverageIgnoreStart', 'codeCoverageIgnoreEnd', 'phpstan-ignore-next-line']],
        'compact_nullable_typehint' => true,
        'concat_space' => ['spacing' => 'one'],
        'constant_case' => ['case' => 'lower'],
        'curly_braces_position' => ['control_structures_opening_brace' => 'same_line', 'functions_opening_brace' => 'next_line_unless_newline_at_signature_end', 'anonymous_functions_opening_brace' => 'same_line', 'classes_opening_brace' => 'next_line_unless_newline_at_signature_end', 'anonymous_classes_opening_brace' => 'same_line', 'allow_single_line_empty_anonymous_classes' => true, 'allow_single_line_anonymous_functions' => true],
        'date_time_create_from_format_call' => true,
        'date_time_immutable' => true,
        'declare_equal_normalize' => ['space' => 'none'],
        'declare_parentheses' => true,
        'declare_strict_types' => true,
        'dir_constant' => true,
        'doctrine_annotation_array_assignment' => true,
        'doctrine_annotation_braces' => true,
        'doctrine_annotation_indentation' => true,
        'doctrine_annotation_spaces' => true,
        'echo_tag_syntax' => ['format' => 'long'],
        'elseif' => true,
        'empty_loop_body' => true,
        'empty_loop_condition' => true,
        'encoding' => true,
        'ereg_to_preg' => true,
        'error_suppression' => true,
        'escape_implicit_backslashes' => true,
        'explicit_indirect_variable' => true,
        'explicit_string_variable' => true,
        'final_class' => true,
        'final_internal_class' => true,
        'final_public_method_for_abstract_class' => true,
        'fopen_flag_order' => true,
        'fopen_flags' => true,
        'full_opening_tag' => true,
        'fully_qualified_strict_types' => true,
        'function_declaration' => true,
        'function_to_constant' => true,
        'function_typehint_space' => true,
        'general_phpdoc_annotation_remove' => true,
        'general_phpdoc_tag_rename' => true,
        'get_class_to_class_keyword' => true,
        'global_namespace_import' => ['import_classes' => true, 'import_constants' => true, 'import_functions' => true],
        'group_import' => true,
        'heredoc_indentation' => true,
        'heredoc_to_nowdoc' => true,
        'implode_call' => true,
        'include' => true,
        'increment_style' => ['style' => 'pre'],
        'indentation_type' => true,
        'integer_literal_case' => true,
        'is_null' => true,
        'lambda_not_used_import' => true,
        'line_ending' => true,
        'linebreak_after_opening_tag' => true,
        'list_syntax' => ['syntax' => 'short'],
        'logical_operators' => true,
        'lowercase_cast' => true,
        'lowercase_keywords' => true,
        'lowercase_static_reference' => true,
        'magic_constant_casing' => true,
        'magic_method_casing' => true,
        'mb_str_functions' => false,
        'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline', 'after_heredoc' => true],
        'method_chaining_indentation' => true,
        'modernize_strpos' => true,
        'modernize_types_casting' => true,
        'multiline_comment_opening_closing' => true,
        'multiline_whitespace_before_semicolons' => true,
        'native_function_casing' => true,
        'native_function_invocation' => true,
        'native_function_type_declaration_casing' => true,
        'new_with_braces' => true,
        'no_alias_functions' => true,
        'no_alias_language_construct_call' => true,
        'no_alternative_syntax' => true,
        'no_binary_string' => true,
        'no_blank_lines_after_class_opening' => true,
        'no_blank_lines_after_phpdoc' => true,
        'no_break_comment' => true,
        'no_closing_tag' => true,
        'no_empty_comment' => true,
        'no_empty_phpdoc' => true,
        'no_empty_statement' => true,
        'no_extra_blank_lines' => true,
        'no_homoglyph_names' => true,
        'no_leading_import_slash' => true,
        'no_leading_namespace_whitespace' => true,
        'no_mixed_echo_print' => true,
        'no_multiline_whitespace_around_double_arrow' => true,
        'no_multiple_statements_per_line' => true,
        'no_php4_constructor' => true,
        'no_short_bool_cast' => true,
        'no_singleline_whitespace_before_semicolons' => true,
        'no_space_around_double_colon' => true,
        'no_spaces_after_function_name' => true,
        'no_spaces_around_offset' => true,
        'no_spaces_inside_parenthesis' => true,
        'no_superfluous_elseif' => true,
        'no_trailing_comma_in_singleline' => true,
        'no_trailing_whitespace_in_comment' => true,
        'no_trailing_whitespace_in_string' => true,
        'no_trailing_whitespace' => true,
        'no_unneeded_control_parentheses' => true,
        'no_unneeded_curly_braces' => true,
        'no_unneeded_final_method' => true,
        'no_unneeded_import_alias' => true,
        'no_unreachable_default_argument_value' => true,
        'no_unset_cast' => true,
        'no_unused_imports' => true,
        'no_useless_concat_operator' => true,
        'no_useless_else' => true,
        'no_useless_nullsafe_operator' => true,
        'no_useless_return' => true,
        'no_useless_sprintf' => true,
        'no_whitespace_before_comma_in_array' => true,
        'no_whitespace_in_blank_line' => true,
        'non_printable_character' => true,
        'normalize_index_brace' => true,
        'not_operator_with_successor_space' => true,
        'nullable_type_declaration_for_default_null_value' => true,
        'object_operator_without_whitespace' => true,
        'octal_notation' => true,
        'operator_linebreak' => true,
        'ordered_class_elements' => ['sort_algorithm' => 'alpha', 'order' => ['use_trait', 'case', 'constant', 'constant_private', 'constant_protected', 'constant_public', 'property_private', 'property_private_readonly', 'property_private_static', 'property_protected', 'property_protected_readonly', 'property_protected_static', 'property_public', 'property_public_readonly', 'property_public_static', 'property_static', 'protected', 'construct', 'destruct', 'magic', 'method', 'public', 'method_public', 'method_abstract', 'method_public_abstract', 'method_public_abstract_static', 'method_public_static', 'method_static', 'method_private', 'method_private_abstract', 'method_private_abstract_static', 'method_private_static', 'method_protected', 'method_protected_abstract', 'method_protected_abstract_static', 'method_protected_static', 'phpunit', 'private', 'property']],
        'ordered_imports' => ['sort_algorithm' => 'alpha', 'imports_order' => ['const', 'class', 'function']],
        'ordered_interfaces' => true,
        'ordered_traits' => true,
        'php_unit_fqcn_annotation' => true,
        'phpdoc_add_missing_param_annotation' => ['only_untyped' => false],
        'phpdoc_align' => ['align' => 'vertical'],
        'phpdoc_indent' => true,
        'phpdoc_inline_tag_normalizer' => true,
        'phpdoc_line_span' => true,
        'phpdoc_no_access' => true,
        'phpdoc_no_empty_return' => true,
        'phpdoc_no_package' => true,
        'phpdoc_no_useless_inheritdoc' => true,
        'phpdoc_order_by_value' => true,
        'phpdoc_order' => true,
        'phpdoc_return_self_reference' => ['replacements' => ['this' => 'self']],
        'phpdoc_scalar' => true,
        'phpdoc_separation' => true,
        'phpdoc_single_line_var_spacing' => true,
        'phpdoc_summary' => true,
        'phpdoc_tag_type' => true,
        'phpdoc_to_comment' => ['ignored_tags' => ['var']],
        'phpdoc_trim_consecutive_blank_line_separation' => true,
        'phpdoc_trim' => true,
        'phpdoc_types_order' => true,
        'phpdoc_types' => true,
        'phpdoc_var_annotation_correct_order' => true,
        'phpdoc_var_without_name' => true,
        'pow_to_exponentiation' => true,
        'protected_to_private' => true,
        'psr_autoloading' => true,
        'random_api_migration' => true,
        'regular_callable_call' => true,
        'return_assignment' => true,
        'return_type_declaration' => ['space_before' => 'none'],
        'return_type_declaration' => true,
        'self_accessor' => true,
        'self_static_accessor' => true,
        'semicolon_after_instruction' => true,
        'set_type_to_cast' => true,
        'short_scalar_cast' => true,
        'simple_to_complex_string_variable' => true,
        'simplified_if_return' => true,
        'single_blank_line_at_eof' => true,
        'single_blank_line_before_namespace' => true,
        'single_class_element_per_statement' => true,
        'single_line_after_imports' => true,
        'single_line_comment_spacing' => true,
        'single_line_comment_style' => ['comment_types' => ['hash']],
        'single_line_throw' => true,
        'single_quote' => true,
        'single_space_after_construct' => true,
        'single_space_around_construct' => true,
        'single_trait_insert_per_statement' => true,
        'space_after_semicolon' => true,
        'standardize_increment' => true,
        'standardize_not_equals' => true,
        'statement_indentation' => true,
        'static_lambda' => false,
        'strict_comparison' => true,
        'strict_param' => true,
        'string_length_to_empty' => true,
        'string_line_ending' => true,
        'switch_case_semicolon_to_colon' => true,
        'switch_case_space' => true,
        'switch_continue_to_break' => true,
        'ternary_operator_spaces' => true,
        'ternary_to_elvis_operator' => true,
        'ternary_to_null_coalescing' => true,
        'trailing_comma_in_multiline' => ['after_heredoc' => true, 'elements' => ['arguments', 'arrays', 'match', 'parameters']],
        'trim_array_spaces' => true,
        'types_spaces' => ['space' => 'single', 'space_multiple_catch' => 'single'],
        'unary_operator_spaces' => true,
        'use_arrow_functions' => true,
        'visibility_required' => true,
        'void_return' => true,
        'whitespace_after_comma_in_array' => true,
        'yoda_style' => true,
    ])
    ->setFinder(
        PhpCsFixer\Finder::create()
            ->exclude('vendor')
            ->in([__DIR__ . '/src/', __DIR__ . '/deprecated/']),
    );


================================================
FILE: .phpcs.xml.dist
================================================
<?xml version="1.0"?>
<ruleset>
    <rule ref="Squiz.Commenting.FunctionComment">
        <properties>
            <property name="minimumVisibility" value="public" />
            <property name="skipIfInheritdoc" value="true" />
        </properties>
    </rule>

	<rule ref="Generic.PHP.Syntax">
		<exclude name="Generic.PHP.Syntax" />
	</rule>
</ruleset>


================================================
FILE: .semgrepignore
================================================
.github/
docs/
examples/
tests/
\*.md


================================================
FILE: .shiprc
================================================
{
  "files": {
    "src/ServiceAbstract.php": [],
    ".version": []
  },
  "prefixVersion": false
}


================================================
FILE: .version
================================================
7.22.0


================================================
FILE: CHANGELOG.ARCHIVE.md
================================================
# Changelog Archive

This file contains changes for all versions of this package prior to the latest major, 7.0.

The changelog for the latest changes is [CHANGELOG.md](./CHANGELOG.md).

## [6.5.0](https://github.com/auth0/laravel-auth0/tree/6.5.0) (2021-10-15)

### Added

-   Add SDK alias methods for passwordless endpoints [\#228](https://github.com/auth0/laravel-auth0/pull/228)

## [6.4.1](https://github.com/auth0/laravel-auth0/tree/6.4.0) (2021-08-02)

### Fixed

-   Use the fully qualified facade class names [\#215](https://github.com/auth0/laravel-auth0/pull/215)
-   Update auth0-PHP dependency [\#222](https://github.com/auth0/laravel-auth0/pull/222)
-   Pass api_identifier config as audience to Auth0\SDK\Auth0 [\#214](https://github.com/auth0/laravel-auth0/pull/214)

## [6.4.0](https://github.com/auth0/laravel-auth0/tree/6.4.0) (2021-03-25)

### Improved

-   Add support for Auth0 Organizations [\#209](https://github.com/auth0/laravel-auth0/pull/209)

## [6.3.0](https://github.com/auth0/laravel-auth0/tree/6.3.0) (2020-02-18)

### Improved

-   Store changes made to the user object during the onLogin event hook [\#206](https://github.com/auth0/laravel-auth0/pull/206)

### Fixed

-   Avoid throwing an error when calling getUserByUserInfo() during login callback event when the supplied profile is empty/null [\#207](https://github.com/auth0/laravel-auth0/pull/207)

## [6.2.0](https://github.com/auth0/laravel-auth0/tree/6.2.0) (2020-01-15)

### Added

-   Support PHP 8.0 [\#200](https://github.com/auth0/laravel-auth0/pull/200)

### Fixed

-   Fix the missing `return null;` in `getUserByIdentifier` [\#201](https://github.com/auth0/laravel-auth0/pull/201)

## [6.1.0](https://github.com/auth0/laravel-auth0/tree/6.1.0) (2020-09-17)

### Added

-   Support Laravel 8 [\#190](https://github.com/auth0/laravel-auth0/pull/190)

### Fixed

-   Fix composer.json whitespace issue [\#192](https://github.com/auth0/laravel-auth0/pull/192)

## [6.0.1](https://github.com/auth0/laravel-auth0/tree/6.0.1) (2020-04-28)

### Fixed

-   Fix access token decoding and validation [\#183](https://github.com/auth0/laravel-auth0/pull/183)

## [6.0.0](https://github.com/auth0/laravel-auth0/tree/6.0.0) (2020-04-09)

**This is a major release and includes breaking changes!** This release also includes a major version change for the PHP SDK that it relies on. Please see the [migration guide](https://github.com/auth0/auth0-PHP/blob/master/MIGRATE-v5-TO-v7.md) for the PHP SDK for more information.

### Added

-   auth0-PHP 7.0 - State and nonce handling [\#163](https://github.com/auth0/laravel-auth0/issues/163)
-   Implement auth0 guard [\#166](https://github.com/auth0/laravel-auth0/pull/166)

### Improved

-   Use array for Auth0JWTUser and add repo return types [\#176](https://github.com/auth0/laravel-auth0/pull/176)
-   Update PHP SDK to v7.0.0 [\#162](https://github.com/auth0/laravel-auth0/pull/162)
-   Bind SessionState handler interface in container [\#147](https://github.com/auth0/laravel-auth0/pull/147)

### Fixed

-   Fix Laravel session management [\#174](https://github.com/auth0/laravel-auth0/pull/174)
-   Cannot use actingAs unit tests functionality [\#161](https://github.com/auth0/laravel-auth0/issues/161)

## [5.4.0](https://github.com/auth0/laravel-auth0/tree/5.4.0) (2020-03-27)

### Added

-   Laravel 7 support [\#167](https://github.com/auth0/laravel-auth0/pull/167)

### Fixed

-   Laravel 7.0 supported release. [\#171](https://github.com/auth0/laravel-auth0/issues/171)
-   Fixed PHPDocs [\#170](https://github.com/auth0/laravel-auth0/pull/170)

## [5.3.1](https://github.com/auth0/laravel-auth0/tree/5.3.1) (2019-11-14)

### Fixed

-   Setting of state_handler in Auth0Service causes "Invalid state" error [\#154](https://github.com/auth0/laravel-auth0/issues/154)
-   Allow store and state_handler to be passed in from config [\#156](https://github.com/auth0/laravel-auth0/pull/156)
-   Add 'persist_refresh_token' key to laravel-auth0 configuration file. [\#152](https://github.com/auth0/laravel-auth0/pull/152)
-   Replace `setEnvironment` with `setEnvProperty` [\#145](https://github.com/auth0/laravel-auth0/pull/145)

## [5.3.0](https://github.com/auth0/laravel-auth0/tree/5.3.0) (2019-09-26)

### Added

-   Support Laravel 6 [\#139](https://github.com/auth0/laravel-auth0/pull/139)
-   Feature request: Add Laravel 6 support [\#138](https://github.com/auth0/laravel-auth0/issues/138)

### Fixed

-   Use LaravelSessionStore in the SessionStateHandler. [\#135](https://github.com/auth0/laravel-auth0/pull/135)
-   SessionStateHandler should use LaravelSessionStore not SessionStore [\#125](https://github.com/auth0/laravel-auth0/issues/125)

## [5.2.0](https://github.com/auth0/laravel-auth0/tree/5.2.0) (2019-06-27)

### Added

-   Authenticate as a Laravel API user using the Auth0 token [\#129](https://github.com/auth0/laravel-auth0/issues/129)
-   Redirect to previous page after login [\#122](https://github.com/auth0/laravel-auth0/issues/122)
-   Auth0User uses private variables so they cannot be accessed or overridden in child class [\#120](https://github.com/auth0/laravel-auth0/issues/120)
-   API routes broken in auth0-laravel-php-web-app (and in general)? [\#117](https://github.com/auth0/laravel-auth0/issues/117)
-   API returning "token algorithm not supported" [\#116](https://github.com/auth0/laravel-auth0/issues/116)
-   Changing name of user identifier [\#115](https://github.com/auth0/laravel-auth0/issues/115)
-   Possible to use User object functions? [\#114](https://github.com/auth0/laravel-auth0/issues/114)
-   Auth0-PHP@5.3.1 breaks Laravel-Auth0 [\#108](https://github.com/auth0/laravel-auth0/issues/108)
-   Extend Illuminate\Foundation\Auth\User [\#104](https://github.com/auth0/laravel-auth0/issues/104)
-   [Bug] Inconsistencies with the singleton Auth0Service [\#103](https://github.com/auth0/laravel-auth0/issues/103)
-   How do you combine Auth0 Lock with Laravel Auth0? [\#102](https://github.com/auth0/laravel-auth0/issues/102)
-   OnLogin callback question [\#97](https://github.com/auth0/laravel-auth0/issues/97)
-   Add composer.lock file [\#123](https://github.com/auth0/laravel-auth0/pull/123) ([lbalmaceda](https://github.com/lbalmaceda))

### Improved

-   Change private properties to protected [\#132](https://github.com/auth0/laravel-auth0/pull/132)
-   Return null instead of false in Auth0UserProvider. [\#128](https://github.com/auth0/laravel-auth0/pull/128)
-   Change the visibility of the getter method from private to public [\#121](https://github.com/auth0/laravel-auth0/pull/121)
-   Updated required PHP version to 5.4 in composer [\#118](https://github.com/auth0/laravel-auth0/pull/118)
-   Changed arrays to use short array syntax [\#110](https://github.com/auth0/laravel-auth0/pull/110)

### Fixed

-   Fix cachehandler resolving issues [\#131](https://github.com/auth0/laravel-auth0/pull/131)
-   Added the Auth0Service as a singleton through the classname [\#107](https://github.com/auth0/laravel-auth0/pull/107)
-   Fixed typo [\#106](https://github.com/auth0/laravel-auth0/pull/106)

## [5.1.0](https://github.com/auth0/laravel-auth0/tree/5.1.0) (2018-03-20)

### Added

-   AutoDiscovery [\#91](https://github.com/auth0/laravel-auth0/pull/91) ([m1guelpf](https://github.com/m1guelpf))
-   Added guzzle options to config to allow for connection options [\#88](https://github.com/auth0/laravel-auth0/pull/88)

### Improved

-   Change default settings file [\#96](https://github.com/auth0/laravel-auth0/pull/96)
-   Utilise Auth0->Login to ensure state validation [\#90](https://github.com/auth0/laravel-auth0/pull/90)

### Fixed

-   Make code comments gender neutral [\#98](https://github.com/auth0/laravel-auth0/pull/98)
-   Fix README and CHANGELOG [\#99](https://github.com/auth0/laravel-auth0/pull/99)
-   pls change config arg name [\#95](https://github.com/auth0/laravel-auth0/issues/95)

## [5.0.2](https://github.com/auth0/laravel-auth0/tree/5.0.2) (2017-08-30)

### Fixed

-   Use instead of to identify the Auth0 user [\#80](https://github.com/auth0/laravel-auth0/pull/80)

## [5.0.1](https://github.com/auth0/laravel-auth0/tree/5.0.1) (2017-02-23)

### Fixed

-   Fixed `supported_algs` configuration name

## [5.0.0](https://github.com/auth0/laravel-auth0/tree/5.0.0) (2017-02-22)

### Fixed

-   V5: update to auth0 sdk v5 [\#69](https://github.com/auth0/laravel-auth0/pull/69)

## [4.0.8](https://github.com/auth0/laravel-auth0/tree/4.0.8) (2017-01-27)

### Fixed

-   Allow use of RS256 Protocol [\#63](https://github.com/auth0/wp-auth0/issues/63)
-   Add RS256 to the list of supported algorithms [\#62](https://github.com/auth0/wp-auth0/issues/62)
-   allow to configure the algorithm supported for token verification [\#65](https://github.com/auth0/laravel-auth0/pull/65)

## [4.0.7](https://github.com/auth0/laravel-auth0/tree/4.0.7) (2017-01-02)

### Fixed

-   it should pass all the configs to the oauth client [\#64](https://github.com/auth0/laravel-auth0/pull/64)

## [4.0.6](https://github.com/auth0/laravel-auth0/tree/4.0.6) (2016-11-29)

### Fixed

-   Code style & docblocks [\#56](https://github.com/auth0/laravel-auth0/pull/56)
-   Adding accessor to retrieve JWT from Auth0Service [\#58](https://github.com/auth0/laravel-auth0/pull/58)

## [4.0.5](https://github.com/auth0/laravel-auth0/tree/4.0.5) (2016-11-29)

### Fixed

-   Added flag for not encoded tokens + removed example [\#57](https://github.com/auth0/laravel-auth0/pull/57)

## [4.0.4](https://github.com/auth0/laravel-auth0/tree/4.0.4) (2016-11-25)

### Fixed

-   Fixing config type [\#55](https://github.com/auth0/laravel-auth0/pull/55)

## [4.0.2](https://github.com/auth0/laravel-auth0/tree/4.0.2) (2016-10-03)

### Fixed

-   Fixing JWTVerifier [\#54](https://github.com/auth0/laravel-auth0/pull/54)

## [4.0.1](https://github.com/auth0/laravel-auth0/tree/4.0.1) (2016-09-19)

### Fixed

-   Fix error becuase of contract and class with the same name [\#52](https://github.com/auth0/laravel-auth0/pull/52)

## [4.0.0](https://github.com/auth0/laravel-auth0/tree/4.0.0) (2016-09-15)

### Improved

-   Better support for Laravel 5.3: Support for Laravel Passport for token verification
    Support of auth0 PHP sdk v4 with JWKs cache

### Fixed

-   Merge pull request #50 from auth0/4.x.x-dev [\#50](https://github.com/auth0/laravel-auth0/pull/50)

## [3.2.1](https://github.com/auth0/laravel-auth0/tree/3.2.1) (2016-09-12)

### Fixed

-   Fix for Laravel 5.2 [\#49](https://github.com/auth0/laravel-auth0/pull/49)

## [3.2.0](https://github.com/auth0/laravel-auth0/tree/3.2.0) (2016-07-11)

### Fixed

-   New optional jwt middleware [\#40](https://github.com/auth0/laravel-auth0/pull/40)

## [3.1.0](https://github.com/auth0/laravel-auth0/tree/3.1.0) (2016-05-02)

### Fixed

-   3.1.0 [\#36](https://github.com/auth0/laravel-auth0/pull/36)

## [3.0.3](https://github.com/auth0/laravel-auth0/tree/3.0.3) (2016-01-28)

### Fixed

-   Tag 2.2.2 breaks on Laravel 5.1 [\#30](https://github.com/auth0/laravel-auth0/issues/30)
-   Conform to 5.2's Authenticatable contract [\#31](https://github.com/auth0/laravel-auth0/pull/31)

## [3.0.2](https://github.com/auth0/laravel-auth0/tree/3.0.2) (2016-01-25)

### Fixed

-   Added optional persistence configuration values [\#29](https://github.com/auth0/laravel-auth0/pull/29)

## [2.2.1](https://github.com/auth0/laravel-auth0/tree/2.2.1) (2016-01-22)

### Fixed

-   Create a logout route [\#25](https://github.com/auth0/laravel-auth0/issues/25)
-   Auth0 SDK checks for null values instead of false [\#27](https://github.com/auth0/laravel-auth0/pull/27)

## [3.0.1](https://github.com/auth0/laravel-auth0/tree/3.0.1) (2016-01-18)

### Fixed

-   updated auth0-php dependency [\#24](https://github.com/auth0/laravel-auth0/pull/24)

## [3.0.0](https://github.com/auth0/laravel-auth0/tree/3.0.0) (2016-01-06)

### Fixed

-   auth0/auth0-php ~1.0 requirement doesn't support latest GuzzleHttp [\#21](https://github.com/auth0/laravel-auth0/issues/21)
-   updated to be compatible with laravel 5.2 [\#23](https://github.com/auth0/laravel-auth0/pull/23)

## [2.2.0](https://github.com/auth0/laravel-auth0/tree/2.2.0) (2015-11-30)

### Fixed

-   updated auth0-php dependency version [\#22](https://github.com/auth0/laravel-auth0/pull/22)
-   Update login.blade.php [\#20](https://github.com/auth0/laravel-auth0/pull/20)

## [2.1.4](https://github.com/auth0/laravel-auth0/tree/2.1.4) (2015-10-27)

### Fixed

-   Middleware contract has been deprecated in 5.1 [\#19](https://github.com/auth0/laravel-auth0/pull/19)
-   Fixed some typo's in the comments. [\#18](https://github.com/auth0/laravel-auth0/pull/18)
-   Removed note about unstable dependency from README [\#17](https://github.com/auth0/laravel-auth0/pull/17)
-   Update composer instructions [\#16](https://github.com/auth0/laravel-auth0/pull/16)
-   Use a tagged release of adoy/oauth2 [\#15](https://github.com/auth0/laravel-auth0/pull/15)

## [2.1.3](https://github.com/auth0/laravel-auth0/tree/2.1.3) (2015-07-17)

### Fixed

-   updated jwt dependency [\#14](https://github.com/auth0/laravel-auth0/pull/14)

## [2.1.2](https://github.com/auth0/laravel-auth0/tree/2.1.2) (2015-05-15)

### Fixed

-   Added override of info headers [\#13](https://github.com/auth0/laravel-auth0/pull/13)

## [2.1.1](https://github.com/auth0/laravel-auth0/tree/2.1.1) (2015-05-12)

### Fixed

-   SDK Client headers spec compliant [\#11](https://github.com/auth0/laravel-auth0/issues/11)
-   Support for Laravel 5? [\#6](https://github.com/auth0/laravel-auth0/issues/6)
-   SDK Client headers spec compliant \#11 [\#12](https://github.com/auth0/laravel-auth0/pull/12)

## [2.1.0](https://github.com/auth0/laravel-auth0/tree/2.1.0) (2015-05-07)

### Fixed

-   Upgrade to auth-php 1.0.0: Added support to API V2 [\#10](https://github.com/auth0/laravel-auth0/pull/10)

## [2.0.0](https://github.com/auth0/laravel-auth0/tree/2.0.0) (2015-04-20)

### Fixed

-   Package V2 for Laravel5 [\#9](https://github.com/auth0/laravel-auth0/pull/9)

## [1.0.8](https://github.com/auth0/laravel-auth0/tree/1.0.8) (2015-04-14)

-   [Full Changelog](https://github.com/auth0/laravel-auth0/compare/1.0.7...1.0.8)

## [1.0.7](https://github.com/auth0/laravel-auth0/tree/1.0.7) (2015-04-13)

### Fixed

-   Fixed the way the access token is pased to the A0User [\#7](https://github.com/auth0/laravel-auth0/pull/7)
-   Update README.md [\#5](https://github.com/auth0/laravel-auth0/pull/5)

## [1.0.6](https://github.com/auth0/laravel-auth0/tree/1.0.6) (2014-08-01)

-   [Full Changelog](https://github.com/auth0/laravel-auth0/compare/1.0.5...1.0.6)

## [1.0.5](https://github.com/auth0/laravel-auth0/tree/1.0.5) (2014-08-01)

### Fixed

-   Problem with normal laravel user table [\#4](https://github.com/auth0/laravel-auth0/issues/4)
-   Update README.md [\#3](https://github.com/auth0/laravel-auth0/pull/3)

## [1.0.4](https://github.com/auth0/laravel-auth0/tree/1.0.4) (2014-05-07)

-   [Full Changelog](https://github.com/auth0/laravel-auth0/compare/1.0.3...1.0.4)

## [1.0.3](https://github.com/auth0/laravel-auth0/tree/1.0.3) (2014-04-21)

-   [Full Changelog](https://github.com/auth0/laravel-auth0/compare/1.0.0...1.0.3)


================================================
FILE: CHANGELOG.md
================================================
# Change Log

## [7.22.0](https://github.com/auth0/laravel-auth0/tree/7.22.0) (2026-04-08)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.21.0...7.22.0)

**Added**

- Laravel 13 support [\#491](https://github.com/auth0/laravel-auth0/pull/491) ([cosmastech](https://github.com/cosmastech))

**Fixed**

- Add missing hashPasswordForCookie to AuthenticationGuard [\#492](https://github.com/auth0/laravel-auth0/pull/492) ([steffjenl](https://github.com/steffjenl))

**Changed**

- Add PHP 8.4 to CI test matrix, cap Psalm <6.5, disable static_lambda CS rule for PHP 8.5+ compat [\#491](https://github.com/auth0/laravel-auth0/pull/491) ([kishore7snehil](https://github.com/kishore7snehil))

## [7.21.0](https://github.com/auth0/laravel-auth0/tree/7.21.0) (2026-04-01)
[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.20.0...7.21.0)

**Fixed**

- Security fix: Resolve CVE-2026-34236

## [7.20.0](https://github.com/auth0/laravel-auth0/tree/7.20.0) (2025-12-16)
[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.19.0...7.20.0)

**Fixed**

- Security fix: Resolve CVE-2025-68129

## [7.19.0](https://github.com/auth0/laravel-auth0/tree/7.19.0) (2025-10-01)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.18.0...7.19.0)

**Fixed**

-   Security fix: Resolve CVE-2025-58769

## [7.18.0](https://github.com/auth0/laravel-auth0/tree/7.18.0) (2025-09-02)
[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.17.0...7.18.0)

**Added**
- Mixed changes: feature, fixes, and docs from community [\#477](https://github.com/auth0/laravel-auth0/pull/477) ([kishore7snehil](https://github.com/kishore7snehil))

## [7.17.0](https://github.com/auth0/laravel-auth0/tree/7.17.0) (2025-05-16)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.16.0...7.17.0)

**Fixed**

-   Security fix: Resolve CVE-2025-47275

## [7.16.0](https://github.com/auth0/laravel-auth0/tree/7.16.0) (2025-04-06)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.15.0...7.16.0)

**Added**

-   Laravel 12 Support [\#470](https://github.com/auth0/laravel-auth0/pull/470) ([lee-to](https://github.com/lee-to))

**Fixed**

-   refactor: fix failing tests  [\#471](https://github.com/auth0/laravel-auth0/pull/471) ([noevidenz](https://github.com/noevidenz))

## [7.15.0](https://github.com/auth0/laravel-auth0/tree/7.15.0) (2024-06-03)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.14.0...7.15.0)

**Changed**

-   perf: Update getCredential to only refresh credential once per request [\#453](https://github.com/auth0/laravel-auth0/pull/453) ([ComputerTinker](https://github.com/ComputerTinker))

## [7.14.0](https://github.com/auth0/laravel-auth0/tree/7.14.0) (2024-04-01)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.13.0...7.14.0)

**Changed**

-   refactor: add additional Telescope state check [\#447](https://github.com/auth0/laravel-auth0/pull/447) ([samuelhgf](https://github.com/samuelhgf))
-   chore(deps): replace temporary `psalm-laravel-plugin` fork with official [\#448](https://github.com/auth0/laravel-auth0/pull/448) ([alies-dev](https://github.com/alies-dev))

## [7.13.0](https://github.com/auth0/laravel-auth0/tree/7.13.0) (2024-03-11)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.12.0...7.13.0)

**Added**

-   Add support for Laravel 11 [\#445](https://github.com/auth0/laravel-auth0/pull/445) ([evansims](https://github.com/evansims))

**Changed**

-   Verify that Telescope is enabled via configuration helper [\#444](https://github.com/auth0/laravel-auth0/pull/444) ([samuelhgf](https://github.com/samuelhgf))

## [7.12.0](https://github.com/auth0/laravel-auth0/tree/7.12.0) (2023-12-07)

[Full Changelog](https://github.com/auth0/laravel-auth0/compare/7.11.0...7.12.0)

**Added**

-   Implement support for Back-Channel Logout [\#435](https://github.com/auth0/laravel-auth0/pull/435) ([evansims](https://github.com/evansims))
-   Restore configurable route paths [\#436](https://github.com/auth0/laravel-auth0/pull/436) ([evansims](https://github.com/evansims))

**Fixed**

-   Resolve `CacheBridgeAbstract::save()` not storing values when cache misses [\#434](https://github.com/auth0/laravel-auth0/pull/434) ([seruymt](https://github.com/seruymt))

## [7.11.0](https://github.com/auth0/laravel-auth0/tree/7.11.0) (2023-08-08)

**Added**

-   Significant performance improvements by eliminating redundant user queries.
-   Compatibility support for [Laravel Telescope](https://laravel.com/docs/telescope). See [docs/Telescope.md](./docs/Telescope.md) for more information.
-   A refactored Events API has been introduced. See [docs/Events.md](./docs/Events.md) for more information.
-   `AUTH0_SESSION_STORAGE` and `AUTH0_TRANSIENT_STORAGE` now support a `cookie` value to enable the native Auth0-PHP SDK cookie session handler. See [docs/Cookies.md](./docs/Cookies.md) for more information.

**Fixed**

-   Addressed an issue where, under certain circumstances, the first user authentication attempt after a session invalidation could fail.

**Changed**

-   Session regeneration/invalidation has been refactored.
-   Discarded sessions are now deleted when they are invalidated by the SDK, rather than wait for Laravel to garbage collect.
-   Session storage has been refactored. Session data is now stored as a JSON array in a single `auth0_session` entry in the Laravel session store, rather than in multiple keys.

**Documentation**

-   A demonstration Eloquent user model and repository implementation has been added to [docs/Eloquent.md](./docs/Eloquent.md).
-   A new [docs/Sessions.md](./docs/Sessions.md) document has been added for guidance on the various session driver options available.

## [7.10.1](https://github.com/auth0/laravel-auth0/tree/7.10.1) (2023-08-07)

**Fixed**

-   Addressed an issue where, under certain circumstances, permissions state could be lost after authenticating.

## [7.10.0](https://github.com/auth0/laravel-auth0/tree/7.10.0) (2023-07-24)

**Added**

-   Organization Name support added for Authentication API and token handling ¹

**Changed**

-   Guards are now registered with the priority middleware list.
-   Bumped `auth0-php` dependency version range to `^8.7`.
-   Updated telemetry to indicate new `laravel` package name (previously `laravel-auth0`.)

**Fixed**

-   Addressed issue where placeholder `AUTH0_` dotenv values could erroneously be interpreted as true configuration values.

> **Note**
> ¹ To use this feature, an Auth0 tenant must have support for it enabled. This feature is not yet available to all tenants.

## [7.9.1](https://github.com/auth0/laravel-auth0/tree/7.9.1) (2023-06-21)

**Fixed**

-   Resolved an issue where, under certain circumstances, the AuthenticationGuard middleware could get erroneously added to the `api` middleware group, causing a session to be established in a stateless request. ([\#415](https://github.com/auth0/laravel-auth0/pull/415))

## [7.9.0](https://github.com/auth0/laravel-auth0/tree/7.9.0) (2023-06-15)

**Added**

-   SDK configuration (`config/auth0.php`) now supports a `configurationPath` property for specifying a custom search path for `.auth0.*.json` and `.env*` files. ([\#407](https://github.com/auth0/laravel-auth0/pull/407))
-   `Auth0\Laravel\Guards\GuardAbstract` now extends `Illuminate\Contracts\Auth\Guard`. ([\#410](https://github.com/auth0/laravel-auth0/pull/410))

**Fixed**

-   Resolved host environment variables not being loaded as expected when a `.env` file is also used. ([\#408](https://github.com/auth0/laravel-auth0/pull/408))
-   Resolved surrounding quote characters not being trimmed from environment variables and `.env` files during processing. ([\#409](https://github.com/auth0/laravel-auth0/pull/409))

## [7.8.1](https://github.com/auth0/laravel-auth0/tree/7.8.1) (2023-05-19)

**Fixed**

-   Resolved an issue where parsing `.env` files could sometimes throw an exception when handling non-key-value pair strings. ([\#395](https://github.com/auth0/laravel-auth0/pull/395))

## [7.8.0](https://github.com/auth0/laravel-auth0/tree/7.8.0) (2023-05-18)

**Added**

-   This release adds support for authenticating using **[Pushed Authorization Requests](https://www.rfc-editor.org/rfc/rfc6749)**.

-   This release introduces **two new Authentication Guards** which provide a streamlined integration experience for developers that need to simultaneously support both session-based authentication and token-based endpoint authorization in their Laravel applications.

    | Guard                 | Class                                           | Description                   |
    | --------------------- | ----------------------------------------------- | ----------------------------- |
    | `auth0.authenticator` | `Auth0\Laravel\Auth\Guards\AuthenticationGuard` | Session-based authentication. |
    | `auth0.authorizer`    | `Auth0\Laravel\Auth\Guards\AuthorizationGuard`  | Token-based authorization.    |

-   These guards are compatible with Laravel's Authentication API and support the standard `auth` middleware.

-   These guards are compatible with Laravel's Authorization API and support the standard `can` middleware, and the `Guard` facade, and work with the Policies API.

-   3 new pre-built Guards are available: `scope` and `permission`, as well as a dynamic `*:*`. This enables you to verify whether the user's access token has a particular scope or (if RBAC is enabled on the Auth0 API) a particular permission. For example `Gate::check('scope', 'email')` or `Route::get(/*...*/)->can('read:messages')`.

-   The SDK now automatically registers these guards to Laravel's standard `web` and `api` middleware groups, respectively. Manual Guard setup in `config/auth.php` is no longer necessary.

-   The SDK now automatically registers the Authentication routes. Manual route setup in `routes/web.php` is no longer necessary.

-   2 new routing Middleware have been added: `Auth0\Laravel\Http\Middleware\AuthenticatorMiddleware` and `Auth0\Laravel\Http\Middleware\AuthorizerMiddleware`. These are automatically registered with your Laravel application, and ensure the Auth0 Guards are used for authentication for `web` routes and authorization for `api` routes, respectively. This replaces the need for the `guard` middleware or otherwise manual Guard assignment in your routes.

**Changed**

-   We've introduced **a new configuration syntax**. This new syntax is more flexible and allows for more complex configuration scenarios, and introduces support for multiple guard instances. Developers using the previous syntax will have their existing configurations applied to all guards uniformly.

-   The SDK can now **configure itself using a `.auth0.json` file in the project root directory**. This file can be generated [using the Auth0 CLI](./docs/Configuration.md), and provides a significantly simpler configuration experience for developers.

-   The previous `auth0.guard` Guard (`Auth0\Laravel\Auth\Guard`) has been **refactored** as a lightweight wrapper around the new `AuthenticationGuard` and `AuthorizationGuard` guards.

## [7.7.0](https://github.com/auth0/laravel-auth0/tree/7.7.0) (2023-04-26)

**Added**

-   `Auth0\Laravel\Auth0` now has a `management()` shortcut method for issuing Management API calls. ([\#376](https://github.com/auth0/laravel-auth0/pull/376))

-   `Auth0\Laravel\Auth0\Guard` now has a `refreshUser()` method for querying `/userinfo` endpoint and refreshing the authenticated user's cached profile data. ([\#375](https://github.com/auth0/laravel-auth0/pull/375))

-   `Auth0\Laravel\Http\Controller\Stateful\Login` now raises a `LoginAttempting` event, offering an opportunity to customize the authorization parameters before the login redirect is issued. ([\#382](https://github.com/auth0/laravel-auth0/pull/382))

**Changed**

-   The `tokenCache`, `managementTokenCache`, `sessionStorage` and `transientStorage` configuration values now support `false` or `string` values pointing to class names (e.g. `\Some\Cache::class`) or class aliases (e.g. `cache.psr6`) registered with Laravel. ([\#381](https://github.com/auth0/laravel-auth0/pull/381))

## [7.6.0](https://github.com/auth0/laravel-auth0/tree/7.6.0) (2023-04-12)

**Added**

-   `Auth0\Laravel\Http\Middleware\Guard`, new middleware that forces Laravel to route requests through a group using a specific Guard. ([\#362](https://github.com/auth0/laravel-auth0/pull/362))

**Changed**

-   `Auth0\Laravel\Http\Middleware\Stateful\Authenticate` now remembers the intended route (using `redirect()->setIntendedUrl()`) before kicking off the authentication flow redirect. Users will be returned to the memorized intended route after completing their authentication flow. ([\#364](https://github.com/auth0/laravel-auth0/pull/364))

**Fixed**

-   legacyGuardUserMethod behavior should use `$session`, not `$token` ([\#353](https://github.com/auth0/laravel-auth0/pull/365))

## [7.5.2](https://github.com/auth0/laravel-auth0/tree/7.5.2) (2023-04-10)

**Fixed**

-   Relaxed response types from middleware to use low-level `Symfony\Component\HttpFoundation\Response` class, allowing for broader and custom response types.

## [7.5.1](https://github.com/auth0/laravel-auth0/tree/7.5.1) (2023-04-04)

**Fixed**

-   Resolved an issue wherein custom user repositories could fail to be instantiated under certain circumstances.

## [7.5.0](https://github.com/auth0/laravel-auth0/tree/7.5.0) (2023-04-03)

This release includes support for Laravel 10, and major improvements to the internal state handling mechanisms of the SDK.

**Added**

-   Support for Laravel 10 [#349](https://github.com/auth0/laravel-auth0/pull/349)
-   New `Auth0\Laravel\Traits\Imposter` trait to allow for easier testing. [Example usage](./tests/Unit/Traits/ImpersonateTest.php)
-   New Exception types have been added for more precise error-catching.

**Changed**

The following changes have no effect on the external API of this package but may affect internal usage.

-   `Guard` will now more reliably detect changes in the underlying Auth0-PHP SDK session state.
-   `Guard` will now more reliably sync changes back to the underlying Auth0-PHP SDK session state.
-   `StateInstance` concept has been replaced by a new `Credentials` entity.
-   `Guard` updated to use new `Credentials` entity as primary internal storage for user data.
-   `Auth0\Laravel\Traits\ActingAsAuth0User` was updated to use new `Credentials` entity.
-   The HTTP middleware has been refactored to more clearly differentiate between token and session-based identities.
-   The `authenticate`, `authenticate.optional` and `authorize.optional` HTTP middleware now supports scope filtering, as `authorize` already did.

-   Upgraded test suite to use PEST 2.0 framework.
-   Updated test coverage to 100%.

**Fixed**

-   A 'Session store not set on request' error could occur when downstream applications implemented unit testing that uses the Guard. This should be resolved now.
-   `Guard` would not always honor the `provider` configuration value in `config/auth.php`.
-   `Guard` is no longer defined as a Singleton to better support applications that need multi-guard configurations.

### Notes

#### Changes to `user()` behavior

This release includes a significant behavior change around the `user()` method of the Guard. Previously, by simply invoking the method, the SDK would search for any available credential (access token, device session, etc.) and automatically assign the user within the Guard. The HTTP middleware has been upgraded to handle the user assignment step, and `user()` now only returns the current state of the user assignment without altering it.

A new property has been added to the `config/auth0.php` configuration file: `behavior`. This is an array. At this time, there is a single option: `legacyGuardUserMethod`, a bool. If this value is set to true, or if the key is missing, the previously expected behavior will be applied, and `user()` will behave as it did before this release. The property defaults to `false`.

#### Changes to Guard and Provider driver aliases

We identified an issue with using identical alias naming for both the Guard and Provider singletons under Laravel 10, which has required us to rename these aliases. As previous guidance had been to instantiate these using their class names, this should not be a breaking change in most cases. However, if you had used `auth0` as the name for either the Guard or the Provider drivers, kindly note that these have changed. Please use `auth0.guard` for the Guard driver and `auth0.provider` for the Provider driver. This is a regrettable change but was necessary for adequate Laravel 10 support.

## [7.4.0](https://github.com/auth0/laravel-auth0/tree/7.4.0) (2022-12-12)

**Added**

-   feat: Add `Auth0\Laravel\Event\Middleware\...` event hooks [\#340](https://github.com/auth0/laravel-auth0/pull/340)
-   feat: Add `Auth0\Laravel\Event\Configuration\Building` event hook [\#339](https://github.com/auth0/laravel-auth0/pull/339)

## [7.3.0](https://github.com/auth0/laravel-auth0/tree/7.3.0) (2022-11-07)

**Added**

-   add: Raise additional Laravel Auth Events [\#331](https://github.com/auth0/laravel-auth0/pull/331)

**Fixed**

-   fix: `env()` incorrectly assigns `cookieExpires` to a `string` value [\#332](https://github.com/auth0/laravel-auth0/pull/332)
-   fix: Auth0\Laravel\Cache\LaravelCachePool::createItem returning a cache miss [\#329](https://github.com/auth0/laravel-auth0/pull/329)

## [7.2.2](https://github.com/auth0/laravel-auth0/tree/7.2.2) (2022-10-19)

**Fixed**

-   Restore `php artisan vendor:publish` command [\#321](https://github.com/auth0/laravel-auth0/pull/321)
-   Bump minimum `auth0/auth0-php` version to `^8.3.4` [\#322](https://github.com/auth0/laravel-auth0/pull/322)

## [7.2.1](https://github.com/auth0/laravel-auth0/tree/7.2.1) (2022-10-13)

**Fixed**

-   `Auth0\Laravel\Auth0` no longer requires a session configuration for stateless strategies, restoring previous behavior. [\#317](https://github.com/auth0/laravel-auth0/pull/317)
-   The SDK now requires `^3.0` of the `psr/cache` dependency, to accommodate breaking changes made in the upstream interface (typed parameters and return types) for PHP 8.0+. [\#316](https://github.com/auth0/laravel-auth0/pull/316)

## [7.2.0](https://github.com/auth0/laravel-auth0/tree/7.2.0) (2022-10-10)

**Changed**

-   `Auth0\Laravel\Store\LaravelSession` has been added as the default `sessionStorage` and `transientStorage` interfaces for the underlying [Auth0-PHP SDK](https://github.com/auth0/auth0-PHP/). The SDK now leverages the native [Laravel Session APIs](https://laravel.com/docs/9.x/session) by default. [\#307](https://github.com/auth0/laravel-auth0/pull/307)¹
-   `Auth0\Laravel\Cache\LaravelCachePool` and `Auth0\Laravel\Cache\LaravelCacheItem` have been added as the default `tokenCache` and `managementTokenCache` interfaces for the underlying [Auth0-PHP SDK](https://github.com/auth0/auth0-PHP/). The SDK now leverages the native [Laravel Cache APIs](https://laravel.com/docs/9.x/cache) by default. [\#307](https://github.com/auth0/laravel-auth0/pull/307)
-   `Auth0\Laravel\Auth\Guard` now supports the `viaRemember` method. [\#306](https://github.com/auth0/laravel-auth0/pull/306)
-   `Auth0\Laravel\Http\Middleware\Stateless\Authorize` now returns a 401 status instead of 403 for unauthenticated users. [\#304](https://github.com/auth0/laravel-auth0/issues/304)
-   PHP 8.0 is now the minimum supported runtime version. Please review the [README](README.md) for more information on support windows.

¹ This change may require your application's users to re-authenticate. You can avoid this by changing the `sessionStorage` and `transientStorage` options in your SDK configuration to their previous default instances of `Auth0\SDK\Store\CookieStore`, but it is recommended you migrate to the new `LaravelSession` default.

## [7.1.0](https://github.com/auth0/laravel-auth0/tree/7.1.0) (2022-08-08)

**Changed**

-   Return interfaces instead of concrete classes [\#296](https://github.com/auth0/laravel-auth0/pull/296)
-   change: Use class names for `app()` calls [\#291](https://github.com/auth0/laravel-auth0/pull/291)

**Fixed**

-   Fix: `Missing Code` error on Callback Route for Octane Customers [\#297](https://github.com/auth0/laravel-auth0/pull/297)

## [7.0.1](https://github.com/auth0/laravel-auth0/tree/7.0.1) (2022-06-01)

**Fixed**

-   Fixed an issue in `Auth0\Laravel\Http\Controller\Stateful\Callback` where `$errorDescription`'s value was assigned an incorrect value when an error was encountered. [\#266](https://github.com/auth0/laravel-auth0/pull/288)

## [7.0.0](https://github.com/auth0/laravel-auth0/tree/7.0.0) (2022-03-21)

Auth0 Laravel SDK v7 includes many significant changes over previous versions:

-   Support for Laravel 9.
-   Support for Auth0-PHP SDK 8.
-   New authentication route controllers for plug-and-play login support.
-   Improved authentication middleware for regular web applications.
-   New authorization middleware for token-based backend API applications.

As expected with a major release, Auth0 Laravel SDK v7 includes breaking changes. Please review the [upgrade guide](UPGRADE.md) thoroughly to understand the changes required to migrate your application to v7.

### Breaking Changes

-   Namespace has been updated from `Auth0\Login` to `Auth0\Laravel`
-   Auth0-PHP SDK dependency updated to V8
-   New configuration format
-   SDK now self-registers its services and middleware
-   New UserProvider API

> Changelog entries for releases prior to 8.0 have been relocated to [CHANGELOG.ARCHIVE.md](CHANGELOG.ARCHIVE.md).


================================================
FILE: LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2023 Auth0, Inc. <support@auth0.com> (https://auth0.com)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
![Auth0 Laravel SDK](https://cdn.auth0.com/website/sdks/banners/laravel-auth0-banner.png)

<div aria-label="Laravel SDK for Auth0 Authentication and Management APIs">
    <p aria-hidden="true" align="right">
        <a href="https://github.com/auth0/laravel-auth0/actions/workflows/tests.yml"><img src="https://github.com/auth0/laravel-auth0/actions/workflows/tests.yml/badge.svg" alt="Build Status"></a>
        <a href="https://codecov.io/gh/auth0/laravel-auth0"><img src="https://codecov.io/gh/auth0/laravel-auth0/branch/main/graph/badge.svg?token=vEwn6TPADf" alt="Code Coverage"></a>
        <a href="https://packagist.org/packages/auth0/laravel-auth0"><img src="https://img.shields.io/packagist/dt/auth0/login" alt="Total Downloads"></a>
        <a href="https://packagist.org/packages/auth0/login"><img src="https://img.shields.io/packagist/l/auth0/login" alt="License"></a>
    </p>
</div>

**The Auth0 Laravel SDK is a PHP package that integrates [Auth0](https://auth0.com) into your Laravel application.** It includes no-code user authentication, extensive Management API support, permissions-based routing access control, and more.

-   [Requirements](#requirements)
-   [Getting Started](#getting-started)
    -   [1. Install the SDK](#1-install-the-sdk)
    -   [2. Install the CLI](#2-install-the-cli)
    -   [3. Configure the SDK](#3-configure-the-sdk)
    -   [4. Run the Application](#4-run-the-application)
-   [Documentation](#documentation)
-   [QuickStarts](#quickstarts)
-   [Contributing](#contributing)
-   [Code of Conduct](#code-of-conduct)
-   [Security](#security)
-   [License](#license)

## Requirements

Your application must use a [supported Laravel version](#supported-laravel-releases), and your host environment must be running a [maintained PHP version](https://www.php.net/supported-versions.php). Please review [our support policy](./docs/Support.md) for more information.

You will also need [Composer](https://getcomposer.org/) and an [Auth0 account](https://auth0.com/signup).

### Supported Laravel Releases

The next major release of Laravel is forecasted for Q1 2025. We anticipate supporting it upon release.

| Laravel                                        | SDK   | PHP                                            | Supported Until                                                                                  |
| ---------------------------------------------- | ----- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| [12.x](https://laravel.com/docs/11.x/releases) | 7.15+ | [8.4](https://www.php.net/releases/8.4/en.php) | Approx. [Feb 2027](https://laravel.com/docs/12.x/releases#support-policy) (EOL for Laravel 12) |
|                                                |       | [8.2](https://www.php.net/releases/8.3/en.php) | Approx. [Dec 2025](https://www.php.net/supported-versions.php) (EOL for PHP 8.3)                 |

We strive to support all actively maintained Laravel releases, prioritizing support for the latest major version with our SDK. If a new Laravel major introduces breaking changes, we may have to end support for past Laravel versions earlier than planned.

Affected Laravel versions will still receive security fixes until their end-of-life date, as announced in our release notes.

### Maintenance Releases

The following releases are no longer being updated with new features by Auth0, but will continue to receive security updates through their end-of-life date.

| Laravel                                        | SDK        | PHP                                            | Security Fixes Until                                                                   |
| ---------------------------------------------- | ---------- | ---------------------------------------------- | -------------------------------------------------------------------------------------- |
| [11.x](https://laravel.com/docs/10.x/releases) | 7.13+ | [8.4](https://www.php.net/releases/8.4/en.php) | [March 2026](https://laravel.com/docs/11.x/releases#support-policy) (EOL for Laravel 11) |
|                                                |            | [8.3](https://www.php.net/releases/8.3/en.php) | [March 2026](https://laravel.com/docs/11.x/releases#support-policy) (EOL for Laravel 11) |
|                                                |            | [8.2](https://www.php.net/releases/8.2/en.php) | [Dec 2026](https://www.php.net/supported-versions.php) (EOL for PHP 8.2)               |

### Unsupported Releases

The following releases are unsupported by Auth0. While they may be suitable for some legacy applications, your mileage may vary. We recommend upgrading to a supported version as soon as possible.

| Laravel                                       | SDK        |
| --------------------------------------------  | ---------- |
| [10.x](https://laravel.com/docs/10.x/releases)| 7.5 - 7.12 |
| [9.x](https://laravel.com/docs/9.x/releases)  | 7.0 - 7.12 |
| [8.x](https://laravel.com/docs/8.x/releases)  | 7.0 - 7.4  |
| [7.x](https://laravel.com/docs/7.x/releases)  | 5.4 - 6.5  |
| [6.x](https://laravel.com/docs/6.x/releases)  | 5.3 - 6.5  |
| [5.x](https://laravel.com/docs/5.x/releases)  | 2.0 - 6.1  |
| [4.x](https://laravel.com/docs/4.x/releases)  | 1.x        |

## Getting Started

The following is our recommended approach to getting started with the SDK. Alternatives are available in [our expanded installation guide](./docs/Installation.md).

### 1. Install the SDK

-   For **new applications**, we offer a quickstart template — a version of the default Laravel 9 starter project pre-configured for use with the Auth0 SDK.

    ```shell
    composer create-project auth0-samples/laravel auth0-laravel-app && cd auth0-laravel-app
    ```

-   For **existing applications**, you can install the SDK using Composer.

    ```shell
    composer require auth0/login:^7 --update-with-all-dependencies
    ```

    In this case, you will also need to generate an SDK configuration file for your application.

    ```shell
    php artisan vendor:publish --tag auth0
    ```

</details>

### 2. Install the CLI

1. Install the [Auth0 CLI](https://github.com/auth0/auth0-cli) to manage your account from the command line.

    ```shell
    curl -sSfL https://raw.githubusercontent.com/auth0/auth0-cli/main/install.sh | sh -s -- -b .
    ```

    Move the CLI to a directory in your `PATH` to make it available system-wide.

    ```shell
    sudo mv ./auth0 /usr/local/bin
    ```

    <p><small>💡 <em>If you prefer not to move the CLI, simply substitute `auth0` in the CLI steps below with `./auth0`.</small></em></p>

    <details>
    <summary>Using <a href="https://brew.sh/">Homebrew</a> (macOS)</summary>
     

    ```shell
    brew tap auth0/auth0-cli && brew install auth0
    ```

    </details>

    <details>
    <summary>Using <a href="https://scoop.sh/">Scoop</a> (Windows)</summary>
     

    ```cmd
    scoop bucket add auth0 https://github.com/auth0/scoop-auth0-cli.git
    scoop install auth0
    ```

    </details>

2. Authenticate the CLI with your Auth0 account. Choose "as a user" if prompted.

    ```shell
    auth0 login
    ```

### 3. Configure the SDK

1. Register a new application with Auth0.

    ```shell
    auth0 apps create \
      --name "My Laravel Application" \
      --type "regular" \
      --auth-method "post" \
      --callbacks "http://localhost:8000/callback" \
      --logout-urls "http://localhost:8000" \
      --reveal-secrets \
      --no-input \
      --json > .auth0.app.json
    ```

2. Register a new API with Auth0.

    ```shell
    auth0 apis create \
      --name "My Laravel Application API" \
      --identifier "https://github.com/auth0/laravel-auth0" \
      --offline-access \
      --no-input \
      --json > .auth0.api.json
    ```

3. Add the new files to `.gitignore`.

    ```bash
    echo ".auth0.*.json" >> .gitignore
    ```

    <details>
    <summary>Using Windows PowerShell</summary>
     

    ```powershell
    Add-Content .gitignore "`n.auth0.*.json"
    ```

    </details>

    <details>
    <summary>Using Windows Command Prompt</summary>
     

    ```cmd
    echo .auth0.*.json >> .gitignore
    ```

    </details>

### 4. Run the Application

Boot the application using PHP's built-in web server.

```shell
php artisan serve
```

Direct your browser to [http://localhost:8000](http://localhost:8000) to experiment with the application.

-   **Authentication**  
    Users can log in or out of the application by visiting the [`/login`](http://localhost:8000/login) or [`/logout`](http://localhost:8000/logout) routes, respectively.

-   **API Authorization**  
    For simplicity sake, generate a test token using the CLI.

    ```shell
    auth0 test token \
      --audience %IDENTIFIER% \
      --scopes "read:messages"
    ```

    <p><small>✋ <em>Substitute <code>%IDENTIFIER%</code> with the identifier of the API you created in step 3 above.</small></em></p>

    Now you can send requests to the `/api` endpoints of the application, including the token as a header.

    ```shell
    curl --request GET \
      --url http://localhost:8000/api/example \
      --header 'Accept: application/json' \
      --header 'Authorization: Bearer %TOKEN%'
    ```

      <p><small>✋ <em>Substitute <code>%TOKEN%</code> with the test token returned in the previous step.</small></em></p>

      <details>
      <summary>Using Windows PowerShell</summary>
       

    ```powershell
    Invoke-WebRequest http://localhost:8000/api/example `
      -Headers @{'Accept' = 'application/json'; 'Authorization' = 'Bearer %TOKEN%'}
    ```

      </details>

When you're ready to deploy your application to production, review [our deployment guide](./docs/Deployment.md) for best practices and advice on securing Laravel.

## Integration Examples

<details>
<summary><b>User Authentication</b></summary>
 

The SDK automatically registers all the necessary routes and authentication services within the `web` middleware group of your application to enable users to authenticate without requiring you to write any code.

| Route       | Purpose                            |
| ----------- | ---------------------------------- |
| `/login`    | Initiates the authentication flow. |
| `/logout`   | Logs the user out.                 |
| `/callback` | Handles the callback from Auth0.   |

If these routes conflict with your application architecture, you can override this default behavior by [adjusting the SDK configuration](./docs/Configuration.md#route-registration).

---

</details>

<details>
<summary><b>Route Authorization (Access Control)</b></summary>
 

The SDK automatically registers its authentication and authorization guards within the `web` and `api` middleware groups for your Laravel application, respectively.

For `web` routes, you can use Laravel's `auth` middleware to require that a user be authenticated to access a route.

```php
Route::get('/private', function () {
  return response('Welcome! You are logged in.');
})->middleware('auth');
```

For `api` routes, you can use Laravel's `auth` middleware to require that a request be authenticated with a valid bearer token to access a route.

```php
Route::get('/api/private', function () {
  return response()->json(['message' => 'Hello! You included a valid token with your request.']);
})->middleware('auth');
```

In addition to requiring that a user be authenticated, you can also require that the user have specific permissions to access a route, using Laravel's `can` middleware.

```php
Route::get('/scope', function () {
    return response('You have the `read:messages` permission, and can therefore access this resource.');
})->middleware('auth')->can('read:messages');
```

Permissions require that [RBAC](https://auth0.com/docs/manage-users/access-control/rbac) be enabled within [your API settings](https://manage.auth0.com/#/apis).

---

</details>

<details>
<summary><b>Users and Tokens</b></summary>
 

Laravel's `Auth` Facade can be used to retrieve information about the authenticated user or token associated with a request.

For routes using the `web` middleware group in `routes/web.php`.

```php
Route::get('/', function () {
  if (! auth()->check()) {
    return response('You are not logged in.');
  }

  $user = auth()->user();
  $name = $user->name ?? 'User';
  $email = $user->email ?? '';

  return response("Hello {$name}! Your email address is {$email}.");
});
```

For routes using the `api` middleware group in `routes/api.php`.

```php
Route::get('/', function () {
  if (! auth()->check()) {
    return response()->json([
      'message' => 'You did not provide a token.',
    ]);
  }

  return response()->json([
    'message' => 'Your token is valid; you are authorized.',
    'id' => auth()->id(),
    'token' => auth()?->user()?->getAttributes(),
  ]);
});
```

---

</details>

<details>
<summary><b>Management API Calls</b></summary>
 

Once you've [authorized your application to make Management API calls](./docs/Management.md#api-application-authorization), you'll be able to engage nearly any of the [Auth0 Management API endpoints](https://auth0.com/docs/api/management/v2) through the SDK.

Each API endpoint has its own SDK class which can be accessed through the Facade's `management()` factory method. For interoperability, network responses from the API are returned as [PSR-7 messages](https://www.php-fig.org/psr/psr-7/). These can be converted into native arrays using the SDK's `json()` method.

For example, to update a user's metadata, you can call the `management()->users()->update()` method.

```php
use Auth0\Laravel\Facade\Auth0;

Route::get('/colors', function () {
  $colors = ['red', 'blue', 'green', 'black', 'white', 'yellow', 'purple', 'orange', 'pink', 'brown'];

  // Update the authenticated user with a randomly assigned favorite color.
  Auth0::management()->users()->update(
    id: auth()->id(),
    body: [
      'user_metadata' => [
        'color' => $colors[random_int(0, count($colors) - 1)]
      ]
    ]
  );

  // Retrieve the user's updated profile.
  $profile = Auth0::management()->users()->get(auth()->id());

  // Convert the PSR-7 response into a native array.
  $profile = Auth0::json($profile);

  // Extract some values from the user's profile.
  $color = $profile['user_metadata']['color'] ?? 'unknown';
  $name = auth()->user()->name;

  return response("Hello {$name}! Your favorite color is {$color}.");
})->middleware('auth');
```

All the SDK's Management API methods are [documented here](./docs/Management.md).

</details>

## Documentation

-   [Installation](./docs/Installation.md) — Installing the SDK and generating configuration files.
-   [Configuration](./docs/Configuration.md) — Configuring the SDK using JSON files or environment variables.
-   [Sessions](./docs/Sessions.md) — Guidance on deciding which Laravel Session API driver to use.
-   [Cookies](./docs/Cookies.md) — Important notes about using Laravel's Cookie session driver, and alternative options.
-   [Management API](./docs/Management.md) — Using the SDK to work with the [Auth0 Management API](https://auth0.com/docs/api/management/v2).
-   [Users](./docs/Users.md) — Extending the SDK to support persistent storage and [Eloquent](https://laravel.com/docs/eloquent) models.
-   [Events](./docs/Events.md) — Hooking into SDK [events](https://laravel.com/docs/events) to respond to specific actions.
-   [Deployment](./docs/Deployment.md) — Deploying your application to production.

You may find the following integration guidance useful:

-   [Laravel Eloquent](./docs/Eloquent.md) — [Eloquent ORM](https://laravel.com/docs/eloquent) is supported.
-   [Laravel Octane](./docs/Octane.md) — [Octane](https://laravel.com/docs/octane) is not supported at this time.
-   [Laravel Telescope](./docs/Telescope.md) — [Telescope](https://laravel.com/docs/telescope) is compatible as of SDK v7.11.0.

You may also find the following resources helpful:

-   [Auth0 Documentation Hub](https://www.auth0.com/docs)
-   [Auth0 Management API Explorer](https://auth0.com/docs/api/management/v2)
-   [Auth0 Authentication API Explorer](https://auth0.com/docs/api/authentication)

Contributions to improve our documentation [are welcomed](https://github.com/auth0/laravel-auth0/pull).

## QuickStarts

-   [Session-based Authentication](https://auth0.com/docs/quickstart/webapp/laravel) ([GitHub](https://github.com/auth0-samples/laravel))
-   [Token-based Authorization](https://auth0.com/docs/quickstart/backend/laravel) ([GitHub](https://github.com/auth0-samples/laravel))

## Community

The [Auth0 Community](https://community.auth0.com) is where you can get support, ask questions, and share your projects.

## Contributing

We appreciate feedback and contributions to this library. Before you get started, please review Auth0's [General Contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md).

The [Contribution Guide](./.github/CONTRIBUTING.md) contains information about our development process and expectations, insight into how to propose bug fixes and improvements, and instructions on how to build and test changes to the library.

To provide feedback or report a bug, [please raise an issue](https://github.com/auth0/laravel-auth0/issues).

## Code of Conduct

Participants are expected to adhere to Auth0's [Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md) when interacting with this project.

## Security

If you believe you have found a security vulnerability, we encourage you to responsibly disclose this and not open a public issue. We will investigate all reports. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.

## License

This library is open-sourced software licensed under the [MIT license](./LICENSE.md).

---

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: light)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png" width="150">
    <source media="(prefers-color-scheme: dark)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_dark_mode.png" width="150">
    <img alt="Auth0 Logo" src="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png" width="150">
  </picture>
</p>

<p align="center">Auth0 is an easy-to-implement, adaptable authentication and authorization platform.<br />To learn more, check out <a href="https://auth0.com/why-auth0">"Why Auth0?"</a></p>


================================================
FILE: UPGRADE.md
================================================
# Upgrade Guide

## v7 Migration Guide

Auth0 Laravel SDK v7 includes many significant changes over previous versions:

- Support for Laravel 9.
- Support for Auth0-PHP SDK 8.
- New authentication route controllers for plug-and-play login support.
- Improved authentication middleware for regular web applications.
- New authorization middleware for token-based backend API applications.

As expected with a major release, Auth0 Laravel SDK v7 includes breaking changes. Please review this guide thoroughly to undrstand the changes required to migrate your application to v7.

---

### Before you begin: Updated Requirements

- Laravel 8 and Laravel 9 are supported by the Auth0 Laravel SDK v7 release.
- PHP ≥7.4 is supported by the SDK when paired with Laravel 8.
- PHP ≥8.0 is supported by the SDK when paired with Laravel 9.¹

¹ This is a requirement of Laravel itself; only PHP 8+ will be supported going forward.

---

### Breaking Changes Summary

- Namespace has been updated from `Auth0\Login` to `Auth0\Laravel`.
- The Auth0-PHP SDK dependency has been updated from V7 to V8, which [may introduce breaking API changes](https://github.com/auth0/auth0-PHP/blob/main/UPGRADE.md) that will require further changes in your app outside the scope of this Laravel SDK.
- A simplified configuration file format is present. You will need to regenerate your config file. (Instructions below.)
- Changes to application files are no longer necessary, as the SDK registers services and middleware itself. You should remove any `config/app.php` or `app/HttpKernel.php` customizations made to avoid conflicts. (Instructions below.)

---

### Migration Guidance

#### Update Configuration Scheme

- Configuration filename is now `config/auth0.php`.
- Configuration format has been updated to support Auth0-PHP SDK 8.

1. Delete any previous laravel-auth0 configuration files present in your application.
2. Use `php artisan vendor:publish --tag=auth0-config` to generate an updated config file.
3. Review new configuration instructions in the [README](README.md#configuration-the-sdk).

#### Remove `config\app.php` modifications

- Previously, the SDK required you to add service provider classes to the `providers` array in this file.
- This is no longer necessary, as the SDK now registers services itself.

1. Remove any references to the SDK in your `providers` array.

#### Remove `app\Http\Kernel.php` modifications

- Previously, the SDK required you to add middleware classes to the middleware arrays in this file.
- This is no longer necessary, as the SDK now registers these itself.

1. Remove any references to the SDK in your `middleware` arrays.
2. Update any router middleware references in your app to the types instructed in the [README](README.md#protecting-routes-with-middleware).

#### Update to new authentication routes, as appropriate
Note: This only applies to regular web application types.

- Previously, the SDK required you to write boilerplate around login, logout and callback routes.
- The SDK now provides plug-and-play middleware that handles authentication flows, appropriate for most application needs.

1. Remove any route logic around login, logout or callback routes.
2. Implement the new authentication utility routes as instructed in the [README](README.md#authentication-routes).

#### Update to new `auth0.authenticate` middleware, as appropriate
Note: This only applies to regular web application types.

- Previously, the SDK advised you to register the Auth0 authentication middleware yourself in the `app\Http\Kernel.php`, which invited you to specify custom naming schemes for these middlewares.
- The SDK now provides plug-and-play middleware with specific naming schemes.

1. Update middleware references from previous custom registrations to the new scheme, as instructed in the [README](README.md#regular-web-applications-1).


#### Update to new `auth0.authorize` middleware, as appropriate
Note: This only applies to backend api application types.

- Previously, the SDK advised you to write your own Access Token handling middleware using the `decodeJWT()` method from the Auth0 PHP SDK.
- The SDK now provides plug-and-play middleware that handles common endpoint authorization, appropriate for most application needs.

1. Remove custom JWT processing or boilerplate code, particularly those referencing `decodeJWT()` from the old Auth0 PHP SDK releases.
2. Add new `middleware()` calls to your routes that reference the new SDK authorization middleware, as instructed in the [README](README.md#backend-api-applications-1).

#### Upgrade Auth0-PHP dependency from 7 to 8, as appropriate

- Previous versions of the SDK implemented v7 of the Auth0-PHP SDK dependency.
- The SDK now uses Auth0-PHP SDK v8.

If you wrote custom code around the underlying Auth0-PHP, or otherwise made internal calls to the underlying SDK through the Laravel SDK, your application will require further upgrade steps. [Please review the upgrade guide for that SDK here.](https://github.com/auth0/auth0-PHP/blob/main/UPGRADE.md)


================================================
FILE: codecov.yml
================================================
codecov:
  range: "95...100"
  status:
    project:
    patch:
    changes:
ignore:
  - "src/Contract"
  - "src/Event"
  - "src/Exception"
  - "src/Http"
  - "src/Model"


================================================
FILE: composer.json
================================================
{
    "name": "auth0/login",
    "description": "Auth0 Laravel SDK. Straight-forward and tested methods for implementing authentication, and accessing Auth0's Management API endpoints.",
    "license": "MIT",
    "type": "library",
    "keywords": [
        "laravel",
        "auth0",
        "authentication",
        "authorization",
        "login",
        "auth",
        "jwt",
        "json web token",
        "jwk",
        "json web key",
        "oauth",
        "openid",
        "secure",
        "protect",
        "api"
    ],
    "authors": [
        {
            "name": "Auth0",
            "email": "support@auth0.com",
            "homepage": "https://auth0.com/"
        }
    ],
    "homepage": "https://github.com/auth0/laravel-auth0",
    "support": {
        "email": "support@auth0.com",
        "issues": "https://github.com/auth0/laravel-auth0/issues",
        "forum": "https://community.auth0.com",
        "source": "https://github.com/auth0/laravel-auth0"
    },
    "require": {
        "php": "^8.2",
        "ext-json": "*",
        "auth0/auth0-php": "^8.19",
        "illuminate/contracts": "^11 || ^12 || ^13",
        "illuminate/http": "^11 || ^12 || ^13",
        "illuminate/support": "^11 || ^12 || ^13",
        "psr-discovery/all": "^1",
        "psr/cache": "^2 || ^3"
    },
    "require-dev": {
        "ergebnis/composer-normalize": "^2",
        "friendsofphp/php-cs-fixer": "^3",
        "larastan/larastan": "^2",
        "mockery/mockery": "^1",
        "orchestra/testbench": "^9",
        "pestphp/pest": "^2",
        "pestphp/pest-plugin-laravel": "^2",
        "phpstan/phpstan": "^1",
        "phpstan/phpstan-strict-rules": "^1",
        "psalm/plugin-laravel": "^2.12",
        "psr-mock/http": "^1",
        "rector/rector": "^1",
        "spatie/laravel-ray": "^1.40",
        "squizlabs/php_codesniffer": "^3",
        "symfony/cache": "^6 || ^7",
        "vimeo/psalm": "^5 || ^6 <6.5",
        "wikimedia/composer-merge-plugin": "^2"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "autoload": {
        "psr-4": {
            "Auth0\\Laravel\\": [
                "src/",
                "deprecated/"
            ]
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Auth0\\Laravel\\Tests\\": "tests/"
        }
    },
    "config": {
        "allow-plugins": {
            "ergebnis/composer-normalize": true,
            "pestphp/pest-plugin": true,
            "php-http/discovery": false,
            "wikimedia/composer-merge-plugin": true
        },
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "process-timeout": 0,
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "aliases": {
                "Auth0": "Auth0\\Laravel\\Facade\\Auth0"
            },
            "providers": [
                "Auth0\\Laravel\\ServiceProvider"
            ]
        },
        "merge-plugin": {
            "ignore-duplicates": false,
            "include": [
                "composer.local.json"
            ],
            "merge-dev": true,
            "merge-extra": false,
            "merge-extra-deep": false,
            "merge-scripts": false,
            "recurse": true,
            "replace": true
        }
    },
    "scripts": {
        "pest": "@php vendor/bin/pest --order-by random --fail-on-risky --parallel",
        "pest:coverage": "@php vendor/bin/pest --order-by random --fail-on-risky --coverage --parallel",
        "pest:debug": "@php vendor/bin/pest --log-events-verbose-text pest.log --display-errors --fail-on-risky",
        "pest:profile": "@php vendor/bin/pest --profile",
        "phpcs": "@php vendor/bin/php-cs-fixer fix --dry-run --diff",
        "phpcs:fix": "@php vendor/bin/php-cs-fixer fix",
        "phpstan": "@php vendor/bin/phpstan analyze",
        "psalm": "@php vendor/bin/psalm",
        "psalm:fix": "@php vendor/bin/psalter --issues=all",
        "rector": "@php vendor/bin/rector process src --dry-run",
        "rector:fix": "@php vendor/bin/rector process src",
        "test": [
            "@pest",
            "@phpstan",
            "@psalm",
            "@rector",
            "@phpcs"
        ]
    }
}


================================================
FILE: config/auth0.php
================================================
<?php

declare(strict_types=1);

use Auth0\Laravel\Configuration;
use Auth0\SDK\Configuration\SdkConfiguration;

return Configuration::VERSION_2 + [
    'registerGuards' => true,
    'registerMiddleware' => true,
    'registerAuthenticationRoutes' => true,
    'configurationPath' => null,

    'guards' => [
        'default' => [
            Configuration::CONFIG_STRATEGY => Configuration::get(Configuration::CONFIG_STRATEGY, SdkConfiguration::STRATEGY_NONE),
            Configuration::CONFIG_DOMAIN => Configuration::get(Configuration::CONFIG_DOMAIN),
            Configuration::CONFIG_CUSTOM_DOMAIN => Configuration::get(Configuration::CONFIG_CUSTOM_DOMAIN),
            Configuration::CONFIG_CLIENT_ID => Configuration::get(Configuration::CONFIG_CLIENT_ID),
            Configuration::CONFIG_CLIENT_SECRET => Configuration::get(Configuration::CONFIG_CLIENT_SECRET),
            Configuration::CONFIG_AUDIENCE => Configuration::get(Configuration::CONFIG_AUDIENCE),
            Configuration::CONFIG_ORGANIZATION => Configuration::get(Configuration::CONFIG_ORGANIZATION),
            Configuration::CONFIG_USE_PKCE => Configuration::get(Configuration::CONFIG_USE_PKCE),
            Configuration::CONFIG_SCOPE => Configuration::get(Configuration::CONFIG_SCOPE),
            Configuration::CONFIG_RESPONSE_MODE => Configuration::get(Configuration::CONFIG_RESPONSE_MODE),
            Configuration::CONFIG_RESPONSE_TYPE => Configuration::get(Configuration::CONFIG_RESPONSE_TYPE),
            Configuration::CONFIG_TOKEN_ALGORITHM => Configuration::get(Configuration::CONFIG_TOKEN_ALGORITHM),
            Configuration::CONFIG_TOKEN_JWKS_URI => Configuration::get(Configuration::CONFIG_TOKEN_JWKS_URI),
            Configuration::CONFIG_TOKEN_MAX_AGE => Configuration::get(Configuration::CONFIG_TOKEN_MAX_AGE),
            Configuration::CONFIG_TOKEN_LEEWAY => Configuration::get(Configuration::CONFIG_TOKEN_LEEWAY),
            Configuration::CONFIG_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_TOKEN_CACHE),
            Configuration::CONFIG_TOKEN_CACHE_TTL => Configuration::get(Configuration::CONFIG_TOKEN_CACHE_TTL),
            Configuration::CONFIG_HTTP_MAX_RETRIES => Configuration::get(Configuration::CONFIG_HTTP_MAX_RETRIES),
            Configuration::CONFIG_HTTP_TELEMETRY => Configuration::get(Configuration::CONFIG_HTTP_TELEMETRY),
            Configuration::CONFIG_MANAGEMENT_TOKEN => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN),
            Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE),
            Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY),
            Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM),
            Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST => Configuration::get(Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST),
            Configuration::CONFIG_BACKCHANNEL_LOGOUT_CACHE => Configuration::get(Configuration::CONFIG_BACKCHANNEL_LOGOUT_CACHE),
            Configuration::CONFIG_BACKCHANNEL_LOGOUT_EXPIRES => Configuration::get(Configuration::CONFIG_BACKCHANNEL_LOGOUT_EXPIRES),
        ],

        'api' => [
            Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_API,
        ],

        'web' => [
            Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_REGULAR,
            Configuration::CONFIG_COOKIE_SECRET => Configuration::get(Configuration::CONFIG_COOKIE_SECRET, env('APP_KEY')),
            Configuration::CONFIG_REDIRECT_URI => Configuration::get(Configuration::CONFIG_REDIRECT_URI, env('APP_URL') . '/callback'),
            Configuration::CONFIG_SESSION_STORAGE => Configuration::get(Configuration::CONFIG_SESSION_STORAGE),
            Configuration::CONFIG_SESSION_STORAGE_ID => Configuration::get(Configuration::CONFIG_SESSION_STORAGE_ID),
            Configuration::CONFIG_TRANSIENT_STORAGE => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE),
            Configuration::CONFIG_TRANSIENT_STORAGE_ID => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE_ID),
        ],
    ],

    'routes' => [
        Configuration::CONFIG_ROUTE_INDEX => Configuration::get(Configuration::CONFIG_ROUTE_INDEX, '/'),
        Configuration::CONFIG_ROUTE_CALLBACK => Configuration::get(Configuration::CONFIG_ROUTE_CALLBACK, '/callback'),
        Configuration::CONFIG_ROUTE_LOGIN => Configuration::get(Configuration::CONFIG_ROUTE_LOGIN, '/login'),
        Configuration::CONFIG_ROUTE_AFTER_LOGIN => Configuration::get(Configuration::CONFIG_ROUTE_AFTER_LOGIN, '/'),
        Configuration::CONFIG_ROUTE_LOGOUT => Configuration::get(Configuration::CONFIG_ROUTE_LOGOUT, '/logout'),
        Configuration::CONFIG_ROUTE_AFTER_LOGOUT => Configuration::get(Configuration::CONFIG_ROUTE_AFTER_LOGOUT, '/'),
    ],
];


================================================
FILE: deprecated/Cache/LaravelCacheItem.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Cache;

use Auth0\Laravel\Bridges\{CacheItemBridgeAbstract, CacheItemBridgeContract};
use DateInterval;
use DateTimeImmutable;
use DateTimeInterface;

use function is_int;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Bridges\CacheItemBridge instead.
 *
 * @internal
 *
 * @api
 */
final class LaravelCacheItem extends CacheItemBridgeAbstract implements CacheItemBridgeContract
{
    public function expiresAfter(int | DateInterval | null $time): static
    {
        $this->expiration = match (true) {
            null === $time => new DateTimeImmutable('now +1 year'),
            is_int($time) => new DateTimeImmutable('now +' . (string) $time . ' seconds'),
            $time instanceof DateInterval => (new DateTimeImmutable())->add($time),
        };

        return $this;
    }

    public function expiresAt(?DateTimeInterface $expiration): static
    {
        $this->expiration = $expiration ?? new DateTimeImmutable('now +1 year');

        return $this;
    }

    public function set(mixed $value): static
    {
        $this->value = $value;

        return $this;
    }

    public static function miss(string $key): self
    {
        return new self(
            key: $key,
            value: null,
            hit: false,
        );
    }
}


================================================
FILE: deprecated/Cache/LaravelCachePool.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Cache;

use Auth0\Laravel\Bridges\{CacheBridgeAbstract, CacheBridgeContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Bridges\CacheBridge instead.
 *
 * @internal
 *
 * @api
 */
final class LaravelCachePool extends CacheBridgeAbstract implements CacheBridgeContract
{
}


================================================
FILE: deprecated/Contract/Auth/Guard.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Auth;

use Auth0\Laravel\Guards\GuardContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Guards\GuardContract instead.
 *
 * @api
 */
interface Guard extends GuardContract
{
}


================================================
FILE: deprecated/Contract/Auth/User/Provider.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Auth\User;

use Auth0\Laravel\UserProviderContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\UserProviderContract instead.
 *
 * @api
 */
interface Provider extends UserProviderContract
{
}


================================================
FILE: deprecated/Contract/Auth/User/Repository.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Auth\User;

use Auth0\Laravel\UserRepositoryContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\UserRepositoryContract instead.
 *
 * @api
 */
interface Repository extends UserRepositoryContract
{
}


================================================
FILE: deprecated/Contract/Auth0.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract;

use Auth0\Laravel\ServiceContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\ServiceContract instead.
 *
 * @api
 */
interface Auth0 extends ServiceContract
{
}


================================================
FILE: deprecated/Contract/Configuration.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract;

use Auth0\Laravel\ConfigurationContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\ConfigurationContract instead.
 *
 * @api
 */
interface Configuration extends ConfigurationContract
{
}


================================================
FILE: deprecated/Contract/Entities/Credential.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Entities;

use Auth0\Laravel\Entities\CredentialEntityContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Entities\CredentialEntityContract instead.
 *
 * @api
 */
interface Credential extends CredentialEntityContract
{
}


================================================
FILE: deprecated/Contract/Event/Auth0Event.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event;

use Auth0\Laravel\Events\EventContract;

/**
 * @deprecated 7.8.0 - Use Auth0\Laravel\Events\EventContract instead.
 *
 * @api
 */
interface Auth0Event extends EventContract
{
}


================================================
FILE: deprecated/Contract/Event/Configuration/Building.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Configuration;

use Auth0\Laravel\Events\Configuration\BuildingConfigurationEventContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Configuration\BuildingConfigurationEvent instead.
 *
 * @api
 */
interface Building extends BuildingConfigurationEventContract
{
}


================================================
FILE: deprecated/Contract/Event/Configuration/Built.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Configuration;

use Auth0\Laravel\Events\Configuration\BuiltConfigurationEventContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Configuration\BuiltConfigurationEvent instead.
 *
 * @api
 */
interface Built extends BuiltConfigurationEventContract
{
}


================================================
FILE: deprecated/Contract/Event/Middleware/StatefulRequest.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Middleware;

use Auth0\Laravel\Events\Middleware\StatefulMiddlewareRequestContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Middleware\StatefulMiddlewareRequest instead.
 *
 * @api
 */
interface StatefulRequest extends StatefulMiddlewareRequestContract
{
}


================================================
FILE: deprecated/Contract/Event/Middleware/StatelessRequest.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Middleware;

use Auth0\Laravel\Events\Middleware\StatelessMiddlewareRequestContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Middleware\StatelessMiddlewareRequest instead.
 *
 * @api
 */
interface StatelessRequest extends StatelessMiddlewareRequestContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/AuthenticationFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\AuthenticationFailedContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\AuthenticationFailed instead.
 *
 * @api
 */
interface AuthenticationFailed extends AuthenticationFailedContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/AuthenticationSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\AuthenticationSucceededContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\AuthenticationSucceeded instead.
 *
 * @api
 */
interface AuthenticationSucceeded extends AuthenticationSucceededContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/LoginAttempting.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\LoginAttemptingContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\LoginAttempting instead.
 *
 * @api
 */
interface LoginAttempting extends LoginAttemptingContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/TokenExpired.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\TokenExpiredContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenExpired instead.
 *
 * @api
 */
interface TokenExpired extends TokenExpiredContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/TokenRefreshFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\TokenRefreshFailedContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenRefreshFailed instead.
 *
 * @api
 */
interface TokenRefreshFailed extends TokenRefreshFailedContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateful/TokenRefreshSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateful;

use Auth0\Laravel\Events\TokenRefreshSucceededContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenRefreshSucceeded instead.
 *
 * @api
 */
interface TokenRefreshSucceeded extends TokenRefreshSucceededContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateless/TokenVerificationAttempting.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateless;

use Auth0\Laravel\Events\TokenVerificationAttemptingContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationAttempting instead.
 *
 * @api
 */
interface TokenVerificationAttempting extends TokenVerificationAttemptingContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateless/TokenVerificationFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateless;

use Auth0\Laravel\Events\TokenVerificationFailedContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationFailed instead.
 *
 * @api
 */
interface TokenVerificationFailed extends TokenVerificationFailedContract
{
}


================================================
FILE: deprecated/Contract/Event/Stateless/TokenVerificationSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Event\Stateless;

use Auth0\Laravel\Events\TokenVerificationSucceededContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationSucceeded instead.
 *
 * @api
 */
interface TokenVerificationSucceeded extends TokenVerificationSucceededContract
{
}


================================================
FILE: deprecated/Contract/Exception/AuthenticationException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Exception;

use Auth0\Laravel\Exceptions\AuthenticationExceptionContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\AuthenticationException instead.
 *
 * @api
 */
interface AuthenticationException extends AuthenticationExceptionContract
{
}


================================================
FILE: deprecated/Contract/Exception/GuardException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Exception;

use Auth0\Laravel\Exceptions\GuardExceptionContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\GuardException instead.
 *
 * @api
 */
interface GuardException extends GuardExceptionContract
{
}


================================================
FILE: deprecated/Contract/Exception/SessionException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Exception;

use Auth0\Laravel\Exceptions\SessionExceptionContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\SessionException instead.
 *
 * @api
 */
interface SessionException extends SessionExceptionContract
{
}


================================================
FILE: deprecated/Contract/Exception/Stateful/CallbackException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Exception\Stateful;

use Auth0\Laravel\Exceptions\Controllers\CallbackControllerExceptionContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\Controllers\CallbackControllerException instead.
 *
 * @api
 */
interface CallbackException extends CallbackControllerExceptionContract
{
}


================================================
FILE: deprecated/Contract/Http/Controller/Stateful/Callback.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\CallbackControllerContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\CallbackControllerContract instead.
 *
 * @api
 */
interface Callback extends CallbackControllerContract
{
}


================================================
FILE: deprecated/Contract/Http/Controller/Stateful/Login.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\LoginControllerContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\LoginControllerContract instead.
 *
 * @api
 */
interface Login extends LoginControllerContract
{
}


================================================
FILE: deprecated/Contract/Http/Controller/Stateful/Logout.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\LogoutControllerContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\LogoutControllerContract instead.
 *
 * @api
 */
interface Logout extends LogoutControllerContract
{
}


================================================
FILE: deprecated/Contract/Http/Middleware/Stateful/Authenticate.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Middleware\Stateful;

use Auth0\Laravel\Middleware\AuthenticateMiddlewareContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Middleware\AuthenticateMiddleware instead.
 *
 * @api
 */
interface Authenticate extends AuthenticateMiddlewareContract
{
}


================================================
FILE: deprecated/Contract/Http/Middleware/Stateful/AuthenticateOptional.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Middleware\Stateful;

use Auth0\Laravel\Middleware\AuthenticateOptionalMiddlewareContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Middleware\AuthenticateMiddleware instead.
 *
 * @api
 */
interface AuthenticateOptional extends AuthenticateOptionalMiddlewareContract
{
}


================================================
FILE: deprecated/Contract/Http/Middleware/Stateless/Authorize.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Middleware\Stateless;

use Auth0\Laravel\Middleware\AuthorizeMiddlewareContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Middleware\AuthorizeMiddleware instead.
 *
 * @api
 */
interface Authorize extends AuthorizeMiddlewareContract
{
}


================================================
FILE: deprecated/Contract/Http/Middleware/Stateless/AuthorizeOptional.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Http\Middleware\Stateless;

use Auth0\Laravel\Middleware\AuthorizeOptionalMiddlewareContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Middleware\AuthorizeOptionalMiddleware instead.
 *
 * @api
 */
interface AuthorizeOptional extends AuthorizeOptionalMiddlewareContract
{
}


================================================
FILE: deprecated/Contract/Model/Stateful/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Model\Stateful;

use Auth0\Laravel\Users\StatefulUserContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\StatefulUserContract instead.
 *
 * @api
 */
interface User extends StatefulUserContract
{
}


================================================
FILE: deprecated/Contract/Model/Stateless/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Model\Stateless;

use Auth0\Laravel\Users\StatelessUserContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\StatelessUserContract instead.
 *
 * @api
 */
interface User extends StatelessUserContract
{
}


================================================
FILE: deprecated/Contract/Model/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract\Model;

use Auth0\Laravel\Users\UserContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\UserContract instead.
 *
 * @api
 */
interface User extends UserContract
{
}


================================================
FILE: deprecated/Contract/ServiceProvider.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Contract;

use Auth0\Laravel\ServiceProviderContract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\ServiceProviderContract instead.
 *
 * @api
 */
interface ServiceProvider extends ServiceProviderContract
{
}


================================================
FILE: deprecated/Event/Configuration/Building.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Configuration;

use Auth0\Laravel\Events\Configuration\{BuildingConfigurationEventAbstract, BuildingConfigurationEventContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Configuration\BuildingConfigurationEvent instead
 *
 * @api
 */
final class Building extends BuildingConfigurationEventAbstract implements BuildingConfigurationEventContract
{
}


================================================
FILE: deprecated/Event/Configuration/Built.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Configuration;

use Auth0\Laravel\Events\Configuration\{BuiltConfigurationEventAbstract, BuiltConfigurationEventContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Configuration\BuiltConfigurationEvent instead
 *
 * @api
 */
final class Built extends BuiltConfigurationEventAbstract implements BuiltConfigurationEventContract
{
}


================================================
FILE: deprecated/Event/Middleware/StatefulRequest.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Middleware;

use Auth0\Laravel\Events\Middleware\{StatefulMiddlewareRequestAbstract, StatefulMiddlewareRequestContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Middleware\StatefulMiddlewareRequest instead
 *
 * @api
 */
final class StatefulRequest extends StatefulMiddlewareRequestAbstract implements StatefulMiddlewareRequestContract
{
}


================================================
FILE: deprecated/Event/Middleware/StatelessRequest.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Middleware;

use Auth0\Laravel\Events\Middleware\{StatelessMiddlewareRequestAbstract, StatelessMiddlewareRequestContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\Middleware\StatelessMiddlewareRequest instead
 *
 * @api
 */
final class StatelessRequest extends StatelessMiddlewareRequestAbstract implements StatelessMiddlewareRequestContract
{
}


================================================
FILE: deprecated/Event/Stateful/AuthenticationFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{AuthenticationFailedAbstract, AuthenticationFailedContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\AuthenticationFailed instead
 *
 * @api
 */
final class AuthenticationFailed extends AuthenticationFailedAbstract implements AuthenticationFailedContract
{
}


================================================
FILE: deprecated/Event/Stateful/AuthenticationSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{AuthenticationSucceededAbstract, AuthenticationSucceededContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\AuthenticationSucceeded instead
 *
 * @api
 */
final class AuthenticationSucceeded extends AuthenticationSucceededAbstract implements AuthenticationSucceededContract
{
}


================================================
FILE: deprecated/Event/Stateful/LoginAttempting.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{LoginAttemptingAbstract, LoginAttemptingContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\LoginAttempting instead
 *
 * @api
 */
final class LoginAttempting extends LoginAttemptingAbstract implements LoginAttemptingContract
{
}


================================================
FILE: deprecated/Event/Stateful/TokenExpired.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{TokenExpiredAbstract, TokenExpiredContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenExpired instead
 *
 * @api
 */
final class TokenExpired extends TokenExpiredAbstract implements TokenExpiredContract
{
}


================================================
FILE: deprecated/Event/Stateful/TokenRefreshFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{TokenRefreshFailedAbstract, TokenRefreshFailedContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenRefreshFailed instead
 *
 * @api
 */
final class TokenRefreshFailed extends TokenRefreshFailedAbstract implements TokenRefreshFailedContract
{
}


================================================
FILE: deprecated/Event/Stateful/TokenRefreshSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateful;

use Auth0\Laravel\Events\{TokenRefreshSucceededAbstract, TokenRefreshSucceededContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenRefreshSucceeded instead
 *
 * @api
 */
final class TokenRefreshSucceeded extends TokenRefreshSucceededAbstract implements TokenRefreshSucceededContract
{
}


================================================
FILE: deprecated/Event/Stateless/TokenVerificationAttempting.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateless;

use Auth0\Laravel\Events\{TokenVerificationAttemptingAbstract, TokenVerificationAttemptingContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationAttempting instead
 *
 * @api
 */
final class TokenVerificationAttempting extends TokenVerificationAttemptingAbstract implements TokenVerificationAttemptingContract
{
}


================================================
FILE: deprecated/Event/Stateless/TokenVerificationFailed.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateless;

use Auth0\Laravel\Events\{TokenVerificationFailedAbstract, TokenVerificationFailedContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationFailed instead
 *
 * @api
 */
final class TokenVerificationFailed extends TokenVerificationFailedAbstract implements TokenVerificationFailedContract
{
}


================================================
FILE: deprecated/Event/Stateless/TokenVerificationSucceeded.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Event\Stateless;

use Auth0\Laravel\Events\{TokenVerificationSucceededAbstract, TokenVerificationSucceededContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Events\TokenVerificationSucceeded instead
 *
 * @api
 */
final class TokenVerificationSucceeded extends TokenVerificationSucceededAbstract implements TokenVerificationSucceededContract
{
}


================================================
FILE: deprecated/Exception/AuthenticationException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Exception;

use Auth0\Laravel\Exceptions\{AuthenticationExceptionAbstract, AuthenticationExceptionContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\AuthenticationException instead.
 *
 * @api
 */
final class AuthenticationException extends AuthenticationExceptionAbstract implements AuthenticationExceptionContract
{
}


================================================
FILE: deprecated/Exception/GuardException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Exception;

use Auth0\Laravel\Exceptions\{GuardExceptionAbstract, GuardExceptionContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\GuardException instead.
 *
 * @api
 */
final class GuardException extends GuardExceptionAbstract implements GuardExceptionContract
{
}


================================================
FILE: deprecated/Exception/SessionException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Exception;

use Auth0\Laravel\Exceptions\{SessionExceptionAbstract, SessionExceptionContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\SessionException instead.
 *
 * @api
 */
final class SessionException extends SessionExceptionAbstract implements SessionExceptionContract
{
}


================================================
FILE: deprecated/Exception/Stateful/CallbackException.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Exception\Stateful;

use Auth0\Laravel\Exceptions\Controllers\{CallbackControllerExceptionAbstract, CallbackControllerExceptionContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Exceptions\Controllers\CallbackControllerException instead.
 *
 * @api
 */
final class CallbackException extends CallbackControllerExceptionAbstract implements CallbackControllerExceptionContract
{
}


================================================
FILE: deprecated/Http/Controller/Stateful/Callback.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\{CallbackControllerAbstract, CallbackControllerContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\CallbackController instead.
 *
 * @api
 */
final class Callback extends CallbackControllerAbstract implements CallbackControllerContract
{
}


================================================
FILE: deprecated/Http/Controller/Stateful/Login.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\{LoginControllerAbstract, LoginControllerContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\LoginController instead.
 *
 * @api
 */
final class Login extends LoginControllerAbstract implements LoginControllerContract
{
}


================================================
FILE: deprecated/Http/Controller/Stateful/Logout.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Controller\Stateful;

use Auth0\Laravel\Controllers\{LogoutControllerAbstract, LogoutControllerContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Controllers\LogoutController instead.
 *
 * @api
 */
final class Logout extends LogoutControllerAbstract implements LogoutControllerContract
{
}


================================================
FILE: deprecated/Http/Middleware/Guard.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Middleware;

use Auth0\Laravel\Middleware\{GuardMiddlewareAbstract, GuardMiddlewareContract};

/**
 * @deprecated 7.8.0 This middleware is no longer required. Please migrate to using either Auth0\Laravel\Guards\AuthenticationGuard or Auth0\Laravel\Guards\AuthorizationGuard.
 *
 * @api
 */
final class Guard extends GuardMiddlewareAbstract implements GuardMiddlewareContract
{
}


================================================
FILE: deprecated/Http/Middleware/Stateful/Authenticate.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Middleware\Stateful;

use Auth0\Laravel\Middleware\{AuthenticateMiddlewareAbstract, AuthenticateMiddlewareContract};

/**
 * @deprecated 7.8.0 This middleware is no longer required. Please migrate to using Auth0\Laravel\Guards\AuthenticationGuard and Laravel's standard `auth` middleware instead.
 *
 * @api
 */
final class Authenticate extends AuthenticateMiddlewareAbstract implements AuthenticateMiddlewareContract
{
}


================================================
FILE: deprecated/Http/Middleware/Stateful/AuthenticateOptional.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Middleware\Stateful;

use Auth0\Laravel\Middleware\{AuthenticateOptionalMiddlewareAbstract, AuthenticateOptionalMiddlewareContract};

/**
 * @deprecated 7.8.0 This middleware is no longer required. Please migrate to using Auth0\Laravel\Guards\AuthenticationGuard.
 *
 * @api
 */
final class AuthenticateOptional extends AuthenticateOptionalMiddlewareAbstract implements AuthenticateOptionalMiddlewareContract
{
}


================================================
FILE: deprecated/Http/Middleware/Stateless/Authorize.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Middleware\Stateless;

use Auth0\Laravel\Middleware\{AuthorizeMiddlewareAbstract, AuthorizeMiddlewareContract};

/**
 * @deprecated 7.8.0 This middleware is no longer required. Please migrate to using Auth0\Laravel\Guards\AuthorizationGuard, and use Laravel's standard `auth` middleware instead.
 *
 * @api
 */
final class Authorize extends AuthorizeMiddlewareAbstract implements AuthorizeMiddlewareContract
{
}


================================================
FILE: deprecated/Http/Middleware/Stateless/AuthorizeOptional.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Http\Middleware\Stateless;

use Auth0\Laravel\Middleware\{AuthorizeOptionalMiddlewareAbstract, AuthorizeOptionalMiddlewareContract};

/**
 * @deprecated 7.8.0 This middleware is no longer required. Please migrate to using Auth0\Laravel\Guards\AuthorizationGuard.
 *
 * @api
 */
final class AuthorizeOptional extends AuthorizeOptionalMiddlewareAbstract implements AuthorizeOptionalMiddlewareContract
{
}


================================================
FILE: deprecated/Model/Imposter.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Model;

use Auth0\Laravel\Users\{ImposterUserContract, UserAbstract, UserTrait};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\ImposterUser instead.
 *
 * @api
 */
final class Imposter extends UserAbstract implements ImposterUserContract
{
    use UserTrait;
}


================================================
FILE: deprecated/Model/Stateful/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Model\Stateful;

use Auth0\Laravel\Users\{StatefulUserContract, UserAbstract, UserTrait};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\StatefulUser instead.
 *
 * @api
 */
final class User extends UserAbstract implements StatefulUserContract
{
    use UserTrait;
}


================================================
FILE: deprecated/Model/Stateless/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Model\Stateless;

use Auth0\Laravel\Users\{StatelessUserContract, UserAbstract, UserTrait};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\StatelessUser instead.
 *
 * @api
 */
final class User extends UserAbstract implements StatelessUserContract
{
    use UserTrait;
}


================================================
FILE: deprecated/Model/User.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Model;

use Auth0\Laravel\Users\UserAbstract;

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Users\UserAbstract instead.
 *
 * @api
 */
abstract class User extends UserAbstract
{
}


================================================
FILE: deprecated/README.md
================================================
# Deprecated Classes

The classes in this directory are deprecated and are provided here to aid in transitioning to their newer counterparts. Please migrate your application to the new classes, as these will be removed in a future release.


================================================
FILE: deprecated/Store/LaravelSession.php
================================================
<?php

declare(strict_types=1);

namespace Auth0\Laravel\Store;

use Auth0\Laravel\Bridges\{SessionBridgeAbstract, SessionBridgeContract};

/**
 * @deprecated 7.8.0 Use Auth0\Laravel\Bridges\SessionBridge instead.
 *
 * @internal
 *
 * @api
 */
final class LaravelSession extends SessionBridgeAbstract implements SessionBridgeContract
{
}


================================================
FILE: docs/BackchannelLogout.md
================================================
# Backchannel Logout

The Auth0 Laravel SDK supports [Backchannel Logout](https://auth0.com/docs/authenticate/login/logout/back-channel-logout) from v7.12 onward. To use this feature, some additional configuration is necessary:

1. **Add a new route to your application.** This route must be publicly accessible. Auth0 will use it to send backchannel logout requests to your application. For example:

```php
Route::post('/backchannel', function (Request $request) {
    if ($request->has('logout_token')) {
        app('auth0')->handleBackchannelLogout($request->string('logout_token', '')->trim());
    }
});
```

2. **Configure your Auth0 tenant to use Backchannel Logout.** See the [Auth0 documentation](https://auth0.com/docs/authenticate/login/logout/back-channel-logout/configure-back-channel-logout) for more information on how to do this. Please ensure you point the Logout URI to the backchannel route we just added to your application.

Note: If your application's configuration assigns `false` to the `backchannelLogoutCache` SDK configuration property, this feature will be disabled entirely.


================================================
FILE: docs/Configuration.md
================================================
# Configuration

- [SDK Configuration](#sdk-configuration)
  - [JSON Configuration Files](#json-configuration-files)
  - [Environment Variables](#environment-variables)
  - [Order of Priority](#order-of-priority)
  - [Default Behavior](#default-behavior)
    - [Guard Registration](#guard-registration)
    - [Middleware Registration](#middleware-registration)
    - [Route Registration](#route-registration)
- [Auth0 Configuration](#auth0-configuration)
  - [Auth0 Applications](#auth0-applications)
    - [Creating Applications with the CLI](#creating-applications-with-the-cli)
    - [Creating Applications Manually](#creating-applications-manually)
    - [Modifying Applications with the CLI](#modifying-applications-using-the-cli)
    - [Modifying Applications Manually](#modifying-applications-manually)
  - [Auth0 APIs](#auth0-apis)
    - [Creating APIs with the CLI](#creating-apis-with-the-cli)
    - [Creating APIs Manually](#creating-apis-manually)
    - [Modifying APIs with the CLI](#modifying-apis-using-the-cli)
    - [Modifying APIs Manually](#modifying-apis-manually)

## SDK Configuration

This guide addresses v2 of the SDK configuration format. You can determine which version you are using by evaluating the constant prepended to the returned array in your application's `config/auth0.php` file, prefixed with `Configuration::VERSION_`. For example:

```php
return Configuration::VERSION_2 + [
  // ...
];
```

If you do not see such a value, you are most likely using an outdated configuration format, and should upgrade by running `php artisan vendor:publish --tag auth0 --force` from your project directory. You will lose any alterations you have made to this file in the process.

### JSON Configuration Files

The preferred method of SDK configuration is to use JSON exported from the [Auth0 CLI](https://auth0.com/docs/cli). This allows you to use the CLI to manage your Auth0 configuration, and then export the configuration to JSON for use by the SDK.

The SDK will look for the following files in the project directory, in the order listed:

- `auth0.json`
- `auth0.<APP_ENV>.json`
- `auth0.api.json`
- `auth0.app.json`
- `auth0.api.<APP_ENV>.json`
- `auth0.app.<APP_ENV>.json`

Where `<APP_ENV>` is the value of Laravel's `APP_ENV` environment variable (if set.) Duplicate keys in the files listed above will be overwritten in the order listed.

### Environment Variables

The SDK also supports configuration using environment variables. These can be defined within the host environment, or using so-called dotenv (`.env`, or `.env.*`) files in the project directory.

| Variable              | Description                                                                                          |
| --------------------- | ---------------------------------------------------------------------------------------------------- |
| `AUTH0_DOMAIN`        | `String (FQDN)` The Auth0 domain for your tenant.                                                    |
| `AUTH0_CUSTOM_DOMAIN` | `String (FQDN)` The Auth0 custom domain for your tenant, if set.                                     |
| `AUTH0_CLIENT_ID`     | `String` The Client ID for your Auth0 application.                                                   |
| `AUTH0_CLIENT_SECRET` | `String` The Client Secret for your Auth0 application.                                               |
| `AUTH0_AUDIENCE`      | `String (comma-delimited list)` The audiences for your application.                                  |
| `AUTH0_SCOPE`         | `String (comma-delimited list)` The scopes for your application. Defaults to 'openid,profile,email'. |
| `AUTH0_ORGANIZATION`  | `String (comma-delimited list)` The organizations for your application.                              |

The following environment variables are supported, but should not be adjusted unless you know what you are doing:

| Variable                                   | Description                                                                                                                                                          |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUTH0_USE_PKCE`                           | Boolean. Whether to use PKCE for the authorization flow. Defaults to `true`.                                                                                         |
| `AUTH0_RESPONSE_MODE`                      | `String` The response mode to use for the authorization flow. Defaults to `query`.                                                                                   |
| `AUTH0_RESPONSE_TYPE`                      | `String` The response type to use for the authorization flow. Defaults to `code`.                                                                                    |
| `AUTH0_TOKEN_ALGORITHM`                    | `String` The algorithm to use for the ID token. Defaults to `RS256`.                                                                                                 |
| `AUTH0_TOKEN_JWKS_URI`                     | `String (URL)` The URI to use to retrieve the JWKS for the ID token. Defaults to `https://<AUTH0_DOMAIN>/.well-known/jwks.json`.                                     |
| `AUTH0_TOKEN_MAX_AGE`                      | `Integer` The maximum age of a token, in seconds. No default value is assigned.                                                                                      |
| `AUTH0_TOKEN_LEEWAY`                       | `Integer` The leeway to use when validating a token, in seconds. Defaults to `60` (1 minute).                                                                        |
| `AUTH0_TOKEN_CACHE`                        | `String (class name)` A PSR-6 class to use for caching JWKS responses.                                                                                               |
| `AUTH0_TOKEN_CACHE_TTL`                    | `Integer` The TTL to use for caching JWKS responses. Defaults to `60` (1 minute).                                                                                    |
| `AUTH0_HTTP_MAX_RETRIES`                   | `Integer` The maximum number of times to retry a failed HTTP request. Defaults to `3`.                                                                               |
| `AUTH0_HTTP_TELEMETRY`                     | `Boolean` Whether to send telemetry data with HTTP requests to Auth0. Defaults to `true`.                                                                            |
| `AUTH0_SESSION_STORAGE`                    | `String (class name)` The `StoreInterface` class to use for storing session data. Defaults to using Laravel's native Sessions API.                                   |
| `AUTH0_SESSION_STORAGE_ID`                 | `String` The namespace to use for storing session data. Defaults to `auth0_session`.                                                                                 |
| `AUTH0_TRANSIENT_STORAGE`                  | `String (class name)` The `StoreInterface` class to use for storing temporary session data. Defaults to using Laravel's native Sessions API.                         |
| `AUTH0_TRANSIENT_STORAGE_ID`               | `String` The namespace to use for storing temporary session data. Defaults to `auth0_transient`.                                                                     |
| `AUTH0_MANAGEMENT_TOKEN`                   | `String` The Management API token to use for the Management API client. If one is not provided, the SDK will attempt to create one for you.                          |
| `AUTH0_MANAGEMENT_TOKEN_CACHE`             | `Integer` A PSR-6 class to use for caching Management API tokens.                                                                                                    |
| `AUTH0_CLIENT_ASSERTION_SIGNING_KEY`       | `String` The key to use for signing client assertions.                                                                                                               |
| `AUTH0_CLIENT_ASSERTION_SIGNING_ALGORITHM` | `String` The algorithm to use for signing client assertions. Defaults to `RS256`.                                                                                    |
| `AUTH0_PUSHED_AUTHORIZATION_REQUEST`       | `Boolean` Whether the SDK should use Pushed Authorization Requests during authentication. Note that your tenant must have this feature enabled. Defaults to `false`. |
| `AUTH0_BACKCHANNEL_LOGOUT_CACHE`           | `String (class name)` A PSR-6 class to use for caching backchannel logout tokens.                                                                                    |
| `AUTH0_BACKCHANNEL_LOGOUT_EXPIRES`         | `Integer` How long (in seconds) to cache a backchannel logout token. Defaults to `2592000` (30 days).                                                                |

### Order of Priority

The SDK collects configuration data from multiple potential sources, in the following order:

- `.auth0.json` files
- `.env` (dotenv) files
- Host environment variables

> **Note:**  
> In the filenames listed below, `%APP_ENV%` is replaced by the application's configured `APP_ENV` environment variable, if one is set.

It begins by loading matching JSON configuration files from the project's root directory, in the following order:

- `.auth0.json`
- `.auth0.%APP_ENV%.json`
- `.auth0.api.json`
- `.auth0.app.json`
- `.auth0.api.%APP_ENV%.json`
- `.auth0.app.%APP_ENV%.json`

It then loads configuration data from available `.env` (dotenv) configuration files, in the following order.

- `.env`
- `.env.auth0`
- `.env.%APP_ENV%`
- `.env.%APP_ENV%.auth0`

Finally, it loads environment variables from the host environment.

Duplicate configuration data is overwritten by the value from the last source loaded. For example, if the `AUTH0_DOMAIN` environment variable is set in both the `.env` file and the host environment, the value from the host environment will be used.

Although JSON configuration keys are different from their associated environment variable counterparts, these are translated automatically by the SDK. For example, the `domain` key in the JSON configuration files is translated to the `AUTH0_DOMAIN` environment variable.

### Default Behavior

#### Guard Registration

By default, the SDK will register the Authentication and Authorization guards with your Laravel application, as well as a compatible [User Provider](./Users.md).

You can disable this behavior by setting `registerGuards` to `false` in your `config/auth0.php` file.

```php
return Configuration::VERSION_2 + [
  'registerGuards' => false,
  // ...
];
```

To register the guards manually, update the arrays in your `config/auth.php` file to include the following additions:

```php
'guards' => [
  'auth0-session' => [
    'driver' => 'auth0.authenticator',
    'provider' => 'auth0-provider',
    'configuration' => 'web',
  ],
  'auth0-api' => [
    'driver' => 'auth0.authorizer',
    'provider' => 'auth0-provider',
    'configuration' => 'api',
  ],
],

'providers' => [
  'auth0-provider' => [
    'driver' => 'auth0.provider',
    'repository' => 'auth0.repository',
  ],
],
```

#### Middleware Registration

By default, the SDK will register the Authentication and Authorization guards within your application's `web` and `api` middleware groups.

You can disable this behavior by setting `registerMiddleware` to `false` in your `config/auth0.php` file.

```php
return Configuration::VERSION_2 + [
  'registerMiddleware' => false,
  // ...
];
```

To register the middleware manually, update your `app/Http/Kernel.php` file and include the following additions:

```php
protected $middlewareGroups = [
  'web' => [
    \Auth0\Laravel\Middleware\AuthenticatorMiddleware::class,
    // ...
  ],

  'api' => [
    \Auth0\Laravel\Middleware\AuthorizerMiddleware::class,
    // ...
  ],
];
```

Alternatively, you can assign the guards to specific routes by using the `Auth` facade. For `routes/web.php`, add the following before any routes:

```php
Auth::shouldUse('auth0-session');
```

For `routes/api.php`, add the following before any routes:

```php
Auth::shouldUse('auth0-api');
```

#### Route Registration

By default, the SDK will register the following routes for authentication:

| Method | URI         | Name       | Controller                                     | Purpose                            |
| ------ | ----------- | ---------- | ---------------------------------------------- | ---------------------------------- |
| `GET`  | `/login`    | `login`    | `Auth0\Laravel\Controllers\LoginController`    | Initiates the authentication flow. |
| `GET`  | `/logout`   | `logout`   | `Auth0\Laravel\Controllers\LogoutController`   | Logs the user out.                 |
| `GET`  | `/callback` | `callback` | `Auth0\Laravel\Controllers\CallbackController` | Handles the callback from Auth0.   |

You can disable this behavior by setting `registerAuthenticationRoutes` to `false` in your `config/auth0.php` file.

```php
return Configuration::VERSION_2 + [
  'registerAuthenticationRoutes' => false,
  // ...
];
```

If you've disabled the automatic registration of routes, you must register the routes manually for authentication to work.

```php
use Auth0\Laravel\Controllers\{LoginController, LogoutController, CallbackController};

Route::group(['middleware' => ['guard:auth0-session']], static function (): void {
  Route::get('/login', LoginController::class)->name('login');
  Route::get('/logout', LogoutController::class)->name('logout');
  Route::get('/callback', CallbackController::class)->name('callback');
});
```

Or you can call the SDK Facade's `routes()` method in your `routes/web.php` file:

```php
Auth0::routes();
```

- These must be registered within the `web` middleware group, as they rely on sessions.
- Requests must be routed through the SDK's Authenticator guard.

## Auth0 Configuration

The following guidance is provided to help you configure your Auth0 tenant for use with the SDK. It is not intended to be a comprehensive guide to configuring Auth0. Please refer to the [Auth0 documentation](https://auth0.com/docs) for more information.

### Auth0 Applications

#### Creating Applications with the CLI

Use the CLI's `apps create` command to create a new Auth0 Application:

```shell
auth0 apps create \
  --name "My Laravel Application" \
  --type "regular" \
  --auth-method "post" \
  --callbacks "http://localhost:8000/callback" \
  --logout-urls "http://localhost:8000" \
  --reveal-secrets \
  --no-input
```

If you are configuring the SDK for this application, make note of the `client_id` and `client_secret` values returned by the command. Follow the guidance in the [configuration guide](#configuration) to configure the SDK using these values.

The following parameters used in this example are of note:

- `--type` - The [application type](https://auth0.com/docs/get-started/applications).
  - For Laravel applications, this should always be set to `regular`.
- `--auth-method` - This represents the 'Token Endpoint Authentication Method' used for authentication.
  - For Laravel applications, this should always be set to `post`.
- `--callbacks` - The callback URLs to use for authentication.
  - In development, this should be set to `http://localhost:8000/callback` or as appropriate.
  - In production, adjust this value to match your application's Internet-accessible URL for its`/callback`` route.
  - This value can be a comma-separated list of URLs.
- `--logout-urls` - The logout URLs to use for authentication.
  - In development, this should be set to `http://localhost:8000` or as appropriate.
  - In production, adjust this value to match where your application redirects end users after logging out. The value should be an Internet-accessible URL.
  - This value can be a comma-separated list of URLs.

Please refer to the [CLI documentation](https://auth0.github.io/auth0-cli/auth0_apps_create.html) for additional information on the `apps create` command.

#### Modifying Applications using the CLI

Use the CLI's `apps update` command to create a new Auth0 API:

```shell
auth0 apps update %CLIENT_ID% \
  --name "My Updated Laravel Application" \
  --callbacks "https://production/callback,http://localhost:8000/callback" \
  --logout-urls "https://production/logout,http://localhost:8000" \
  --no-input
```

Substitute `%CLIENT_ID%` with your application's Client ID. Depending on how you configured the SDK, this value can be found:

- In the `.auth0.app.json` file in your project's root directory, as the `client_id` property value.
- In the `.env` file in your project's root directory, as the `AUTH0_CLIENT_ID` property value.
- As the `AUTH0_CLIENT_ID` environment variable.
- Evaluating the output from the CLI's `apps list` command.

Please refer to the [CLI documentation](https://auth0.github.io/auth0-cli/auth0_apps_update.html) for additional information on the `apps update` command.

#### Creating Applications Manually

1. Log in to your [Auth0 Dashboard](https://manage.auth0.com/).
2. Click the **Applications** menu item in the left navigation bar.
3. Click the **Create Application** button.
4. Enter a name for your application.
5. Select **Regular Web Applications** as the application type.
6. Click the **Create** button.
7. Click the **Settings** tab.
8. Set the **Token Endpoint Authentication Method** to `POST`.
9. Set the **Allowed Callback URLs** to `http://localhost:8000/callback` or as appropriate.
10. Set the **Allowed Logout URLs** to `http://localhost:8000` or as appropriate.
11. Click the **Save Changes** button.

#### Modifying Applications Manually

1. Log in to your [Auth0 Dashboard](https://manage.auth0.com/).
2. Click the **Applications** menu item in the left navigation bar.
3. Click the name of the application you wish to modify.
4. Click the **Settings** tab.
5. Modify the properties you wish to update as appropriate.
6. Click the **Save Changes** button.

### Auth0 APIs

#### Creating APIs with the CLI

Use the CLI's `apis create` command to create a new Auth0 API:

```shell
auth0 apis create \
  --name "My Laravel Application API" \
  --identifier "https://github.com/auth0/laravel-auth0" \
  --offline-access \
  --no-input
```

If you are configuring the SDK for this API, make note of the `identifier` you used here. Follow the guidance in the [configuration guide](#configuration) to configure the SDK using this value.

The following parameters are of note:

- `--identifier` - The [unique identifier](https://auth0.com/docs/get-started/apis/api-settings#general-settings) for your API, sometimes referred to as the `audience`. This can be any value you wish, but it must be unique within your account. It cannot be changed later.
- `--offline-access` - This enables the use of [Refresh Tokens](https://auth0.com/docs/tokens/refresh-tokens) for your API. This is not required for the SDK to function.

Please refer to the [CLI documentation](https://auth0.github.io/auth0-cli/auth0_apis_create.html) for additional information on the `apis create` command.

#### Modifying APIs using the CLI

Use the CLI's `apis update` command to create a new Auth0 API:

```shell
auth0 apis update %IDENTIFIER% \
  --name "My Updated Laravel Application API" \
  --token-lifetime 6100 \
  --offline-access=false \
  --scopes "letter:write,letter:read" \
  --no-input
```

Substitute `%IDENTIFIER%` with your API's unique identifier.

Please refer to the [CLI documentation](https://auth0.github.io/auth0-cli/auth0_apis_update.html) for additional information on the `apis update` command.

#### Creating APIs Manually

1. Log in to your [Auth0 Dashboard](https://manage.auth0.com/).
2. Click the **APIs** menu item in the left navigation bar.
3. Click the **Create API** button.
4. Enter a name for your API.
5. Enter a unique identifier for your API. This can be any value you wish, but it must be unique within your account. It cannot be changed later.
6. Click the **Create** button.

#### Modifying APIs Manually

1. Log in to your [Auth0 Dashboard](https://manage.auth0.com/).
2. Click the **APIs** menu item in the left navigation bar.
3. Click the name of the API you wish to modify.
4. Modify the properties you wish to update as appropriate.
5. Click the **Save Changes** button.

Additional information on Auth0 application settings [can be found here](https://auth0.com/docs/get-started/applications/application-settings).


================================================
FILE: docs/Cookies.md
================================================
# Cookies

We strongly recommend using the `database` or `redis` session drivers, but realize this is not always a viable option for all developers or use cases. The Auth0 Laravel SDK supports cookies for storing authentication state, but there are notable drawbacks to be aware of.

## Laravel's Cookie Session Driver

As noted in our [sessions documentation](./Sessions.md), Laravel's `cookie` session driver is not a reliable option for production applications as it suffers from a number of notable drawbacks:

- Browsers impose a size limit of 4 KB on individual cookies, which can quickly be exceeded by storing session data.
- Laravel's cookie driver unfortunately does not "chunk" (split up) larger cookies into multiple cookies, so it is impossible to store more than the noted 4 KB of total session data.
- Most web servers and load balancers require additional configuration to accept and deliver larger cookie headers.

## Auth0 PHP SDK's Custom Cookie Session Handler

The underlying [Auth0 PHP SDK](https://github.com/auth0/auth0-PHP) (which the Auth0 Laravel SDK is built upon) includes a powerful custom cookie session handler that supports chunking of larger cookies. This approach will enable you to securely and reliably store larger authentication states for your users.

It is important to note that this approach is incompatible with [Octane](./Octane.md) due to the way it delivers cookie headers.

To enable this feature, assign a `cookie` string value to the `AUTH0_SESSION_STORAGE` and `AUTH0_TRANSIENT_STORAGE` environment variables (or your `.env` file.)

```ini
# Persistent session data:
AUTH0_SESSION_STORAGE=cookie

# Temporary session data (used only during authentication):
AUTH0_TRANSIENT_STORAGE=cookie
```

This will override the SDK's default behavior of using the Laravel Sessions API, and instead use the integrated Auth0 PHP SDK's custom cookie session handler. Please note:

- When this feature is enabled, all properties of cookie storage (like `sameSite`, `secure`, and so forth) must be configured independently. This approach does not use Laravel's settings. Please refer to the [Auth0 PHP SDK's documentation](https://github.com/auth0/auth0-PHP) for guidance on how to configure these.
- By default your Laravel application's `APP_KEY` will be used to encrypt the cookie data. You can change this by assigning the `AUTH0_COOKIE_SECRET` environment variable (or your `.env` file) a string. If you do this, please ensure you are using an adequately long secure secret.
- Please ensure your server is configured to deliver and accept cookies prefixed with `auth0_session_` and `auth0_transient_` followed by a series of numbers (beginning with 0). These are the divided content body of the authenticated session data.

### Increasing Server Cookies Header Sizes

You may need to configure your web server or load balancer to accept and deliver larger cookie headers. For example, if you are using Nginx you will need to set the `large_client_header_buffers` directive to a value greater than the default of 4 KB.

```nginx
large_client_header_buffers 4 16k;
```

Please refer to your web server or load balancer's documentation for more information.

### Reminder on Octane Compatibility

As noted above, the Auth0 PHP SDK's custom cookie session handler is incompatible with [Octane](./Octane.md) due to the way it delivers cookie headers. If you are using Octane, you must use the Laravel Sessions API with a `database` or `redis` driver.


================================================
FILE: docs/Deployment.md
================================================
# Deployment

When you're preparing to deploy your application to production, there are some basic steps you can take to make sure your application is running as smoothly and securely as possible. In this guide, we'll cover some starting points for making sure your application is deployed properly.

-   [Auth0 Configuration](#auth0-configuration)
-   [TLS / HTTPS](#tls--https)
-   [Cookies](#cookies)
-   [Server Configuration](#server-configuration)
    -   [Caddy](#caddy)
    -   [Nginx](#nginx)
    -   [Apache](#apache)
-   [Optimization](#optimization)
    -   [Autoloader](#autoloader)
    -   [Dependencies](#dependencies)
    -   [Caching Configuration](#caching-configuration)
    -   [Caching Events](#caching-events)
    -   [Caching Routes](#caching-routes)
    -   [Caching Views](#caching-views)
    -   [Debug Mode](#debug-mode)

## Auth0 Configuration

When migrating your Laravel application from local development to production, you will need to update your Auth0 application's configuration to reflect the new URLs for your application. You can do this by logging into the [Auth0 Dashboard](https://manage.auth0.com/) and updating the following fields:

-   **Allowed Callback URLs**: The URL that Auth0 will redirect to after the user authenticates. This should be set to the Internet-accessible URL of your application's `/callback` route.
-   **Allowed Logout URLs**: The URL that Auth0 will redirect to after the user logs out. This should be set to an appropriate Internet-accessible URL of your application.

Note that you can include multiple URLs in these fields by separating them with commas, for example `https://example.com/callback,http://localhost:8000/callback`.

See [the configuration guide](/docs/configuration.md) for additional guidance on updating configuration properties.

## TLS / HTTPS

Auth0 requires that all applications use TLS/HTTPS. This is a requirement for all applications, regardless of whether they are running in production or development, with the exception of applications running on `localhost`. If you are running your application in a development environment, you can use a self-signed certificate. However, you should ensure that your application is running over TLS/HTTPS in production.

Let's Encrypt is a great option for obtaining free TLS/HTTPS certificates for your application. You can find instructions for obtaining a certificate for your server at [https://letsencrypt.org/getting-started/](https://letsencrypt.org/getting-started/).

## Cookies

Depending on the integration approach, you may encounter instances where the cookies delivered by the application exceed the default allowances of your web server. This can result in errors such as `400 Bad Request`. If you encounter this issue, you should increase the header size limits of your web server to accommodate the larger cookies. The server configurations below include examples of how to do this for common web servers.

You should also ensure your application's `config/session.php` file is configured securely. The default configuration provided by Laravel is a great starting point, but you should double check that the `secure` option is set to `true`, that the `same_site` option is set to `lax` or `strict`, and the `http_only` option is set to `true`.

## Server Configuration

Please ensure, like all the example configurations provided below, that your web server directs all requests to your application's `public/index.php` file. You should **never** attempt to move the `index.php` file to your project's root, as serving the application from the project root will expose many sensitive configuration files to the public Internet.

### Caddy

```nginx
example.com {
  root * /var/www/example.com/public

  encode zstd gzip
  file_server

  limits {
    header 4kb
  }

  header {
    X-XSS-Protection "1; mode=block"
    X-Content-Type-Options "nosniff"
    X-Frame-Options "SAMEORIGIN"
  }

  php_fastcgi unix//var/run/php/php8.2-fpm.sock
}
```

### Nginx

```nginx
server {
  listen 80;
  listen [::]:80;
  server_name example.com;
  root /var/www/example.com/public;

  add_header X-XSS-Protection "1; mode=block";
  add_header X-Content-Type-Options "nosniff";
  add_header X-Frame-Options "SAMEORIGIN";

  large_client_header_buffers 4 32k;

  index index.php;

  charset utf-8;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location = /favicon.ico { access_log off; log_not_found off; }
  location = /robots.txt  { access_log off; log_not_found off; }

  error_page 404 /index.php;

  location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
  }

  location ~ /\.(?!well-known).* {
    deny all;
  }
}
```

### Apache

```apache
<VirtualHost *:80>
  ServerName example.com
  ServerAdmin admin@example.com
  DocumentRoot /var/www/html/example.com/public

  LimitRequestFieldSize 16384

  <Directory /var/www/html/example.com>
    AllowOverride All
  </Directory>

  <IfModule mod_headers.c>
    Header set X-XSS-Protection "1; mode=block"
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options SAMEORIGIN
  </IfModule>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```

## Optimization

### Autoloader

When deploying to production, make sure that you are optimizing Composer's class autoloader map so Composer can quickly find the proper file to load for a given class:

```shell
composer install --optimize-autoloader --no-dev
```

Be sure to use the `--no-dev` option in production. This will prevent Composer from installing any development dependencies your project's dependencies may have.

### Dependencies

You should include your `composer.lock` file in your project's source control repository. Fo project's dependencies can be installed much faster with this file is present. Your production environment does not run `composer update` directly. Instead, you can run the `composer update` command locally when you want to update your dependencies, and then commit the updated `composer.lock` file to your repository. Be sure you are running the same major PHP version as your production environment, to avoid introducing compatibility issues.

Because the `composer.lock` file includes specific versions of your dependencies, other developers on your team will be using the same versions of the dependencies as you. This will help prevent bugs and compatibility issues from appearing in production that aren't present during development.

### Caching Configuration

When deploying your application to production, you should make sure that you run the config:cache Artisan command during your deployment process:

```shell
php artisan config:cache
```

This command will combine all of Laravel's configuration files into a single, cached file, which greatly reduces the number of trips the framework must make to the filesystem when loading your configuration values.

### Caching Events

If your application is utilizing event discovery, you should cache your application's event to listener mappings during your deployment process. This can be accomplished by invoking the event:cache Artisan command during deployment:

```shell
php artisan event:cache
```

### Caching Routes

If you are building a large application with many routes, you should make sure that you are running the route:cache Artisan command during your deployment process:

```shell
php artisan route:cache
```

This command reduces all of your route registrations into a single method call within a cached file, improving the performance of route registration when registering hundreds of routes.

### Caching Views

When deploying your application to production, you should make sure that you run the view:cache Artisan command during your deployment process:

```shell
php artisan view:cache
```

This command precompiles all your Blade views so they are not compiled on demand, improving the performance of each request that returns a view.

## Debug Mode

The debug option in your `config/app.php` configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the `APP_DEBUG` environment variable, which is stored in your application's .env file.

**In your production environment, this value should always be `false`. If the `APP_DEBUG` variable is set to `true` in production, you risk exposing sensitive configuration values to your application's end users.**


================================================
FILE: docs/Eloquent.md
================================================
# Laravel Eloquent

By default, the SDK does not include any Eloquent models or database support. You can adapt the SDK to your application's needs by adding your own Eloquent models and database support.

## Creating a User Model

Begin by creating a new Eloquent model class. You can use the `make:model` Artisan command to do this. Laravel ships with default user model named `User`, so we'll use the `--force` flag to overwrite it with our custom one.

Please ensure you have a backup of your existing `User` model before running this command, as it will overwrite your existing model.

```bash
php artisan make:model User --force
```

Next, open your `app/Models/User.php` file and modify it match the following example. Notably, we'll add a support for a new `auth0` attribute. This attribute will be used to store the user's Auth0 ID, which is used to uniquely identify the user in Auth0.

```php
<?php

declare(strict_types=1);

namespace App\Models;

use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\Access\Authorizable;

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract
{
    use Authenticatable,
        Authorizable,
        HasFactory;

    protected $fillable = [
        'auth0',
        'name',
        'email',
        'email_verified',
        'password',
    ];

    protected $hidden = [
        'password',
        'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}
```

Next, create a migration to update your application's `users` table schema to support these changes. Create a new migration file:

```bash
php artisan make:migration update_users_table --table=users
```

Openly the newly created migration file (found under `database/migrations` and ending in `update_users_table.php`) and update to match the following example:

```php
<?php

declare(strict_types=1);

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('auth0')->nullable();
            $table->boolean('email_verified')->default(false);

            $table->unique('auth0', 'users_auth0_unique');
        });
    }

    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropUnique('users_auth0_unique');

            $table->dropColumn('auth0');
            $table->dropColumn('email_verified');
        });
    }
};

```

Now run the migration:

```bash
php artisan migrate
```

## Creating a User Repository

You'll need to create a new user repository class to handle the creation and retrieval of your Eloquent user models from your database table.

Create a new repository class in your application at `app/Repositories/UserRepository.php`, and update it to match the following example:

```php
<?php

declare(strict_types=1);

namespace App\Repositories;

use App\Models\User;
use Auth0\Laravel\{UserRepositoryAbstract, UserRepositoryContract};
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

final class UserRepository extends UserRepositoryAbstract implements UserRepositoryContract
{
    public function fromAccessToken(array $user): ?Authenticatable
    {
        /*
            $user = [ // Example of a decoded access token
                "iss"   => "https://example.auth0.com/",
                "aud"   => "https://api.example.com/calendar/v1/",
                "sub"   => "auth0|123456",
                "exp"   => 1458872196,
                "iat"   => 1458785796,
                "scope" => "read write",
            ];
        */

        $identifier = $user['sub'] ?? $user['auth0'] ?? null;

        if (null === $identifier) {
            return null;
        }

        return User::where('auth0', $identifier)->first();
    }

    public function fromSession(array $user): ?Authenticatable
    {
        /*
            $user = [ // Example of a decoded ID token
                "iss"         => "http://example.auth0.com",
                "aud"         => "client_id",
                "sub"         => "auth0|123456",
                "exp"         => 1458872196,
                "iat"         => 1458785796,
                "name"        => "Jane Doe",
                "email"       => "janedoe@example.com",
            ];
        */

        // Determine the Auth0 identifier for the user from the $user array.
        $identifier = $user['sub'] ?? $user['auth0'] ?? null;

        // Collect relevant user profile information from the $user array for use later.
        $profile = [
            'auth0' => $identifier,
            'name' => $user['name'] ?? '',
            'email' => $user['email'] ?? '',
            'email_verified' => in_array($user['email_verified'], [1, true], true),
        ];

        // Check if a cache of the user exists in memory to avoid unnecessary database queries.
        $cached = $this->withoutRecording(fn () => Cache::get('auth0_user_' . $identifier));

        if ($cached) {
            // Immediately return a cached user if one exists.
            return $cached;
        }

        $user = null;

        // Check if the user exists in the database by Auth0 identifier.
        if (null !== $identifier) {
            $user = User::where('auth0', $identifier)->first();
        }

        // Optional: if the user does not exist in the database by Auth0 identifier, you could fallback to matching by email.
        if (null === $user && isset($user['email'])) {
            $user = User::where('email', $user['email'])->first();
        }

        // If a user was found, check if any updates to the local record are required.
        if (null !== $user) {
            $updates = [];

            if ($user->auth0 !== $profile['auth0']) {
                $updates['auth0'] = $profile['auth0'];
            }

            if ($user->name !== $profile['name']) {
                $updates['name'] = $profile['name'];
            }

            if ($user->email !== $profile['email']) {
                $updates['email'] = $profile['email'];
            }

            $emailVerified = in_array($user->email_verified, [1, true], true);

            if ($emailVerified !== $profile['email_verified']) {
                $updates['email_verified'] = $profile['email_verified'];
            }

            if ([] !== $updates) {
                $user->update($updates);
                $user->save();
            }

            if ([] === $updates && null !== $cached) {
                return $user;
            }
        }

        if (null === $user) {
            // Local password column is not necessary or used by Auth0 authentication, but may be expected by some applications/packages.
            $profile['password'] = Hash::make(Str::random(32));

            // Create the user.
            $user = User::create($profile);
        }

        // Cache the user for 30 seconds.
        $this->withoutRecording(fn () => Cache::put('auth0_user_' . $identifier, $user, 30));

        return $user;
    }

    /**
     * Workaround for Laravel Telescope potentially causing an infinite loop.
     * @link https://github.com/auth0/laravel-auth0/tree/main/docs/Telescope.md
     *
     * @param callable $callback
     */
    private function withoutRecording($callback): mixed
    {
        $telescope = '\Laravel\Telescope\Telescope';

        if (class_exists($telescope)) {
            return "$telescope"::withoutRecording($callback);
        }

        return call_user_func($callback);
    }
}
```

Finally, update your application's `config/auth.php` file to configure the SDK to query your new user provider during authentication requests.

```php
'providers' => [
  'auth0-provider' => [
    'driver' => 'auth0.provider',
    'repository' => \App\Repositories\UserRepository::class,
  ],
],
```


================================================
FILE: docs/Events.md
================================================
# Events

- [Introduction](#introduction)
- [SDK Controller Events](#sdk-controller-events)
  - [Login Events](#login-events)
  - [Callback Events](#callback-events)
  - [Logout Events](#logout-events)
- [Deprecated SDK Events](#deprecated-sdk-events)
  - [Authentication Middleware Events](#authentication-middleware-events)
  - [Authorization Middleware Events](#authorization-middleware-events)

## Introduction

Your application can listen to events raised by the SDK, and respond to them if desired. For example, you might want to log t
Download .txt
gitextract_de5m7bm0/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SECURITY.md
│   ├── SUPPORT.md
│   ├── actions/
│   │   ├── get-prerelease/
│   │   │   └── action.yml
│   │   ├── get-version/
│   │   │   └── action.yml
│   │   ├── publish-package/
│   │   │   └── action.yml
│   │   ├── release-create/
│   │   │   └── action.yml
│   │   ├── rl-scanner/
│   │   │   └── action.yml
│   │   ├── setup/
│   │   │   └── action.yml
│   │   ├── tag-create/
│   │   │   └── action.yml
│   │   └── tag-exists/
│   │       └── action.yml
│   ├── dependabot.yml
│   └── workflows/
│       ├── claude-code-review.yml
│       ├── matrix.json
│       ├── release.yml
│       ├── rl-scanner.yml
│       ├── snyk.yml
│       └── tests.yml
├── .gitignore
├── .php-cs-fixer.dist.php
├── .phpcs.xml.dist
├── .semgrepignore
├── .shiprc
├── .version
├── CHANGELOG.ARCHIVE.md
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── UPGRADE.md
├── codecov.yml
├── composer.json
├── config/
│   └── auth0.php
├── deprecated/
│   ├── Cache/
│   │   ├── LaravelCacheItem.php
│   │   └── LaravelCachePool.php
│   ├── Contract/
│   │   ├── Auth/
│   │   │   ├── Guard.php
│   │   │   └── User/
│   │   │       ├── Provider.php
│   │   │       └── Repository.php
│   │   ├── Auth0.php
│   │   ├── Configuration.php
│   │   ├── Entities/
│   │   │   └── Credential.php
│   │   ├── Event/
│   │   │   ├── Auth0Event.php
│   │   │   ├── Configuration/
│   │   │   │   ├── Building.php
│   │   │   │   └── Built.php
│   │   │   ├── Middleware/
│   │   │   │   ├── StatefulRequest.php
│   │   │   │   └── StatelessRequest.php
│   │   │   ├── Stateful/
│   │   │   │   ├── AuthenticationFailed.php
│   │   │   │   ├── AuthenticationSucceeded.php
│   │   │   │   ├── LoginAttempting.php
│   │   │   │   ├── TokenExpired.php
│   │   │   │   ├── TokenRefreshFailed.php
│   │   │   │   └── TokenRefreshSucceeded.php
│   │   │   └── Stateless/
│   │   │       ├── TokenVerificationAttempting.php
│   │   │       ├── TokenVerificationFailed.php
│   │   │       └── TokenVerificationSucceeded.php
│   │   ├── Exception/
│   │   │   ├── AuthenticationException.php
│   │   │   ├── GuardException.php
│   │   │   ├── SessionException.php
│   │   │   └── Stateful/
│   │   │       └── CallbackException.php
│   │   ├── Http/
│   │   │   ├── Controller/
│   │   │   │   └── Stateful/
│   │   │   │       ├── Callback.php
│   │   │   │       ├── Login.php
│   │   │   │       └── Logout.php
│   │   │   └── Middleware/
│   │   │       ├── Stateful/
│   │   │       │   ├── Authenticate.php
│   │   │       │   └── AuthenticateOptional.php
│   │   │       └── Stateless/
│   │   │           ├── Authorize.php
│   │   │           └── AuthorizeOptional.php
│   │   ├── Model/
│   │   │   ├── Stateful/
│   │   │   │   └── User.php
│   │   │   ├── Stateless/
│   │   │   │   └── User.php
│   │   │   └── User.php
│   │   └── ServiceProvider.php
│   ├── Event/
│   │   ├── Configuration/
│   │   │   ├── Building.php
│   │   │   └── Built.php
│   │   ├── Middleware/
│   │   │   ├── StatefulRequest.php
│   │   │   └── StatelessRequest.php
│   │   ├── Stateful/
│   │   │   ├── AuthenticationFailed.php
│   │   │   ├── AuthenticationSucceeded.php
│   │   │   ├── LoginAttempting.php
│   │   │   ├── TokenExpired.php
│   │   │   ├── TokenRefreshFailed.php
│   │   │   └── TokenRefreshSucceeded.php
│   │   └── Stateless/
│   │       ├── TokenVerificationAttempting.php
│   │       ├── TokenVerificationFailed.php
│   │       └── TokenVerificationSucceeded.php
│   ├── Exception/
│   │   ├── AuthenticationException.php
│   │   ├── GuardException.php
│   │   ├── SessionException.php
│   │   └── Stateful/
│   │       └── CallbackException.php
│   ├── Http/
│   │   ├── Controller/
│   │   │   └── Stateful/
│   │   │       ├── Callback.php
│   │   │       ├── Login.php
│   │   │       └── Logout.php
│   │   └── Middleware/
│   │       ├── Guard.php
│   │       ├── Stateful/
│   │       │   ├── Authenticate.php
│   │       │   └── AuthenticateOptional.php
│   │       └── Stateless/
│   │           ├── Authorize.php
│   │           └── AuthorizeOptional.php
│   ├── Model/
│   │   ├── Imposter.php
│   │   ├── Stateful/
│   │   │   └── User.php
│   │   ├── Stateless/
│   │   │   └── User.php
│   │   └── User.php
│   ├── README.md
│   └── Store/
│       └── LaravelSession.php
├── docs/
│   ├── BackchannelLogout.md
│   ├── Configuration.md
│   ├── Cookies.md
│   ├── Deployment.md
│   ├── Eloquent.md
│   ├── Events.md
│   ├── Installation.md
│   ├── Management.md
│   ├── Octane.md
│   ├── Sessions.md
│   ├── Support.md
│   ├── Telescope.md
│   └── Users.md
├── opslevel.yml
├── phpstan.neon.dist
├── phpunit.xml.dist
├── psalm.xml.dist
├── rector.php
├── src/
│   ├── Auth/
│   │   └── Guard.php
│   ├── Auth0.php
│   ├── Bridges/
│   │   ├── BridgeAbstract.php
│   │   ├── BridgeContract.php
│   │   ├── CacheBridge.php
│   │   ├── CacheBridgeAbstract.php
│   │   ├── CacheBridgeContract.php
│   │   ├── CacheItemBridge.php
│   │   ├── CacheItemBridgeAbstract.php
│   │   ├── CacheItemBridgeContract.php
│   │   ├── SessionBridge.php
│   │   ├── SessionBridgeAbstract.php
│   │   └── SessionBridgeContract.php
│   ├── Configuration.php
│   ├── ConfigurationContract.php
│   ├── Controllers/
│   │   ├── CallbackController.php
│   │   ├── CallbackControllerAbstract.php
│   │   ├── CallbackControllerContract.php
│   │   ├── ControllerAbstract.php
│   │   ├── ControllerContract.php
│   │   ├── LoginController.php
│   │   ├── LoginControllerAbstract.php
│   │   ├── LoginControllerContract.php
│   │   ├── LogoutController.php
│   │   ├── LogoutControllerAbstract.php
│   │   └── LogoutControllerContract.php
│   ├── Entities/
│   │   ├── CredentialEntity.php
│   │   ├── CredentialEntityAbstract.php
│   │   ├── CredentialEntityContract.php
│   │   ├── EntityAbstract.php
│   │   ├── EntityContract.php
│   │   ├── InstanceEntity.php
│   │   ├── InstanceEntityAbstract.php
│   │   ├── InstanceEntityContract.php
│   │   └── InstanceEntityTrait.php
│   ├── Events/
│   │   ├── Auth0EventContract.php
│   │   ├── AuthenticationFailed.php
│   │   ├── AuthenticationFailedAbstract.php
│   │   ├── AuthenticationFailedContract.php
│   │   ├── AuthenticationSucceeded.php
│   │   ├── AuthenticationSucceededAbstract.php
│   │   ├── AuthenticationSucceededContract.php
│   │   ├── Configuration/
│   │   │   ├── BuildingConfigurationEvent.php
│   │   │   ├── BuildingConfigurationEventAbstract.php
│   │   │   ├── BuildingConfigurationEventContract.php
│   │   │   ├── BuiltConfigurationEvent.php
│   │   │   ├── BuiltConfigurationEventAbstract.php
│   │   │   └── BuiltConfigurationEventContract.php
│   │   ├── EventAbstract.php
│   │   ├── EventContract.php
│   │   ├── LoginAttempting.php
│   │   ├── LoginAttemptingAbstract.php
│   │   ├── LoginAttemptingContract.php
│   │   ├── Middleware/
│   │   │   ├── StatefulMiddlewareRequest.php
│   │   │   ├── StatefulMiddlewareRequestAbstract.php
│   │   │   ├── StatefulMiddlewareRequestContract.php
│   │   │   ├── StatelessMiddlewareRequest.php
│   │   │   ├── StatelessMiddlewareRequestAbstract.php
│   │   │   └── StatelessMiddlewareRequestContract.php
│   │   ├── TokenExpired.php
│   │   ├── TokenExpiredAbstract.php
│   │   ├── TokenExpiredContract.php
│   │   ├── TokenRefreshFailed.php
│   │   ├── TokenRefreshFailedAbstract.php
│   │   ├── TokenRefreshFailedContract.php
│   │   ├── TokenRefreshSucceeded.php
│   │   ├── TokenRefreshSucceededAbstract.php
│   │   ├── TokenRefreshSucceededContract.php
│   │   ├── TokenVerificationAttempting.php
│   │   ├── TokenVerificationAttemptingAbstract.php
│   │   ├── TokenVerificationAttemptingContract.php
│   │   ├── TokenVerificationFailed.php
│   │   ├── TokenVerificationFailedAbstract.php
│   │   ├── TokenVerificationFailedContract.php
│   │   ├── TokenVerificationSucceeded.php
│   │   ├── TokenVerificationSucceededAbstract.php
│   │   └── TokenVerificationSucceededContract.php
│   ├── Events.php
│   ├── EventsContract.php
│   ├── Exceptions/
│   │   ├── AuthenticationException.php
│   │   ├── AuthenticationExceptionAbstract.php
│   │   ├── AuthenticationExceptionContract.php
│   │   ├── ControllerException.php
│   │   ├── ControllerExceptionAbstract.php
│   │   ├── ControllerExceptionContract.php
│   │   ├── Controllers/
│   │   │   ├── CallbackControllerException.php
│   │   │   ├── CallbackControllerExceptionAbstract.php
│   │   │   └── CallbackControllerExceptionContract.php
│   │   ├── ExceptionAbstract.php
│   │   ├── ExceptionContract.php
│   │   ├── GuardException.php
│   │   ├── GuardExceptionAbstract.php
│   │   ├── GuardExceptionContract.php
│   │   ├── SessionException.php
│   │   ├── SessionExceptionAbstract.php
│   │   └── SessionExceptionContract.php
│   ├── Facade/
│   │   └── Auth0.php
│   ├── Guards/
│   │   ├── AuthenticationGuard.php
│   │   ├── AuthenticationGuardContract.php
│   │   ├── AuthorizationGuard.php
│   │   ├── AuthorizationGuardContract.php
│   │   ├── GuardAbstract.php
│   │   └── GuardContract.php
│   ├── Middleware/
│   │   ├── AuthenticateMiddleware.php
│   │   ├── AuthenticateMiddlewareAbstract.php
│   │   ├── AuthenticateMiddlewareContract.php
│   │   ├── AuthenticateOptionalMiddleware.php
│   │   ├── AuthenticateOptionalMiddlewareAbstract.php
│   │   ├── AuthenticateOptionalMiddlewareContract.php
│   │   ├── AuthenticatorMiddleware.php
│   │   ├── AuthenticatorMiddlewareContract.php
│   │   ├── AuthorizeMiddleware.php
│   │   ├── AuthorizeMiddlewareAbstract.php
│   │   ├── AuthorizeMiddlewareContract.php
│   │   ├── AuthorizeOptionalMiddleware.php
│   │   ├── AuthorizeOptionalMiddlewareAbstract.php
│   │   ├── AuthorizeOptionalMiddlewareContract.php
│   │   ├── AuthorizerMiddleware.php
│   │   ├── AuthorizerMiddlewareContract.php
│   │   ├── GuardMiddleware.php
│   │   ├── GuardMiddlewareAbstract.php
│   │   ├── GuardMiddlewareContract.php
│   │   ├── MiddlewareAbstract.php
│   │   └── MiddlewareContract.php
│   ├── Service.php
│   ├── ServiceAbstract.php
│   ├── ServiceContract.php
│   ├── ServiceProvider.php
│   ├── ServiceProviderAbstract.php
│   ├── ServiceProviderContract.php
│   ├── Traits/
│   │   ├── ActingAsAuth0User.php
│   │   └── Impersonate.php
│   ├── UserProvider.php
│   ├── UserProviderAbstract.php
│   ├── UserProviderContract.php
│   ├── UserRepository.php
│   ├── UserRepositoryAbstract.php
│   ├── UserRepositoryContract.php
│   └── Users/
│       ├── ImposterUser.php
│       ├── ImposterUserContract.php
│       ├── StatefulUser.php
│       ├── StatefulUserContract.php
│       ├── StatelessUser.php
│       ├── StatelessUserContract.php
│       ├── UserAbstract.php
│       ├── UserContract.php
│       └── UserTrait.php
└── tests/
    ├── Pest.php
    ├── TestCase.php
    └── Unit/
        ├── Auth/
        │   ├── GuardStatefulTest.php
        │   ├── GuardStatelessTest.php
        │   └── GuardTest.php
        ├── Bridges/
        │   ├── CacheBridgeTest.php
        │   ├── CacheItemBridgeTest.php
        │   └── SessionBridgeTest.php
        ├── ConfigurationTest.php
        ├── Controllers/
        │   ├── CallbackControllerTest.php
        │   ├── LoginControllerTest.php
        │   └── LogoutControllerTest.php
        ├── Entities/
        │   ├── CredentialEntityTest.php
        │   └── InstanceEntityTest.php
        ├── Guards/
        │   ├── AuthenticationGuardTest.php
        │   └── AuthorizationGuardTest.php
        ├── Middleware/
        │   ├── AuthenticateMiddlewareTest.php
        │   ├── AuthenticateOptionalMiddlewareTest.php
        │   ├── AuthenticatorMiddlewareTest.php
        │   ├── AuthorizeMiddlewareTest.php
        │   ├── AuthorizeOptionalMiddlewareTest.php
        │   ├── AuthorizerMiddlewareTest.php
        │   └── GuardMiddlewareTest.php
        ├── ServiceProviderTest.php
        ├── ServiceTest.php
        ├── Traits/
        │   ├── ActingAsAuth0UserTest.php
        │   └── ImpersonateTest.php
        ├── UserProviderTest.php
        ├── UserRepositoryTest.php
        └── Users/
            └── UserTest.php
Download .txt
SYMBOL INDEX (606 symbols across 218 files)

FILE: deprecated/Cache/LaravelCacheItem.php
  class LaravelCacheItem (line 21) | final class LaravelCacheItem extends CacheItemBridgeAbstract implements ...
    method expiresAfter (line 23) | public function expiresAfter(int | DateInterval | null $time): static
    method expiresAt (line 34) | public function expiresAt(?DateTimeInterface $expiration): static
    method set (line 41) | public function set(mixed $value): static
    method miss (line 48) | public static function miss(string $key): self

FILE: deprecated/Cache/LaravelCachePool.php
  class LaravelCachePool (line 16) | final class LaravelCachePool extends CacheBridgeAbstract implements Cach...

FILE: deprecated/Contract/Auth/Guard.php
  type Guard (line 14) | interface Guard extends GuardContract

FILE: deprecated/Contract/Auth/User/Provider.php
  type Provider (line 14) | interface Provider extends UserProviderContract

FILE: deprecated/Contract/Auth/User/Repository.php
  type Repository (line 14) | interface Repository extends UserRepositoryContract

FILE: deprecated/Contract/Auth0.php
  type Auth0 (line 14) | interface Auth0 extends ServiceContract

FILE: deprecated/Contract/Configuration.php
  type Configuration (line 14) | interface Configuration extends ConfigurationContract

FILE: deprecated/Contract/Entities/Credential.php
  type Credential (line 14) | interface Credential extends CredentialEntityContract

FILE: deprecated/Contract/Event/Auth0Event.php
  type Auth0Event (line 14) | interface Auth0Event extends EventContract

FILE: deprecated/Contract/Event/Configuration/Building.php
  type Building (line 14) | interface Building extends BuildingConfigurationEventContract

FILE: deprecated/Contract/Event/Configuration/Built.php
  type Built (line 14) | interface Built extends BuiltConfigurationEventContract

FILE: deprecated/Contract/Event/Middleware/StatefulRequest.php
  type StatefulRequest (line 14) | interface StatefulRequest extends StatefulMiddlewareRequestContract

FILE: deprecated/Contract/Event/Middleware/StatelessRequest.php
  type StatelessRequest (line 14) | interface StatelessRequest extends StatelessMiddlewareRequestContract

FILE: deprecated/Contract/Event/Stateful/AuthenticationFailed.php
  type AuthenticationFailed (line 14) | interface AuthenticationFailed extends AuthenticationFailedContract

FILE: deprecated/Contract/Event/Stateful/AuthenticationSucceeded.php
  type AuthenticationSucceeded (line 14) | interface AuthenticationSucceeded extends AuthenticationSucceededContract

FILE: deprecated/Contract/Event/Stateful/LoginAttempting.php
  type LoginAttempting (line 14) | interface LoginAttempting extends LoginAttemptingContract

FILE: deprecated/Contract/Event/Stateful/TokenExpired.php
  type TokenExpired (line 14) | interface TokenExpired extends TokenExpiredContract

FILE: deprecated/Contract/Event/Stateful/TokenRefreshFailed.php
  type TokenRefreshFailed (line 14) | interface TokenRefreshFailed extends TokenRefreshFailedContract

FILE: deprecated/Contract/Event/Stateful/TokenRefreshSucceeded.php
  type TokenRefreshSucceeded (line 14) | interface TokenRefreshSucceeded extends TokenRefreshSucceededContract

FILE: deprecated/Contract/Event/Stateless/TokenVerificationAttempting.php
  type TokenVerificationAttempting (line 14) | interface TokenVerificationAttempting extends TokenVerificationAttemptin...

FILE: deprecated/Contract/Event/Stateless/TokenVerificationFailed.php
  type TokenVerificationFailed (line 14) | interface TokenVerificationFailed extends TokenVerificationFailedContract

FILE: deprecated/Contract/Event/Stateless/TokenVerificationSucceeded.php
  type TokenVerificationSucceeded (line 14) | interface TokenVerificationSucceeded extends TokenVerificationSucceededC...

FILE: deprecated/Contract/Exception/AuthenticationException.php
  type AuthenticationException (line 14) | interface AuthenticationException extends AuthenticationExceptionContract

FILE: deprecated/Contract/Exception/GuardException.php
  type GuardException (line 14) | interface GuardException extends GuardExceptionContract

FILE: deprecated/Contract/Exception/SessionException.php
  type SessionException (line 14) | interface SessionException extends SessionExceptionContract

FILE: deprecated/Contract/Exception/Stateful/CallbackException.php
  type CallbackException (line 14) | interface CallbackException extends CallbackControllerExceptionContract

FILE: deprecated/Contract/Http/Controller/Stateful/Callback.php
  type Callback (line 14) | interface Callback extends CallbackControllerContract

FILE: deprecated/Contract/Http/Controller/Stateful/Login.php
  type Login (line 14) | interface Login extends LoginControllerContract

FILE: deprecated/Contract/Http/Controller/Stateful/Logout.php
  type Logout (line 14) | interface Logout extends LogoutControllerContract

FILE: deprecated/Contract/Http/Middleware/Stateful/Authenticate.php
  type Authenticate (line 14) | interface Authenticate extends AuthenticateMiddlewareContract

FILE: deprecated/Contract/Http/Middleware/Stateful/AuthenticateOptional.php
  type AuthenticateOptional (line 14) | interface AuthenticateOptional extends AuthenticateOptionalMiddlewareCon...

FILE: deprecated/Contract/Http/Middleware/Stateless/Authorize.php
  type Authorize (line 14) | interface Authorize extends AuthorizeMiddlewareContract

FILE: deprecated/Contract/Http/Middleware/Stateless/AuthorizeOptional.php
  type AuthorizeOptional (line 14) | interface AuthorizeOptional extends AuthorizeOptionalMiddlewareContract

FILE: deprecated/Contract/Model/Stateful/User.php
  type User (line 14) | interface User extends StatefulUserContract

FILE: deprecated/Contract/Model/Stateless/User.php
  type User (line 14) | interface User extends StatelessUserContract

FILE: deprecated/Contract/Model/User.php
  type User (line 14) | interface User extends UserContract

FILE: deprecated/Contract/ServiceProvider.php
  type ServiceProvider (line 14) | interface ServiceProvider extends ServiceProviderContract

FILE: deprecated/Event/Configuration/Building.php
  class Building (line 14) | final class Building extends BuildingConfigurationEventAbstract implemen...

FILE: deprecated/Event/Configuration/Built.php
  class Built (line 14) | final class Built extends BuiltConfigurationEventAbstract implements Bui...

FILE: deprecated/Event/Middleware/StatefulRequest.php
  class StatefulRequest (line 14) | final class StatefulRequest extends StatefulMiddlewareRequestAbstract im...

FILE: deprecated/Event/Middleware/StatelessRequest.php
  class StatelessRequest (line 14) | final class StatelessRequest extends StatelessMiddlewareRequestAbstract ...

FILE: deprecated/Event/Stateful/AuthenticationFailed.php
  class AuthenticationFailed (line 14) | final class AuthenticationFailed extends AuthenticationFailedAbstract im...

FILE: deprecated/Event/Stateful/AuthenticationSucceeded.php
  class AuthenticationSucceeded (line 14) | final class AuthenticationSucceeded extends AuthenticationSucceededAbstr...

FILE: deprecated/Event/Stateful/LoginAttempting.php
  class LoginAttempting (line 14) | final class LoginAttempting extends LoginAttemptingAbstract implements L...

FILE: deprecated/Event/Stateful/TokenExpired.php
  class TokenExpired (line 14) | final class TokenExpired extends TokenExpiredAbstract implements TokenEx...

FILE: deprecated/Event/Stateful/TokenRefreshFailed.php
  class TokenRefreshFailed (line 14) | final class TokenRefreshFailed extends TokenRefreshFailedAbstract implem...

FILE: deprecated/Event/Stateful/TokenRefreshSucceeded.php
  class TokenRefreshSucceeded (line 14) | final class TokenRefreshSucceeded extends TokenRefreshSucceededAbstract ...

FILE: deprecated/Event/Stateless/TokenVerificationAttempting.php
  class TokenVerificationAttempting (line 14) | final class TokenVerificationAttempting extends TokenVerificationAttempt...

FILE: deprecated/Event/Stateless/TokenVerificationFailed.php
  class TokenVerificationFailed (line 14) | final class TokenVerificationFailed extends TokenVerificationFailedAbstr...

FILE: deprecated/Event/Stateless/TokenVerificationSucceeded.php
  class TokenVerificationSucceeded (line 14) | final class TokenVerificationSucceeded extends TokenVerificationSucceede...

FILE: deprecated/Exception/AuthenticationException.php
  class AuthenticationException (line 14) | final class AuthenticationException extends AuthenticationExceptionAbstr...

FILE: deprecated/Exception/GuardException.php
  class GuardException (line 14) | final class GuardException extends GuardExceptionAbstract implements Gua...

FILE: deprecated/Exception/SessionException.php
  class SessionException (line 14) | final class SessionException extends SessionExceptionAbstract implements...

FILE: deprecated/Exception/Stateful/CallbackException.php
  class CallbackException (line 14) | final class CallbackException extends CallbackControllerExceptionAbstrac...

FILE: deprecated/Http/Controller/Stateful/Callback.php
  class Callback (line 14) | final class Callback extends CallbackControllerAbstract implements Callb...

FILE: deprecated/Http/Controller/Stateful/Login.php
  class Login (line 14) | final class Login extends LoginControllerAbstract implements LoginContro...

FILE: deprecated/Http/Controller/Stateful/Logout.php
  class Logout (line 14) | final class Logout extends LogoutControllerAbstract implements LogoutCon...

FILE: deprecated/Http/Middleware/Guard.php
  class Guard (line 14) | final class Guard extends GuardMiddlewareAbstract implements GuardMiddle...

FILE: deprecated/Http/Middleware/Stateful/Authenticate.php
  class Authenticate (line 14) | final class Authenticate extends AuthenticateMiddlewareAbstract implemen...

FILE: deprecated/Http/Middleware/Stateful/AuthenticateOptional.php
  class AuthenticateOptional (line 14) | final class AuthenticateOptional extends AuthenticateOptionalMiddlewareA...

FILE: deprecated/Http/Middleware/Stateless/Authorize.php
  class Authorize (line 14) | final class Authorize extends AuthorizeMiddlewareAbstract implements Aut...

FILE: deprecated/Http/Middleware/Stateless/AuthorizeOptional.php
  class AuthorizeOptional (line 14) | final class AuthorizeOptional extends AuthorizeOptionalMiddlewareAbstrac...

FILE: deprecated/Model/Imposter.php
  class Imposter (line 14) | final class Imposter extends UserAbstract implements ImposterUserContract

FILE: deprecated/Model/Stateful/User.php
  class User (line 14) | final class User extends UserAbstract implements StatefulUserContract

FILE: deprecated/Model/Stateless/User.php
  class User (line 14) | final class User extends UserAbstract implements StatelessUserContract

FILE: deprecated/Model/User.php
  class User (line 14) | abstract class User extends UserAbstract

FILE: deprecated/Store/LaravelSession.php
  class LaravelSession (line 16) | final class LaravelSession extends SessionBridgeAbstract implements Sess...

FILE: src/Auth/Guard.php
  class Guard (line 16) | final class Guard extends GuardAbstract implements GuardContract
    method find (line 27) | public function find(
    method forgetUser (line 48) | public function forgetUser(): self
    method getCredential (line 55) | public function getCredential(): ?CredentialEntityContract
    method login (line 82) | public function login(
    method logout (line 101) | public function logout(): GuardContract
    method refreshUser (line 122) | public function refreshUser(): void
    method setCredential (line 139) | public function setCredential(
    method setImpersonating (line 162) | public function setImpersonating(
    method setUser (line 172) | public function setUser(
    method user (line 196) | public function user(): ?Authenticatable
    method getAuthenticationGuard (line 225) | private function getAuthenticationGuard(): AuthenticationGuardContract
    method getAuthorizationGuard (line 232) | private function getAuthorizationGuard(): AuthorizationGuardContract
    method getCredentialSource (line 239) | private function getCredentialSource(): ?int

FILE: src/Auth0.php
  class Auth0 (line 33) | final class Auth0 extends ServiceAbstract implements ServiceContract

FILE: src/Bridges/BridgeAbstract.php
  class BridgeAbstract (line 12) | abstract class BridgeAbstract

FILE: src/Bridges/BridgeContract.php
  type BridgeContract (line 10) | interface BridgeContract

FILE: src/Bridges/CacheBridge.php
  class CacheBridge (line 14) | final class CacheBridge extends CacheBridgeAbstract implements CacheBrid...

FILE: src/Bridges/CacheBridgeAbstract.php
  class CacheBridgeAbstract (line 19) | abstract class CacheBridgeAbstract extends BridgeAbstract
    method clear (line 26) | final public function clear(): bool
    method commit (line 33) | final public function commit(): bool
    method deleteItem (line 55) | final public function deleteItem(string $key): bool
    method deleteItems (line 60) | final public function deleteItems(array $keys): bool
    method getItem (line 73) | final public function getItem(string $key): CacheItemInterface
    method getItems (line 89) | final public function getItems(array $keys = []): iterable
    method hasItem (line 109) | final public function hasItem(string $key): bool
    method save (line 115) | final public function save(CacheItemInterface $item): bool
    method saveDeferred (line 134) | final public function saveDeferred(CacheItemInterface $item): bool
    method createItem (line 148) | protected function createItem(string $key, mixed $value): CacheItemInt...
    method getCache (line 163) | protected function getCache(): Store
    method getDeferred (line 181) | protected function getDeferred(string $key): ?CacheItemInterface

FILE: src/Bridges/CacheBridgeContract.php
  type CacheBridgeContract (line 12) | interface CacheBridgeContract extends BridgeContract, CacheItemPoolInter...

FILE: src/Bridges/CacheItemBridge.php
  class CacheItemBridge (line 20) | final class CacheItemBridge extends CacheItemBridgeAbstract implements C...
    method expiresAfter (line 22) | public function expiresAfter(int | DateInterval | null $time): static
    method expiresAt (line 33) | public function expiresAt(?DateTimeInterface $expiration): static
    method set (line 40) | public function set(mixed $value): static
    method miss (line 47) | public static function miss(string $key): self

FILE: src/Bridges/CacheItemBridgeAbstract.php
  class CacheItemBridgeAbstract (line 14) | abstract class CacheItemBridgeAbstract extends BridgeAbstract
    method __construct (line 16) | public function __construct(
    method get (line 24) | final public function get(): mixed
    method getExpiration (line 32) | final public function getExpiration(): DateTimeInterface
    method getKey (line 37) | final public function getKey(): string
    method getRawValue (line 45) | final public function getRawValue(): mixed
    method isHit (line 50) | final public function isHit(): bool
    method expiresAfter (line 55) | abstract public function expiresAfter(int | DateInterval | null $time)...
    method expiresAt (line 57) | abstract public function expiresAt(?DateTimeInterface $expiration): st...
    method set (line 59) | abstract public function set(mixed $value): static;

FILE: src/Bridges/CacheItemBridgeContract.php
  type CacheItemBridgeContract (line 12) | interface CacheItemBridgeContract extends BridgeContract, CacheItemInter...
    method miss (line 19) | public static function miss(string $key): self;

FILE: src/Bridges/SessionBridge.php
  class SessionBridge (line 14) | final class SessionBridge extends SessionBridgeAbstract implements Sessi...

FILE: src/Bridges/SessionBridgeAbstract.php
  class SessionBridgeAbstract (line 19) | abstract class SessionBridgeAbstract extends BridgeAbstract
    method __construct (line 21) | public function __construct(
    method defer (line 32) | final public function defer(bool $deferring): void
    method delete (line 43) | final public function delete(string $key): void
    method get (line 61) | final public function get(string $key, $default = null): mixed
    method getAll (line 73) | final public function getAll(): array
    method getPrefix (line 83) | final public function getPrefix(): string
    method purge (line 93) | final public function purge(): void
    method set (line 106) | final public function set(string $key, $value): void
    method setPrefix (line 121) | final public function setPrefix(
    method getPayload (line 135) | protected function getPayload(): ?array
    method getStore (line 157) | protected function getStore(): Store

FILE: src/Bridges/SessionBridgeContract.php
  type SessionBridgeContract (line 12) | interface SessionBridgeContract extends StoreInterface

FILE: src/Configuration.php
  class Configuration (line 23) | final class Configuration implements ConfigurationContract
    method get (line 297) | public static function get(
    method getEnvironment (line 356) | public static function getEnvironment(): array
    method getJson (line 435) | public static function getJson(): array
    method getPath (line 468) | public static function getPath(): string
    method string (line 483) | public static function string(string $key, ?string $default = null): ?...
    method stringOrIntToIntOrNull (line 494) | public static function stringOrIntToIntOrNull(
    method stringOrNull (line 515) | public static function stringOrNull(
    method stringToArray (line 548) | public static function stringToArray(array | string | null $config, st...
    method stringToArrayOrNull (line 566) | public static function stringToArrayOrNull(array | string | null $conf...
    method stringToBoolOrNull (line 584) | public static function stringToBoolOrNull(bool | string | null $config...
    method version (line 605) | public static function version(): int
    method getValue (line 612) | private static function getValue(

FILE: src/ConfigurationContract.php
  type ConfigurationContract (line 7) | interface ConfigurationContract
    method get (line 9) | public static function get(
    method getEnvironment (line 14) | public static function getEnvironment(): array;
    method getJson (line 16) | public static function getJson(): array;
    method getPath (line 18) | public static function getPath(): string;
    method stringOrIntToIntOrNull (line 20) | public static function stringOrIntToIntOrNull(
    method stringOrNull (line 25) | public static function stringOrNull(
    method stringToArray (line 30) | public static function stringToArray(array | string | null $config, st...
    method stringToArrayOrNull (line 38) | public static function stringToArrayOrNull(array | string | null $conf...
    method stringToBoolOrNull (line 46) | public static function stringToBoolOrNull(string | bool | null $config...

FILE: src/Controllers/CallbackController.php
  class CallbackController (line 12) | final class CallbackController extends CallbackControllerAbstract implem...

FILE: src/Controllers/CallbackControllerAbstract.php
  class CallbackControllerAbstract (line 26) | abstract class CallbackControllerAbstract extends ControllerAbstract
    method __invoke (line 33) | public function __invoke(

FILE: src/Controllers/CallbackControllerContract.php
  type CallbackControllerContract (line 10) | interface CallbackControllerContract extends ControllerContract
    method __invoke (line 17) | public function __invoke(Request $request): Response;

FILE: src/Controllers/ControllerAbstract.php
  class ControllerAbstract (line 18) | abstract class ControllerAbstract extends Controller
    method __invoke (line 20) | abstract public function __invoke(

FILE: src/Controllers/ControllerContract.php
  type ControllerContract (line 10) | interface ControllerContract

FILE: src/Controllers/LoginController.php
  class LoginController (line 12) | final class LoginController extends LoginControllerAbstract implements L...

FILE: src/Controllers/LoginControllerAbstract.php
  class LoginControllerAbstract (line 23) | abstract class LoginControllerAbstract extends ControllerAbstract
    method __invoke (line 30) | public function __invoke(

FILE: src/Controllers/LoginControllerContract.php
  type LoginControllerContract (line 10) | interface LoginControllerContract extends ControllerContract
    method __invoke (line 18) | public function __invoke(Request $request): Response;

FILE: src/Controllers/LogoutController.php
  class LogoutController (line 12) | final class LogoutController extends LogoutControllerAbstract implements...

FILE: src/Controllers/LogoutControllerAbstract.php
  class LogoutControllerAbstract (line 22) | abstract class LogoutControllerAbstract extends ControllerAbstract
    method __invoke (line 29) | public function __invoke(

FILE: src/Controllers/LogoutControllerContract.php
  type LogoutControllerContract (line 10) | interface LogoutControllerContract extends ControllerContract
    method __invoke (line 18) | public function __invoke(Request $request): Response;

FILE: src/Entities/CredentialEntity.php
  class CredentialEntity (line 17) | final class CredentialEntity extends CredentialEntityAbstract implements...
    method clear (line 19) | public function clear(): self
    method setAccessToken (line 32) | public function setAccessToken(
    method setAccessTokenDecoded (line 40) | public function setAccessTokenDecoded(
    method setAccessTokenExpiration (line 48) | public function setAccessTokenExpiration(
    method setAccessTokenScope (line 56) | public function setAccessTokenScope(
    method setIdToken (line 64) | public function setIdToken(
    method setRefreshToken (line 72) | public function setRefreshToken(
    method setUser (line 80) | public function setUser(
    method create (line 99) | public static function create(

FILE: src/Entities/CredentialEntityAbstract.php
  class CredentialEntityAbstract (line 12) | abstract class CredentialEntityAbstract extends EntityAbstract
    method __construct (line 23) | public function __construct(
    method getAccessToken (line 34) | final public function getAccessToken(): ?string
    method getAccessTokenDecoded (line 42) | final public function getAccessTokenDecoded(): ?array
    method getAccessTokenExpiration (line 47) | final public function getAccessTokenExpiration(): ?int
    method getAccessTokenExpired (line 52) | final public function getAccessTokenExpired(): ?bool
    method getAccessTokenScope (line 66) | final public function getAccessTokenScope(): ?array
    method getIdToken (line 71) | final public function getIdToken(): ?string
    method getRefreshToken (line 76) | final public function getRefreshToken(): ?string
    method getUser (line 81) | final public function getUser(): ?Authenticatable
    method jsonSerialize (line 89) | final public function jsonSerialize(): mixed
    method clear (line 103) | abstract public function clear(): self;
    method setAccessToken (line 105) | abstract public function setAccessToken(
    method setAccessTokenDecoded (line 109) | abstract public function setAccessTokenDecoded(
    method setAccessTokenExpiration (line 113) | abstract public function setAccessTokenExpiration(
    method setAccessTokenScope (line 117) | abstract public function setAccessTokenScope(
    method setIdToken (line 121) | abstract public function setIdToken(
    method setRefreshToken (line 125) | abstract public function setRefreshToken(
    method setUser (line 129) | abstract public function setUser(

FILE: src/Entities/CredentialEntityContract.php
  type CredentialEntityContract (line 12) | interface CredentialEntityContract extends EntityContract
    method clear (line 17) | public function clear(): self;
    method getAccessToken (line 22) | public function getAccessToken(): ?string;
    method getAccessTokenDecoded (line 29) | public function getAccessTokenDecoded(): ?array;
    method getAccessTokenExpiration (line 34) | public function getAccessTokenExpiration(): ?int;
    method getAccessTokenExpired (line 39) | public function getAccessTokenExpired(): ?bool;
    method getAccessTokenScope (line 46) | public function getAccessTokenScope(): ?array;
    method getIdToken (line 51) | public function getIdToken(): ?string;
    method getRefreshToken (line 56) | public function getRefreshToken(): ?string;
    method getUser (line 61) | public function getUser(): ?Authenticatable;
    method setAccessToken (line 68) | public function setAccessToken(
    method setAccessTokenDecoded (line 77) | public function setAccessTokenDecoded(
    method setAccessTokenExpiration (line 86) | public function setAccessTokenExpiration(
    method setAccessTokenScope (line 95) | public function setAccessTokenScope(
    method setIdToken (line 104) | public function setIdToken(
    method setRefreshToken (line 113) | public function setRefreshToken(
    method setUser (line 122) | public function setUser(

FILE: src/Entities/EntityAbstract.php
  class EntityAbstract (line 10) | abstract class EntityAbstract

FILE: src/Entities/EntityContract.php
  type EntityContract (line 10) | interface EntityContract

FILE: src/Entities/InstanceEntity.php
  class InstanceEntity (line 14) | final class InstanceEntity extends InstanceEntityAbstract implements Ins...

FILE: src/Entities/InstanceEntityAbstract.php
  class InstanceEntityAbstract (line 24) | abstract class InstanceEntityAbstract extends EntityAbstract
    method __construct (line 26) | public function __construct(
    method getConfiguration (line 36) | final public function getConfiguration(): SdkConfiguration
    method getCredentials (line 72) | final public function getCredentials(): ?object
    method getGuardConfigurationKey (line 77) | final public function getGuardConfigurationKey(): ?string
    method getSdk (line 82) | final public function getSdk(): Auth0Interface
    method management (line 91) | final public function management(): ManagementInterface
    method setGuardConfigurationKey (line 96) | final public function setGuardConfigurationKey(
    method setSdk (line 104) | final public function setSdk(Auth0Interface $sdk): Auth0Interface
    method reset (line 114) | abstract public function reset(): self;
    method setConfiguration (line 119) | abstract public function setConfiguration(
    method bootBackchannelLogoutCache (line 123) | protected function bootBackchannelLogoutCache(array $config): array
    method bootManagementTokenCache (line 146) | protected function bootManagementTokenCache(array $config): array
    method bootSessionStorage (line 170) | protected function bootSessionStorage(array $config): array
    method bootStrategy (line 198) | protected function bootStrategy(array $config): array
    method bootTokenCache (line 211) | protected function bootTokenCache(array $config): array
    method bootTransientStorage (line 234) | protected function bootTransientStorage(array $config): array
    method createConfiguration (line 262) | protected function createConfiguration(
    method getBackchannelLogoutCachePool (line 283) | protected function getBackchannelLogoutCachePool(): CacheItemPoolInter...
    method getManagementTokenCachePool (line 292) | protected function getManagementTokenCachePool(): CacheItemPoolInterface
    method getTokenCachePool (line 301) | protected function getTokenCachePool(): CacheItemPoolInterface
    method setSdkTelemetry (line 313) | protected function setSdkTelemetry(): self

FILE: src/Entities/InstanceEntityContract.php
  type InstanceEntityContract (line 14) | interface InstanceEntityContract extends EntityContract
    method getConfiguration (line 19) | public function getConfiguration(): SdkConfiguration;
    method getSdk (line 24) | public function getSdk(): Auth0Interface;
    method management (line 29) | public function management(): ManagementInterface;
    method reset (line 34) | public function reset(): self;
    method setConfiguration (line 41) | public function setConfiguration(SdkConfiguration | array | null $conf...
    method setSdk (line 48) | public function setSdk(Auth0Interface $sdk): Auth0Interface;

FILE: src/Entities/InstanceEntityTrait.php
  type InstanceEntityTrait (line 15) | trait InstanceEntityTrait
    method reset (line 17) | public function reset(): self
    method setConfiguration (line 30) | public function setConfiguration(
    method create (line 46) | public static function create(

FILE: src/Events.php
  class Events (line 35) | final class Events implements EventsContract
    method dispatch (line 44) | public static function dispatch(EventContract $event): void
    method framework (line 57) | public static function framework(object $event): void
    method getName (line 70) | private static function getName(EventContract $event): string
    method withoutTelescopeRecording (line 90) | private static function withoutTelescopeRecording(string $event): bool

FILE: src/Events/Auth0EventContract.php
  type Auth0EventContract (line 10) | interface Auth0EventContract extends EventContract

FILE: src/Events/AuthenticationFailed.php
  class AuthenticationFailed (line 12) | final class AuthenticationFailed extends AuthenticationFailedAbstract im...

FILE: src/Events/AuthenticationFailedAbstract.php
  class AuthenticationFailedAbstract (line 14) | abstract class AuthenticationFailedAbstract extends EventAbstract
    method __construct (line 20) | public function __construct(
    method jsonSerialize (line 29) | final public function jsonSerialize(): array

FILE: src/Events/AuthenticationFailedContract.php
  type AuthenticationFailedContract (line 10) | interface AuthenticationFailedContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/Events/AuthenticationSucceeded.php
  class AuthenticationSucceeded (line 12) | final class AuthenticationSucceeded extends AuthenticationSucceededAbstr...

FILE: src/Events/AuthenticationSucceededAbstract.php
  class AuthenticationSucceededAbstract (line 14) | abstract class AuthenticationSucceededAbstract extends EventAbstract
    method __construct (line 19) | public function __construct(
    method jsonSerialize (line 29) | final public function jsonSerialize(): array

FILE: src/Events/AuthenticationSucceededContract.php
  type AuthenticationSucceededContract (line 10) | interface AuthenticationSucceededContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/Events/Configuration/BuildingConfigurationEvent.php
  class BuildingConfigurationEvent (line 12) | final class BuildingConfigurationEvent extends BuildingConfigurationEven...

FILE: src/Events/Configuration/BuildingConfigurationEventAbstract.php
  class BuildingConfigurationEventAbstract (line 14) | abstract class BuildingConfigurationEventAbstract extends EventAbstract
    method __construct (line 19) | public function __construct(
    method jsonSerialize (line 29) | final public function jsonSerialize(): array

FILE: src/Events/Configuration/BuildingConfigurationEventContract.php
  type BuildingConfigurationEventContract (line 12) | interface BuildingConfigurationEventContract extends EventContract
    method jsonSerialize (line 17) | public function jsonSerialize(): array;

FILE: src/Events/Configuration/BuiltConfigurationEvent.php
  class BuiltConfigurationEvent (line 12) | final class BuiltConfigurationEvent extends BuiltConfigurationEventAbstr...

FILE: src/Events/Configuration/BuiltConfigurationEventAbstract.php
  class BuiltConfigurationEventAbstract (line 15) | abstract class BuiltConfigurationEventAbstract extends EventAbstract
    method __construct (line 20) | public function __construct(
    method jsonSerialize (line 30) | final public function jsonSerialize(): array

FILE: src/Events/Configuration/BuiltConfigurationEventContract.php
  type BuiltConfigurationEventContract (line 12) | interface BuiltConfigurationEventContract extends EventContract
    method jsonSerialize (line 17) | public function jsonSerialize(): array;

FILE: src/Events/EventAbstract.php
  class EventAbstract (line 14) | abstract class EventAbstract implements JsonSerializable

FILE: src/Events/EventContract.php
  type EventContract (line 10) | interface EventContract
    method jsonSerialize (line 17) | public function jsonSerialize(): mixed;

FILE: src/Events/LoginAttempting.php
  class LoginAttempting (line 12) | final class LoginAttempting extends LoginAttemptingAbstract implements L...

FILE: src/Events/LoginAttemptingAbstract.php
  class LoginAttemptingAbstract (line 12) | abstract class LoginAttemptingAbstract extends EventAbstract
    method __construct (line 17) | public function __construct(
    method jsonSerialize (line 27) | final public function jsonSerialize(): array

FILE: src/Events/LoginAttemptingContract.php
  type LoginAttemptingContract (line 10) | interface LoginAttemptingContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/Events/Middleware/StatefulMiddlewareRequest.php
  class StatefulMiddlewareRequest (line 12) | final class StatefulMiddlewareRequest extends StatefulMiddlewareRequestA...

FILE: src/Events/Middleware/StatefulMiddlewareRequestAbstract.php
  class StatefulMiddlewareRequestAbstract (line 16) | abstract class StatefulMiddlewareRequestAbstract extends EventAbstract
    method __construct (line 22) | public function __construct(
    method jsonSerialize (line 33) | final public function jsonSerialize(): array

FILE: src/Events/Middleware/StatefulMiddlewareRequestContract.php
  type StatefulMiddlewareRequestContract (line 14) | interface StatefulMiddlewareRequestContract extends EventContract
    method jsonSerialize (line 19) | public function jsonSerialize(): array;

FILE: src/Events/Middleware/StatelessMiddlewareRequest.php
  class StatelessMiddlewareRequest (line 12) | final class StatelessMiddlewareRequest extends StatelessMiddlewareReques...

FILE: src/Events/Middleware/StatelessMiddlewareRequestAbstract.php
  class StatelessMiddlewareRequestAbstract (line 16) | abstract class StatelessMiddlewareRequestAbstract extends EventAbstract
    method __construct (line 22) | public function __construct(
    method jsonSerialize (line 33) | final public function jsonSerialize(): array

FILE: src/Events/Middleware/StatelessMiddlewareRequestContract.php
  type StatelessMiddlewareRequestContract (line 14) | interface StatelessMiddlewareRequestContract extends EventContract
    method jsonSerialize (line 19) | public function jsonSerialize(): array;

FILE: src/Events/TokenExpired.php
  class TokenExpired (line 12) | final class TokenExpired extends TokenExpiredAbstract implements TokenEx...

FILE: src/Events/TokenExpiredAbstract.php
  class TokenExpiredAbstract (line 12) | abstract class TokenExpiredAbstract extends EventAbstract
    method jsonSerialize (line 14) | final public function jsonSerialize(): ?array

FILE: src/Events/TokenExpiredContract.php
  type TokenExpiredContract (line 10) | interface TokenExpiredContract extends EventContract
    method jsonSerialize (line 12) | public function jsonSerialize(): ?array;

FILE: src/Events/TokenRefreshFailed.php
  class TokenRefreshFailed (line 12) | final class TokenRefreshFailed extends TokenRefreshFailedAbstract implem...

FILE: src/Events/TokenRefreshFailedAbstract.php
  class TokenRefreshFailedAbstract (line 12) | abstract class TokenRefreshFailedAbstract extends EventAbstract
    method jsonSerialize (line 14) | final public function jsonSerialize(): ?array

FILE: src/Events/TokenRefreshFailedContract.php
  type TokenRefreshFailedContract (line 10) | interface TokenRefreshFailedContract extends EventContract
    method jsonSerialize (line 12) | public function jsonSerialize(): ?array;

FILE: src/Events/TokenRefreshSucceeded.php
  class TokenRefreshSucceeded (line 12) | final class TokenRefreshSucceeded extends TokenRefreshSucceededAbstract ...

FILE: src/Events/TokenRefreshSucceededAbstract.php
  class TokenRefreshSucceededAbstract (line 12) | abstract class TokenRefreshSucceededAbstract extends EventAbstract
    method jsonSerialize (line 14) | final public function jsonSerialize(): ?array

FILE: src/Events/TokenRefreshSucceededContract.php
  type TokenRefreshSucceededContract (line 10) | interface TokenRefreshSucceededContract extends EventContract
    method jsonSerialize (line 12) | public function jsonSerialize(): ?array;

FILE: src/Events/TokenVerificationAttempting.php
  class TokenVerificationAttempting (line 12) | final class TokenVerificationAttempting extends TokenVerificationAttempt...

FILE: src/Events/TokenVerificationAttemptingAbstract.php
  class TokenVerificationAttemptingAbstract (line 12) | abstract class TokenVerificationAttemptingAbstract extends EventAbstract
    method __construct (line 17) | public function __construct(
    method jsonSerialize (line 27) | final public function jsonSerialize(): array

FILE: src/Events/TokenVerificationAttemptingContract.php
  type TokenVerificationAttemptingContract (line 10) | interface TokenVerificationAttemptingContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/Events/TokenVerificationFailed.php
  class TokenVerificationFailed (line 12) | final class TokenVerificationFailed extends TokenVerificationFailedAbstr...

FILE: src/Events/TokenVerificationFailedAbstract.php
  class TokenVerificationFailedAbstract (line 14) | abstract class TokenVerificationFailedAbstract extends EventAbstract
    method __construct (line 21) | public function __construct(
    method jsonSerialize (line 31) | final public function jsonSerialize(): array

FILE: src/Events/TokenVerificationFailedContract.php
  type TokenVerificationFailedContract (line 10) | interface TokenVerificationFailedContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/Events/TokenVerificationSucceeded.php
  class TokenVerificationSucceeded (line 12) | final class TokenVerificationSucceeded extends TokenVerificationSucceede...

FILE: src/Events/TokenVerificationSucceededAbstract.php
  class TokenVerificationSucceededAbstract (line 12) | abstract class TokenVerificationSucceededAbstract extends EventAbstract
    method __construct (line 18) | public function __construct(
    method jsonSerialize (line 29) | final public function jsonSerialize(): array

FILE: src/Events/TokenVerificationSucceededContract.php
  type TokenVerificationSucceededContract (line 10) | interface TokenVerificationSucceededContract extends EventContract
    method jsonSerialize (line 15) | public function jsonSerialize(): array;

FILE: src/EventsContract.php
  type EventsContract (line 34) | interface EventsContract
    method dispatch (line 106) | public static function dispatch(
    method framework (line 115) | public static function framework(

FILE: src/Exceptions/AuthenticationException.php
  class AuthenticationException (line 14) | final class AuthenticationException extends AuthenticationExceptionAbstr...

FILE: src/Exceptions/AuthenticationExceptionAbstract.php
  class AuthenticationExceptionAbstract (line 14) | abstract class AuthenticationExceptionAbstract extends ExceptionAbstract

FILE: src/Exceptions/AuthenticationExceptionContract.php
  type AuthenticationExceptionContract (line 14) | interface AuthenticationExceptionContract extends ExceptionContract

FILE: src/Exceptions/ControllerException.php
  class ControllerException (line 14) | final class ControllerException extends ControllerExceptionAbstract impl...

FILE: src/Exceptions/ControllerExceptionAbstract.php
  class ControllerExceptionAbstract (line 14) | abstract class ControllerExceptionAbstract extends ExceptionAbstract

FILE: src/Exceptions/ControllerExceptionContract.php
  type ControllerExceptionContract (line 14) | interface ControllerExceptionContract extends ExceptionContract

FILE: src/Exceptions/Controllers/CallbackControllerException.php
  class CallbackControllerException (line 14) | final class CallbackControllerException extends CallbackControllerExcept...

FILE: src/Exceptions/Controllers/CallbackControllerExceptionAbstract.php
  class CallbackControllerExceptionAbstract (line 16) | abstract class CallbackControllerExceptionAbstract extends ExceptionAbst...

FILE: src/Exceptions/Controllers/CallbackControllerExceptionContract.php
  type CallbackControllerExceptionContract (line 16) | interface CallbackControllerExceptionContract extends ExceptionContract

FILE: src/Exceptions/ExceptionAbstract.php
  class ExceptionAbstract (line 16) | abstract class ExceptionAbstract extends Exception

FILE: src/Exceptions/ExceptionContract.php
  type ExceptionContract (line 16) | interface ExceptionContract extends Auth0Exception

FILE: src/Exceptions/GuardException.php
  class GuardException (line 14) | final class GuardException extends GuardExceptionAbstract implements Gua...

FILE: src/Exceptions/GuardExceptionAbstract.php
  class GuardExceptionAbstract (line 14) | abstract class GuardExceptionAbstract extends ExceptionAbstract

FILE: src/Exceptions/GuardExceptionContract.php
  type GuardExceptionContract (line 14) | interface GuardExceptionContract extends ExceptionContract

FILE: src/Exceptions/SessionException.php
  class SessionException (line 14) | final class SessionException extends SessionExceptionAbstract implements...

FILE: src/Exceptions/SessionExceptionAbstract.php
  class SessionExceptionAbstract (line 14) | abstract class SessionExceptionAbstract extends ExceptionAbstract

FILE: src/Exceptions/SessionExceptionContract.php
  type SessionExceptionContract (line 14) | interface SessionExceptionContract extends ExceptionContract

FILE: src/Facade/Auth0.php
  class Auth0 (line 16) | final class Auth0 extends Facade
    method getFacadeAccessor (line 21) | protected static function getFacadeAccessor()

FILE: src/Guards/AuthenticationGuard.php
  class AuthenticationGuard (line 29) | final class AuthenticationGuard extends GuardAbstract implements Authent...
    method find (line 40) | public function find(): ?CredentialEntityContract
    method findSession (line 49) | public function findSession(): ?CredentialEntityContract
    method forgetUser (line 87) | public function forgetUser(): self
    method getCredential (line 94) | public function getCredential(): ?CredentialEntityContract
    method hashPasswordForCookie (line 113) | public function hashPasswordForCookie(string $passwordHash): string
    method login (line 125) | public function login(
    method logout (line 144) | public function logout(): self
    method pushState (line 160) | public function pushState(
    method refreshUser (line 214) | public function refreshUser(): void
    method setCredential (line 258) | public function setCredential(
    method setImpersonating (line 271) | public function setImpersonating(
    method setUser (line 280) | public function setUser(
    method user (line 300) | public function user(): ?Authenticatable
    method getCredThumbprint (line 355) | private function getCredThumbprint(?object $credential): null | string
    method pullState (line 364) | private function pullState(): ?CredentialEntityContract
    method refreshSession (line 397) | private function refreshSession(

FILE: src/Guards/AuthenticationGuardContract.php
  type AuthenticationGuardContract (line 12) | interface AuthenticationGuardContract extends GuardContract
    method find (line 17) | public function find(): ?CredentialEntityContract;
    method findSession (line 24) | public function findSession(): ?CredentialEntityContract;
    method login (line 26) | public function login(
    method pushState (line 30) | public function pushState(
    method setCredential (line 34) | public function setCredential(

FILE: src/Guards/AuthorizationGuard.php
  class AuthorizationGuard (line 21) | final class AuthorizationGuard extends GuardAbstract implements Authoriz...
    method find (line 25) | public function find(): ?CredentialEntityContract
    method findToken (line 34) | public function findToken(): ?CredentialEntityContract
    method forgetUser (line 100) | public function forgetUser(): self
    method getCredential (line 107) | public function getCredential(): ?CredentialEntityContract
    method login (line 116) | public function login(
    method logout (line 126) | public function logout(): self
    method refreshUser (line 136) | public function refreshUser(): void
    method setCredential (line 177) | public function setCredential(
    method setImpersonating (line 190) | public function setImpersonating(
    method setUser (line 199) | public function setUser(
    method user (line 218) | public function user(): ?Authenticatable

FILE: src/Guards/AuthorizationGuardContract.php
  type AuthorizationGuardContract (line 12) | interface AuthorizationGuardContract extends GuardContract
    method find (line 17) | public function find(): ?CredentialEntityContract;
    method findToken (line 24) | public function findToken(): ?CredentialEntityContract;
    method login (line 26) | public function login(
    method setCredential (line 30) | public function setCredential(

FILE: src/Guards/GuardAbstract.php
  class GuardAbstract (line 32) | abstract class GuardAbstract implements Guard
    method __construct (line 44) | public function __construct(
    method authenticate (line 51) | final public function authenticate(): Authenticatable
    method check (line 60) | final public function check(): bool
    method getImposter (line 65) | final public function getImposter(): ?CredentialEntityContract
    method getImposterSource (line 70) | final public function getImposterSource(): ?int
    method getName (line 75) | final public function getName(): string
    method getProvider (line 80) | final public function getProvider(): UserProvider
    method getRefreshedUser (line 113) | final public function getRefreshedUser(): ?Authenticatable
    method getSession (line 120) | final public function getSession(): Session
    method guest (line 146) | final public function guest(): bool
    method hasPermission (line 151) | final public function hasPermission(
    method hasScope (line 174) | final public function hasScope(
    method hasUser (line 193) | final public function hasUser(): bool
    method id (line 198) | final public function id(): string | null
    method isImpersonating (line 209) | final public function isImpersonating(): bool
    method management (line 214) | final public function management(): ManagementInterface
    method processToken (line 219) | final public function processToken(
    method sdk (line 245) | final public function sdk(
    method service (line 262) | final public function service(): ?InstanceEntityContract
    method stopImpersonating (line 267) | final public function stopImpersonating(): void
    method validate (line 278) | final public function validate(
    method viaRemember (line 284) | final public function viaRemember(): bool
    method find (line 289) | abstract public function find(): ?CredentialEntityContract;
    method forgetUser (line 291) | abstract public function forgetUser(): self;
    method getCredential (line 293) | abstract public function getCredential(): ?CredentialEntityContract;
    method login (line 295) | abstract public function login(?CredentialEntityContract $credential):...
    method logout (line 297) | abstract public function logout(): GuardContract;
    method refreshUser (line 299) | abstract public function refreshUser(): void;
    method setCredential (line 301) | abstract public function setCredential(?CredentialEntityContract $cred...
    method setImpersonating (line 308) | abstract public function setImpersonating(
    method setUser (line 312) | abstract public function setUser(
    method user (line 316) | abstract public function user(): ?Authenticatable;
    method normalizeUserArray (line 331) | protected function normalizeUserArray(

FILE: src/Guards/GuardContract.php
  type GuardContract (line 19) | interface GuardContract
    method authenticate (line 36) | public function authenticate(): Authenticatable;
    method check (line 41) | public function check(): bool;
    method forgetUser (line 46) | public function forgetUser(): self;
    method getCredential (line 51) | public function getCredential(): ?CredentialEntityContract;
    method getImposter (line 56) | public function getImposter(): ?CredentialEntityContract;
    method getImposterSource (line 61) | public function getImposterSource(): ?int;
    method getProvider (line 66) | public function getProvider(): UserProvider;
    method getRefreshedUser (line 71) | public function getRefreshedUser(): ?Authenticatable;
    method getSession (line 76) | public function getSession(): Session;
    method guest (line 81) | public function guest(): bool;
    method hasPermission (line 89) | public function hasPermission(
    method hasScope (line 100) | public function hasScope(
    method hasUser (line 108) | public function hasUser(): bool;
    method id (line 113) | public function id(): int | string | null;
    method isImpersonating (line 118) | public function isImpersonating(): bool;
    method login (line 125) | public function login(
    method logout (line 132) | public function logout(): self;
    method management (line 137) | public function management(): ManagementInterface;
    method processToken (line 146) | public function processToken(
    method refreshUser (line 153) | public function refreshUser(): void;
    method sdk (line 166) | public function sdk(
    method setCredential (line 175) | public function setCredential(?CredentialEntityContract $credential = ...
    method setImpersonating (line 182) | public function setImpersonating(
    method setUser (line 191) | public function setUser(
    method stopImpersonating (line 198) | public function stopImpersonating(): void;
    method user (line 203) | public function user(): ?Authenticatable;
    method validate (line 210) | public function validate(
    method viaRemember (line 217) | public function viaRemember(): bool;

FILE: src/Middleware/AuthenticateMiddleware.php
  class AuthenticateMiddleware (line 12) | final class AuthenticateMiddleware extends AuthenticateMiddlewareAbstrac...

FILE: src/Middleware/AuthenticateMiddlewareAbstract.php
  class AuthenticateMiddlewareAbstract (line 20) | abstract class AuthenticateMiddlewareAbstract extends MiddlewareAbstract
    method handle (line 29) | final public function handle(

FILE: src/Middleware/AuthenticateMiddlewareContract.php
  type AuthenticateMiddlewareContract (line 16) | interface AuthenticateMiddlewareContract extends MiddlewareContract
    method handle (line 25) | public function handle(

FILE: src/Middleware/AuthenticateOptionalMiddleware.php
  class AuthenticateOptionalMiddleware (line 12) | final class AuthenticateOptionalMiddleware extends AuthenticateOptionalM...

FILE: src/Middleware/AuthenticateOptionalMiddlewareAbstract.php
  class AuthenticateOptionalMiddlewareAbstract (line 20) | abstract class AuthenticateOptionalMiddlewareAbstract extends Middleware...
    method handle (line 29) | final public function handle(

FILE: src/Middleware/AuthenticateOptionalMiddlewareContract.php
  type AuthenticateOptionalMiddlewareContract (line 16) | interface AuthenticateOptionalMiddlewareContract extends MiddlewareContract
    method handle (line 25) | public function handle(

FILE: src/Middleware/AuthenticatorMiddleware.php
  class AuthenticatorMiddleware (line 16) | final class AuthenticatorMiddleware extends MiddlewareAbstract implement...
    method handle (line 18) | public function handle(

FILE: src/Middleware/AuthenticatorMiddlewareContract.php
  type AuthenticatorMiddlewareContract (line 10) | interface AuthenticatorMiddlewareContract extends MiddlewareContract

FILE: src/Middleware/AuthorizeMiddleware.php
  class AuthorizeMiddleware (line 12) | final class AuthorizeMiddleware extends AuthorizeMiddlewareAbstract impl...

FILE: src/Middleware/AuthorizeMiddlewareAbstract.php
  class AuthorizeMiddlewareAbstract (line 20) | abstract class AuthorizeMiddlewareAbstract extends MiddlewareAbstract
    method handle (line 29) | final public function handle(

FILE: src/Middleware/AuthorizeMiddlewareContract.php
  type AuthorizeMiddlewareContract (line 16) | interface AuthorizeMiddlewareContract extends MiddlewareContract
    method handle (line 25) | public function handle(

FILE: src/Middleware/AuthorizeOptionalMiddleware.php
  class AuthorizeOptionalMiddleware (line 12) | final class AuthorizeOptionalMiddleware extends AuthorizeOptionalMiddlew...

FILE: src/Middleware/AuthorizeOptionalMiddlewareAbstract.php
  class AuthorizeOptionalMiddlewareAbstract (line 20) | abstract class AuthorizeOptionalMiddlewareAbstract extends MiddlewareAbs...
    method handle (line 29) | final public function handle(

FILE: src/Middleware/AuthorizeOptionalMiddlewareContract.php
  type AuthorizeOptionalMiddlewareContract (line 16) | interface AuthorizeOptionalMiddlewareContract extends MiddlewareContract
    method handle (line 25) | public function handle(

FILE: src/Middleware/AuthorizerMiddleware.php
  class AuthorizerMiddleware (line 16) | final class AuthorizerMiddleware extends MiddlewareAbstract implements A...
    method handle (line 18) | public function handle(

FILE: src/Middleware/AuthorizerMiddlewareContract.php
  type AuthorizerMiddlewareContract (line 10) | interface AuthorizerMiddlewareContract extends MiddlewareContract

FILE: src/Middleware/GuardMiddleware.php
  class GuardMiddleware (line 12) | final class GuardMiddleware extends GuardMiddlewareAbstract implements G...

FILE: src/Middleware/GuardMiddlewareAbstract.php
  class GuardMiddlewareAbstract (line 16) | abstract class GuardMiddlewareAbstract extends MiddlewareAbstract
    method __construct (line 20) | public function __construct()
    method handle (line 29) | final public function handle(

FILE: src/Middleware/GuardMiddlewareContract.php
  type GuardMiddlewareContract (line 10) | interface GuardMiddlewareContract extends MiddlewareContract

FILE: src/Middleware/MiddlewareAbstract.php
  class MiddlewareAbstract (line 19) | abstract class MiddlewareAbstract
    method getAuthenticationGuard (line 21) | final public function getAuthenticationGuard(
    method getAuthorizationGuard (line 27) | final public function getAuthorizationGuard(
    method handle (line 33) | abstract public function handle(

FILE: src/Middleware/MiddlewareContract.php
  type MiddlewareContract (line 12) | interface MiddlewareContract

FILE: src/Service.php
  class Service (line 14) | final class Service extends ServiceAbstract implements ServiceContract

FILE: src/ServiceAbstract.php
  class ServiceAbstract (line 18) | abstract class ServiceAbstract extends InstanceEntityAbstract
    method json (line 34) | final public static function json(ResponseInterface $response): ?array
    method routes (line 54) | final public static function routes(

FILE: src/ServiceContract.php
  type ServiceContract (line 9) | interface ServiceContract extends InstanceEntityContract

FILE: src/ServiceProvider.php
  class ServiceProvider (line 10) | final class ServiceProvider extends ServiceProviderAbstract implements S...

FILE: src/ServiceProviderAbstract.php
  class ServiceProviderAbstract (line 27) | abstract class ServiceProviderAbstract extends ServiceProvider
    method boot (line 29) | final public function boot(
    method provides (line 94) | final public function provides()
    method register (line 121) | final public function register(): self
    method registerDeprecated (line 148) | final public function registerDeprecated(
    method registerGuards (line 163) | final public function registerGuards(): void
    method registerMiddleware (line 202) | final public function registerMiddleware(
    method registerRoutes (line 219) | final public function registerRoutes(): void

FILE: src/ServiceProviderContract.php
  type ServiceProviderContract (line 13) | interface ServiceProviderContract
    method registerDeprecated (line 21) | public function registerDeprecated(
    method registerGuards (line 29) | public function registerGuards(): void;
    method registerMiddleware (line 36) | public function registerMiddleware(
    method registerRoutes (line 43) | public function registerRoutes(): void;

FILE: src/Traits/ActingAsAuth0User.php
  type ActingAsAuth0User (line 20) | trait ActingAsAuth0User
    method actingAsAuth0User (line 35) | public function actingAsAuth0User(
    method actingAs (line 73) | abstract public function actingAs(Authenticatable $user, $guard = null);

FILE: src/Traits/Impersonate.php
  type Impersonate (line 17) | trait Impersonate
    method impersonate (line 28) | public function impersonate(
    method impersonateSession (line 52) | public function impersonateSession(
    method impersonateToken (line 74) | public function impersonateToken(
    method actingAs (line 88) | abstract public function actingAs(Authenticatable $user, $guard = null);

FILE: src/UserProvider.php
  class UserProvider (line 14) | final class UserProvider extends UserProviderAbstract implements UserPro...

FILE: src/UserProviderAbstract.php
  class UserProviderAbstract (line 20) | abstract class UserProviderAbstract
    method __construct (line 31) | public function __construct(
    method getRepository (line 36) | final public function getRepository(): UserRepositoryContract
    method rehashPasswordIfRequired (line 50) | final public function rehashPasswordIfRequired(Authenticatable $user, ...
    method retrieveByCredentials (line 59) | final public function retrieveByCredentials(array $credentials): ?Auth...
    method retrieveById (line 127) | final public function retrieveById($identifier): ?Authenticatable
    method retrieveByToken (line 140) | final public function retrieveByToken($identifier, $token): ?Authentic...
    method setRepository (line 158) | final public function setRepository(string $repository): void
    method updateRememberToken (line 171) | final public function updateRememberToken(Authenticatable $user, $toke...
    method validateCredentials (line 181) | final public function validateCredentials(
    method getConfiguration (line 188) | protected function getConfiguration(
    method getRepositoryName (line 194) | protected function getRepositoryName(): string
    method resolveRepository (line 199) | protected function resolveRepository(
    method setConfiguration (line 233) | protected function setConfiguration(
    method setRepositoryName (line 240) | protected function setRepositoryName(string $repositoryName): void
    method withoutRecording (line 251) | protected function withoutRecording(callable $callback): mixed

FILE: src/UserProviderContract.php
  type UserProviderContract (line 12) | interface UserProviderContract extends UserProvider
    method getRepository (line 17) | public function getRepository(): UserRepositoryContract;

FILE: src/UserRepository.php
  class UserRepository (line 17) | final class UserRepository extends UserRepositoryAbstract implements Use...
    method fromAccessToken (line 19) | public function fromAccessToken(array $user): ?Authenticatable
    method fromSession (line 24) | public function fromSession(array $user): ?Authenticatable

FILE: src/UserRepositoryAbstract.php
  class UserRepositoryAbstract (line 14) | abstract class UserRepositoryAbstract
    method fromAccessToken (line 16) | abstract public function fromAccessToken(array $user): ?Authenticatable;
    method fromSession (line 18) | abstract public function fromSession(array $user): ?Authenticatable;

FILE: src/UserRepositoryContract.php
  type UserRepositoryContract (line 12) | interface UserRepositoryContract
    method fromAccessToken (line 19) | public function fromAccessToken(array $user): ?Authenticatable;
    method fromSession (line 26) | public function fromSession(array $user): ?Authenticatable;

FILE: src/Users/ImposterUser.php
  class ImposterUser (line 12) | final class ImposterUser extends UserAbstract implements ImposterUserCon...

FILE: src/Users/ImposterUserContract.php
  type ImposterUserContract (line 10) | interface ImposterUserContract extends UserContract

FILE: src/Users/StatefulUser.php
  class StatefulUser (line 12) | final class StatefulUser extends UserAbstract implements StatefulUserCon...

FILE: src/Users/StatefulUserContract.php
  type StatefulUserContract (line 10) | interface StatefulUserContract extends UserContract

FILE: src/Users/StatelessUser.php
  class StatelessUser (line 12) | final class StatelessUser extends UserAbstract implements StatelessUserC...

FILE: src/Users/StatelessUserContract.php
  type StatelessUserContract (line 10) | interface StatelessUserContract extends UserContract

FILE: src/Users/UserAbstract.php
  class UserAbstract (line 10) | abstract class UserAbstract
    method __construct (line 12) | public function __construct(
    method __get (line 18) | public function __get(string $key): mixed
    method __set (line 23) | public function __set(string $key, mixed $value): void
    method getAttribute (line 28) | final public function getAttribute(string $key, mixed $default = null)...
    method getAttributes (line 33) | final public function getAttributes(): mixed
    method getAuthIdentifier (line 38) | final public function getAuthIdentifier(): int | string | null
    method getAuthIdentifierName (line 43) | final public function getAuthIdentifierName(): string
    method getAuthPassword (line 48) | final public function getAuthPassword(): string
    method getAuthPasswordName (line 53) | final public function getAuthPasswordName(): string
    method getRememberToken (line 58) | final public function getRememberToken(): string
    method getRememberTokenName (line 63) | final public function getRememberTokenName(): string
    method jsonSerialize (line 68) | final public function jsonSerialize(): mixed
    method setRememberToken (line 78) | final public function setRememberToken(mixed $value): void
    method fill (line 82) | abstract public function fill(array $attributes): self;
    method setAttribute (line 84) | abstract public function setAttribute(string $key, mixed $value): self;

FILE: src/Users/UserContract.php
  type UserContract (line 10) | interface UserContract extends Authenticatable, JsonSerializable
    method __construct (line 15) | public function __construct(array $attributes = []);
    method __get (line 22) | public function __get(string $key): mixed;
    method __set (line 30) | public function __set(string $key, mixed $value): void;
    method fill (line 37) | public function fill(array $attributes): self;
    method getAttribute (line 45) | public function getAttribute(string $key, mixed $default = null): mixed;
    method setAttribute (line 53) | public function setAttribute(string $key, mixed $value): self;

FILE: src/Users/UserTrait.php
  type UserTrait (line 10) | trait UserTrait
    method fill (line 12) | final public function fill(array $attributes): self
    method setAttribute (line 21) | final public function setAttribute(string $key, mixed $value): self

FILE: tests/Pest.php
  function mockIdToken (line 118) | function mockIdToken(
  function mockAccessToken (line 137) | function mockAccessToken(
  function createRsaKeys (line 157) | function createRsaKeys(
  function getSslError (line 195) | function getSslError(): string

FILE: tests/TestCase.php
  class TestCase (line 12) | class TestCase extends BaseTestCase
    method getPackageProviders (line 19) | protected function getPackageProviders($app)
    method getEnvironmentSetUp (line 27) | protected function getEnvironmentSetUp($app): void
    method assertDispatched (line 48) | protected function assertDispatched(string $expectedEvent, int $times ...
    method assertDispatchedOrdered (line 80) | protected function assertDispatchedOrdered(array $events)

FILE: tests/Unit/Bridges/CacheBridgeTest.php
  method getKey (line 112) | public function getKey(): string
  method get (line 117) | public function get(): mixed
  method isHit (line 122) | public function isHit(): bool
  method set (line 127) | public function set(mixed $value): static
  method expiresAt (line 132) | public function expiresAt($expiration): static
  method expiresAfter (line 137) | public function expiresAfter($time): static

FILE: tests/Unit/ServiceProviderTest.php
  function setupGuardImpersonation (line 27) | function setupGuardImpersonation(
  function resetGuard (line 53) | function resetGuard(
Condensed preview — 303 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (725K chars).
[
  {
    "path": ".editorconfig",
    "chars": 258,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_"
  },
  {
    "path": ".gitattributes",
    "chars": 740,
    "preview": ".editorconfig          export-ignore\n.gitattributes         export-ignore\n.github/               export-ignore\n.gitignor"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 44,
    "preview": "*\t@auth0/project-dx-sdks-engineer-codeowner\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 232,
    "preview": "# Code of Conduct\n\nBefore making any contributions to this repo, please review Auth0's [Code of Conduct](https://github."
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 5775,
    "preview": "# Contribution Guide\n\n-   [Getting Involved](#getting-involved)\n-   [Support Questions](#support-questions)\n-   [Code Co"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 2902,
    "preview": "name: Report a Bug\ndescription: Encountering unexpected problems or unintended behavior? Let us know!\n\nbody:\n  - type: m"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 602,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Report Auth0-PHP Issues\n    url: https://github.com/auth0/auth0-PHP"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 709,
    "preview": "name: Suggest a Feature\ndescription: Help us improve the SDK by suggest new features and improvements.\n\nbody:\n  - type: "
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 747,
    "preview": "<!--\n  Please only send pull requests to branches that are actively supported.\n  Pull requests without an adequate title"
  },
  {
    "path": ".github/SECURITY.md",
    "chars": 594,
    "preview": "# Security Policy\n\n**PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY, [SEE BELOW](#reporting-a-vulnerability).**\n"
  },
  {
    "path": ".github/SUPPORT.md",
    "chars": 192,
    "preview": "# Support Questions\n\nAuth0's GitHub issue trackers are not intended to provide integration support. Instead, please refe"
  },
  {
    "path": ".github/actions/get-prerelease/action.yml",
    "chars": 707,
    "preview": "name: Return a boolean indicating if the version contains prerelease identifiers\n\n#\n# Returns a simple true/false boolea"
  },
  {
    "path": ".github/actions/get-version/action.yml",
    "chars": 526,
    "preview": "name: Return the version extracted from the branch name\n\n#\n# Returns the version from a branch name of a pull request. I"
  },
  {
    "path": ".github/actions/publish-package/action.yml",
    "chars": 418,
    "preview": "name: Publish release to package manager\n\ninputs:\n  token:\n    required: true\n  files:\n    required: false\n  name:\n    r"
  },
  {
    "path": ".github/actions/release-create/action.yml",
    "chars": 993,
    "preview": "name: Create a GitHub release\n\n#\n# Creates a GitHub release with the given version.\n#\n# TODO: Remove once the common rep"
  },
  {
    "path": ".github/actions/rl-scanner/action.yml",
    "chars": 2144,
    "preview": "name: 'Reversing Labs Scanner'\ndescription: 'Runs the Reversing Labs scanner on a specified artifact.'\ninputs:\n  artifac"
  },
  {
    "path": ".github/actions/setup/action.yml",
    "chars": 1368,
    "preview": "name: Prepare PHP\ndescription: Prepare the PHP environment\n\ninputs:\n  php:\n    description: The PHP version to use\n    r"
  },
  {
    "path": ".github/actions/tag-create/action.yml",
    "chars": 706,
    "preview": "name: Create a repository tag\n\n#\n# Creates a tag with the given version.\n#\n# TODO: Remove once the common repo is public"
  },
  {
    "path": ".github/actions/tag-exists/action.yml",
    "chars": 966,
    "preview": "name: Return a boolean indicating if a tag already exists for the repository\n\n#\n# Returns a simple true/false boolean in"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 117,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n"
  },
  {
    "path": ".github/workflows/claude-code-review.yml",
    "chars": 399,
    "preview": "name: Claude Code PR Review\n\non:\n  issue_comment:\n    types: [ created ]\n  pull_request_review_comment:\n    types: [ cre"
  },
  {
    "path": ".github/workflows/matrix.json",
    "chars": 88,
    "preview": "{\n  \"include\": [\n    { \"php\": \"8.2\" },\n    { \"php\": \"8.3\" },\n    { \"php\": \"8.4\" }\n  ]\n}\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2997,
    "preview": "name: Create GitHub Release\n\non:\n  pull_request:\n    types:\n      - closed\n\n\n\npermissions:\n  contents: write\n  id-token:"
  },
  {
    "path": ".github/workflows/rl-scanner.yml",
    "chars": 2127,
    "preview": "name: RL-Secure Workflow\n\non:\n  workflow_call:\n    inputs:\n      php-version:\n        required: true\n        type: strin"
  },
  {
    "path": ".github/workflows/snyk.yml",
    "chars": 2556,
    "preview": "name: Snyk\n\non:\n  merge_group:\n  pull_request:\n    types:\n      - opened\n      - synchronize\n  push:\n    branches:\n     "
  },
  {
    "path": ".github/workflows/tests.yml",
    "chars": 4508,
    "preview": "name: Build and Test\n\non:\n  merge_group:\n  workflow_dispatch:\n  pull_request:\n    types:\n      - opened\n      - synchron"
  },
  {
    "path": ".gitignore",
    "chars": 228,
    "preview": "build/\nvendor/\ncoverage/\ntmp/\n.idea/\n.env\n.DS_Store\ncomposer.lock\ncomposer.phar\n.phpunit.result.cache\ncomposer.local.jso"
  },
  {
    "path": ".php-cs-fixer.dist.php",
    "chars": 11605,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nreturn (new PhpCsFixer\\Config())\n    ->setRiskyAllowed(true)\n    ->setRules([\n        '"
  },
  {
    "path": ".phpcs.xml.dist",
    "chars": 358,
    "preview": "<?xml version=\"1.0\"?>\n<ruleset>\n    <rule ref=\"Squiz.Commenting.FunctionComment\">\n        <properties>\n            <prop"
  },
  {
    "path": ".semgrepignore",
    "chars": 38,
    "preview": ".github/\ndocs/\nexamples/\ntests/\n\\*.md\n"
  },
  {
    "path": ".shiprc",
    "chars": 101,
    "preview": "{\n  \"files\": {\n    \"src/ServiceAbstract.php\": [],\n    \".version\": []\n  },\n  \"prefixVersion\": false\n}\n"
  },
  {
    "path": ".version",
    "chars": 7,
    "preview": "7.22.0\n"
  },
  {
    "path": "CHANGELOG.ARCHIVE.md",
    "chars": 15213,
    "preview": "# Changelog Archive\n\nThis file contains changes for all versions of this package prior to the latest major, 7.0.\n\nThe ch"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 21752,
    "preview": "# Change Log\n\n## [7.22.0](https://github.com/auth0/laravel-auth0/tree/7.22.0) (2026-04-08)\n\n[Full Changelog](https://git"
  },
  {
    "path": "LICENSE.md",
    "chars": 1118,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2023 Auth0, Inc. <support@auth0.com> (https://auth0.com)\n\nPermission is hereby gran"
  },
  {
    "path": "README.md",
    "chars": 18610,
    "preview": "![Auth0 Laravel SDK](https://cdn.auth0.com/website/sdks/banners/laravel-auth0-banner.png)\n\n<div aria-label=\"Laravel SDK "
  },
  {
    "path": "UPGRADE.md",
    "chars": 5055,
    "preview": "# Upgrade Guide\n\n## v7 Migration Guide\n\nAuth0 Laravel SDK v7 includes many significant changes over previous versions:\n\n"
  },
  {
    "path": "codecov.yml",
    "chars": 170,
    "preview": "codecov:\n  range: \"95...100\"\n  status:\n    project:\n    patch:\n    changes:\nignore:\n  - \"src/Contract\"\n  - \"src/Event\"\n "
  },
  {
    "path": "composer.json",
    "chars": 4237,
    "preview": "{\n    \"name\": \"auth0/login\",\n    \"description\": \"Auth0 Laravel SDK. Straight-forward and tested methods for implementing"
  },
  {
    "path": "config/auth0.php",
    "chars": 4969,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nuse Auth0\\Laravel\\Configuration;\nuse Auth0\\SDK\\Configuration\\SdkConfiguration;\n\nreturn "
  },
  {
    "path": "deprecated/Cache/LaravelCacheItem.php",
    "chars": 1315,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Cache;\n\nuse Auth0\\Laravel\\Bridges\\{CacheItemBridgeAbstract, Cac"
  },
  {
    "path": "deprecated/Cache/LaravelCachePool.php",
    "chars": 331,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Cache;\n\nuse Auth0\\Laravel\\Bridges\\{CacheBridgeAbstract, CacheBr"
  },
  {
    "path": "deprecated/Contract/Auth/Guard.php",
    "chars": 244,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Auth;\n\nuse Auth0\\Laravel\\Guards\\GuardContract;\n\n/**\n *"
  },
  {
    "path": "deprecated/Contract/Auth/User/Provider.php",
    "chars": 259,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Auth\\User;\n\nuse Auth0\\Laravel\\UserProviderContract;\n\n/"
  },
  {
    "path": "deprecated/Contract/Auth/User/Repository.php",
    "chars": 267,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Auth\\User;\n\nuse Auth0\\Laravel\\UserRepositoryContract;\n"
  },
  {
    "path": "deprecated/Contract/Auth0.php",
    "chars": 231,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract;\n\nuse Auth0\\Laravel\\ServiceContract;\n\n/**\n * @deprecat"
  },
  {
    "path": "deprecated/Contract/Configuration.php",
    "chars": 257,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract;\n\nuse Auth0\\Laravel\\ConfigurationContract;\n\n/**\n * @de"
  },
  {
    "path": "deprecated/Contract/Entities/Credential.php",
    "chars": 290,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Entities;\n\nuse Auth0\\Laravel\\Entities\\CredentialEntity"
  },
  {
    "path": "deprecated/Contract/Event/Auth0Event.php",
    "chars": 252,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event;\n\nuse Auth0\\Laravel\\Events\\EventContract;\n\n/**\n "
  },
  {
    "path": "deprecated/Contract/Event/Configuration/Building.php",
    "chars": 345,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Configuration;\n\nuse Auth0\\Laravel\\Events\\Configu"
  },
  {
    "path": "deprecated/Contract/Event/Configuration/Built.php",
    "chars": 333,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Configuration;\n\nuse Auth0\\Laravel\\Events\\Configu"
  },
  {
    "path": "deprecated/Contract/Event/Middleware/StatefulRequest.php",
    "chars": 340,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Middleware;\n\nuse Auth0\\Laravel\\Events\\Middleware"
  },
  {
    "path": "deprecated/Contract/Event/Middleware/StatelessRequest.php",
    "chars": 344,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Middleware;\n\nuse Auth0\\Laravel\\Events\\Middleware"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/AuthenticationFailed.php",
    "chars": 306,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\Authenticati"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/AuthenticationSucceeded.php",
    "chars": 318,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\Authenticati"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/LoginAttempting.php",
    "chars": 286,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\LoginAttempt"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/TokenExpired.php",
    "chars": 274,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\TokenExpired"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/TokenRefreshFailed.php",
    "chars": 298,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\TokenRefresh"
  },
  {
    "path": "deprecated/Contract/Event/Stateful/TokenRefreshSucceeded.php",
    "chars": 310,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\TokenRefresh"
  },
  {
    "path": "deprecated/Contract/Event/Stateless/TokenVerificationAttempting.php",
    "chars": 335,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\TokenVerifi"
  },
  {
    "path": "deprecated/Contract/Event/Stateless/TokenVerificationFailed.php",
    "chars": 319,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\TokenVerifi"
  },
  {
    "path": "deprecated/Contract/Event/Stateless/TokenVerificationSucceeded.php",
    "chars": 331,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\TokenVerifi"
  },
  {
    "path": "deprecated/Contract/Exception/AuthenticationException.php",
    "chars": 321,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\Authenticatio"
  },
  {
    "path": "deprecated/Contract/Exception/GuardException.php",
    "chars": 285,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\GuardExceptio"
  },
  {
    "path": "deprecated/Contract/Exception/SessionException.php",
    "chars": 293,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\SessionExcept"
  },
  {
    "path": "deprecated/Contract/Exception/Stateful/CallbackException.php",
    "chars": 360,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Exception\\Stateful;\n\nuse Auth0\\Laravel\\Exceptions\\Cont"
  },
  {
    "path": "deprecated/Contract/Http/Controller/Stateful/Callback.php",
    "chars": 316,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controlle"
  },
  {
    "path": "deprecated/Contract/Http/Controller/Stateful/Login.php",
    "chars": 304,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controlle"
  },
  {
    "path": "deprecated/Contract/Http/Controller/Stateful/Logout.php",
    "chars": 308,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controlle"
  },
  {
    "path": "deprecated/Contract/Http/Middleware/Stateful/Authenticate.php",
    "chars": 322,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Middleware\\Stateful;\n\nuse Auth0\\Laravel\\Middlewar"
  },
  {
    "path": "deprecated/Contract/Http/Middleware/Stateful/AuthenticateOptional.php",
    "chars": 346,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Middleware\\Stateful;\n\nuse Auth0\\Laravel\\Middlewar"
  },
  {
    "path": "deprecated/Contract/Http/Middleware/Stateless/Authorize.php",
    "chars": 311,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Middleware\\Stateless;\n\nuse Auth0\\Laravel\\Middlewa"
  },
  {
    "path": "deprecated/Contract/Http/Middleware/Stateless/AuthorizeOptional.php",
    "chars": 343,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Http\\Middleware\\Stateless;\n\nuse Auth0\\Laravel\\Middlewa"
  },
  {
    "path": "deprecated/Contract/Model/Stateful/User.php",
    "chars": 272,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Model\\Stateful;\n\nuse Auth0\\Laravel\\Users\\StatefulUserC"
  },
  {
    "path": "deprecated/Contract/Model/Stateless/User.php",
    "chars": 276,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Model\\Stateless;\n\nuse Auth0\\Laravel\\Users\\StatelessUse"
  },
  {
    "path": "deprecated/Contract/Model/User.php",
    "chars": 239,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract\\Model;\n\nuse Auth0\\Laravel\\Users\\UserContract;\n\n/**\n * "
  },
  {
    "path": "deprecated/Contract/ServiceProvider.php",
    "chars": 265,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Contract;\n\nuse Auth0\\Laravel\\ServiceProviderContract;\n\n/**\n * @"
  },
  {
    "path": "deprecated/Event/Configuration/Building.php",
    "chars": 421,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Configuration;\n\nuse Auth0\\Laravel\\Events\\Configuration\\{B"
  },
  {
    "path": "deprecated/Event/Configuration/Built.php",
    "chars": 403,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Configuration;\n\nuse Auth0\\Laravel\\Events\\Configuration\\{B"
  },
  {
    "path": "deprecated/Event/Middleware/StatefulRequest.php",
    "chars": 414,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Middleware;\n\nuse Auth0\\Laravel\\Events\\Middleware\\{Statefu"
  },
  {
    "path": "deprecated/Event/Middleware/StatelessRequest.php",
    "chars": 420,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Middleware;\n\nuse Auth0\\Laravel\\Events\\Middleware\\{Statele"
  },
  {
    "path": "deprecated/Event/Stateful/AuthenticationFailed.php",
    "chars": 370,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{AuthenticationFailed"
  },
  {
    "path": "deprecated/Event/Stateful/AuthenticationSucceeded.php",
    "chars": 388,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{AuthenticationSuccee"
  },
  {
    "path": "deprecated/Event/Stateful/LoginAttempting.php",
    "chars": 340,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{LoginAttemptingAbstr"
  },
  {
    "path": "deprecated/Event/Stateful/TokenExpired.php",
    "chars": 322,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{TokenExpiredAbstract"
  },
  {
    "path": "deprecated/Event/Stateful/TokenRefreshFailed.php",
    "chars": 358,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{TokenRefreshFailedAb"
  },
  {
    "path": "deprecated/Event/Stateful/TokenRefreshSucceeded.php",
    "chars": 376,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateful;\n\nuse Auth0\\Laravel\\Events\\{TokenRefreshSucceede"
  },
  {
    "path": "deprecated/Event/Stateless/TokenVerificationAttempting.php",
    "chars": 413,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\{TokenVerificationAt"
  },
  {
    "path": "deprecated/Event/Stateless/TokenVerificationFailed.php",
    "chars": 389,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\{TokenVerificationFa"
  },
  {
    "path": "deprecated/Event/Stateless/TokenVerificationSucceeded.php",
    "chars": 407,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Event\\Stateless;\n\nuse Auth0\\Laravel\\Events\\{TokenVerificationSu"
  },
  {
    "path": "deprecated/Exception/AuthenticationException.php",
    "chars": 392,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\{AuthenticationExcepti"
  },
  {
    "path": "deprecated/Exception/GuardException.php",
    "chars": 338,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\{GuardExceptionAbstrac"
  },
  {
    "path": "deprecated/Exception/SessionException.php",
    "chars": 350,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Exception;\n\nuse Auth0\\Laravel\\Exceptions\\{SessionExceptionAbstr"
  },
  {
    "path": "deprecated/Exception/Stateful/CallbackException.php",
    "chars": 439,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Exception\\Stateful;\n\nuse Auth0\\Laravel\\Exceptions\\Controllers\\{"
  },
  {
    "path": "deprecated/Http/Controller/Stateful/Callback.php",
    "chars": 369,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controllers\\{Callb"
  },
  {
    "path": "deprecated/Http/Controller/Stateful/Login.php",
    "chars": 351,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controllers\\{Login"
  },
  {
    "path": "deprecated/Http/Controller/Stateful/Logout.php",
    "chars": 357,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Controller\\Stateful;\n\nuse Auth0\\Laravel\\Controllers\\{Logou"
  },
  {
    "path": "deprecated/Http/Middleware/Guard.php",
    "chars": 441,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Middleware;\n\nuse Auth0\\Laravel\\Middleware\\{GuardMiddleware"
  },
  {
    "path": "deprecated/Http/Middleware/Stateful/Authenticate.php",
    "chars": 484,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Middleware\\Stateful;\n\nuse Auth0\\Laravel\\Middleware\\{Authen"
  },
  {
    "path": "deprecated/Http/Middleware/Stateful/AuthenticateOptional.php",
    "chars": 475,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Middleware\\Stateful;\n\nuse Auth0\\Laravel\\Middleware\\{Authen"
  },
  {
    "path": "deprecated/Http/Middleware/Stateless/Authorize.php",
    "chars": 474,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Middleware\\Stateless;\n\nuse Auth0\\Laravel\\Middleware\\{Autho"
  },
  {
    "path": "deprecated/Http/Middleware/Stateless/AuthorizeOptional.php",
    "chars": 460,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Http\\Middleware\\Stateless;\n\nuse Auth0\\Laravel\\Middleware\\{Autho"
  },
  {
    "path": "deprecated/Model/Imposter.php",
    "chars": 322,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Model;\n\nuse Auth0\\Laravel\\Users\\{ImposterUserContract, UserAbst"
  },
  {
    "path": "deprecated/Model/Stateful/User.php",
    "chars": 327,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Model\\Stateful;\n\nuse Auth0\\Laravel\\Users\\{StatefulUserContract,"
  },
  {
    "path": "deprecated/Model/Stateless/User.php",
    "chars": 331,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Model\\Stateless;\n\nuse Auth0\\Laravel\\Users\\{StatelessUserContrac"
  },
  {
    "path": "deprecated/Model/User.php",
    "chars": 235,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Model;\n\nuse Auth0\\Laravel\\Users\\UserAbstract;\n\n/**\n * @deprecat"
  },
  {
    "path": "deprecated/README.md",
    "chars": 240,
    "preview": "# Deprecated Classes\n\nThe classes in this directory are deprecated and are provided here to aid in transitioning to thei"
  },
  {
    "path": "deprecated/Store/LaravelSession.php",
    "chars": 339,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Store;\n\nuse Auth0\\Laravel\\Bridges\\{SessionBridgeAbstract, Sessi"
  },
  {
    "path": "docs/BackchannelLogout.md",
    "chars": 1106,
    "preview": "# Backchannel Logout\n\nThe Auth0 Laravel SDK supports [Backchannel Logout](https://auth0.com/docs/authenticate/login/logo"
  },
  {
    "path": "docs/Configuration.md",
    "chars": 20603,
    "preview": "# Configuration\n\n- [SDK Configuration](#sdk-configuration)\n  - [JSON Configuration Files](#json-configuration-files)\n  -"
  },
  {
    "path": "docs/Cookies.md",
    "chars": 3485,
    "preview": "# Cookies\n\nWe strongly recommend using the `database` or `redis` session drivers, but realize this is not always a viabl"
  },
  {
    "path": "docs/Deployment.md",
    "chars": 8633,
    "preview": "# Deployment\n\nWhen you're preparing to deploy your application to production, there are some basic steps you can take to"
  },
  {
    "path": "docs/Eloquent.md",
    "chars": 8317,
    "preview": "# Laravel Eloquent\n\nBy default, the SDK does not include any Eloquent models or database support. You can adapt the SDK "
  },
  {
    "path": "docs/Events.md",
    "chars": 7428,
    "preview": "# Events\n\n- [Introduction](#introduction)\n- [SDK Controller Events](#sdk-controller-events)\n  - [Login Events](#login-ev"
  },
  {
    "path": "docs/Installation.md",
    "chars": 5160,
    "preview": "# Installation\n\n-   [Prerequisites](#prerequisites)\n-   [Install the SDK](#install-the-sdk)\n    -   [Using Quickstart (R"
  },
  {
    "path": "docs/Management.md",
    "chars": 67366,
    "preview": "# Management API\n\nThe Auth0 Laravel SDK provides easy-to-use methods to access Auth0's Management API endpoints. Nearly "
  },
  {
    "path": "docs/Octane.md",
    "chars": 485,
    "preview": "# Octane Support\n\nOctane compatibility with the SDK is currently considered experimental and is not supported.\n\nAlthough"
  },
  {
    "path": "docs/Sessions.md",
    "chars": 3188,
    "preview": "# Sessions\n\nIn order to persist users' authentication states between HTTP requests, the Auth0 Laravel SDK uses Laravel's"
  },
  {
    "path": "docs/Support.md",
    "chars": 5213,
    "preview": "# Support\n\nYour application must use a [supported Laravel version](#supported-laravel-releases), and your host environme"
  },
  {
    "path": "docs/Telescope.md",
    "chars": 2874,
    "preview": "# Laravel Telescope\n\nAs of 7.11.0, the Auth0 Laravel SDK is compatible with Laravel's Telescope debugging package. Howev"
  },
  {
    "path": "docs/Users.md",
    "chars": 7373,
    "preview": "# Users\n\n- [User Persistenece](#user-persistenece)\n- [Best Practices](#best-practices)\n- [Retrieving User Information](#"
  },
  {
    "path": "opslevel.yml",
    "chars": 60,
    "preview": "---\nversion: 1\nrepository:\n  owner: dx_sdks\n  tier:\n  tags:\n"
  },
  {
    "path": "phpstan.neon.dist",
    "chars": 616,
    "preview": "includes:\n    - ./vendor/phpstan/phpstan-strict-rules/rules.neon\n    - ./vendor/larastan/larastan/extension.neon\n\nparame"
  },
  {
    "path": "phpunit.xml.dist",
    "chars": 757,
    "preview": "<?xml version=\"1.0\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http"
  },
  {
    "path": "psalm.xml.dist",
    "chars": 1083,
    "preview": "<?xml version=\"1.0\"?>\n<psalm\n    errorLevel=\"1\"\n    resolveFromConfigFile=\"true\"\n    xmlns:xsi=\"http://www.w3.org/2001/X"
  },
  {
    "path": "rector.php",
    "chars": 27184,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nuse Rector\\Arguments\\Rector\\ClassMethod\\ArgumentAdderRector;\nuse Rector\\Arguments\\Recto"
  },
  {
    "path": "src/Auth/Guard.php",
    "chars": 6913,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Auth;\n\nuse Auth0\\Laravel\\Entities\\CredentialEntityContract;\nuse"
  },
  {
    "path": "src/Auth0.php",
    "chars": 1365,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel;\n\nuse Auth0\\Laravel\\Entities\\InstanceEntityTrait;\n\n/**\n * Auth0"
  },
  {
    "path": "src/Bridges/BridgeAbstract.php",
    "chars": 133,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class Bridge"
  },
  {
    "path": "src/Bridges/BridgeContract.php",
    "chars": 112,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\n/**\n * @api\n */\ninterface BridgeContract\n{\n}\n"
  },
  {
    "path": "src/Bridges/CacheBridge.php",
    "chars": 275,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\n/**\n * Bridges the Laravel's Cache API with the PSR-6"
  },
  {
    "path": "src/Bridges/CacheBridgeAbstract.php",
    "chars": 4785,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse DateTimeInterface;\nuse Illuminate\\Cache\\CacheMana"
  },
  {
    "path": "src/Bridges/CacheBridgeContract.php",
    "chars": 203,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse Psr\\Cache\\CacheItemPoolInterface;\n\n/**\n * @api\n *"
  },
  {
    "path": "src/Bridges/CacheItemBridge.php",
    "chars": 1248,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse DateInterval;\nuse DateTimeImmutable;\nuse DateTime"
  },
  {
    "path": "src/Bridges/CacheItemBridgeAbstract.php",
    "chars": 1267,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse DateInterval;\nuse DateTimeImmutable;\nuse DateTime"
  },
  {
    "path": "src/Bridges/CacheItemBridgeContract.php",
    "chars": 361,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse Psr\\Cache\\CacheItemInterface;\n\n/**\n * @api\n */\nin"
  },
  {
    "path": "src/Bridges/SessionBridge.php",
    "chars": 273,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\n/**\n * Bridges the Laravel's Session API with the Aut"
  },
  {
    "path": "src/Bridges/SessionBridgeAbstract.php",
    "chars": 4703,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse Auth0\\Laravel\\Exceptions\\SessionException;\nuse Il"
  },
  {
    "path": "src/Bridges/SessionBridgeContract.php",
    "chars": 182,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Bridges;\n\nuse Auth0\\SDK\\Contract\\StoreInterface;\n\n/**\n * @api\n "
  },
  {
    "path": "src/Configuration.php",
    "chars": 16185,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel;\n\nuse Illuminate\\Support\\{Arr, Str};\n\nuse function constant;\nus"
  },
  {
    "path": "src/ConfigurationContract.php",
    "chars": 1386,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel;\n\ninterface ConfigurationContract\n{\n    public static function "
  },
  {
    "path": "src/Controllers/CallbackController.php",
    "chars": 302,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\n/**\n * Controller for handling a callback request"
  },
  {
    "path": "src/Controllers/CallbackControllerAbstract.php",
    "chars": 5390,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Auth0\\Laravel\\Auth\\Guard;\nuse Auth0\\Laravel\\{"
  },
  {
    "path": "src/Controllers/CallbackControllerContract.php",
    "chars": 450,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Symfony\\Componen"
  },
  {
    "path": "src/Controllers/ControllerAbstract.php",
    "chars": 407,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routi"
  },
  {
    "path": "src/Controllers/ControllerContract.php",
    "chars": 120,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\n/**\n * @api\n */\ninterface ControllerContract\n{\n}\n"
  },
  {
    "path": "src/Controllers/LoginController.php",
    "chars": 233,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\n/**\n * Controller for handling a login request.\n "
  },
  {
    "path": "src/Controllers/LoginControllerAbstract.php",
    "chars": 2009,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Auth0\\Laravel\\Auth\\Guard;\nuse Auth0\\Laravel\\{"
  },
  {
    "path": "src/Controllers/LoginControllerContract.php",
    "chars": 492,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Symfony\\Componen"
  },
  {
    "path": "src/Controllers/LogoutController.php",
    "chars": 237,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\n/**\n * Controller for handling a logout request.\n"
  },
  {
    "path": "src/Controllers/LogoutControllerAbstract.php",
    "chars": 1966,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Auth0\\Laravel\\Auth\\Guard;\nuse Auth0\\Laravel\\C"
  },
  {
    "path": "src/Controllers/LogoutControllerContract.php",
    "chars": 471,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse Symfony\\Componen"
  },
  {
    "path": "src/Entities/CredentialEntity.php",
    "chars": 3161,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\nuse J"
  },
  {
    "path": "src/Entities/CredentialEntityAbstract.php",
    "chars": 4016,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\n\n/**\n"
  },
  {
    "path": "src/Entities/CredentialEntityContract.php",
    "chars": 3140,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\n\n/**\n"
  },
  {
    "path": "src/Entities/EntityAbstract.php",
    "chars": 118,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\n/**\n * @api\n */\nabstract class EntityAbstract\n{\n}\n"
  },
  {
    "path": "src/Entities/EntityContract.php",
    "chars": 113,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\n/**\n * @api\n */\ninterface EntityContract\n{\n}\n"
  },
  {
    "path": "src/Entities/InstanceEntity.php",
    "chars": 288,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\n/**\n * An entity representing an instance of the Aut"
  },
  {
    "path": "src/Entities/InstanceEntityAbstract.php",
    "chars": 9926,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Auth0\\Laravel\\Bridges\\{CacheBridge, SessionBridg"
  },
  {
    "path": "src/Entities/InstanceEntityContract.php",
    "chars": 1173,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Auth0\\SDK\\Configuration\\SdkConfiguration;\nuse Au"
  },
  {
    "path": "src/Entities/InstanceEntityTrait.php",
    "chars": 1449,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Entities;\n\nuse Auth0\\SDK\\Configuration\\SdkConfiguration;\nuse Au"
  },
  {
    "path": "src/Events/Auth0EventContract.php",
    "chars": 137,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface Auth0EventContract extends E"
  },
  {
    "path": "src/Events/AuthenticationFailed.php",
    "chars": 245,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when user authentication fails.\n *\n "
  },
  {
    "path": "src/Events/AuthenticationFailedAbstract.php",
    "chars": 811,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\nuse Throwable;\n\n/**\n * @internal\n *\n * @api\n */\nabstra"
  },
  {
    "path": "src/Events/AuthenticationFailedContract.php",
    "chars": 286,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface AuthenticationFailedContract"
  },
  {
    "path": "src/Events/AuthenticationSucceeded.php",
    "chars": 262,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when a user successfully authenticat"
  },
  {
    "path": "src/Events/AuthenticationSucceededAbstract.php",
    "chars": 691,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\nuse Illuminate\\Contracts\\Auth\\Authenticatable;\n\n/**\n *"
  },
  {
    "path": "src/Events/AuthenticationSucceededContract.php",
    "chars": 262,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface AuthenticationSucceededContr"
  },
  {
    "path": "src/Events/Configuration/BuildingConfigurationEvent.php",
    "chars": 363,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\n/**\n * Dispatched immediately before the"
  },
  {
    "path": "src/Events/Configuration/BuildingConfigurationEventAbstract.php",
    "chars": 744,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\nuse Auth0\\Laravel\\Events\\EventAbstract;\n"
  },
  {
    "path": "src/Events/Configuration/BuildingConfigurationEventContract.php",
    "chars": 329,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\nuse Auth0\\Laravel\\Events\\EventContract;\n"
  },
  {
    "path": "src/Events/Configuration/BuiltConfigurationEvent.php",
    "chars": 302,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\n/**\n * Dispatched after the Auth0 SDK co"
  },
  {
    "path": "src/Events/Configuration/BuiltConfigurationEventAbstract.php",
    "chars": 812,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\nuse Auth0\\Laravel\\Events\\EventAbstract;\n"
  },
  {
    "path": "src/Events/Configuration/BuiltConfigurationEventContract.php",
    "chars": 326,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Configuration;\n\nuse Auth0\\Laravel\\Events\\EventContract;\n"
  },
  {
    "path": "src/Events/EventAbstract.php",
    "chars": 226,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\nuse JsonSerializable;\n\n/**\n * @psalm-suppress UnsafeIn"
  },
  {
    "path": "src/Events/EventContract.php",
    "chars": 321,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface EventContract\n{\n    /**\n    "
  },
  {
    "path": "src/Events/LoginAttempting.php",
    "chars": 226,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when a user tries to login.\n *\n * @a"
  },
  {
    "path": "src/Events/LoginAttemptingAbstract.php",
    "chars": 702,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class LoginAt"
  },
  {
    "path": "src/Events/LoginAttemptingContract.php",
    "chars": 260,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface LoginAttemptingContract exte"
  },
  {
    "path": "src/Events/Middleware/StatefulMiddlewareRequest.php",
    "chars": 311,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\n/**\n * Dispatched when an incoming request "
  },
  {
    "path": "src/Events/Middleware/StatefulMiddlewareRequestAbstract.php",
    "chars": 953,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\nuse Auth0\\Laravel\\Events\\EventAbstract;\nuse"
  },
  {
    "path": "src/Events/Middleware/StatefulMiddlewareRequestContract.php",
    "chars": 417,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\nuse Auth0\\Laravel\\Events\\EventContract;\nuse"
  },
  {
    "path": "src/Events/Middleware/StatelessMiddlewareRequest.php",
    "chars": 315,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\n/**\n * Dispatched when an incoming request "
  },
  {
    "path": "src/Events/Middleware/StatelessMiddlewareRequestAbstract.php",
    "chars": 954,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\nuse Auth0\\Laravel\\Events\\EventAbstract;\nuse"
  },
  {
    "path": "src/Events/Middleware/StatelessMiddlewareRequestContract.php",
    "chars": 418,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events\\Middleware;\n\nuse Auth0\\Laravel\\Events\\EventContract;\nuse"
  },
  {
    "path": "src/Events/TokenExpired.php",
    "chars": 223,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when an access token has expired.\n *"
  },
  {
    "path": "src/Events/TokenExpiredAbstract.php",
    "chars": 243,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class TokenEx"
  },
  {
    "path": "src/Events/TokenExpiredContract.php",
    "chars": 184,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface TokenExpiredContract extends"
  },
  {
    "path": "src/Events/TokenRefreshFailed.php",
    "chars": 235,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when a token refresh fails.\n *\n * @a"
  },
  {
    "path": "src/Events/TokenRefreshFailedAbstract.php",
    "chars": 249,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class TokenRe"
  },
  {
    "path": "src/Events/TokenRefreshFailedContract.php",
    "chars": 190,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface TokenRefreshFailedContract e"
  },
  {
    "path": "src/Events/TokenRefreshSucceeded.php",
    "chars": 264,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when an access token is successfully"
  },
  {
    "path": "src/Events/TokenRefreshSucceededAbstract.php",
    "chars": 252,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class TokenRe"
  },
  {
    "path": "src/Events/TokenRefreshSucceededContract.php",
    "chars": 193,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface TokenRefreshSucceededContrac"
  },
  {
    "path": "src/Events/TokenVerificationAttempting.php",
    "chars": 276,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched before a token verification is perfo"
  },
  {
    "path": "src/Events/TokenVerificationAttemptingAbstract.php",
    "chars": 589,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @internal\n *\n * @api\n */\nabstract class TokenVe"
  },
  {
    "path": "src/Events/TokenVerificationAttemptingContract.php",
    "chars": 250,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface TokenVerificationAttemptingC"
  },
  {
    "path": "src/Events/TokenVerificationFailed.php",
    "chars": 255,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * Dispatched when a token fails verification.\n *\n"
  },
  {
    "path": "src/Events/TokenVerificationFailedAbstract.php",
    "chars": 971,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\nuse Throwable;\n\n/**\n * @internal\n *\n * @api\n */\nabstra"
  },
  {
    "path": "src/Events/TokenVerificationFailedContract.php",
    "chars": 304,
    "preview": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Auth0\\Laravel\\Events;\n\n/**\n * @api\n */\ninterface TokenVerificationFailedContr"
  }
]

// ... and 103 more files (download for full content)

About this extraction

This page contains the full source code of the auth0/laravel-auth0 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 303 files (662.8 KB), approximately 167.6k tokens, and a symbol index with 606 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!