2017 © Pedro Peláez
 

symfony-bundle permission-bundle

Provides a simple layer to store permissions.

image

eziat/permission-bundle

Provides a simple layer to store permissions.

  • Saturday, July 14, 2018
  • by Tomsgu
  • Repository
  • 1 Watchers
  • 0 Stars
  • 144 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 106 % Grown

The README.md

Build Status Scrutinizer Code Quality, (*1)

Eziat Permission bundle

Permission bundle provides a flexible way to control access decisions. Basically it make sense to use it if you need to have something more flexible than roles but less complex than acl definitions., (*2)

Installation

Step 1 Download the bundle using composer.

composer require eziat/permission-bundle

Step 2 Enable the bundle

Add the bundle to the config/bundles.php file., (*3)

<?php
// config/bundles.php

return [
    //...
    new Eziat\PermissionBundle\EziatPermissionBundle(),
    //...
];

This is done automatically if you use flex., (*4)

Step 3 Create your permission class (optional)

  • Required if you want to store permissions in the database as an additional table.
<?php
// src/Entity/Permission.php

namespace App\Entity;

use Eziat\PermissionBundle\Entity\Permission as BasePermission;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="permission")
 */
class Permission extends BasePermission
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function getId()
    {
        return $this->id;
    }

    // Your other logic.
}

Step 4 Implement UserPermissionInterface

To use the UserManager your User class should implement UserPermissionInterface. There are two methods to implement: * getId() * getPermissions(), (*5)

<?php
// src/Entity/User.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eziat\PermissionBundle\Model\UserPermissionInterface;

/**
 * @ORM\Entity
 */
class User implements UserPermissionInterface
{
    /**
     * @ORM\ManyToMany(targetEntity="Permission")
     * @ORM\JoinTable(name="users_permissions",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="permission_id", referencedColumnName="id")}
     * )
     */
    protected $permissions;

    public function getId()
    {
        return $this->id;
    }

    public function getPermissions() : array
    {
        return $this->permissions;
    }

    // Your other logic.
}

Step 5 Configure the bundle

eziat_permission:
    database:
        db_driver: orm
        permission_class: App\Entity\Permission
    cache: ~

The Versions