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

Access Laravel Package

colbeh/access

Colbeh Access is a lightweight Laravel package for managing user access and permissions in your app. Add simple role/permission checks, protect routes and actions, and keep authorization logic organized with minimal setup.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require colbeh/access
    

    Publish the migration and config:

    php artisan vendor:publish --provider="Colbeh\Access\AccessServiceProvider" --tag="migrations"
    php artisan vendor:publish --provider="Colbeh\Access\AccessServiceProvider" --tag="config"
    

    Run migrations:

    php artisan migrate
    
  2. Basic Configuration Edit config/access.php to define your roles and permissions:

    'roles' => [
        'admin' => ['create_users', 'manage_permissions'],
        'editor' => ['edit_content'],
        'user'  => ['view_content'],
    ],
    
  3. First Use Case: Check Permission

    use Colbeh\Access\Facades\Access;
    
    if (Access::check('create_users')) {
        // User has permission
    }
    

Implementation Patterns

Role Assignment Workflow

  1. Assign Roles to Users

    $user->roles()->attach(['admin', 'editor']);
    

    Useful for user registration or admin panels.

  2. Check Role-Based Access

    if (Access::hasRole('admin')) {
        // Admin-specific logic
    }
    

Permission-Based Middleware

Create a middleware to gate routes:

namespace App\Http\Middleware;

use Closure;
use Colbeh\Access\Facades\Access;

class CheckPermission
{
    public function handle($request, Closure $next, $permission)
    {
        if (!Access::check($permission)) {
            abort(403);
        }
        return $next($request);
    }
}

Register in app/Http/Kernel.php:

protected $routeMiddleware = [
    'permission' => \App\Http\Middleware\CheckPermission::class,
];

Usage in routes:

Route::get('/admin/users', function () {
    // ...
})->middleware('permission:create_users');

Dynamic Permission Checks

For complex logic (e.g., "edit own profile" vs. "edit any profile"):

// In a controller
if (Access::check('edit_profile', ['user_id' => $user->id])) {
    // User can edit their own profile
}

Policy Integration

Extend Laravel’s built-in policies:

use Colbeh\Access\Facades\Access;

class PostPolicy
{
    public function update(User $user, Post $post)
    {
        return Access::check('edit_content', ['post_id' => $post->id]);
    }
}

Gotchas and Tips

Pitfalls

  1. Migration Conflicts

    • If users or roles tables already exist, manually merge the role_user pivot table or drop/recreate it.
    • Fix: Backup your database before running migrations.
  2. Caching Quirks

    • Permissions are cached by default. Clear cache after role/permission changes:
      php artisan cache:clear
      
    • Tip: Disable caching in config/access.php during development:
      'cache' => env('APP_ENV') !== 'local',
      
  3. Case Sensitivity

    • Role/permission names are case-sensitive. Use constants or strings consistently:
      define('PERMISSION_EDIT', 'edit_content');
      

Debugging

  • Log Permission Checks Enable debug mode in config/access.php:

    'debug' => true,
    

    Check Laravel logs for denied access attempts.

  • Dump User Roles/Permissions

    dd(Access::user()->roles, Access::user()->permissions);
    

Extension Points

  1. Custom Permission Logic Override the can() method in a service provider:

    Access::extend(function ($user, $permission, $arguments = []) {
        // Custom logic (e.g., time-based permissions)
    });
    
  2. API Integration Return permissions in API responses:

    return response()->json([
        'permissions' => Access::user()->permissions,
    ]);
    
  3. GUI for Admin Panels Use the package’s built-in commands to generate admin views:

    php artisan access:generate-views
    

    (Note: Requires additional setup; check the docs for updates.)

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.
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver