fix(fixtureavatar): fixcture auto avatar & timesession & font & menu & redirect #5

Merged
afornerot merged 4 commits from fixtureavatar into master 2022-10-04 16:53:59 +02:00
4 changed files with 40 additions and 25 deletions
Showing only changes of commit 7d8ec5d8c5 - Show all commits

View File

@ -771,7 +771,7 @@ class UserController extends AbstractController
throw $this->createAccessDeniedException('Permission denied'); throw $this->createAccessDeniedException('Permission denied');
break; break;
case 'all': case 'all':
if ($this->getUser()->getId() != $entity->getId()) { if ($this->getUser()->getId() != $entity->getId()) {
throw $this->createAccessDeniedException('Permission denied'); throw $this->createAccessDeniedException('Permission denied');

View File

@ -8,18 +8,18 @@ use App\Entity\Niveau03;
use App\Entity\Niveau04; use App\Entity\Niveau04;
use App\Entity\User; use App\Entity\User;
use App\Entity\UserModo; use App\Entity\UserModo;
use App\Service\MinioService;
use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\ORM\Id\AssignedGenerator; use Doctrine\ORM\Id\AssignedGenerator;
use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\Persistence\ObjectManager; use Doctrine\Persistence\ObjectManager;
use LasseRafn\InitialAvatarGenerator\InitialAvatar;
use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\HttpKernel\KernelInterface;
use LasseRafn\InitialAvatarGenerator\InitialAvatar;
use App\Service\MinioService;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\KernelInterface;
class AppFixtures extends Fixture class AppFixtures extends Fixture
{ {
@ -53,8 +53,8 @@ class AppFixtures extends Fixture
$manager->flush(); $manager->flush();
// Color // Color
$this->colorbg=$manager->getRepository("App\Entity\Config")->find("colorbgbodydark")->getValue(); $this->colorbg = $manager->getRepository("App\Entity\Config")->find('colorbgbodydark')->getValue();
$this->colorft=$manager->getRepository("App\Entity\Config")->find("colorfttitledark")->getValue(); $this->colorft = $manager->getRepository("App\Entity\Config")->find('colorfttitledark')->getValue();
// app:Synchro // app:Synchro
$manager->clear(); $manager->clear();
@ -250,7 +250,6 @@ class AppFixtures extends Fixture
$user->setNiveau01($niveau02->getNiveau01()); $user->setNiveau01($niveau02->getNiveau01());
$user->setNiveau02($niveau02); $user->setNiveau02($niveau02);
$this->generateavatar($username); $this->generateavatar($username);
$user->setAvatar($username.'.png'); $user->setAvatar($username.'.png');
@ -290,7 +289,6 @@ class AppFixtures extends Fixture
$this->generateavatar($username); $this->generateavatar($username);
$user->setAvatar($username.'.png'); $user->setAvatar($username.'.png');
$manager->flush(); $manager->flush();
} }
@ -364,10 +362,11 @@ class AppFixtures extends Fixture
return $r; return $r;
} }
private function generateavatar($username) { private function generateavatar($username)
{
$avatar = new InitialAvatar(); $avatar = new InitialAvatar();
$image = $avatar->name($username)->height(100)->width(100)->background($this->colorbg)->color($this->colorft)->generate(); $image = $avatar->name($username)->height(100)->width(100)->background($this->colorbg)->color($this->colorft)->generate();
file_put_contents($this->kernel->getProjectDir().'/var/tmp/avatar/'.$username.'.png',$image->stream('png', 90)); file_put_contents($this->kernel->getProjectDir().'/var/tmp/avatar/'.$username.'.png', $image->stream('png', 90));
$this->minio->upload($this->kernel->getProjectDir().'/var/tmp/avatar/'.$username.'.png', 'avatar/'.$username.'.png', true); $this->minio->upload($this->kernel->getProjectDir().'/var/tmp/avatar/'.$username.'.png', 'avatar/'.$username.'.png', true);
} }
} }

View File

@ -1,22 +1,23 @@
<?php <?php
namespace App\EventListener; namespace App\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent; use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class ExceptionListener implements EventSubscriberInterface class ExceptionListener implements EventSubscriberInterface
{ {
private $router; private $router;
public function __construct(UrlGeneratorInterface $router) { public function __construct(UrlGeneratorInterface $router)
$this->router=$router; {
$this->router = $router;
} }
public static function getSubscribedEvents(): array public static function getSubscribedEvents(): array
@ -32,7 +33,7 @@ class ExceptionListener implements EventSubscriberInterface
public function onKernelException(ExceptionEvent $event): void public function onKernelException(ExceptionEvent $event): void
{ {
$exception = $event->getThrowable(); $exception = $event->getThrowable();
if (!$exception instanceof AccessDeniedException&&!$exception instanceof NotFoundHttpException) { if (!$exception instanceof AccessDeniedException && !$exception instanceof NotFoundHttpException) {
return; return;
} }
@ -40,6 +41,5 @@ class ExceptionListener implements EventSubscriberInterface
// optionally set the custom response // optionally set the custom response
$event->setResponse($response); $event->setResponse($response);
} }
} }

View File

@ -157,6 +157,8 @@ class LdapService
break; break;
case 'basedn': return $this->basedn; case 'basedn': return $this->basedn;
break; break;
case 'baseorganisation': return $this->baseorganisation;
break;
case 'filteruser': return $this->filteruser; case 'filteruser': return $this->filteruser;
break; break;
} }
@ -187,12 +189,26 @@ class LdapService
return $this->resultToArray($result); return $this->resultToArray($result);
} }
public function deleteByDN($dn) public function deleteByDN($dn, $recursive = false)
{ {
$connection = $this->connect(); $connection = $this->connect();
$removed = ldap_delete($connection, $dn); if (false == $recursive) {
if (!$removed) { $removed = ldap_delete($connection, $dn);
$this->ldapError(); if (!$removed) {
$this->ldapError();
}
} else {
// 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);
} }
} }