People Matters: Exploring the World of HR
Read More
Run the following command to install the Spatie Role and Permission package:
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
This will create a config/permission.php file where you can customize the package's settings.
php artisan migrate
ADD In User Model
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable{
use HasRoles
}
After installation of Spatie
* Run the database seeds.
public function run(): void
{
$user = User::create([
'name' => 'Adminn',
'email' => 'admin@gmail.com',
'email_verified_at' => now(),
'password' => bcrypt('password'), // Make sure to hash the password
]);
$user->assignRole(['writer','admin']);
}
}
class RoleSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Role::create(['name' => 'admin']);
Role::create(['name' => 'user']);
Role::create(['name' => 'writer']);
}
}
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call(RoleSeeder::class);
$this->call(AdminSeeder::class);
}
}
After creating AdminSeeder and RoleSeeder run this command
php artisan migrate:fresh –seed
After that we create
PermissionController
RoleController
In your Blade templates, you can use the @role, @can, and @hasrole directives provided by the Spatie package to define what content certain users are allowed to see or access.
Here are some examples:
Using @role directive:
@role('admin')
<p>This is visible to users with the admin role.</p>
@endrole
Using @can directive:
@can('edit posts')
<p>This is visible to users who have the 'edit posts' permission.</p>
@endcan
Using @hasrole directive:
@hasrole('writer')
<p>This is visible to users with the writer role.</p>
@endhasrole
Combining roles and
permissions:
@role('admin')
<p>Only visible to admins.</p>
@elsecan('edit posts')
<p>Visible to users who can edit posts.</p>
@endrole
You can also check multiple roles and permissions with @hasanyrole or @hasallroles:
@hasanyrole('admin|writer')
<p>Visible to users with either the admin or writer role.</p>
@endhasanyrole
@hasallroles('admin|writer')
<p>Visible only to users who have both admin and writer roles.</p>
@endhasallroles
Recent posts form our Blog
0 Comments
Like 0