nineskeletor/src/Repository/Niveau01Repository.php

87 lines
2.7 KiB
PHP
Executable File

<?php
namespace App\Repository;
use App\Entity\Niveau01;
use App\Service\LdapService;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
class Niveau01Repository extends ServiceEntityRepository
{
private $ldapservice;
public function __construct(ManagerRegistry $registry, LdapService $ldapservice)
{
parent::__construct($registry, Niveau01::class);
$this->ldapservice = $ldapservice;
}
public function add(Niveau01 $entity, bool $flush = false): void
{
$this->getEntityManager()->persist($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
public function remove(Niveau01 $entity, bool $flush = false): void
{
$this->getEntityManager()->remove($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
/* Déterminer le niveau01 d'un user SSO en fonction de ses attributs */
public function calculateSSONiveau01($attruser)
{
$niveau01s = $this->_em->getRepository('App\Entity\Niveau01')->findAll();
foreach ($niveau01s as $niveau01) {
if ($niveau01->getAttributes()) {
$attniveau = json_decode($niveau01->getAttributes(), true);
foreach ($attniveau as $key => $value) {
if (array_key_exists($key, $attruser)) {
if (is_array($attruser[$key])) {
foreach ($attruser[$key] as $val) {
if ('*' == $value) {
return $niveau01;
} elseif ($val == $value) {
return $niveau01;
}
}
} else {
if ('*' == $value) {
return $niveau01;
} elseif ($value == $attruser[$key]) {
return $niveau01;
}
}
}
}
}
}
return false;
}
/* Déterminer le niveau01 d'un user LDAP */
public function calculateLDAPNiveau01($username)
{
$niveau01s = $this->_em->getRepository('App\Entity\Niveau01')->findAll();
foreach ($niveau01s as $niveau01) {
if ($niveau01->getLdapfilter()) {
$ismember = $this->ldapservice->findNiveau01ismember($niveau01->getLdapfilter(), $username);
if ($ismember) {
return $niveau01;
}
}
}
return false;
}
}