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;
public function roles()
{
return $this->belongsToMany(Role::class, 'users_roles');
}
}
if (auth()->user()->can('permission_name')) {
// The user has the specified permission
}
if (hasPermissions('create-post')) {
dd('You are allowed to access');
} else {
dd('You are not allowed to access');
}
if (hasPermissions('create-post', 'post-edit')) {
dd('You are allowed to access');
} else {
dd('You are not allowed to access');
}
getPermissions();
if (hasRole('admin')) {
dd('You are allowed to access');
} else {
dd('You are not allowed to access');
}
getRoles();
Route::group(['middleware' => ['role:user,create-user']], function () {
// Protected routes go here
});
Route::group(['middleware' => ['role:admin,create-post']], function () {
// Protected routes go here
});
@role('admin')
{{ __('You are an admin') }}
@endrole
@role('user')
{{ __('You are a user') }}
@endrole
namespace Database\Seeders;
use App\Models\Role;
use App\Models\User;
use App\Models\Permission;
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->seedPermissions();
$this->seedRoles();
$this->seedUsers();
});
}
private function seedPermissions(): void
{
$permissions = [
'create-post',
'create-user',
];
foreach ($permissions as $permissionName) {
Permission::firstOrCreate(['name' => $permissionName]);
}
}
private function seedRoles(): void
{
$roles = [
'admin' => ['create-post', 'post-edit', 'post-delete', 'post-update'],
'user' => ['create-user', 'user-edit', 'user-delete', 'user-update'],
];
foreach ($roles as $roleName => $permissionNames) {
$role = Role::firstOrCreate(['name' => $roleName]);
foreach ($permissionNames as $permissionName) {
$permission = Permission::firstOrCreate(['name' => $permissionName]);
$role->permissions()->syncWithoutDetaching($permission);
$permission->roles()->syncWithoutDetaching($role);
}
}
}
private function seedUsers(): void
{
$users = [
[
'name' => 'Admin',
'email' => '[email protected]',
'password' => Hash::make('admin'),
'roles' => ['admin'],
'permissions' => ['create-post'],
],
[
'name' => 'User',
'email' => '[email protected]',
'password' => Hash::make('user'),
'roles' => ['user'],
'permissions' => ['create-user'],
],
];
foreach ($users as $userData) {
$user = User::updateOrCreate(
['email' => $userData['email']],
[
'name' => $userData['name'],
'password' => $userData['password'],
]
);
foreach ($userData['roles'] as $roleName) {
$role = Role::where('name', $roleName)->first();
if ($role) {
$user->roles()->syncWithoutDetaching($role);
}
}
foreach ($userData['permissions'] as $permissionName) {
$permission = Permission::where('name', $permissionName)->first();
if ($permission) {
$user->permissions()->syncWithoutDetaching($permission);
}
}
}
}
}
bash
php artisan erag:publish-permission
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.