Laravel Role & Permissions Front-End Implementation using spatie/laravel-permission
The package is a Front-End Implementationf of the spatie/laravel-permission package. The spatie/laravel-permission is an awesome package for managing Roles & Permissionf for Laravel applications out of the box. But currently it doesn't have the front-end to easily deploy in your application.
This package comes to solve this problem. The package implements almost every features provided by spatie/laravel-permission.
- Vue Components for each possible features .
- Components are reusable. So, the default layout can be modified according to the needs of your application.
- Currently the front-end uses Bootstrap-Vue. But you can easily change it's layout.
- The front-end vue components are packaged as an npm package. You can use it as a module for you bundlers eg. Webpack,
- Check the main spatie/laravel-permission for more details.
Install via composer
composer require wovosoft/laravel-permissions
- Publish the configuration file.
php artisan vendor:publish --provider="Wovosoft\LaravelPermissions\ServiceProvider" --tag="config"
- Publish the Vue Components. The Published components will be copied to
resources/laravel-permissions/permissions
folder. You need to add theMain.vue
component to yourapp.js
php artisan vendor:publish --provider="Wovosoft\LaravelPermissions\ServiceProvider" --tag="resources"
- Publish the Migrations
php artisan vendor:publish --provider="Wovosoft\LaravelPermissions\ServiceProvider" --tag="migrations"
- Publish the Seeds
php artisan vendor:publish --provider="Wovosoft\LaravelPermissions\ServiceProvider" --tag="seeds"
- In
App\User.php
model add theHasRoles.php
Trait.
//other imports goes here
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// other codes goes here
}
- Now Run
php artisan migrate
- Go to
config/laravel-permissions.php
. Add Default Permissions and Roles.
<?php
return [
"route_name_prefix" => "Wovosoft",
"route_url_prefix" => "backend",
"middleware" => ["web", "auth"],
"users_table" => "users", //Default Laravel Generated Name
"roles_table" => config("permission.table_names.roles"), //comes from spatie config file.
"permissions_table" => config("permission.table_names.permissions"), //comes from spatie config file
"default_permissions" => [
[
"name" => "add user",
"description" => "Can Add User"
],
[
"name" => "edit user",
"description" => "Can Edit User"
],
[
"name" => "delete user",
"description" => "Can Delete User"
]
],
"default_roles" => [
[
"name" => "Super Admin",
"description" => "Super Admin Manages Everything"
],
[
"name" => "User",
"description" => "User Role"
],
[
"name" => "Customer",
"description" => "Customer Role"
]
]
];
- The package adds the routes automatically prefixed by
backend
, so your other routes should't be prefixed bybackend
. But you can change it inconfig/laravel-permissions.php
config file. To check the registered routes, run in your terminal from project the root,
php artisan route:list
- The gates are automatically registered during boot-up by spatie/laravel-permission
- So, according to
config/laravel-permissions.php
(#3) you can perform user abilities as follows:
if(auth()->can('permission')){
echo "Auth user is allowed to perform this operation";
}
if(App\User::find(1)->can('permission')){
echo "Auth user is allowed to perform this operation";
}
$role = Wovosoft\LaravelPermissions\Models\Roles::find(1);
if($role->hasAbility('permission')){
echo "The Role with ID 1 is allowed to perform this operation";
}
- Check the main spatie/laravel-permission for more details.
Please keep in mind, the default Role and Permission models provided by spatie/laravel-permission are extended in the package. That's why rather than using
Spatie\Permission\Models\Role
for Role andSpatie\Permission\Models\Permission
please useWovosoft\LaravelPermissions\Models\Roles
for Role andWovosoft\LaravelPermissions\Models\Permissions
for Permission respectively.
Click here to check the demo project https://github.com/wovosoft/laravel-permissions-example
If you discover any security related issues, please email [email protected] or create issue in the Github Repository.
This package is bootstrapped with the help of wovosoft/crud.