mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-04-16 10:16:22 +02:00
Implemented standart rights for user sources
This commit is contained in:
parent
a11296df5b
commit
70a117c927
@ -9,6 +9,7 @@ use Infinito\Domain\RequestManagement\Entity\RequestedEntityServiceInterface;
|
|||||||
use Infinito\Exception\NotCorrectInstanceException;
|
use Infinito\Exception\NotCorrectInstanceException;
|
||||||
use Infinito\DBAL\Types\Meta\Right\LayerType;
|
use Infinito\DBAL\Types\Meta\Right\LayerType;
|
||||||
use Infinito\Domain\LayerManagement\LayerInterfaceMap;
|
use Infinito\Domain\LayerManagement\LayerInterfaceMap;
|
||||||
|
use FOS\UserBundle\Model\UserInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is not ready and not tested!
|
* This class is not ready and not tested!
|
||||||
@ -123,6 +124,12 @@ final class EntityDomService implements EntityDomServiceInterface
|
|||||||
$domElement->setAttribute('id', $value->getId());
|
$domElement->setAttribute('id', $value->getId());
|
||||||
$domElement->setAttribute('name', LayerType::getReadableValue($layer));
|
$domElement->setAttribute('name', LayerType::getReadableValue($layer));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($value instanceof UserInterface) {
|
||||||
|
$domElement->setAttribute('value', $value->getId());
|
||||||
|
$domElement->setAttribute('name', 'user');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Infinito\Domain\UserManagement;
|
||||||
|
|
||||||
|
use Infinito\DBAL\Types\Meta\Right\LayerType;
|
||||||
|
use Infinito\DBAL\Types\ActionType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Containes the standart map.
|
||||||
|
*
|
||||||
|
* @author kevinfrantz
|
||||||
|
*/
|
||||||
|
interface UserSourceStandartRightMapInterface
|
||||||
|
{
|
||||||
|
const LAYER_RIGHT_MAP = [
|
||||||
|
LayerType::SOURCE => [
|
||||||
|
ActionType::READ,
|
||||||
|
ActionType::UPDATE,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
@ -24,7 +24,8 @@ class Right extends AbstractMeta implements RightInterface
|
|||||||
use ActionTypeAttribut,LawAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut;
|
use ActionTypeAttribut,LawAttribut, GrantAttribut,ConditionAttribut,RecieverAttribut,LayerAttribut,PriorityAttribut;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"})
|
* @todo Implement Integrationtests
|
||||||
|
* @ORM\ManyToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist", "remove"})
|
||||||
* @ORM\JoinColumn(name="source_id", referencedColumnName="id",onDelete="CASCADE")
|
* @ORM\JoinColumn(name="source_id", referencedColumnName="id",onDelete="CASCADE")
|
||||||
*
|
*
|
||||||
* @var SourceInterface The requested source to which the law applies
|
* @var SourceInterface The requested source to which the law applies
|
||||||
@ -57,8 +58,9 @@ class Right extends AbstractMeta implements RightInterface
|
|||||||
protected $layer;
|
protected $layer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo Test and implement it on an correct way!
|
* @todo Implement Integrationtests
|
||||||
* @ORM\OneToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist"})
|
* @todo implement it on an correct way!
|
||||||
|
* @ORM\ManyToOne(targetEntity="Infinito\Entity\Source\AbstractSource",cascade={"persist"})
|
||||||
* @ORM\JoinColumn(name="reciever_id", referencedColumnName="id",onDelete="CASCADE",nullable=true)
|
* @ORM\JoinColumn(name="reciever_id", referencedColumnName="id",onDelete="CASCADE",nullable=true)
|
||||||
*
|
*
|
||||||
* @var SourceInterface|null if null then the right should apply to all sources
|
* @var SourceInterface|null if null then the right should apply to all sources
|
||||||
|
@ -6,6 +6,8 @@ use Doctrine\ORM\Mapping as ORM;
|
|||||||
use Infinito\Attribut\UserAttribut;
|
use Infinito\Attribut\UserAttribut;
|
||||||
use Infinito\Entity\UserInterface;
|
use Infinito\Entity\UserInterface;
|
||||||
use Infinito\Attribut\PersonIdentitySourceAttribut;
|
use Infinito\Attribut\PersonIdentitySourceAttribut;
|
||||||
|
use Infinito\Entity\Meta\Right;
|
||||||
|
use Infinito\Domain\UserManagement\UserSourceStandartRightMapInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
@ -31,11 +33,38 @@ class UserSource extends AbstractComplexSource implements UserSourceInterface
|
|||||||
*/
|
*/
|
||||||
protected $personIdentitySource;
|
protected $personIdentitySource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function sets the standart rights for a user source.
|
||||||
|
*/
|
||||||
|
private function setStandartRights(): void
|
||||||
|
{
|
||||||
|
foreach (UserSourceStandartRightMapInterface::LAYER_RIGHT_MAP as $layer => $actions) {
|
||||||
|
foreach ($actions as $action) {
|
||||||
|
$law = $this->law;
|
||||||
|
$right = new Right();
|
||||||
|
$right = new Right();
|
||||||
|
$right->setSource($this);
|
||||||
|
$right->setLaw($law);
|
||||||
|
$right->setReciever($this);
|
||||||
|
$right->setLayer($layer);
|
||||||
|
$right->setActionType($action);
|
||||||
|
$rights = $law->getRights();
|
||||||
|
$rights->add($right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
$this->setStandartRights();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*
|
||||||
|
* @see \Infinito\Entity\Source\Complex\UserSourceInterface::hasPersonIdentitySource()
|
||||||
|
*/
|
||||||
public function hasPersonIdentitySource(): bool
|
public function hasPersonIdentitySource(): bool
|
||||||
{
|
{
|
||||||
return isset($this->personIdentitySource);
|
return isset($this->personIdentitySource);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user