ykozhemiaka/simple-permission

Simple permission handling for PHP.

v1.0.0 2019-10-21 11:33 UTC

This package is auto-updated.

Last update: 2024-04-29 04:09:39 UTC


README

Simple permission management for PHP.

Getting Started

These instructions will get you quick start for simple permission management in your PHP project.

Installation

  • 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 in index.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 created users table you couldn't do next instruction, but if you haven't users 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 in SimplePermission\Models\User.php
namespace SimplePermission\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasPermission;

    protected $table = 'custom-table-name';

...

Quick start

Management permissions

  • 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);

Management permissions via user

  • 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);

Management roles

  • 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);

Built With

Authors