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

User Laravel Package

beloop/user

Laravel package for managing application users—utilities for user models, authentication-related helpers, and common user workflows. Intended to speed up user management setup in Laravel projects with sensible defaults and extensible structure.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Add the package via Composer:

    composer require beloop/user
    

    Publish the migration and config files:

    php artisan vendor:publish --provider="Beloop\User\UserServiceProvider"
    

    Run migrations:

    php artisan migrate
    
  2. First Use Case Register a new user via the provided facade:

    use Beloop\User\Facades\User;
    
    $user = User::create([
        'email' => 'dev@example.com',
        'password' => 'secure123',
        'name' => 'Developer',
    ]);
    
  3. Key Files to Review

    • config/user.php (default settings)
    • app/Models/User.php (extended Eloquent model)
    • app/Providers/UserServiceProvider.php (service binding)

Implementation Patterns

Core Workflows

  1. User Management

    • CRUD Operations: Use the facade or inject the UserRepository:
      $user = User::find(1);
      $user->update(['role' => 'admin']);
      
    • Authentication: Integrate with Laravel’s built-in auth:
      if (Auth::check()) {
          $user = Auth::user(); // Returns Beloop\User\Models\User
      }
      
  2. Customization

    • Extend the Model: Override methods in app/Models/User.php:
      namespace App\Models;
      
      use Beloop\User\Models\User as BeloopUser;
      
      class User extends BeloopUser {
          public function getFullNameAttribute() {
              return "{$this->first_name} {$this->last_name}";
          }
      }
      
    • Add Fields: Extend the migration or create a new one:
      Schema::table('users', function (Blueprint $table) {
          $table->string('api_token')->nullable();
      });
      
  3. API Integration

    • Resource Controller: Use Laravel’s make:controller with the ResourceController trait:
      use Beloop\User\Http\Controllers\ResourceController;
      
      class UserController extends ResourceController {
          protected $model = \App\Models\User::class;
      }
      
  4. Events & Listeners

    • Listen to user events (e.g., UserRegistered):
      // In EventServiceProvider
      protected $listen = [
          'Beloop\User\Events\UserRegistered' => [
              'App\Listeners\SendWelcomeEmail',
          ],
      ];
      

Gotchas and Tips

Pitfalls

  1. Archived Package

    • No active maintenance; expect no bug fixes or updates. Fork if critical changes are needed.
    • Verify compatibility with Laravel versions (last release predates Laravel 8+ features).
  2. Migration Conflicts

    • If using Laravel’s default users table, manually merge migrations to avoid duplicates.
    • Example conflict: remember_token may already exist in Laravel’s default migration.
  3. Facade vs. Dependency Injection

    • Prefer dependency injection over the facade for testability:
      // Bad (tight coupling)
      $user = User::find(1);
      
      // Good (injectable)
      public function __construct(UserRepository $userRepo) {
          $this->userRepo = $userRepo;
      }
      
  4. Password Hashing

    • Uses Laravel’s Hash facade by default. Override in config/user.php if needed:
      'hash_driver' => 'bcrypt',
      

Debugging Tips

  1. Log User Events Add a listener to debug events:

    public function handle(UserRegistered $event) {
        \Log::info('User registered:', ['user' => $event->user]);
    }
    
  2. Check Config Overrides Ensure config/user.php isn’t being overridden by environment-specific files (e.g., .env or config/user.php in config/overrides).

  3. Model Binding If Auth::user() returns null, verify:

    • The User model is bound in AuthServiceProvider:
      protected $model = \App\Models\User::class;
      
    • The users table exists and has the correct columns.

Extension Points

  1. Custom Guard Extend the guard logic in app/Providers/AuthServiceProvider:

    public function boot() {
        $this->app['auth']->extend('custom', function ($app) {
            return new CustomGuard($app['request'], $app['auth.user.provider']);
        });
    }
    
  2. API Token Management Add a trait for API tokens:

    use Beloop\User\Traits\HasApiTokens;
    
    class User extends BeloopUser {
        use HasApiTokens;
    }
    
  3. Soft Deletes Enable soft deletes in the model:

    use Illuminate\Database\Eloquent\SoftDeletes;
    
    class User extends BeloopUser {
        use SoftDeletes;
        protected $dates = ['deleted_at'];
    }
    

    Add the column to the migration:

    $table->softDeletes();
    
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
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