Loading image

Blogs / Programming

Spatie's Role and Permission package in Laravel

Spatie's Role and Permission package in Laravel

  • Muhammad Abbas
  • 0 Comments
  • 443 View

To install Spatie's Role and Permission package in Laravel, follow the steps below:

Step 1: Install the package via Composer

Run the following command to install the Spatie Role and Permission package:

composer require spatie/laravel-permission

Step 2: Publish the configuration file

After installation, you need to publish the package's configuration file by running the following Artisan command:

 

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

This will create a config/permission.php file where you can customize the package's settings.

 

Step 3: Run the migrations

 

The package requires a set of database tables to store roles and permissions. Run the migrations to create these tables:

 

 

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' => '[email protected]',

            '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

Check for Roles and Permissions in Blade

 

 

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

 

 

  • Programming
Muhammad Abbas Author

Muhammad Abbas

Hello! I’m Muhammad Abbas, a passionate and driven junior web developer with a strong foundation in back-end and front-end technologies and a keen interest in creating dynamic, user-centric web experiences. I honed my skills in JavaScript, HTML, CSS, and developed a solid understanding of web development principles.

0 Comments

Post Comment

Recent Blogs

Recent posts form our Blog

Timeline Chart bar with date axis to be displayed on top

Timeline Chart bar with date axis to be displayed on top

showkat ali
/
Programming

Read More
AI in Education: Revolutionizing the Way We Learn

AI in Education: Revolutionizing the Way We Learn

fatima qandeel
/
Technology

Read More
How to use DataTables in Laravel 11

How to use DataTables in Laravel 11

showkat ali
/
Programming

Read More
Most Top Paying Technologies in 2024

Most Top Paying Technologies in 2024

showkat ali
/
Programming

Read More
Character AI: An Overview and How It Could Affect the World

Character AI: An Overview and How It Could Affect the World

showkat ali
/
Programming

Read More
React vs Angular: Which is the Best Front-End Framework?

React vs Angular: Which is the Best Front-End Framework?

showkat ali
/

Read More