Need help with maravel-permissions?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

akiyamaSM
141 Stars 6 Forks 16 Commits 0 Opened issues

Description

Because in the Maravelous univer every user deserves super power

Services available

!
?

Need anything else?

Contributors list

# 193,023
PHP
Laravel
HTML
Shell
16 commits

Grant Users the superpower of Marvel characters

inani-user2

Download

composer require inani/maravel-permissions

Installation

Then include the service provider inside

config/app.php
. (You can skipp it if it's in Laravel 5.5 or higher)
'providers' => [
    ...
    Inani\Maravel\Providers\MaravelServiceProvider::class,
    ...
];

Publish resources, and migrate

php artisan vendor:publish

PS : You can edit

2020_05_27_221346_add_role_id_to_users
migration to link it with the correct user table

Edit the

config/maravels.php
with the correct values
 [
        'add', 'delete', 'create', 'search', 'update'
    ],

// define the class path for the entities
'entities' => [
    \App\Models\User::class,
],

];

And then migrate

php artisan migrate

Setup a Model

To setup the user model, all you have to do is add (and import) the

IsMarvel
trait.
use Inani\Maravel\HasRole;

class User extends Model { use HasRole; ... }

Usage

All roles are role and permissions are powers

Because every user deserves to be a hero, The Maravel API is based on the Marvel Jargon, and here are how it can be used

// Having a user
$user = User::first();

// Create a new role, description is not mandotary $userManager = RoleBuilder::create('User Manager', 'The role to manage users') ->havingPower([ 'name' => 'can_update', 'description' => 'The abilitiy to update a user', 'action' => 'update', 'entity' => \App\Models\User::class, ]);

// we can grant a power to it $userManager = RoleBuilder::of($userManager) ->grant([ 'name' => 'can_create', 'description' => 'The abilitiy to create a user', 'action' => 'create', 'entity' => \App\Models\User::class, ]);

// Or take it off $ability = Ability::first();

$storm = RoleBuilder::of($userManager)->takeOff($ability);

// bless the user with the abilities of the role $user->roleManager()->blessWith($storm);

// check if it has the ability $user->roleManager()->owns($ability);

// check if it has one of the provided abilities $user->roleManager()->ownsOneOf([$ability, $anOtherAbility]);

// make it human again (remove its role) $user->roleManager()->humanize();

You can also manage the instances directly ```php

// Create Ability $ability = Ability::create([ 'name' => 'post_write', 'description' => 'Abitlity to create new Posts', 'action' => 'add', 'entity' => \App\Models\Post::class, ]);

// Create a Marvel $writer = Role::create([ 'name' => 'Webmaster', 'description' => 'A Role that allows you create new posts' ]);

// Grant the ability $writer->grant($ability);

// remove a certain ability $writer->takeOff($ability);

// remove all and keep only those $abilities = [1, 2]; // or the models $writer->keep($abilities);

// bless it to our user $user = \App\Models\User::first();

$user->roleManager()->blessWith($writer); ```

Am I missing something?

Submit a PR or issue with details!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.