Git Product home page Git Product logo

laravel-roles-permissions's Introduction

Laravel Roles Permissions

Example laravel project to manage role with they permission for each route.

Installation

  1. Add id_role to User table
  2. Create role, menu, and permission table, you can check the structure in migration folder
  database/migrations/2012_11_11_014127_create_roles_table.php
  database/migrations/2022_11_11_014203_create_menus_table.php
  database/migrations/2022_11_11_021825_create_permissions_table.php
  1. fill all data for each table
  • role : all user role
  • menu : all route (require route_name)
  • permission : relationship id_role and id_menu
  1. use middleware check.roles in route.

Usage/Examples Middleware

<?php
namespace App\Http\Middleware;

use App\Models\Permission;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

class CheckRoles
{
  public function handle(Request $request, Closure $next)
  {
    $routeName = Route::currentRouteName();
    // $role = Auth::user()->id_role;
    $role = 1; //example
    // get permission data from table permissions
    $permission = Permission::with(['role', 'menu'])->whereRelation('menu', 'route_name', '=', $routeName)->whereRelation('role', 'id', '=', $role)->first();
    // if data not found, then redirect to home page
    if (!$permission && $routeName != 'home') {
        return redirect(route('home')); //change with home url
    }
    return $next($request);
  }
}

laravel-roles-permissions's People

Contributors

katzura1 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.