mvd81 / laravel-is-admin
Laravel package, simple functionality to set a user as admin without an advanced role system
Requires
- php: ^7.4|^8.0
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-11-03 13:51:00 UTC
README
Introduction
Laravel package to extend your Laravel application with a simple admin permission functionality, with:
- Migration file to set a user as admin
- Middleware
- Blade directive
- Artisan command to see who is an admin
- Option to set user with ID 1 as super admin
Requirements
Laravel 10 or higher
Installation
-
composer require mvd81/laravel-is-admin
-
Run
php artisan migrate
to create the 'is_admin' column in theusers
table -
Import the trait in the User model
use Mvd81\LaravelIsAdmin\Traits\isAdmin;
- Use the trait in the User model
class User extends Authenticatable { use isAdmin; ...
- Add
is_admin
to the$fillable
array in the User model
How to use
You can set a 'normal' user as admin by setting the database column is_admin
to 1
, in database table users
.
Or in the code
Make admin
$user = User::find(ID); $user->makeAdmin();
Undo admin
$user = User::find(ID); $user->undoAdmin();
Super admin
It is possible to use user with ID 1 as admin without setting the 'is_admin' column to 1.
First you need to publish the config file.
php artisan vendor:publish
- Choose the option: Provider: Mvd81\LaravelIsAdmin\LaravelIsAdminServiceProvider
Now in config/is_admin.php
set 'use_super_admin' to true.
'use_super_admin' => true,
Middleware
There is a IsAdmin
middleware to use in your routes.
Example:
Route::get('admin-page')->middleware('IsAdmin');
Blade directive
Partial template/layout in your Blade view files only for admins?
You can use this Blade directive
@isAdmin() I am an admin @endisAdmin
Who is an admin?
You can enter an artisan command to see how is an admin.
php artisan command:isAdmin
Uninstall
composer remove mvd81/laravel-is-admin
- Remove the config file
config/is_admin.php
- Remove the database
is_admin
column in tableusers
- If you used the blade
@isAdmin()
directive, remove them - Remove the
is_admin
middleware from your routes