Download the PHP package mistery23/laravel-roles without Composer
On this page you can find all versions of the php package mistery23/laravel-roles. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mistery23/laravel-roles
More information about mistery23/laravel-roles
Files in mistery23/laravel-roles
Package laravel-roles
Short Description Powerful package for handling roles, permissions, and levels in Laravel.
License MIT
Informations about the package laravel-roles
Laravel Roles
Table of contents
- About
- Features
- Installation
- Composer
- Service Provider
- Publish All Assets
- Publish Specific Assets
- HasRoleAndPermission Trait And Contract
- Migrations and Seeds
- Usage
- Creating Roles
- Attaching, Detaching Roles and Permissions
- Assign a user role to new registered users
- Checking For Roles
- Levels
- Creating Permissions
- Attaching, Detaching and Syncing Permissions
- Checking For Permissions
- Permissions Inheriting
- Entity Check
- Blade Extensions
- Middleware
- Configuration
- Environment File
- Optional API Routes
- Tests
- File Tree
- License
About
A Powerful package for handling roles and permissions in Laravel. Supports Laravel 5.8, and 6.0.
Features
Laravel Roles Features |
---|
Built in migrations with ability to publish and modify your own. |
Built in command with ability to modify your own seed data from config. |
Roles with levels and relationships to users, permissions |
Permissions with relationships to users and levels |
Extended role and permission |
Soft deletes with full restore and destroy |
Optional Api methods for manage Roles and Permissions |
Lots of configuration options |
Lots of configuration seed |
All Extendable from .env |
Installation
This package is very easy to set up. There are only couple of steps.
Composer
From your projects root folder in terminal run:
Laravel 5.8 and up use:
Service Provider
- Laravel 5.8 and up
Uses package auto discovery feature, no need to edit the
config/app.php
file.
Publish All Assets
Publish Specific Assets
HasRoleAndPermission Trait And Contract
-
Include
HasRoleAndPermission
trait and also implementHasRoleAndPermission
contract inside yourUser
model. See example below. - Include
use Mistery23\LaravelRoles\Traits\HasRoleAndPermission;
in the top of yourUser
model below the namespace and implement theHasRoleAndPermission
trait. See example below.
Example User
model Trait And Contract:
Migrations and seeds
This uses the default users table which is in Laravel. You should already have the migration file for the users table available and migrated.
-
Setup the needed tables:
php artisan migrate
- Check
config/roles-seed.php
. For create/update your role and perm. -
Setup role and perm:
php artisan roles:gen
-
Seed an initial set of Permissions, Roles. Attach role/permission to user please implement in your project. For this you should use complete use cases:
Mistery23\LaravelRoles\Model\UseCases\User\Attach\Role
Mistery23\LaravelRoles\Model\UseCases\User\Attach\Permission
Roles Seeded
Property | Value |
---|---|
Name | Root |
Slug | root |
Description | Root role |
Level | 100 |
Property | Value |
---|---|
Name | Admin |
Slug | admin |
Description | Admin role |
Level | 90 |
Parent | root |
Permissions | portal.administrate |
Property | Value |
---|---|
Name | Manager |
Slug | manager |
Description | Manager role |
Level | 70 |
Parent | admin |
Permissions | portal.user.manage, portal.user.manage.create |
Property | Value |
---|---|
Name | Client |
Slug | client |
Description | Client role |
Level | 50 |
Permissions Seeded:
Property | Value |
---|---|
name | Portal administrate |
slug | portal.administrate |
description | Can administrate portal |
Property | Value |
---|---|
name | Portal manage user |
slug | portal.user.manage |
description | Can manage user |
parent | portal.administrate |
Property | Value |
---|---|
name | Portal user create |
slug | portal.user.manage.create |
description | Can user create |
parent | portal.user.manage.create |
Property | Value |
---|---|
name | Portal client |
slug | portal.use |
description | Can use portal |
Usage
Creating Roles
Attaching, Detaching Role and Permissions
See Mistery23\LaravelRoles\Model\UseCases\...
for all actions for role, permission and user.
Checking For Roles
You can now check if the user has required role.
You can also do this:
And of course, there is a way to check for multiple roles:
Levels
When you are creating roles, there is optional parameter level
. It is set to 1
by default, but you can overwrite it and then you can do something like this:
If user has multiple roles, method
level
returns the highest one.
Level
has also big effect on inheriting permissions. About it later.
Checking For Permissions
You can check for multiple permissions the same way as roles. You can make use of additional methods like hasOnePermission
or hasAllPermissions
.
Permissions Inheriting
Role with higher level is inheriting permission from roles with lower level.
There is an example of this magic
:
You have three roles: user
, moderator
and admin
. User has a permission to read articles, moderator can manage comments and admin can create articles. User has a level 1, moderator level 2 and admin level 3. It means, moderator and administrator has also permission to read articles, but administrator can manage comments as well.
If you don't want permissions inheriting feature in you application, simply ignore
level
parameter when you're creating roles.
Entity Check
Let's say you have an article and you want to edit it. This article belongs to a user (there is a column user_id
in articles table).
This condition checks if the current user is the owner of article. If not, it will be looking inside user permissions for a row we created before.
Blade Extensions
There are four Blade extensions. Basically, it is replacement for classic if statements.
Middleware
This package comes with VerifyRole
, VerifyPermission
and VerifyLevel
middleware.
The middleware aliases are already registered in \Mistery23\LaravelRoles\RolesServiceProvider
.
Now you can easily protect your routes.
It throws \Mistery23\LaravelRoles\App\Exceptions\RoleDeniedException
, \Mistery23\LaravelRoles\App\Exceptions\PermissionDeniedException
or \Mistery23\LaravelRoles\App\Exceptions\LevelDeniedException
exceptions if it goes wrong.
You can catch these exceptions inside app/Exceptions/Handler.php
file and do whatever you want.
Configuration
- You can change connection for models, models path and there is also a handy pretend feature.
- There are many configurable options which have been extended to be able to configured via
.env
file variables. - Editing the configuration file directly may not needed because of this.
Configuration seed data
Tests
Environment File
Optional API Routes
File Tree
- Tree command can be installed using brew:
brew install tree
- File tree generated using command
tree -a -I '.idea|.git|node_modules|vendor|storage|tests|composer.lock'
License
This package is free software distributed under the terms of the MIT license. Enjoy!
All versions of laravel-roles with dependencies
ext-pdo Version *
laravel/framework Version ~5.8.0|^6.0
illuminate/support Version ~5.8.0|^6.0
laravel/helpers Version ^1.1
mistery23/eloquent-object-relations Version ^1.2
mistery23/eloquent-flusher Version ^2.0
ramsey/uuid Version ^3.8
staudenmeir/laravel-adjacency-list Version ^1.0
webmozart/assert Version 1.6.*