tavy315 / sylius-customer-pools-plugin
Sylius plugin for managing customer pools.
Installs: 303
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 3
Open Issues: 0
Type:sylius-plugin
Requires
- php: >=7.4
- sylius/sylius: ^1.9
Requires (Dev)
README
This plugin for Sylius allows you to manage customer pools.
Supports Doctrine ORM driver only.
Customer Pool is a collection of Customers that is assigned to a specific channel. Thanks to this concept, if you have two channels, each of them has a separate customer pool, then customers that have accounts in channel A, and have not registered in channel B, will not be able to log in to channel B with credentials they have specified in channel A (which is the behaviour happening in Sylius open source edition). This feature allows you to sell via multiple channels, creating a illusion of shopping in completely different stores, while you still have one administration panel.
Screenshots
Customer Pools:
Customer:
Installation
Step 1: Install the plugin
Open a command console, enter your project directory and execute the following command to download the latest stable version of this plugin:
$ composer require tavy315/sylius-customer-pools-plugin
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Step 2: Enable the plugin
Then, enable the plugin by adding it to the list of registered plugins/bundles in config/bundles.php
file of your project:
<?php $bundles = [ Tavy315\SyliusCustomerPoolsPlugin\Tavy315SyliusCustomerPoolsPlugin::class => ['all' => true], ];
Step 3: Configure the plugin
# config/packages/tavy315_sylius_customer_pools.yaml imports: - { resource: "@Tavy315SyliusCustomerPoolsPlugin/Resources/config/app/config.yaml" }
Step 4: Customize models
Read more about Sylius models customization here.
Customize your Customer model
Add a Tavy315\SyliusCustomerPoolsPlugin\Model\Customer\CustomerPoolTrait
trait to your App\Entity\Customer\Customer
class.
-
If you use
annotations
mapping:<?php // src/Entity/Customer/Customer.php namespace App\Entity\Customer; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\Customer as BaseCustomer; use Tavy315\SyliusCustomerPoolsPlugin\Model\Customer\CustomerPoolAwareInterface; use Tavy315\SyliusCustomerPoolsPlugin\Model\Customer\CustomerPoolTrait; /** * @ORM\Entity * @ORM\Table(name="sylius_customer") */ class Customer extends BaseCustomer implements CustomerPoolAwareInterface { use CustomerPoolTrait; }
Step 5: Update your database schema
$ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate
Step 6: Add UserChecker to security.yaml
This will restrict the user to login to a Channel having different Customer Pool setup. If no Customer Pool is selected on the customer or current channel, it will skip the check and allow login.
security: firewalls: shop: user_checker: tavy315_sylius_customer_pools.security.user_checker
Usage
From now, you can attach a customer pool to any customer.