PHP code example of denismitr / laravel-permissions
1. Go to this page and download the library: Download denismitr/laravel-permissions library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// Given we have
AuthGroup::create(['name' => 'superusers']);
// To find an auth group by name
AuthGroup::named('superusers')->addUser($userA)->addUser($userB);
$userA->isOneOf('superusers'); //true
$userB->isOneOf('superusers'); // true
// Gives permission to the choosen group
AuthGroup::named('superusers')->givePermissionTo($editArticlesPermission);
AuthGroup::named('superusers')->givePermissionTo($editBlogPermission);
// These methods check if user has a permission through any auth group,
// to which user belongs
$userA->hasPermissionTo('edit-articles'); // true
$userA->isAllowedTo('edit-blog'); // true
$userB->hasPermissionTo('edit-blog'); // true
$userB->isAllowedTo('edit-articles'); // true
AuthGroup::existsWithName('accountants'); // returns true or false
$privateGroup = $this->owner->createNewAuthGroup('My private group', 'My private group description');
$privateGroup
->addUser($this->userA)
->addUser($this->userB); // Custome role can be specified ->addUser($this->userB, 'accountant');
$authGroup->hasUser($this->userA); // true
$authGroup->isOwnedBy($this->owner); // true
$this->owner->ownsAuthGroup($authGroup); // true
$authGroup->forUser($this->userA)->allowTo('edit-articles');
$user->onAuthGroup($privateGroup)->getRole(); // Owner (this one can be setup in config of the package)
$user->joinAuthGroup($bloggers, 'Invited user');
$user->joinAuthGroup($editors, 'Supervisor');
$user->onAuthGroup($editors)->getRole(); // 'Invited user'
$user->onAuthGroup($privateGroup)->getRole(); // 'Supervisor'
$user->onAuthGroup($bloggers)->hasRole('Invited user'); // true
$user->onAuthGroup($editors)->hasRole('Supervisor'); // true
$user->onAuthGroup($privateGroup)->hasRole('Pinguin'); // false
$admin->joinAuthGroup('admins'); // group must already exist
$admin->onAuthGroup('admins')->grantPermissionTo('administrate-blog'); // permission must already exist
// same as
$admin->onAuthGroup('admins')->allowTo('administrate-blog'); // permission must already exist
// or
$admin->onAuthGroup('admins')->givePermissionTo('administrate-blog');
// later
$blogAdminPermission->isGrantedFor($this->admin);
// Given
$user = User::create(['email' => '[email protected]']);
$authGroupA = AuthGroup::create(['name' => 'Auth group A']);
$authGroupB = AuthGroup::create(['name' => 'Auth group B']);
// Do that
$user->joinAuthGroup($authGroupA);
$user->joinAuthGroup($authGroupB);
// Expect user is on two authGroups
$user->isOneOf($authGroupA); // true
$user->isOneOf($authGroupB); // true
// Do switch to authGroupB
$user->switchToAuthGroup($authGroupB);
// currentAuthGroup() method returns a current AuthGroup model or null in case user is
// not a member of any group
// currentAuthGroupName() works in the same way and can be used to display current team or group name
$user->currentAuthGroup(); // $authGroupB
$user->currentAuthGroupName(); // Auth group B