From 3462ec05500e086fe1d34b3a9f379391f6392ede Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Tue, 22 Oct 2024 16:23:50 +0530 Subject: [PATCH 1/8] Adding Reversing Labs Scanner --- .github/workflows/rl-scanner.yml | 91 ++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/rl-scanner.yml diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml new file mode 100644 index 0000000..f4743e9 --- /dev/null +++ b/.github/workflows/rl-scanner.yml @@ -0,0 +1,91 @@ +name: RL-Secure +run-name: rl-scanner + +on: + merge_group: + workflow_dispatch: + push: + branches: ["main"] + pull_request: + types: + - opened + - synchronize + +jobs: + rl-scanner: + if: github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request') + runs-on: ubuntu-latest + + environment: security + + permissions: + pull-requests: write + id-token: write # This is required for requesting the JWT + + 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: 8.1 + + - name: Install dependencies + shell: bash + run: | + composer install --prefer-dist + + - name: Build PHP Package + shell: bash + run: | + zip -r auth0-php-package.zip src composer.json README.md LICENSE.txt + + - name: Get Artifact Version + id: get_version + run: | + version=$(cat .version) + echo "version=$version" >> $GITHUB_OUTPUT + + - name: Output build artifact + id: output_build_artifact + run: | + echo "scanfile=$(ls auth0-php-package.zip)" >> $GITHUB_OUTPUT + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install Python dependencies + run: | + pip install --upgrade pip + pip install boto3 requests + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + role-to-assume: ${{ secrets.PRODSEC_TOOLS_ARN }} + aws-region: us-east-1 + mask-aws-account-id: true + + - name: Run Reversing Labs Wrapper Scanner + env: + RLSECURE_LICENSE: ${{ secrets.RLSECURE_LICENSE }} + RLSECURE_SITE_KEY: ${{ secrets.RLSECURE_SITE_KEY }} + SIGNAL_HANDLER_TOKEN: ${{ secrets.SIGNAL_HANDLER_TOKEN }} + WRAPPER_INDEX_URL: "https://${{ secrets.PRODSEC_TOOLS_USER }}:${{ secrets.PRODSEC_TOOLS_TOKEN }}@a0us.jfrog.io/artifactory/api/pypi/python-local/simple" + PYTHONUNBUFFERED: 1 + run: | + pip install rl-wrapper --index-url "$WRAPPER_INDEX_URL" && \ + rl-wrapper \ + --artifact "${{ steps.output_build_artifact.outputs.scanfile }}" \ + --version "${{ steps.get_version.outputs.version }}" \ + --name "${{ github.event.repository.name }}" \ + --repository "${{ github.repository }}" \ + --commit "${{ github.sha }}" \ + --build-env "github_actions" \ + --suppress_output + continue-on-error: true \ No newline at end of file From d8f16d8fe49414357da13e2108c69947f3aef4e6 Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Tue, 22 Oct 2024 16:27:14 +0530 Subject: [PATCH 2/8] Changing the PHP Version to 8.2 --- .github/workflows/rl-scanner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml index f4743e9..ae8a5f9 100644 --- a/.github/workflows/rl-scanner.yml +++ b/.github/workflows/rl-scanner.yml @@ -31,7 +31,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # pin@2.25.4 with: - php-version: 8.1 + php-version: 8.2 - name: Install dependencies shell: bash From ca96de50a4518717a0de884c8d3a0c3ff2fca459 Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Tue, 22 Oct 2024 16:32:09 +0530 Subject: [PATCH 3/8] Adding Laravel Specific Build Files --- .github/workflows/rl-scanner.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml index ae8a5f9..33ee9f0 100644 --- a/.github/workflows/rl-scanner.yml +++ b/.github/workflows/rl-scanner.yml @@ -41,7 +41,7 @@ jobs: - name: Build PHP Package shell: bash run: | - zip -r auth0-php-package.zip src composer.json README.md LICENSE.txt + zip -r laravel-auth0-package.zip src config deprecated codecov.yml composer.json README.md LICENSE.md - name: Get Artifact Version id: get_version @@ -52,7 +52,7 @@ jobs: - name: Output build artifact id: output_build_artifact run: | - echo "scanfile=$(ls auth0-php-package.zip)" >> $GITHUB_OUTPUT + echo "scanfile=$(ls laravel-auth0-package.zip)" >> $GITHUB_OUTPUT - name: Set up Python uses: actions/setup-python@v4 From 0fd8585abac8481a31c83707dd226f5082996d4a Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Fri, 25 Oct 2024 16:03:15 +0530 Subject: [PATCH 4/8] New Changes To RL-Workflow --- .github/actions/rl-scanner/action.yml | 71 ++++++++++++++++++ .github/workflows/release.yml | 13 ++++ .github/workflows/rl-scanner.yml | 101 +++++++++++--------------- 3 files changed, 125 insertions(+), 60 deletions(-) create mode 100644 .github/actions/rl-scanner/action.yml diff --git a/.github/actions/rl-scanner/action.yml b/.github/actions/rl-scanner/action.yml new file mode 100644 index 0000000..b3df2d9 --- /dev/null +++ b/.github/actions/rl-scanner/action.yml @@ -0,0 +1,71 @@ +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 }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7aa14e5..cc3ce36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,19 @@ permissions: ### 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/') runs-on: ubuntu-latest diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml index 33ee9f0..82641b1 100644 --- a/.github/workflows/rl-scanner.yml +++ b/.github/workflows/rl-scanner.yml @@ -1,25 +1,37 @@ -name: RL-Secure -run-name: rl-scanner +name: RL-Secure Workflow on: - merge_group: - workflow_dispatch: - push: - branches: ["main"] - pull_request: - types: - - opened - - synchronize + 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') + 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 - - environment: security + outputs: + scan-status: ${{ steps.rl-scan-conclusion.outcome }} permissions: - pull-requests: write + php-version: write id-token: write # This is required for requesting the JWT steps: @@ -31,61 +43,30 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # pin@2.25.4 with: - php-version: 8.2 - - - name: Install dependencies - shell: bash - run: | - composer install --prefer-dist + php-version: ${{ inputs.php-version }} - - name: Build PHP Package + - name: Build Laravel shell: bash run: | - zip -r laravel-auth0-package.zip src config deprecated codecov.yml composer.json README.md LICENSE.md + zip -r ${{ inputs.artifact-name }} ./* - name: Get Artifact Version id: get_version - run: | - version=$(cat .version) - echo "version=$version" >> $GITHUB_OUTPUT - - - name: Output build artifact - id: output_build_artifact - run: | - echo "scanfile=$(ls laravel-auth0-package.zip)" >> $GITHUB_OUTPUT + uses: ./.github/actions/get-version - - name: Set up Python - uses: actions/setup-python@v4 + - name: Run RL Scanner + id: rl-scan-conclusion + uses: ./.github/actions/rl-scanner with: - python-version: "3.10" - - - name: Install Python dependencies - run: | - pip install --upgrade pip - pip install boto3 requests - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - role-to-assume: ${{ secrets.PRODSEC_TOOLS_ARN }} - aws-region: us-east-1 - mask-aws-account-id: true - - - name: Run Reversing Labs Wrapper Scanner + 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 }} - WRAPPER_INDEX_URL: "https://${{ secrets.PRODSEC_TOOLS_USER }}:${{ secrets.PRODSEC_TOOLS_TOKEN }}@a0us.jfrog.io/artifactory/api/pypi/python-local/simple" - PYTHONUNBUFFERED: 1 - run: | - pip install rl-wrapper --index-url "$WRAPPER_INDEX_URL" && \ - rl-wrapper \ - --artifact "${{ steps.output_build_artifact.outputs.scanfile }}" \ - --version "${{ steps.get_version.outputs.version }}" \ - --name "${{ github.event.repository.name }}" \ - --repository "${{ github.repository }}" \ - --commit "${{ github.sha }}" \ - --build-env "github_actions" \ - --suppress_output - continue-on-error: true \ No newline at end of file + 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 \ No newline at end of file From bdae3cf74d9b6e3234c09517b85c9d08bd56b970 Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Fri, 25 Oct 2024 17:06:49 +0530 Subject: [PATCH 5/8] Added the need flag for release job --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cc3ce36..0696712 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,7 @@ jobs: release: if: github.event.pull_request.merged && startsWith(github.event.pull_request.head.ref, 'release/') + needs: rl-scanner runs-on: ubuntu-latest steps: From 1bfad208cd7d68be270767d6350ec2184fb63cb5 Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Mon, 28 Oct 2024 22:44:19 +0530 Subject: [PATCH 6/8] Testing Changes and get-version file changes --- .github/actions/get-version/action.yml | 4 +--- .github/workflows/release.yml | 6 ++++++ .github/workflows/rl-scanner.yml | 5 ----- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/actions/get-version/action.yml b/.github/actions/get-version/action.yml index 387fdba..4dafb52 100644 --- a/.github/actions/get-version/action.yml +++ b/.github/actions/get-version/action.yml @@ -17,7 +17,5 @@ runs: - id: get_version shell: bash run: | - VERSION=$(echo ${BRANCH_NAME} | sed -r 's#release/+##g') + VERSION=$(head -1 .version) echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT - env: - BRANCH_NAME: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0696712..51a9f02 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,9 +4,15 @@ on: pull_request: types: - closed + workflow_dispatch: + push: + branches: + - 'add-reversing-labs' + 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. diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml index 82641b1..003f168 100644 --- a/.github/workflows/rl-scanner.yml +++ b/.github/workflows/rl-scanner.yml @@ -25,15 +25,10 @@ on: 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 }} - permissions: - php-version: write - id-token: write # This is required for requesting the JWT - steps: - name: Checkout code uses: actions/checkout@v4 From b8d88bb1b46a980e597d9ef8cc1b19b98a1ade32 Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Mon, 28 Oct 2024 22:49:42 +0530 Subject: [PATCH 7/8] Reverting Testing Changes --- .github/workflows/release.yml | 5 +---- .github/workflows/rl-scanner.yml | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51a9f02..a6e3461 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,10 +4,7 @@ on: pull_request: types: - closed - workflow_dispatch: - push: - branches: - - 'add-reversing-labs' + permissions: diff --git a/.github/workflows/rl-scanner.yml b/.github/workflows/rl-scanner.yml index 003f168..0a27d20 100644 --- a/.github/workflows/rl-scanner.yml +++ b/.github/workflows/rl-scanner.yml @@ -25,6 +25,7 @@ on: 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 }} From 2a9b36743c435377363f38c15603e6ccd1b8f81f Mon Sep 17 00:00:00 2001 From: Snehil Kishore Date: Tue, 29 Oct 2024 18:19:49 +0530 Subject: [PATCH 8/8] Fixing PHP Stan and Rector Test Failures --- phpstan.neon.dist | 1 + rector.php | 16 ++++++++-------- src/Controllers/CallbackControllerAbstract.php | 1 + src/Controllers/LoginControllerAbstract.php | 2 ++ src/Controllers/LogoutControllerAbstract.php | 2 ++ src/Guards/GuardAbstract.php | 1 + src/UserProviderAbstract.php | 1 + 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 4b604cc..c332cb1 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -13,6 +13,7 @@ parameters: - '#Constructor of class (.*) has an unused parameter (.*).#' - '#Method (.*) has parameter (.*) with no value type specified in iterable type array.#' - '#no value type specified in iterable type array.#' + - '#Dynamic call to static method (.*).#' reportUnmatchedIgnoredErrors: false treatPhpDocTypesAsCertain: false diff --git a/rector.php b/rector.php index 0ce4154..a0fee44 100644 --- a/rector.php +++ b/rector.php @@ -339,8 +339,8 @@ // ArrayShapeFromConstantArrayReturnRector::class, // BinarySwitchToIfElseRector::class, BooleanNotIdenticalToNotIdenticalRector::class, - BoolvalToTypeCastRector::class, - CallableThisArrayToAnonymousFunctionRector::class, + //BoolvalToTypeCastRector::class, + //CallableThisArrayToAnonymousFunctionRector::class, CallUserFuncArrayToVariadicRector::class, CallUserFuncToMethodCallRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, @@ -373,19 +373,19 @@ // FinalizeClassesWithoutChildrenRector::class, FinalPrivateToPrivateVisibilityRector::class, FlipTypeControlToUseExclusiveTypeRector::class, - FloatvalToTypeCastRector::class, + //FloatvalToTypeCastRector::class, ForeachItemsAssignToEmptyArrayToAssignRector::class, ForeachToInArrayRector::class, ForRepeatedCountToOwnVariableRector::class, // ForToForeachRector::class, FuncGetArgsToVariadicParamRector::class, - GetClassToInstanceOfRector::class, + //GetClassToInstanceOfRector::class, GetDebugTypeRector::class, InlineArrayReturnAssignRector::class, InlineConstructorDefaultToPropertyRector::class, InlineIfToExplicitIfRector::class, InlineIsAInstanceOfRector::class, - IntvalToTypeCastRector::class, + //IntvalToTypeCastRector::class, IsAWithStringWithThirdArgumentRector::class, IssetOnPropertyObjectToPropertyExistsRector::class, JoinStringConcatRector::class, @@ -459,7 +459,7 @@ ReturnNeverTypeRector::class, ReturnTypeFromReturnDirectArrayRector::class, ReturnTypeFromReturnNewRector::class, - ReturnTypeFromStrictBoolReturnExprRector::class, + //ReturnTypeFromStrictBoolReturnExprRector::class, ReturnTypeFromStrictConstantReturnRector::class, ReturnTypeFromStrictNativeCallRector::class, ReturnTypeFromStrictNewArrayRector::class, @@ -507,7 +507,7 @@ StringableForToStringRector::class, StrlenZeroToIdenticalEmptyStringRector::class, StrStartsWithRector::class, - StrvalToTypeCastRector::class, + //StrvalToTypeCastRector::class, SwitchNegatedTernaryRector::class, SymplifyQuoteEscapeRector::class, TernaryConditionVariableAssignmentRector::class, @@ -527,7 +527,7 @@ UnwrapSprintfOneArgumentRector::class, UseClassKeywordForClassNameResolutionRector::class, UseIdenticalOverEqualWithSameTypeRector::class, - UseIncrementAssignRector::class, + //UseIncrementAssignRector::class, // VarAnnotationIncorrectNullableRector::class, // VarConstantCommentRector::class, VarToPublicPropertyRector::class, diff --git a/src/Controllers/CallbackControllerAbstract.php b/src/Controllers/CallbackControllerAbstract.php index bd9a461..82a4340 100644 --- a/src/Controllers/CallbackControllerAbstract.php +++ b/src/Controllers/CallbackControllerAbstract.php @@ -18,6 +18,7 @@ use Throwable; use function is_string; +use function sprintf; /** * @api diff --git a/src/Controllers/LoginControllerAbstract.php b/src/Controllers/LoginControllerAbstract.php index 7c558d2..83343e2 100644 --- a/src/Controllers/LoginControllerAbstract.php +++ b/src/Controllers/LoginControllerAbstract.php @@ -13,6 +13,8 @@ use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; +use function sprintf; + /** * Controller for handling a login request. * diff --git a/src/Controllers/LogoutControllerAbstract.php b/src/Controllers/LogoutControllerAbstract.php index c5d81f6..62cf1b3 100644 --- a/src/Controllers/LogoutControllerAbstract.php +++ b/src/Controllers/LogoutControllerAbstract.php @@ -12,6 +12,8 @@ use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; +use function sprintf; + /** * Controller for handling a logout request. * diff --git a/src/Guards/GuardAbstract.php b/src/Guards/GuardAbstract.php index f5cf935..175c149 100644 --- a/src/Guards/GuardAbstract.php +++ b/src/Guards/GuardAbstract.php @@ -22,6 +22,7 @@ use function is_array; use function is_int; use function is_string; +use function sprintf; /** * @internal diff --git a/src/UserProviderAbstract.php b/src/UserProviderAbstract.php index 6b3b0db..2d6f223 100644 --- a/src/UserProviderAbstract.php +++ b/src/UserProviderAbstract.php @@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Cache; use function is_string; +use function sprintf; /** * User provider for the Auth0 user repository.