Implemented standart rights for user sources

This commit is contained in:
Kevin Frantz 2019-03-31 19:18:11 +02:00
parent a11296df5b
commit 70a117c927
4 changed files with 62 additions and 3 deletions

View File

@ -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;
} }
} }

View File

@ -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,
],
];
}

View File

@ -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

View File

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