fix: validator (#8)
Cadoles/nineskeletor/pipeline/head There was a failure building this commit Details

Co-authored-by: Arnaud Fornerot <afornerot@cadoles.com>
Reviewed-on: #8
This commit is contained in:
afornerot 2022-10-26 09:19:16 +02:00
parent 19fa75e2eb
commit e52fdd9083
14 changed files with 234 additions and 19 deletions

View File

@ -2,6 +2,7 @@
namespace App\Entity; namespace App\Entity;
use App\Validator;
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@ -25,6 +26,8 @@ class Group
private $id; private $id;
/** /**
* @Validator\Grouplabel()
* @Validator\Groupunique()
* @ORM\Column(type="string", length=250, unique=true) * @ORM\Column(type="string", length=250, unique=true)
*/ */
private $label; private $label;

View File

@ -193,22 +193,28 @@ class LdapService
{ {
$connection = $this->connect(); $connection = $this->connect();
if (false == $recursive) { if (false == $recursive) {
$removed = ldap_delete($connection, $dn); $ldapentrys = $this->searchdn($dn);
if (!$removed) { if (!empty($ldapentrys)) {
$this->ldapError(); $removed = ldap_delete($connection, $dn);
} if (!$removed) {
} else { $this->ldapError();
// searching for sub entries
$sr = ldap_list($connection, $dn, 'ObjectClass=*', ['']);
$info = ldap_get_entries($connection, $sr);
for ($i = 0; $i < $info['count']; ++$i) {
$result = $this->deleteByDN($info[$i]['dn'], $recursive);
if (!$result) {
return $result;
} }
} }
} else {
$ldapentrys = $this->searchdn($dn);
if (!empty($ldapentrys)) {
// searching for sub entries
$sr = ldap_list($connection, $dn, 'ObjectClass=*', ['']);
$info = ldap_get_entries($connection, $sr);
for ($i = 0; $i < $info['count']; ++$i) {
$result = $this->deleteByDN($info[$i]['dn'], $recursive);
if (!$result) {
return $result;
}
}
return ldap_delete($connection, $dn); return ldap_delete($connection, $dn);
}
} }
} }

View File

@ -0,0 +1,17 @@
<?php
namespace App\Validator;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class Groupunique extends Constraint
{
public $messagegroup = 'Un groupe utilise déjà ce label';
public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label';
public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label';
public $messageniveau03 = 'Un niveau de rang 03 utilise déjà ce label';
public $messageniveau04 = 'Un niveau de rang 04 utilise déjà ce label';
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Validator;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Annotation
*/
class GroupuniqueValidator extends ConstraintValidator
{
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function validate($value, Constraint $constraint)
{
$niveau = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau01);
}
$niveau = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau02);
}
$niveau = $this->em->getRepository("App\Entity\Niveau03")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau03);
}
$niveau = $this->em->getRepository("App\Entity\Niveau04")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau04);
}
}
}

View File

@ -10,5 +10,8 @@ use Symfony\Component\Validator\Constraint;
class Niveau01unique extends Constraint class Niveau01unique extends Constraint
{ {
public $messagegroup = 'Un groupe utilise déjà ce label'; public $messagegroup = 'Un groupe utilise déjà ce label';
public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label';
public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label'; public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label';
public $messageniveau03 = 'Un niveau de rang 03 utilise déjà ce label';
public $messageniveau04 = 'Un niveau de rang 04 utilise déjà ce label';
} }

View File

@ -25,9 +25,19 @@ class Niveau01uniqueValidator extends ConstraintValidator
$this->context->addViolation($constraint->messagegroup); $this->context->addViolation($constraint->messagegroup);
} }
$niveau02 = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]); $niveau = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]);
if ($niveau02) { if ($niveau) {
$this->context->addViolation($constraint->messageniveau02); $this->context->addViolation($constraint->messageniveau02);
} }
$niveau = $this->em->getRepository("App\Entity\Niveau03")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau03);
}
$niveau = $this->em->getRepository("App\Entity\Niveau04")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau04);
}
} }
} }

View File

@ -11,4 +11,7 @@ class Niveau02unique extends Constraint
{ {
public $messagegroup = 'Un groupe utilise déjà ce label'; public $messagegroup = 'Un groupe utilise déjà ce label';
public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label'; public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label';
public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label';
public $messageniveau03 = 'Un niveau de rang 03 utilise déjà ce label';
public $messageniveau04 = 'Un niveau de rang 04 utilise déjà ce label';
} }

View File

@ -25,9 +25,19 @@ class Niveau02uniqueValidator extends ConstraintValidator
$this->context->addViolation($constraint->messagegroup); $this->context->addViolation($constraint->messagegroup);
} }
$niveau02 = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]); $niveau = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]);
if ($niveau02) { if ($niveau) {
$this->context->addViolation($constraint->messageniveau01); $this->context->addViolation($constraint->messageniveau01);
} }
$niveau = $this->em->getRepository("App\Entity\Niveau03")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau03);
}
$niveau = $this->em->getRepository("App\Entity\Niveau04")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau04);
}
} }
} }

View File

@ -0,0 +1,17 @@
<?php
namespace App\Validator;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class Niveau03unique extends Constraint
{
public $messagegroup = 'Un groupe utilise déjà ce label';
public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label';
public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label';
public $messageniveau03 = 'Un niveau de rang 03 utilise déjà ce label';
public $messageniveau04 = 'Un niveau de rang 04 utilise déjà ce label';
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Validator;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Annotation
*/
class Niveau03uniqueValidator extends ConstraintValidator
{
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function validate($value, Constraint $constraint)
{
$group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $value]);
if ($group) {
$this->context->addViolation($constraint->messagegroup);
}
$niveau = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau01);
}
$niveau = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau02);
}
$niveau = $this->em->getRepository("App\Entity\Niveau04")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau04);
}
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace App\Validator;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class Niveau04unique extends Constraint
{
public $messagegroup = 'Un groupe utilise déjà ce label';
public $messageniveau01 = 'Un niveau de rang 01 utilise déjà ce label';
public $messageniveau02 = 'Un niveau de rang 02 utilise déjà ce label';
public $messageniveau03 = 'Un niveau de rang 03 utilise déjà ce label';
public $messageniveau04 = 'Un niveau de rang 04 utilise déjà ce label';
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Validator;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Annotation
*/
class Niveau04uniqueValidator extends ConstraintValidator
{
protected $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function validate($value, Constraint $constraint)
{
$group = $this->em->getRepository("App\Entity\Group")->findOneBy(['label' => $value]);
if ($group) {
$this->context->addViolation($constraint->messagegroup);
}
$niveau = $this->em->getRepository("App\Entity\Niveau01")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau01);
}
$niveau = $this->em->getRepository("App\Entity\Niveau02")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau02);
}
$niveau = $this->em->getRepository("App\Entity\Niveau03")->findOneBy(['label' => $value]);
if ($niveau) {
$this->context->addViolation($constraint->messageniveau04);
}
}
}

View File

@ -66,7 +66,7 @@
{% if auditUse and mode=="update" and (access=="admin" or access=="modo" or access=="audit") %} {% if auditUse and mode=="update" and (access=="admin" or access=="modo" or access=="audit") %}
<div class="float-end" style="width:700px;max-width:100%"> <div class="float-end" style="width:700px;max-width:100%">
{{ render(path("app_"~access~"_audit_renderid",{entityname:"Niveau02",entityid:niveau03.id})) }} {{ render(path("app_"~access~"_audit_renderid",{entityname:"Niveau03",entityid:niveau03.id})) }}
</div> </div>
{% endif %} {% endif %}
{{ form_end(form) }} {{ form_end(form) }}

View File

@ -67,7 +67,7 @@
{% if auditUse and mode=="update" and (access=="admin" or access=="modo" or access=="audit") %} {% if auditUse and mode=="update" and (access=="admin" or access=="modo" or access=="audit") %}
<div class="float-end" style="width:700px;max-width:100%"> <div class="float-end" style="width:700px;max-width:100%">
{{ render(path("app_"~access~"_audit_renderid",{entityname:"Niveau02",entityid:niveau03.id})) }} {{ render(path("app_"~access~"_audit_renderid",{entityname:"Niveau04",entityid:niveau04.id})) }}
</div> </div>
{% endif %} {% endif %}
{{ form_end(form) }} {{ form_end(form) }}