Organisations
A lot of applications have an organisations structure. Teams, Organisations, Offices, ... To add this functionality to your Application, you will have
to create an entity that implements LaravelDoctrine\ACL\Contracts\Organisation
. Next change acl.organisations.entity
to your entity.
<?php
namespace App;
use Doctrine\ORM\Mapping as ORM;
use LaravelDoctrine\ACL\Contracts\Organisation;
use LaravelDoctrine\ACL\Mappings as ACL;
/**
* @ORM\Entity
*/
class Team implements Organisation
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
}
User can belong to one organisation
The User class should implement LaravelDoctrine\ACL\Contracts\BelongsToOrganisation
. You can use the @ACL\BelongsToOrganisation
annotation to define the relation.
<?php
use Doctrine\ORM\Mapping as ORM;
use LaravelDoctrine\ACL\Mappings as ACL;
use LaravelDoctrine\ACL\Contracts\BelongsToOrganisation;
/**
* @ORM\Entity
*/
class User implements BelongsToOrganisation
{
/**
* @ACL\BelongsToOrganisation
* @var Organisation
*/
protected $organisation;
/**
* @return Organisation
*/
public function getOrganisation()
{
return $this->organisation;
}
}
User can belong to multiple organisations
The User class should implement LaravelDoctrine\ACL\Contracts\BelongsToOrganisations
. You can use the @ACL\BelongsToOrganisations
annotation to define the relation.
<?php
use Doctrine\ORM\Mapping as ORM;
use LaravelDoctrine\ACL\Mappings as ACL;
use LaravelDoctrine\ACL\Contracts\BelongsToOrganisations;
/**
* @ORM\Entity
*/
class User implements BelongsToOrganisations
{
/**
* @ACL\BelongsToOrganisations
* @var Organisation[]
*/
protected $organisations;
/**
* @return Organisation[]
*/
public function getOrganisations()
{
return $this->organisations;
}
}
Checking if a User has a certain Organisation
The LaravelDoctrine\ACL\Organisations\BelongsToOrganisation
trait provides methods to check if the User has a certain Organisation.
$user->belongsToOrganisation($org);
An array of Organisations or Organisation names can also be checked for.
$user->belongsToOrganisation([$org1,$org2,$org3]);
$user->belongsToOrganisation(['Company 1','Company 2','Company 3']);
Specifying true
for the second argument will check that all roles are present.
$user->belongsToOrganisation([$org1,$org2,$org3], true); //User must belong to all three organisations to return true
$user->belongsToOrganisation(['Company 1','Company 2','Company 3'], true);