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/permissionsfolder. You need to add theMain.vuecomponent 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.phpmodel add theHasRoles.phpTrait.
//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.phpconfig 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\Rolefor Role andSpatie\Permission\Models\Permissionplease useWovosoft\LaravelPermissions\Models\Rolesfor Role andWovosoft\LaravelPermissions\Models\Permissionsfor 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.