Download the PHP package jeremykenedy/laravel-roles without Composer
On this page you can find all versions of the php package jeremykenedy/laravel-roles. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download jeremykenedy/laravel-roles
More information about jeremykenedy/laravel-roles
Files in jeremykenedy/laravel-roles
Package laravel-roles
Short Description A Powerful package for handling roles and permissions in Laravel. Supports Laravel 5.3 up to 11.
License MIT
Informations about the package laravel-roles
Laravel Roles
A Powerful package for handling roles and permissions in Laravel. Supports Laravel 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.0, 7.0, and 8.0+.
Table of contents
- Features
- Installation
- Composer
- Service Provider
- Publish All Assets
- Publish Specific Assets
- HasRoleAndPermission Trait And Contract
- Migrations and Seeds
- Migrate from Bican roles
- Usage
- Creating Roles
- Attaching, Detaching and Syncing Roles
- Assign a user role to new registered users
- Checking For Roles
- Levels
- Creating Permissions
- Attaching, Detaching and Syncing Permissions
- Checking For Permissions
- Permissions Inheritance
- Entity Check
- Blade Extensions
- Middleware
- Configuration
- Environment File
- More Information
- Optional GUI Routes
- Screen Shots
- File Tree
- Opening an Issue
- License
Features
Laravel Roles Features |
---|
Built in migrations with ability to publish and modify your own. |
Built in seed with ability to publish and modify your own. |
Roles with levels and relationships to users, permissions |
Permissions with relationships to users and levels |
Soft deletes with full restore and destroy |
Optional CRUD of Roles and Permissions |
Lots of configuration options |
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:
Laravel 5.7 and below use:
- Note: The major difference is that Laravel's users table migration out the box changed from
$table->increments('id');
to$table->bigIncrements('id');
in Laravel 5.8.
Service Provider
-
Laravel 5.5 and up Uses package auto discovery feature, no need to edit the
config/app.php
file. - Laravel 5.4 and below
Add the package to your application service providers in
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 jeremykenedy\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
-
Update
database\seeds\DatabaseSeeder.php
to include the seeds. See example below. - Seed an initial set of Permissions, Roles, and Users with roles.
Roles Seeded
Property | Value |
---|---|
Name | Admin |
Slug | admin |
Description | Admin Role |
Level | 5 |
Property | Value |
---|---|
Name | User |
Slug | user |
Description | User Role |
Level | 1 |
Property | Value |
---|---|
Name | Unverified |
Slug | unverified |
Description | Unverified Role |
Level | 0 |
Permissions Seeded:
Property | Value |
---|---|
name | Can View Users |
slug | view.users |
description | Can view users |
model | Permission |
Property | Value |
---|---|
name | Can Create Users |
slug | create.users |
description | Can create new users |
model | Permission |
Property | Value |
---|---|
name | Can Edit Users |
slug | edit.users |
description | Can edit users |
model | Permission |
Property | Value |
---|---|
name | Can Delete Users |
slug | delete.users |
description | Can delete users |
model | Permission |
And that's it!
Migrate from bican roles
If you migrate from bican/roles to jeremykenedy/LaravelRoles you will need to update a few things.
- Change all calls to
can
,canOne
andcanAll
tohasPermission
,hasOnePermission
,hasAllPermissions
. - Change all calls to
is
,isOne
andisAll
tohasRole
,hasOneRole
,hasAllRoles
.
Usage
Creating Roles
Because of
Slugable
trait, if you make a mistake and for example leave a space in slug parameter, it'll be replaced with a dot automatically, because ofstr_slug
function.
Attaching, Detaching and Syncing Roles
It's really simple. You fetch a user from database and call attachRole
method. There is BelongsToMany
relationship between User
and Role
model.
Assign a user role to new registered users
You can assign the user a role upon the users registration by updating the file app\Http\Controllers\Auth\RegisterController.php
.
You can assign a role to a user upon registration by including the needed models and modifying the create()
method to attach a user role. See example below:
- Updated
create()
method ofapp\Http\Controllers\Auth\RegisterController.php
:
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.
Creating Permissions
It's very simple thanks to Permission
model called from config('roles.models.permission')
.
Attaching, Detaching and Syncing Permissions
You can attach permissions to a role or directly to a specific user (and of course detach them as well).
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 Inheritance
By default, roles with higher level inherit all permissions from roles with lower level.
For example:
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. With inheritance enabled, moderator and administrator also have the permission to read articles, and administrator can manage comments as well.
If you don't want the permissions inheritance feature enabled in you application, set the config value roles.inheritance (or its corresponding .env parameter, ROLES_INHERITANCE) to false. Alternatively, simply ignore the
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 \jeremykenedy\LaravelRoles\RolesServiceProvider
as of 1.7.
You can optionally add them inside your app/Http/Kernel.php
file with your own aliases like outlined below:
Now you can easily protect your routes.
It throws \jeremykenedy\LaravelRoles\App\Exceptions\RoleDeniedException
, \jeremykenedy\LaravelRoles\App\Exceptions\PermissionDeniedException
or \jeremykenedy\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, slug separator, 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 becuase of this.
- See config file: roles.php.
Environment File
More Information
For more information, please have a look at HasRoleAndPermission contract.
Optional GUI Routes
Screen Shots
File Tree
- Tree command can be installed using brew:
brew install tree
- File tree generated using command
tree -a -I '.git|node_modules|vendor|storage|tests'
Opening an Issue
Before opening an issue there are a couple of considerations:
- You are all awesome!
- Read the instructions and make sure all steps were followed correctly.
- Check that the issue is not specific to your development environment setup.
- Provide duplication steps.
- Attempt to look into the issue, and if you have a solution, make a pull request.
- Show that you have made an attempt to look into the issue.
- Check to see if the issue you are reporting is a duplicate of a previous reported issue.
- Following these instructions show me that you have tried.
- If you have a questions send me an email to [email protected]
- Need some help, I can do my best on Slack: https://opensourcehelpgroup.slack.com
- Please be considerate that this is an open source project that I provide to the community for FREE when opening an issue.
Credit Note:
The romanbican/roles. I liked the method he made so I used them.
License
This package is free software distributed under the terms of the MIT license. Enjoy!
All versions of laravel-roles with dependencies
laravel/framework Version 5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*|^9.0|^10.0|^11.0
eklundkristoffer/seedster Version ^8.0
laravel/helpers Version ^1.7