Simple permission management for PHP.
These instructions will get you quick start for simple permission management in your PHP project.
- Require this package in the
composer.json
composer require ykozhemiaka/simple-permission
- Before using all commands which provide this package you should init
Capsule
(for example inindex.php
where boots application)
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'simple_permissions',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4'
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
- After required the package you should create all necessary tables.
If you've already createdusers
table you couldn't do next instruction, but if you haven'tusers
table in your database you should execute next script to create the table.
use SimplePermission\Database\Schemas\UsersSchema;
$userSchema = new UsersSchema($capsule);
$userSchema->createTable();
- Next, you need to create several tables that are associated with permission tables.
use SimplePermission\Database\Schemas\PermissionSchemas;
$permissionSchemas = new PermissionSchemas($capsule);
$permissionSchemas->createTable();
- If table users name isn't
users
you should set custom name inSimplePermission\Models\User.php
namespace SimplePermission\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasPermission;
protected $table = 'custom-table-name';
...
- Create new permission "Edit article".
use SimplePermission\Repositories\PermissionRepository;
$permissionRepo = new PermissionRepository();
$permission = $permissionRepo->create('Edit article');
- Update created permission above.
$id = 1;
$permission = $permissionRepo->update('Edit posts', 1)
- Delete permission by name
$permissionRepo->deleteByName('Edit article');
Or by id
$permissionRepo->deleteById(2)
- Assign role to permission
$role = Role::find(1);
//or you can use role id $role = 1;
$permission = $permissionRepo->whereId(1)->assignRole($role);
- Revoke permission to role
$permissionRepo->whereId(1)->terminateToRole($role);
- Give permission to user.
$user = User::find(1);
$role = Role::find(1);
//or you can use role id $role = 1;
$permission = Permission::find(1);
//or you can use permission id $permission = 1;
$user->allowTo($permission);
- Assign role to user.
$user->grantRole($role);
- Verify permission.
$user->ableTo('Edit posts');
- Verify role.
$user->hasRole('Admin');
- Revoke permission.
$user->terminateToPermission($permission);
- Revoke role.
$user->terminateToRole($role);
- Create role.
$roleRepo = new RoleRepository();
$role = $roleRepo->create('Admin');
- Fetch all permissions attached to role.
$role->permissions;
- Update role.
$role = $roleRepo->update('Moderator', $role->id);
- Delete by name
$roleRepo->deleteByName($role->name);
Or delete by id
$roleRepo->deleteById($role->id);
- Attach permission to role.
$role = $roleRepo->whereId(1)->grant($permission)
- Assign role to user.
$role = $roleRepo->whereId(1)->assignRoleTo($user)
- Revoke role to user.
$roleTerminate = $roleRepo->whereId(1)->terminateToUser($user);
- Revoke permission to user.
$role = $roleRepo->whereId(1)->terminateToPermission($permission);
- illuminate/database - The Illuminate Database component is a full database toolkit for PHP.
- Yaroslav Kozhemiaka - Initial work - Yaroslav Kozhemiaka