diff --git a/.gitattributes b/.gitattributes index 0e5aa6aa..cb4ac9ad 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,11 @@ /tests export-ignore /dev export-ignore +/.github export-ignore /.editorconfig export-ignore /.gitattributes export-ignore /.gitignore export-ignore -/.php_cs.dist export-ignore -/.travis.yml export-ignore +/.php-cs-fixer.dist export-ignore /docker-compose.yml export-ignore /phpunit.xml.dist export-ignore +/.psalm.baseline.xml export-ignore +/psalm.xml export-ignore diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 2c25e959..dbf699e7 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -1,6 +1,11 @@ name: "coding standards" -on: ["pull_request", "push"] +on: + pull_request: ~ + push: ~ + schedule: + # Do not make it the first of the month and/or midnight since it is a very busy time + - cron: "* 10 5 * *" jobs: coding-standards: @@ -8,7 +13,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "checkout" - uses: "actions/checkout@v2" + uses: "actions/checkout@v4" - name: "build the environment" run: "dev/bin/docker-compose build" diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 99aa0f09..cf73b695 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -1,6 +1,11 @@ name: "static analysis" -on: ["pull_request", "push"] +on: + pull_request: ~ + push: ~ + schedule: + # Do not make it the first of the month and/or midnight since it is a very busy time + - cron: "* 10 5 * *" jobs: static-analysis: @@ -8,7 +13,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "checkout" - uses: "actions/checkout@v2" + uses: "actions/checkout@v4" - name: "build the environment" run: "dev/bin/docker-compose build" diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 5f61b545..e21d40a9 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -1,6 +1,11 @@ name: "unit tests" -on: [ "pull_request", "push" ] +on: + pull_request: ~ + push: ~ + schedule: + # Do not make it the first of the month and/or midnight since it is a very busy time + - cron: "* 10 5 * *" jobs: tests: @@ -10,32 +15,21 @@ jobs: fail-fast: false matrix: #Stable supported versions - php: ['7.4', '8.0', '8.1', '8.2'] + php: ['8.1', '8.2'] symfony: ['5.4.*', '6.2.*'] composer-flags: ['--prefer-stable'] can-fail: [false] exclude: - - php: '7.4' - symfony: '6.2.*' - - php: '8.0' + - php: '8.1' symfony: '6.2.*' include: # Lowest supported versions - - php: '7.2' + - php: '8.1' symfony: '5.4.*' composer-flags: '--prefer-stable --prefer-lowest' can-fail: false - # EOL PHP versions - - php: '7.2' - symfony: '5.4.*' - composer-flags: '--prefer-stable' - can-fail: false - - php: '7.3' - symfony: '5.4.*' - composer-flags: '--prefer-stable' - can-fail: false # Development versions - - php: '8.2' + - php: '8.3' symfony: '6.3.x-dev' composer-flags: '' can-fail: true @@ -47,11 +41,7 @@ jobs: steps: - name: "checkout" - uses: "actions/checkout@v2" - - - name: "build the PHP7 environment" - run: "dev/bin/docker-compose build --build-arg PHP_VERSION=${{ matrix.php }} php" - if: startsWith(matrix.php, '7') + uses: "actions/checkout@v4" - name: "build the PHP8 environment" run: "dev/bin/docker-compose build --build-arg PHP_VERSION=${{ matrix.php }} --build-arg XDEBUG_VERSION='3.2.0' php" diff --git a/composer.json b/composer.json index 96f28b0a..19c7eb4d 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ } ], "require": { - "php": ">=7.2", + "php": "^8.1", "doctrine/doctrine-bundle": "^2.0.8", "doctrine/orm": "^2.7.1", "league/oauth2-server": "^8.3", @@ -24,7 +24,6 @@ "psr/http-factory": "^1.0", "symfony/event-dispatcher": "^5.4|^6.2", "symfony/framework-bundle": "^5.4|^6.2", - "symfony/polyfill-php81": "^1.22", "symfony/psr-http-message-bridge": "^2.0", "symfony/security-bundle": "^5.4|^6.2" }, @@ -41,10 +40,7 @@ "psr-4": { "League\\Bundle\\OAuth2ServerBundle\\Tests\\": "tests/" } }, "config": { - "sort-packages": true, - "allow-plugins": { - "bamarni/composer-bin-plugin": true - } + "sort-packages": true }, "extra": { "branch-alias": { diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile index d9db2b6e..88b3fe23 100644 --- a/dev/docker/Dockerfile +++ b/dev/docker/Dockerfile @@ -1,4 +1,4 @@ -ARG PHP_VERSION=7.4 +ARG PHP_VERSION=8.1 FROM php:${PHP_VERSION}-cli-alpine LABEL maintainer="Petar Obradović " diff --git a/src/DependencyInjection/CompilerPass/RegisterDoctrineOrmMappingPass.php b/src/DependencyInjection/CompilerPass/RegisterDoctrineOrmMappingPass.php deleted file mode 100644 index 90f2f37d..00000000 --- a/src/DependencyInjection/CompilerPass/RegisterDoctrineOrmMappingPass.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ -class RegisterDoctrineOrmMappingPass extends DoctrineOrmMappingsPass -{ - public function __construct() - { - parent::__construct( - new Reference(Driver::class), - ['League\Bundle\OAuth2ServerBundle\Model'], - ['league.oauth2_server.persistence.doctrine.manager'], - 'league.oauth2_server.persistence.doctrine.enabled' - ); - } -} diff --git a/src/EventListener/AuthorizationRequestUserResolvingListenerTrait.php b/src/EventListener/AuthorizationRequestUserResolvingListenerTrait.php index 8e95d4f2..f9d4861d 100644 --- a/src/EventListener/AuthorizationRequestUserResolvingListenerTrait.php +++ b/src/EventListener/AuthorizationRequestUserResolvingListenerTrait.php @@ -1,5 +1,7 @@ addCompilerPass(new RegisterDoctrineOrmMappingPass()); + $container->addCompilerPass( + new DoctrineOrmMappingsPass( + new Reference(Driver::class), + ['League\Bundle\OAuth2ServerBundle\Model'], + ['league.oauth2_server.persistence.doctrine.manager'], + 'league.oauth2_server.persistence.doctrine.enabled' + ) + ); $container->addCompilerPass(new EncryptionKeyPass()); } } diff --git a/src/Model/AccessTokenInterface.php b/src/Model/AccessTokenInterface.php index f1056830..dca46d1a 100644 --- a/src/Model/AccessTokenInterface.php +++ b/src/Model/AccessTokenInterface.php @@ -4,15 +4,13 @@ namespace League\Bundle\OAuth2ServerBundle\Model; -use DateTimeInterface; - interface AccessTokenInterface { public function __toString(): string; public function getIdentifier(): string; - public function getExpiry(): DateTimeInterface; + public function getExpiry(): \DateTimeInterface; public function getUserIdentifier(): ?string; diff --git a/src/Model/AuthorizationCodeInterface.php b/src/Model/AuthorizationCodeInterface.php index fc8abe86..83c37987 100644 --- a/src/Model/AuthorizationCodeInterface.php +++ b/src/Model/AuthorizationCodeInterface.php @@ -4,15 +4,13 @@ namespace League\Bundle\OAuth2ServerBundle\Model; -use DateTimeInterface; - interface AuthorizationCodeInterface { public function __toString(): string; public function getIdentifier(): string; - public function getExpiryDateTime(): DateTimeInterface; + public function getExpiryDateTime(): \DateTimeInterface; public function getUserIdentifier(): ?string; diff --git a/src/Model/RefreshToken.php b/src/Model/RefreshToken.php index 07b536f7..a212b72e 100644 --- a/src/Model/RefreshToken.php +++ b/src/Model/RefreshToken.php @@ -17,7 +17,7 @@ class RefreshToken implements RefreshTokenInterface private $expiry; /** - * @var AccessToken|null + * @var AccessTokenInterface|null */ private $accessToken; @@ -29,7 +29,7 @@ class RefreshToken implements RefreshTokenInterface /** * @psalm-mutation-free */ - public function __construct(string $identifier, \DateTimeInterface $expiry, ?AccessToken $accessToken = null) + public function __construct(string $identifier, \DateTimeInterface $expiry, ?AccessTokenInterface $accessToken = null) { $this->identifier = $identifier; $this->expiry = $expiry; diff --git a/src/Model/RefreshTokenInterface.php b/src/Model/RefreshTokenInterface.php index 46ead423..865c5a5a 100644 --- a/src/Model/RefreshTokenInterface.php +++ b/src/Model/RefreshTokenInterface.php @@ -4,15 +4,13 @@ namespace League\Bundle\OAuth2ServerBundle\Model; -use DateTimeInterface; - interface RefreshTokenInterface { public function __toString(): string; public function getIdentifier(): string; - public function getExpiry(): DateTimeInterface; + public function getExpiry(): \DateTimeInterface; public function getAccessToken(): ?AccessTokenInterface;