diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 799f5927a..56546145d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,16 +19,20 @@ jobs: strategy: fail-fast: false matrix: - php: [ "8.0", "8.1", "8.2", "8.3" ] - symfony: [ "^5.4", "^6.4" ] - sylius: [ "^1.12", "^1.13" ] - node: [ "18.x", "20.x" ] - mysql: [ "8.0" ] + php: ["8.0", "8.1", "8.2", "8.3"] + symfony: ["^5.4", "^6.4"] + sylius: ["~1.12.0", "~1.13.0", "~1.14.0"] + node: ["20.x"] + mysql: ["8.0"] exclude: - - sylius: ^1.13 + - sylius: "~1.13.0" php: 8.0 - - sylius: ^1.12 + - sylius: "~1.14.0" + php: 8.0 + - sylius: "~1.14.0" + symfony: ^5.4 + - sylius: "~1.12.0" php: 8.0 symfony: ^6.4 @@ -162,4 +166,4 @@ jobs: SLACK_MESSAGE: ':x:' SLACK_TITLE: Failed build on ${{ github.event.repository.name }} repository SLACK_USERNAME: ${{ secrets.FAILED_BUILD_SLACK_USERNAME }} - SLACK_WEBHOOK: ${{ secrets.FAILED_BUILD_SLACK_WEBHOOK }} \ No newline at end of file + SLACK_WEBHOOK: ${{ secrets.FAILED_BUILD_SLACK_WEBHOOK }} diff --git a/.github/workflows/coding_standard.yml b/.github/workflows/coding_standard.yml index a1d76639f..dd0078905 100644 --- a/.github/workflows/coding_standard.yml +++ b/.github/workflows/coding_standard.yml @@ -18,15 +18,19 @@ jobs: strategy: fail-fast: false matrix: - php: [ "8.0", "8.1", "8.2", "8.3" ] - symfony: [ "^5.4", "^6.4" ] - sylius: [ "^1.12", "^1.13" ] - node: [ "18.x", "20.x" ] + php: ["8.0", "8.1", "8.2", "8.3"] + symfony: ["^5.4", "^6.4"] + sylius: ["~1.12.0", "~1.13.0", "~1.14.0"] + node: ["20.x"] exclude: - - sylius: ^1.13 + - sylius: "~1.13.0" php: 8.0 - - sylius: ^1.12 + - sylius: "~1.14.0" + php: 8.0 + - sylius: "~1.14.0" + symfony: ^5.4 + - sylius: "~1.12.0" php: 8.0 symfony: ^6.4 diff --git a/composer.json b/composer.json index 57323587f..dc1470953 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "license": "MIT", "require": { "php": "^8.0", - "sylius/sylius": "^1.12.0 || ^1.13.0", + "sylius/sylius": "^1.12", "league/csv": "^9.1", "friendsofsymfony/ckeditor-bundle": "^2.0", "instaclick/php-webdriver": "^1.4", diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 109ffc4ad..e0211afae 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -15,3 +15,4 @@ parameters: - identifier: missingType.iterableValue - identifier: missingType.generics - '#.*NodeParentInterface.*#' + - '#should return Sylius\\Component\\Resource\\Model\\TranslationInterface but returns Sylius\\Resource\\Model\\TranslationInterface\.#' diff --git a/tests/Application/config/sylius/1.14/bundles.php b/tests/Application/config/sylius/1.14/bundles.php new file mode 100644 index 000000000..5d54121b4 --- /dev/null +++ b/tests/Application/config/sylius/1.14/bundles.php @@ -0,0 +1,7 @@ + ['all' => true], +]; diff --git a/tests/Application/config/sylius/1.14/packages/security.yaml b/tests/Application/config/sylius/1.14/packages/security.yaml new file mode 100644 index 000000000..7458c77a6 --- /dev/null +++ b/tests/Application/config/sylius/1.14/packages/security.yaml @@ -0,0 +1,124 @@ +security: + enable_authenticator_manager: true + providers: + sylius_admin_user_provider: + id: sylius.admin_user_provider.email_or_name_based + sylius_api_admin_user_provider: + id: sylius.admin_user_provider.email_or_name_based + sylius_shop_user_provider: + id: sylius.shop_user_provider.email_or_name_based + sylius_api_shop_user_provider: + id: sylius.shop_user_provider.email_or_name_based + + password_hashers: + Sylius\Component\User\Model\UserInterface: argon2i + firewalls: + admin: + switch_user: true + context: admin + pattern: "%sylius.security.admin_regex%" + provider: sylius_admin_user_provider + form_login: + provider: sylius_admin_user_provider + login_path: sylius_admin_login + check_path: sylius_admin_login_check + failure_path: sylius_admin_login + default_target_path: sylius_admin_dashboard + use_forward: false + use_referer: true + enable_csrf: true + csrf_parameter: _csrf_admin_security_token + csrf_token_id: admin_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + path: "/%sylius_admin.path_name%" + name: APP_ADMIN_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_admin_logout + target: sylius_admin_login + + new_api_admin_user: + pattern: "%sylius.security.new_api_admin_regex%/.*" + provider: sylius_api_admin_user_provider + stateless: true + entry_point: jwt + json_login: + check_path: "%sylius.security.new_api_admin_route%/administrators/token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + jwt: true + + new_api_shop_user: + pattern: "%sylius.security.new_api_shop_regex%/.*" + provider: sylius_api_shop_user_provider + stateless: true + entry_point: jwt + json_login: + check_path: "%sylius.security.new_api_shop_route%/customers/token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + jwt: true + + shop: + switch_user: { role: ROLE_ALLOWED_TO_SWITCH } + context: shop + pattern: "%sylius.security.shop_regex%" + provider: sylius_shop_user_provider + form_login: + success_handler: sylius.authentication.success_handler + failure_handler: sylius.authentication.failure_handler + provider: sylius_shop_user_provider + login_path: sylius_shop_login + check_path: sylius_shop_login_check + failure_path: sylius_shop_login + default_target_path: sylius_shop_homepage + use_forward: false + use_referer: true + enable_csrf: true + csrf_parameter: _csrf_shop_security_token + csrf_token_id: shop_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + name: APP_SHOP_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_shop_logout + target: sylius_shop_homepage + invalidate_session: false + + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + + image_resolver: + pattern: ^/media/cache/resolve + security: false + + access_control: + - { path: "%sylius.security.admin_regex%/_partial", role: PUBLIC_ACCESS, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.admin_regex%/_partial", role: ROLE_NO_ACCESS } + - { path: "%sylius.security.shop_regex%/_partial", role: PUBLIC_ACCESS, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.shop_regex%/_partial", role: ROLE_NO_ACCESS } + + - { path: "%sylius.security.admin_regex%/login", role: PUBLIC_ACCESS } + - { path: "%sylius.security.shop_regex%/login", role: PUBLIC_ACCESS } + + - { path: "%sylius.security.shop_regex%/register", role: PUBLIC_ACCESS } + - { path: "%sylius.security.shop_regex%/verify", role: PUBLIC_ACCESS } + + - { path: "%sylius.security.admin_regex%", role: ROLE_ADMINISTRATION_ACCESS } + - { path: "%sylius.security.shop_regex%/account", role: ROLE_USER } + + - { path: "%sylius.security.new_api_admin_route%/administrators/reset-password", role: PUBLIC_ACCESS } + - { path: "%sylius.security.new_api_admin_regex%/.*", role: ROLE_API_ACCESS } + - { path: "%sylius.security.new_api_admin_route%/administrators/token", role: PUBLIC_ACCESS } + - { path: "%sylius.security.new_api_user_account_regex%/.*", role: ROLE_USER } + - { path: "%sylius.security.new_api_shop_route%/customers/token", role: PUBLIC_ACCESS } + - { path: "%sylius.security.new_api_shop_regex%/.*", role: PUBLIC_ACCESS }