2017 © Pedro Peláez
 

sylius-plugin shop-api-plugin

Shop API for Sylius E-Commerce.

image

marcelsud/shop-api-plugin

Shop API for Sylius E-Commerce.

  • Saturday, December 9, 2017
  • by marcelsud
  • Repository
  • 1 Watchers
  • 0 Stars
  • 1 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 31 Forks
  • 0 Open issues
  • 28 Versions
  • 0 % Grown

The README.md

Sylius Shop API License Version Build Status on linux Scrutinizer Quality Score

This repository provides a ShopApi implementation on the top of Sylius E-Commerce platform., (*1)

Beware

It is also just an addition to Sylius - Standard. Please, check official documentation in order to understand the basic concepts., (*2)

Pre - requirements

In order to run this plugin you need to fulfill following requirements: 1. Installed composer Composer. bash $ wget http://getcomposer.org/composer.phar $ php composer.phar create-project -s beta sylius/sylius-standard project, (*3)

  1. Installed Sylius bash $ cd project $ php bin/console sylius:install

Rest of the command are executed inside project folder., (*4)

Usage

  1. Run composer require sylius/shop-api-plugin.
  2. Extend config files:, (*5)

    1. Add SyliusShopApi to AppKernel.
    // app/AppKernel.php
    
        /**
         * {@inheritdoc}
         */
        public function registerBundles()
        {
            $bundles = [
                // ...
    
                new \Sylius\ShopApiPlugin\ShopApiPlugin(),
                new \League\Tactician\Bundle\TacticianBundle(),
            ];
    
            return array_merge(parent::registerBundles(), $bundles);
        }
    
    1. Add - { path: '^/shop-api', priorities: ['json'], fallback_format: json, prefer_extension: true } to fos_rest.format_listener.rules section in app/config/config.yml file and import config from Plugin.
    # app/config/config.yml
    
    imports:
        # ...
        - { resource: "@ShopApiPlugin/Resources/config/app/config.yml" }
    
    # ...
    
    fos_rest:
        # ...
    
        format_listener:
            rules:
                - { path: '^/shop-api', priorities: ['json'], fallback_format: json, prefer_extension: true } # <-- Add this
                - { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true }
                - { path: '^/', stop: true }
    
    
    1. Add routing to app/config/routing.yml
    # app/config/routing.yml
    
    # ...
    
    sylius_shop_api:
        resource: "@ShopApiPlugin/Resources/config/routing.yml"
    
    1. Configure firewall
      1. Change sylius.security.shop_regex parameter to exclude shop-api prefix also
      2. Add ShopAPI regex parameter shop_api.security.regex: "^/shop-api"
      3. Add ShopAPI firewall config:
    parameters:
        # ...
    
        sylius.security.shop_regex: "^/(?!admin|api|shop-api)[^/]++" # shop-api has been added inside the brackets 
        shop_api.security.regex: "^/shop-api"
    
    # ... 
    
    security:
        firewalls:
            // ...
    
            shop_api:
                pattern: "%shop_api.security.regex%"
                stateless:  true
                anonymous:  true
    
    1. Adjust checkout configuration to not collide with Sylius shop API. For example (assuming, that you are using regular Sylius security definition):
    # app/config/config.yml
    
    # ...
    
    sylius_shop:
        checkout_resolver:
            pattern: "%sylius.security.shop_regex%/checkout/"
    
    1. (optional) if you have installed nelmio/NelmioCorsBundle for Support of Cross-Origin Ajax Request,, (*6)

      1. Add the NelmioCorsBundle to the AppKernel
      // app/AppKernel.php
      
      /**
       * {@inheritdoc}
       */
      public function registerBundles()
      {
          $bundles = array(
              // ...
              new Nelmio\CorsBundle\NelmioCorsBundle(),
              // ...
          );
          // ...
      }
      
      1. Add the configuration to the `config.yml
      # app/config/config.yml
      
      # ...
      
      nelmio_cors:
          defaults:
              allow_credentials: false
              allow_origin: []
              allow_headers: []
              allow_methods: []
              expose_headers: []
              max_age: 0
              hosts: []
              origin_regex: false
              forced_allow_origin_value: ~
          paths:
              '^/shop-api/':
                  allow_origin: ['*']
                  allow_headers: ['Content-Type', 'authorization']
                  allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS']
                  max_age: 3600
      

Additional features

Attributes

If you would like to receive serialized attributes you need to define an array of theirs codes under shop_api.included_attributes key. E.g., (*7)

shop_api:
    included_attributes:
        - "MUG_MATERIAL_CODE"

Authorization

By default no authorization is provided together with this bundle. But it is tested to work along with LexikJWTAuthenticationBundle In order to check example configuration check - security.yml - jwt parameters and jwt config in config.yml - example rsa keys - login request, (*8)

From the test app., (*9)

Testing

The application can be tested with API Test Case. In order to run test suite execute the following command:, (*10)

$ bin/phpunit

The Versions

08/05 2017

v1.0.0-alpha.3

1.0.0.0-alpha3

Shop API for Sylius E-Commerce.

  Sources   Download

MIT

The Requires

 

The Development Requires

08/05 2017

dev-yaml-stringing

dev-yaml-stringing

Shop API for Sylius E-Commerce.

  Sources   Download

MIT

The Requires

 

The Development Requires

24/04 2017

v1.0.0-alpha.2

1.0.0.0-alpha2

Shop API for Sylius E-Commerce.

  Sources   Download

MIT

The Requires

 

The Development Requires