mvd81/laravel-is-admin

Laravel package, simple functionality to set a user as admin without an advanced role system

v2.0 2022-03-02 11:28 UTC

This package is auto-updated.

Last update: 2024-04-13 16:34:58 UTC


README

Latest Version on Packagist Build Status

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 8 or higher

Installation

  1. composer require mvd81/laravel-is-admin

  2. Run php artisan migrate to create the 'is_admin' column in the users table

  3. Import the trait in the User model

use Mvd81\LaravelIsAdmin\Traits\isAdmin;
  1. Use the trait in the user model
class User extends Authenticatable
{
    use isAdmin;
    ...

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

  1. composer remove mvd81/laravel-is-admin
  2. Remove the config file config/is_admin.php
  3. Remove the database is_admin column in table users
  4. If you used the blade @isAdmin() directive, remove them
  5. Remove the is_admin middleware from your routes