13 KiB
UPGRADE FROM v1.8.4 TO v1.8.5
-
Change configuration of new ApiBundle in your
config/packages/security.yamlfile:security: access_control: - - { path: "%sylius.security.new_api_route%/admin/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.new_api_admin_route%/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY } - - { path: "%sylius.security.new_api_route%/shop/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.new_api_shop_route%/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY }
UPGRADE FROM v1.8.0 TO v1.8.1
-
Change configuration of new ApiBundle in your
config/packages/security.yamlfile:security: providers: - sylius_api_chain_provider: - chain: - providers: [sylius_api_shop_user_provider, sylius_api_admin_user_provider] firewalls: new_api_admin_user: - pattern: "%sylius.security.new_api_route%/admin-user-authentication-token" - provider: sylius_admin_user_provider + pattern: "%sylius.security.new_api_admin_regex%/.*" + provider: sylius_api_admin_user_provider json_login: - check_path: "%sylius.security.new_api_route%/admin-user-authentication-token" + check_path: "%sylius.security.new_api_route%/admin/authentication-token" new_api_shop_user: - pattern: "%sylius.security.new_api_route%/shop-user-authentication-token" - provider: sylius_shop_user_provider + pattern: "%sylius.security.new_api_shop_regex%/.*" + provider: sylius_api_shop_user_provider json_login: - check_path: "%sylius.security.new_api_route%/shop-user-authentication-token" + check_path: "%sylius.security.new_api_route%/shop/authentication-token" - new_api: - pattern: "%sylius.security.new_api_regex%/*" - provider: sylius_api_chain_provider - stateless: true - anonymous: lazy - guard: - authenticators: - - lexik_jwt_authentication.jwt_token_authenticator access_control: + - { path: "%sylius.security.new_api_route%/admin/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.new_api_route%/shop/authentication-token", role: IS_AUTHENTICATED_ANONYMOUSLY }
UPGRADE FROM v1.7.X TO v1.8.0
-
Add new bundles to your list of used bundles in
config/bundles.phpif you are not using it apart from Sylius:+ ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], + Sylius\Bundle\ApiBundle\SyliusApiBundle::class => ['all' => true], + Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true], + SyliusLabs\DoctrineMigrationsExtraBundle\SyliusLabsDoctrineMigrationsExtraBundle::class => ['all' => true], -
Add configuration of new ApiBundle in your
config/packages/_sylius.yamlfile:imports: + - { resource: "@SyliusApiBundle/Resources/config/app/config.yaml" } -
Add configuration of new ApiBundle in your
config/packages/security.yamlfile:parameters: - sylius.security.admin_regex: "^/admin" - sylius.security.shop_regex: "^/(?!admin|api/.*|api$|media/.*)[^/]++" + sylius.security.admin_regex: "^/%sylius_admin.path_name%" + sylius.security.shop_regex: "^/(?!%sylius_admin.path_name%|new-api|api/.*|api$|media/.*)[^/]++" + sylius.security.new_api_route: "/new-api" + sylius.security.new_api_regex: "^%sylius.security.new_api_route%" + sylius.security.new_api_admin_route: "%sylius.security.new_api_route%/admin" + sylius.security.new_api_admin_regex: "^%sylius.security.new_api_admin_route%" + sylius.security.new_api_shop_route: "%sylius.security.new_api_route%/shop" + sylius.security.new_api_shop_regex: "^%sylius.security.new_api_shop_route%" security: providers: + sylius_api_admin_user_provider: + id: sylius.admin_user_provider.email_or_name_based + sylius_api_shop_user_provider: + id: sylius.shop_user_provider.email_or_name_based + sylius_api_chain_provider: + chain: + providers: [sylius_api_shop_user_provider, sylius_api_admin_user_provider] firewalls: admin: remember_me: - path: /admin + path: "/%sylius_admin.path_name%" + new_api_admin_user: + pattern: "%sylius.security.new_api_route%/admin-user-authentication-token" + provider: sylius_admin_user_provider + stateless: true + anonymous: true + json_login: + check_path: "%sylius.security.new_api_route%/admin-user-authentication-token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + + new_api_shop_user: + pattern: "%sylius.security.new_api_route%/shop-user-authentication-token" + provider: sylius_shop_user_provider + stateless: true + anonymous: true + json_login: + check_path: "%sylius.security.new_api_route%/shop-user-authentication-token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + + new_api: + pattern: "%sylius.security.new_api_regex%/*" + provider: sylius_api_chain_provider + stateless: true + anonymous: lazy + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + access_control: + - { path: "%sylius.security.new_api_admin_regex%/.*", role: ROLE_API_ACCESS } + - { path: "%sylius.security.new_api_shop_regex%/.*", role: IS_AUTHENTICATED_ANONYMOUSLY } -
Add
sylius_api.yamlfile toconfig/routes/directory:sylius_api: resource: "@SyliusApiBundle/Resources/config/routing.yml" prefix: "%sylius.security.new_api_route%" -
Add
lexik_jwt_authentication.yamlfile toconfig/packages/directory:lexik_jwt_authentication: secret_key: '%env(resolve:JWT_SECRET_KEY)%' public_key: '%env(resolve:JWT_PUBLIC_KEY)%' pass_phrase: '%env(JWT_PASSPHRASE)%' -
Add configuration in your
.envfile:+ ###> lexik/jwt-authentication-bundle ### + JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem + JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem + JWT_PASSPHRASE=YOUR_SECRET_PASSPHRASE + ###< lexik/jwt-authentication-bundle ### -
Add configuration in your
.env.testfile:+ ###> lexik/jwt-authentication-bundle ### + JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private-test.pem + JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public-test.pem + JWT_PASSPHRASE=ALL_THAT_IS_GOLD_DOES_NOT_GLITTER_NOT_ALL_THOSE_WHO_WANDER_ARE_LOST + ###< lexik/jwt-authentication-bundle ### -
Add configuration in your
.env.test_cachedfile:+ ###> lexik/jwt-authentication-bundle ### + JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private-test.pem + JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public-test.pem + JWT_PASSPHRASE=ALL_THAT_IS_GOLD_DOES_NOT_GLITTER_NOT_ALL_THOSE_WHO_WANDER_ARE_LOST + ###< lexik/jwt-authentication-bundle ### -
Sample JWT token generation is available here
-
All consts classes has been changed from final classes to interfaces. As a result initialization of
\Sylius\Bundle\UserBundle\UserEventsis not longer possible. The whole list of changed classes can be found here. -
Service alias
Sylius\Component\Channel\Context\ChannelContextInterfacewas changed fromsylius.context.channel.compositetosylius.context.channel. The later is being decorated bysylius.context.channel.cachedwhich caches the channel per request and reduces the amount of database queries. -
A serialization group has been added to the route
sylius_admin_ajax_product_indexto avoid an infinite loop, or a time out during this ajax request (previously no serialization group was defined on this route). -
We now use the parameter
sylius_admin.path_nameto retrieve the admin routes prefix. If you used the/adminprefix in some admin URLs you can now replace/adminby/%sylius_admin.path_name%.
Also the route is now dynamic. You can change theSYLIUS_ADMIN_ROUTING_PATH_NAMEenvironment variable to custom the admin's URL.
Special attention
Migrations
As we switched to the 3.0 version of Doctrine Migrations, there are some things that need to be changed in the application that is upgraded to Sylius 1.8:
-
Replace the DoctrineMigrationsBundle configuration in
config/packages/doctrine_migrations.yaml:doctrine_migrations: - dir_name: "%kernel.project_dir%/src/Migrations" - - # Namespace is arbitrary but should be different from App\Migrations as migrations classes should NOT be autoloaded - namespace: DoctrineMigrations + storage: + table_storage: + table_name: sylius_migrations + migrations_paths: + 'DoctrineMigrations': 'src/Migrations' -
Remove all the legacy Sylius-Standard migrations (they're not needed anymore)
rm "src/Migrations/Version20170912085504.php" #... -
Mark all migrations from @SyliusCoreBundle and @SyliusAdminApiBundle as executed (they're the same as legacy ones, just not recognized by the doctrine yet)
bin/console doctrine:migrations:version "Sylius\Bundle\CoreBundle\Migrations\Version20161202011555" --add --no-interaction #...BEWARE!
If you're using some Sylius plugins you'll probably need to handle their migrations as well. You can either leave them in your
src/Migrations/catalog and treat as your own or use the migrations from the vendors. However, it assumes that plugin provides a proper integration with Doctrine Migrations 3.0 - as, for example, Invoicing Plugin.TIP
Take a look at etc/migrations-1.8.sh script - it would execute points 2) and 3) automatically.
-
Do the same for your own migrations. Assuming your migrations namespace is
DoctrineMigrationsand migrations catalog issrc/Migrations, you can run such a script:#!/bin/bash for file in $(ls -1 src/Migrations/ | sed -e 's/\..*$//') do bin/console doctrine:migrations:version "DoctrineMigrations\\${file}" --add --no-interaction done -
Run
bin/console doctrine:migrations:migrateto apply migrations added in Sylius 1.8
Translations
Some translations have changed, you may want to search for them in your project:
sylius.email.shipment_confirmation.tracking_codehas been removed.sylius.email.shipment_confirmation.you_can_check_its_locationhas been removed.sylius.email.shipment_confirmation.you_can_check_its_location_with_the_tracking_codehas been added instead of the two above.