GithubHelp home page GithubHelp logo

bagasstrongman / laravel-rbac Goto Github PK

View Code? Open in Web Editor NEW

This project forked from itstructure/laravel-rbac

1.0 1.0 0.0 288 KB

Laravel package for RBAC manage

Home Page: https://pack-develop.info/en/product/rbac-laravel-package

License: MIT License

PHP 69.46% Blade 30.54%

laravel-rbac's Introduction

Laravel RBAC package

Latest Stable Version Latest Unstable Version License Total Downloads Build Status Scrutinizer Code Quality

1 Introduction

LaRbac - Package for the Laravel framework which provides management with the next data:

  • Roles
  • Permissions
  • Assign roles for users

RBAC package structure

2 Dependencies

  • laravel 8+ | 9+ | 10+
  • Bootstrap 4 for styling
  • JQuery
  • php >= 7.3.0
  • composer

3 Installation

Note!

Version 3.x is for laravel 8+, 9+, 10+.

Version 2.x is for laravel 6 or 7. You can use branch laravel67-rbac with 2.x versions.

3.1 General installation from remote repository

Run the composer command:

composer require itstructure/laravel-rbac "~3.0.8"

3.2 App config

Add to application config/app.php file to section providers:

Itstructure\LaRbac\RbacServiceProvider::class,

3.3 Next internal installation steps

Notes:

  • Make sure that a table for the users is already existing in your project.

  • Make sure that a model for the users table is already existing in your project.

Recommendation:

If you don't have any layout yet, it is useful to install for example AdminLTE or you can make your special any layout template. Cause in this package there is no a layout specially. But in config it is necessary to set it (see the next point 2 about a configure).

Let's go:

  1. Publish files.

    Note: rbac.php config file and seeders LaRbacDatabaseSeeder, PermissionSeeder, RoleSeeder must be published surely!

    • To publish config run command:

      php artisan rbac:publish --only=config

      It stores config file to config folder.

    • To publish seeders run command:

      php artisan rbac:publish --only=seeders

      It stores seeder files to database/seeders folder.

    • To publish migrations run command:

      php artisan rbac:publish --only=migrations

      It stores migration files to database/migrations folder.

    • To publish views run command:

      php artisan rbac:publish --only=views

      It stores view files to resources/views/vendor/rbac folder.

    • To publish translations run command:

      php artisan rbac:publish --only=lang

      It stores translation files to resources/lang/vendor/rbac folder.

    • To publish all parts run command without only argument:

      php artisan rbac:publish

    Else you can use --force argument to rewrite already published files.

  2. Configure published config/rbac.php file:

    • set layout. Example: 'layout' => 'adminlte::page'

    • change userModelClass if it is needed to change

    • set adminUserId which you wanted to be with the role of administrator. At least at the beginning stage.

      It is necessary for the next time system to let you go into the Rbac control panel, after you assigned an administrator role for you (Later see point 4).

    • Most likely you have to change memberNameAttributeKey.

      It is to display the user name in control panel by getMemberNameAttribute() method of Administrable trait. It can be string or a callback:

      'memberNameAttributeKey' => function ($row) {
          return $row->first_name . ' ' . $row->last_name;
      }
  3. Run command to run migrations and seeders:

    php artisan rbac:database

    Or optional:

    To run just migrations php artisan rbac:database --only=migrate

    To run just seeds php artisan rbac:database --only=seed

    • Alternative variant for seeders.

      You can set published rbac LaRbacDatabaseSeeder seeder class in to a special DatabaseSeeder:

      use Illuminate\Database\Seeder;
      class DatabaseSeeder extends Seeder
      {
          public function run()
          {
              $this->call(LaRbacDatabaseSeeder::class);
          }
      }

      and run command: php artisan db:seed.

  4. Run command to set Admin role for user with identifier adminUserId, defined in 2 point:

    php artisan rbac:admin

4 Usage

Notes:

  • Make sure you use a Bootstrap 4 for styling and JQuery in your application.

  • Make sure that a laravel initial factory authorization is already working in your application.

4.1 Model part

According with the Itstructure\LaRbac\Interfaces\RbacUserInterface use functions from Itstructure\LaRbac\Traits\Administrable trait as in example:

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Itstructure\LaRbac\Interfaces\RbacUserInterface;
use Itstructure\LaRbac\Traits\Administrable;
class User extends Authenticatable implements RbacUserInterface
{
    use Notifiable, Administrable;

    protected $fillable = [
        'name', 'email', 'password', 'roles'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

4.2 Routes part

There are already integrated base RBAC routes to manage users, roles and permissions. See in routes.php package file.

They are guarded by the next:

  • middleware auth (editable by config).
  • permission can:administrate (editable by config).

This routes allow you to go to the next routes:

  • Users section

    For get request method

    • http://example-domain.com/rbac/users
    • http://example-domain.com/rbac/users/show/{id}
    • http://example-domain.com/rbac/users/edit/{id}

    For post request method

    • http://example-domain.com/rbac/users/update/{id}
    • http://example-domain.com/rbac/users/delete
  • Roles section

    For get request method

    • http://example-domain.com/rbac/roles
    • http://example-domain.com/rbac/roles/show/{id}
    • http://example-domain.com/rbac/roles/create
    • http://example-domain.com/rbac/roles/edit/{role}

    For post request method

    • http://example-domain.com/rbac/roles/store
    • http://example-domain.com/rbac/roles/update/{role}
    • http://example-domain.com/rbac/roles/delete
  • Permissions section

    For get request method

    • http://example-domain.com/rbac/permissions
    • http://example-domain.com/rbac/permissions/show/{id}
    • http://example-domain.com/rbac/permissions/create
    • http://example-domain.com/rbac/permissions/edit/{permission}

    For post request method

    • http://example-domain.com/rbac/permissions/store
    • http://example-domain.com/rbac/permissions/update/{permission}
    • http://example-domain.com/rbac/permissions/delete

4.3 Gates part

There are already integrated base RBAC gates to access control in your application to some of the resources. See provider file RbacAuthServiceProvider.php.

It provides the next gate definitions:

  • administrate
  • assign-role
  • delete-member
  • view-record
  • create-record
  • update-record
  • delete-record
  • publish-record

Read more in Laravel gates

5 View examples

Users

RBAC package structure

Roles

RBAC package structure

Permissions

RBAC package structure

License

Copyright © 2018-2023 Andrey Girnik [email protected].

Licensed under the MIT license. See LICENSE.txt for details.

laravel-rbac's People

Contributors

itstructure avatar

Stargazers

Roman 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.