Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ai Fosuser Laravel Package

aimeos/ai-fosuser

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require aimeos/ai-fosuser
    

    Ensure aimeos/aimeos-laravel is also installed as a dependency.

  2. Configuration Add the bundle to config/app.php under providers:

    Aimeos\FOSUser\FOSUserServiceProvider::class,
    

    Publish the config:

    php artisan vendor:publish --provider="Aimeos\FOSUser\FOSUserServiceProvider" --tag="config"
    

    Update config/aimeos.php to include:

    'fosuser' => [
        'adapter' => [
            'classname' => 'Aimeos\FOSUser\Adapter\FOSUser',
            'param' => [
                'service' => 'fos_user.user_manager', // Symfony FOSUser service
            ],
        ],
    ],
    
  3. First Use Case Sync FOSUser data to Aimeos:

    use Aimeos\FOSUser\Manager\FOSUser;
    
    $fosUserManager = app(FOSUser::class);
    $fosUserManager->sync();
    

    Verify users in Aimeos admin panel (/admin).


Implementation Patterns

Workflows

  1. User Synchronization

    • Trigger Sync: Manually via CLI or on-demand:
      php artisan aimeos:fosuser:sync
      
    • Automated Sync: Use Laravel’s task scheduling (app/Console/Kernel.php):
      $schedule->command('aimeos:fosuser:sync')->daily();
      
    • Selective Sync: Filter users by role or status:
      $fosUserManager->sync(['roles' => ['ROLE_ADMIN']]);
      
  2. Integration with Aimeos Services

    • Customer Management:
      $customerManager = app(\Aimeos\MShop\Customer\Manager\Standard::class);
      $customer = $customerManager->findItem('customer', ['email' => 'user@example.com']);
      
    • Order Attribution: Link FOSUser IDs to Aimeos customer IDs in order data:
      $orderManager->saveItem($order->setCustomerId($customer->getCustomerID()));
      
  3. Event Listeners

    • Hook into FOSUser events to update Aimeos:
      // app/Providers/EventServiceProvider.php
      protected $listen = [
          'fos_user.user_registered' => [
              'Aimeos\FOSUser\EventListener\SyncUserListener',
          ],
      ];
      

Best Practices

  • Data Mapping: Customize field mappings in config/aimeos.php:
    'fosuser' => [
        'mapping' => [
            'customer' => [
                'email' => 'email',
                'firstname' => 'firstname',
                'lastname' => 'lastname',
                'password' => 'plain_password', // Hash in Aimeos
            ],
        ],
    ],
    
  • Performance: Batch sync for large user bases:
    $fosUserManager->sync(['batch_size' => 100]);
    

Gotchas and Tips

Pitfalls

  1. Password Handling

    • FOSUser stores plaintext passwords by default. Always hash passwords before syncing to Aimeos:
      $hashedPassword = password_hash($fosUser->getPlainPassword(), PASSWORD_DEFAULT);
      $customer->setPassword($hashedPassword);
      
    • Configure FOSUser to hash passwords in config/packages/fos_user.yaml:
      from: FOS\UserBundle\Security\LoginFormAuthenticator
      arguments:
          - '@fos_user.user_manager'
          - '@security.password_hasher'
      
  2. Duplicate Users

    • Ensure email is unique in both FOSUser and Aimeos. Use upsert for updates:
      $fosUserManager->sync(['upsert' => true]);
      
  3. Role Conflicts

    • Aimeos uses its own permission system. Map FOSUser roles to Aimeos customer groups:
      $customer->setGroups(['customer', 'admin']); // Aimeos groups
      

Debugging

  • Sync Logs: Enable logging in config/aimeos.php:

    'fosuser' => [
        'debug' => true,
    ],
    

    Check storage/logs/laravel.log for sync details.

  • Validation Errors: Use --verbose flag for CLI commands:

    php artisan aimeos:fosuser:sync --verbose
    

Extension Points

  1. Custom Adapters Extend Aimeos\FOSUser\Adapter\FOSUser for custom logic:

    namespace App\Aimeos\FOSUser\Adapter;
    
    use Aimeos\FOSUser\Adapter\FOSUser as BaseAdapter;
    
    class CustomFOSUserAdapter extends BaseAdapter {
        public function syncUser($fosUser) {
            // Custom logic (e.g., skip inactive users)
            if (!$fosUser->isEnabled()) return null;
            return parent::syncUser($fosUser);
        }
    }
    

    Register in config/aimeos.php:

    'fosuser' => [
        'adapter' => [
            'classname' => 'App\Aimeos\FOSUser\Adapter\CustomFOSUserAdapter',
        ],
    ],
    
  2. Webhooks Use Laravel’s queue:work to process syncs asynchronously:

    $fosUserManager->sync()->onQueue('sync_users');
    
  3. Testing Mock FOSUser in tests:

    $this->app->instance('fos_user.user_manager', $mockUserManager);
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor