S/N |
Role |
Permission |
1 |
Admin |
Create, |
2 |
Stakeholder |
Create, |
Permission Table:
S/N |
Permission |
Description |
1 |
Create |
Grants |
2 |
Edit |
Grants |
3 |
Delete |
Grants |
4 |
Users |
Grants |
Role: Basically role represents a group of tasks that a user that is assigned the role is allowed to perform. For example: a user role that allows user to edit their own listing page. And the system admin can be regarded as owner of the system and as such, is permitted to perform all the tasks in the system. Admin has power to create users, delete, assigning role to user and edit products etc…
Permission: The ability to do actions on your site like viewing, create, delete and edit etc is governed by permissions. Permission grants authorization to a role to perform a specific task. A user must be granted a permission in order to do the corresponding action on the site.
In this article, with simple demo of role based, we have implemented a role based authentication in Laravel along with its native authentication system. So, just follow the steps and see how the role permission works in Laravel.
Note: Source code for this is available on GitHub: https://github.com/digitalcrm/Role-Management
composer create-project –prefer-dist laravel/laravel RoleManagement “5.8.*”
2.1. Create database: Open phpMyAdmin and create database, like this:
2.2. Configure with Laravel: After database has been created, next open .env file and add database credentials, like this:
3.1. Create a Role model and migration to running this command: php artisan make:model Role –m
3.2. Create a role_user migration:
php artisan make:migration create_role_user_table
3.3. Modify Role migration table: Open database/migrations/create_roles_table.php
3.4. Modify create_role_user_table migration table:
Open database/migrations/create_role_user_table.php.
3.5. Running the migration: After the migration table has been setup you can create the roles and role_user tables by running the migrations: php artisan migrate.
will create the following tables in your database.
Run the artisan command: php artisan make:auth
5.1. After running the migration command, now we need to fill the data manually for testing the role permission, So, fill the data in roles and role_users table:
5.1.1. Open and fill the data manually in roles table:
5.1.2. Open and fill the data manually in role_user table:
5.1.3. Also register user in users table using authentication, go to /register url and register the users:
6.1. Open app/Role.php model and define Many to Many relationship, like this:
6.2. Open default created app/User.php model file and define Many to Many relationship, like this:
6.3. Also, open User.php and include these methods which will be used to check if user has a particular role or roles:
Now we need two controllers for admin and superadmin, so let’s create:
7.1. Run the artisan command: php artisan make:controller AdminController
Open AdminController and add code like this:
7.2. Run the artisan command: php artisan make:controller SuperAdminController
Open SuperAdminController and add code like this:
Next, we have to create views files for admin and super admin.
8.1. Create view for admin: resource/views/admin/home.blade.php
8.2. Create view for superadmin: resource/views/superadmin/home.blade.php
Open routes/web.php and create routes for admin and superadmin:
Next, we need a middleware for our role. So, run the artisan command for creating middleware:
php artisan make:middleware CheckRole
Open app/Http/CheckRole.php file and add code:
Open app/Http/kernel.php file and include role middleware under $routeMiddleware array, like this:
Only authorized users can have privileged to access the certain part of your applications:
Admin Login:
After admin login if super admin wants access:
If admin access this:
Note: For the source code, you can visit the GitHub directory: https://github.com/digitalcrm/Role-Management
GitHub link:
Laravel-Media-Library: https://github.com/digitalcrm/LaravelMedia
Role Management: https://github.com/digitalcrm/Role-Management
Newsletter Package: https://github.com/digitalcrm/pkg-newsletter
Form-Package: https://github.com/digitalcrm/Form-Contact-Package
Tags: Role Management
Warning: _() expects exactly 1 parameter, 2 given in /home2/aynsof4/public_html/wp-content/themes/aynsoft/comments.php on line 28