PHP code example of erag / laravel-role-permission

1. Go to this page and download the library: Download erag/laravel-role-permission library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

erag / laravel-role-permission example snippets




namespace App\Models;

use EragPermission\Traits\HasPermissionsTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasFactory, HasPermissionsTrait, Notifiable;

}

return [
    // ...
    EragPermission\PermissionServiceProvider::class,
];

'providers' => [
    // ...
    EragPermission\PermissionServiceProvider::class,
],

php artisan erag:upgrade-version 

// Single expiration for all permissions
$user->givePermissionsTo(['post-create', 'post-edit'], Carbon::now()->addDays(30));

// Different expirations per permission
$user->givePermissionsTo(['post-create', 'post-edit'], [
    'post-create' => Carbon::now()->addDays(10),
    'post-edit' => Carbon::now()->addHours(6)
]);

// No expiration
$user->givePermissionsTo(['post-create']);

// Multiple formats supported:
$user->detachPermissions(['post-create', 'post-edit']); // Array
$user->detachPermissions('post-create|post-edit');      // Pipe-separated
$user->detachPermissions('post-create,post-edit');      // Comma-separated
$user->detachPermissions('post-create');                // Single permission

if ($user->hasPermissionTo('post-create', 'post-edit')) {
    // User has both permissions
}

if ($user->hasPermissions(['post-create', 'post-edit'])) {
    // User has all permissions
}

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

if ($user->hasRole('admin', 'editor')) {
    // User has at least one of these roles
}

if (hasPermissions('post-create')) {
    dd('You are allowed to access');
} else {
    dd('You are not allowed to access');
}

if (hasPermissions('post-create|post-edit')) {
    dd('You are allowed to access');
} else {
    dd('You are not allowed to access');
}

if (hasPermissions('post-create,post-edit')) {
    dd('You are allowed to access');
} else {
    dd('You are not allowed to access');
}

getPermissions();

getRoles();

if (hasRole('admin')) {
    dd('You are allowed to access');
} else {
    dd('You are not allowed to access');
}

Route::group(['middleware' => ['role:admin,post-create']], function () {
    // Routes protected by role and permissions
});

Route::group(['middleware' => ['permissions:post-create']], function () {
    // Routes protected by permissions
});

Route::post('/create-post', [PostController::class, 'create'])->name('post.create')->middleware('role:admin,post-create');
Route::post('/create-post', [PostController::class, 'create'])->name('post.create')->middleware('permissions:post-create');


// Assign a permission with a specific expiration date
$user->givePermissionsTo(['post-create', 'post-edit'], 
   Carbon::now()->addDays(30), // Each Permission expiration assign in 30 days
);

$user->givePermissionsTo(['post-create', 'post-edit'], 
[
  Carbon::now()->addDays(10), // Expires in 10 days
  Carbon::now()->addHours(6),   // Expires in 6 hours
]);

// Assign a permission with a specific expiration date
$user->givePermissionsTo(['post-create'], 
   null, // [] Array or String 
);

$user->givePermissionsTo(['post-create', 'post-edit']);



namespace Database\Seeders;

use App\Models\User;
use Carbon\Carbon;
use EragPermission\Models\Permission;
use EragPermission\Models\Role;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

class RolePermissionSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        DB::transaction(function () {
            $this->seedRolePermissions();
            $this->seedUsers();
        });
    }

    /**
     * Seed role permissions.
     */
    private function seedRolePermissions(): void
    {
        $rolePermission = [
            'admin' => ['post-create', 'post-edit', 'post-delete', 'post-update'],
            'user' => ['user-create', 'user-edit', 'user-delete', 'user-update'],
        ];

        foreach ($rolePermission as $role => $permissions) {
            $role = Role::create(['name' => $role]);
            foreach ($permissions as $permission) {
                $permission = Permission::create(['name' => $permission]);
                $role->permissions()->attach($permission);
            }
        }
    }

    private function seedUsers(): void
    {
        $users = [
            [
                'name' => 'Admin',
                'email' => '[email protected]',
                'password' => Hash::make('admin'),
                'roles' => ['admin'],
                'permissions' => [
                    'post-create' => Carbon::now()->addDays(30),
                    'post-edit' => Carbon::now()->addMinutes(60),
                ],
            ],
            [
                'name' => 'User',
                'email' => '[email protected]',
                'password' => Hash::make('user'),
                'roles' => ['user'],
                'permissions' => [
                    'user-create' => Carbon::now()->addDays(30),
                    'user-edit' => null,
                ],
            ],
        ];

        foreach ($users as $userData) {
            $user = User::updateOrCreate(
                ['email' => $userData['email']],
                [
                    'name' => $userData['name'],
                    'password' => $userData['password'],
                ]
            );

            $user->assignRole($userData['roles']);
            $permissionsWithExpiry = $userData['permissions'];
            $user->givePermissionsTo(array_keys($permissionsWithExpiry), $permissionsWithExpiry);
            // $user->givePermissionsTo(array_keys($permissionsWithExpiry), Carbon::now()->addDays(30));
        }
    }
}
bash
php artisan erag:publish-permission
bash
php artisan erag:publish-permission --migrate
bash
php artisan erag:publish-permission --migrate --seed
blade
@role('admin')
    <!-- Content for admins -->
@endrole

@hasPermissions('post-create')
    <!-- Content for users with post-create permission -->
@endhasPermissions

@hasPermissions('post-create|post-edit')
    <!-- Content for users with either permission -->
@endhasPermissions