From ffe8f2f722894c90c3046a4b873117d48ee3065a Mon Sep 17 00:00:00 2001 From: Arnaud Fornerot Date: Tue, 4 Oct 2022 13:46:14 +0200 Subject: [PATCH] fix(fixtureavatar): fixcture auto avatar & timesession & font & menu & redirect --- .env | 1 + assets/fonts/Futura-Condensed-Extra-Bold.otf | Bin 0 -> 25492 bytes assets/styles/font.css | 10 +- composer.json | 1 + composer.lock | 372 ++++++++++++++++++- config/packages/framework.yaml | 1 + config/services.yaml | 3 +- src/Controller/UserController.php | 17 +- src/DataFixtures/AppFixtures.php | 43 ++- src/EventListener/ExceptionListener.php | 45 +++ src/Form/ConfigType.php | 1 + templates/base.html.twig | 8 +- 12 files changed, 491 insertions(+), 11 deletions(-) create mode 100644 assets/fonts/Futura-Condensed-Extra-Bold.otf create mode 100644 src/EventListener/ExceptionListener.php diff --git a/.env b/.env index 49a9c27..edd3f53 100644 --- a/.env +++ b/.env @@ -1,6 +1,7 @@ # Symfony APP_ENV=prod APP_SECRET=changeme +APP_SESSIONTIME=1440 # Messenger MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 diff --git a/assets/fonts/Futura-Condensed-Extra-Bold.otf b/assets/fonts/Futura-Condensed-Extra-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..65dad4d329db1f25e99e0d53235a5dee631c46dd GIT binary patch literal 25492 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 G=l=mh#j7O% literal 0 HcmV?d00001 diff --git a/assets/styles/font.css b/assets/styles/font.css index 3f67f56..5ce1a11 100644 --- a/assets/styles/font.css +++ b/assets/styles/font.css @@ -178,4 +178,12 @@ font-family: 'Theboldfont'; src: url('../fonts/theboldfont.ttf') format('truetype'); font-weight: normal; font-style: normal; -} \ No newline at end of file +} + +@font-face { + font-family: 'Futura-Condensed-Extra-Bold'; + src: url('../fonts/Futura-Condensed-Extra-Bold.otf') format('opentype'); + font-weight: normal; + font-style: normal; + } + diff --git a/composer.json b/composer.json index 31054d3..0ff3b04 100644 --- a/composer.json +++ b/composer.json @@ -122,6 +122,7 @@ }, "require-dev": { "doctrine/doctrine-fixtures-bundle": "^3.4", + "lasserafn/php-initial-avatar-generator": "^4.2", "phpunit/phpunit": "^9.5", "symfony/browser-kit": "6.1.*", "symfony/css-selector": "6.1.*", diff --git a/composer.lock b/composer.lock index a103c5e..2fd8a0a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d3be737db4f7ce5089c83be63c8dbf09", + "content-hash": "479a2464d612243533a7aa3eae4281d9", "packages": [ { "name": "aws/aws-crt-php", @@ -11096,6 +11096,253 @@ ], "time": "2022-04-28T17:58:29+00:00" }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "lasserafn/php-initial-avatar-generator", + "version": "4.2.1", + "source": { + "type": "git", + "url": "https://github.com/LasseRafn/php-initial-avatar-generator.git", + "reference": "49d0b10cc8819af831e0f6fb1056a7d5ed9512d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LasseRafn/php-initial-avatar-generator/zipball/49d0b10cc8819af831e0f6fb1056a7d5ed9512d0", + "reference": "49d0b10cc8819af831e0f6fb1056a7d5ed9512d0", + "shasum": "" + }, + "require": { + "ext-json": "*", + "intervention/image": "^2.3", + "lasserafn/php-initials": "^3.0", + "lasserafn/php-string-script-language": "^0.3.0", + "meyfa/php-svg": "^0.9.0", + "overtrue/pinyin": "^4.0", + "php": "^7.0|^7.1|^7.2|^7.3|^7.4|^8.0" + }, + "require-dev": { + "doctrine/instantiator": "1.0.*", + "phpunit/phpunit": "^6.5", + "satooshi/php-coveralls": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LasseRafn\\InitialAvatarGenerator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lasse Rafn", + "email": "lasserafn@gmail.com" + } + ], + "description": "A package to generate avatars with initials for PHP", + "keywords": [ + "Initials", + "avatar", + "image", + "svg" + ], + "support": { + "issues": "https://github.com/LasseRafn/php-initial-avatar-generator/issues", + "source": "https://github.com/LasseRafn/php-initial-avatar-generator/tree/4.2.1" + }, + "funding": [ + { + "url": "https://opencollective.com/ui-avatars", + "type": "open_collective" + } + ], + "time": "2020-12-24T13:12:12+00:00" + }, + { + "name": "lasserafn/php-initials", + "version": "3.1", + "source": { + "type": "git", + "url": "https://github.com/LasseRafn/php-initials.git", + "reference": "d287e1542687390eb68de779949bc0adc49e2d52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LasseRafn/php-initials/zipball/d287e1542687390eb68de779949bc0adc49e2d52", + "reference": "d287e1542687390eb68de779949bc0adc49e2d52", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0|^7.1|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7", + "satooshi/php-coveralls": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "LasseRafn\\Initials\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lasse Rafn", + "email": "lasserafn@gmail.com" + } + ], + "description": "A package to generate initials in PHP", + "keywords": [ + "Initials", + "php" + ], + "support": { + "issues": "https://github.com/LasseRafn/php-initials/issues", + "source": "https://github.com/LasseRafn/php-initials/tree/3.1" + }, + "time": "2020-12-24T12:25:51+00:00" + }, + { + "name": "lasserafn/php-string-script-language", + "version": "0.3", + "source": { + "type": "git", + "url": "https://github.com/LasseRafn/php-string-script-language.git", + "reference": "49a09d4a5e38c1e59a2656ac05b601d615c7cddb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LasseRafn/php-string-script-language/zipball/49a09d4a5e38c1e59a2656ac05b601d615c7cddb", + "reference": "49a09d4a5e38c1e59a2656ac05b601d615c7cddb", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0|^7.1|^8.0" + }, + "require-dev": { + "doctrine/instantiator": "1.0.5", + "phpunit/phpunit": "^5.6", + "phpunit/phpunit-mock-objects": "3.2.4", + "satooshi/php-coveralls": "^1.0", + "sebastian/exporter": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "LasseRafn\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lasse Rafn", + "email": "lasserafn@gmail.com" + } + ], + "description": "Detect language/encoding of a string in PHP", + "keywords": [ + "language", + "php", + "string" + ], + "support": { + "issues": "https://github.com/LasseRafn/php-string-script-language/issues", + "source": "https://github.com/LasseRafn/php-string-script-language/tree/0.3" + }, + "time": "2020-12-24T12:43:59+00:00" + }, { "name": "masterminds/html5", "version": "2.7.6", @@ -11165,6 +11412,56 @@ }, "time": "2022-08-18T16:18:26+00:00" }, + { + "name": "meyfa/php-svg", + "version": "v0.9.1", + "source": { + "type": "git", + "url": "https://github.com/meyfa/php-svg.git", + "reference": "34401edef1f724898f468f71b85505fbcc8351bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/meyfa/php-svg/zipball/34401edef1f724898f468f71b85505fbcc8351bb", + "reference": "34401edef1f724898f468f71b85505fbcc8351bb", + "shasum": "" + }, + "require": { + "ext-gd": "*", + "ext-simplexml": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "meyfa/phpunit-assert-gd": "^1.1", + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "SVG\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabian Meyer", + "homepage": "http://meyfa.net" + } + ], + "description": "Read, edit, write, and render SVG files with PHP", + "homepage": "https://github.com/meyfa/php-svg", + "keywords": [ + "svg" + ], + "support": { + "issues": "https://github.com/meyfa/php-svg/issues", + "source": "https://github.com/meyfa/php-svg/tree/v0.9.1" + }, + "time": "2019-07-30T18:41:25+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.11.0", @@ -11224,6 +11521,79 @@ ], "time": "2022-03-03T13:19:32+00:00" }, + { + "name": "overtrue/pinyin", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/overtrue/pinyin.git", + "reference": "04bdb4d33d50e8fb1aa5a824064c5151c4b15dc2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/pinyin/zipball/04bdb4d33d50e8fb1aa5a824064c5151c4b15dc2", + "reference": "04bdb4d33d50e8fb1aa5a824064c5151c4b15dc2", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.7", + "friendsofphp/php-cs-fixer": "^2.16", + "phpunit/phpunit": "~8.0" + }, + "type": "library", + "extra": { + "hooks": { + "pre-commit": [ + "composer test", + "composer fix-style" + ], + "pre-push": [ + "composer test", + "composer check-style" + ] + } + }, + "autoload": { + "files": [ + "src/const.php" + ], + "psr-4": { + "Overtrue\\Pinyin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com", + "homepage": "http://github.com/overtrue" + } + ], + "description": "Chinese to pinyin translator.", + "homepage": "https://github.com/overtrue/pinyin", + "keywords": [ + "Chinese", + "Pinyin", + "cn2pinyin" + ], + "support": { + "issues": "https://github.com/overtrue/pinyin/issues", + "source": "https://github.com/overtrue/pinyin/tree/4.0.8" + }, + "funding": [ + { + "url": "https://www.patreon.com/overtrue", + "type": "patreon" + } + ], + "time": "2021-07-19T03:43:32+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.3", diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index caa1ef2..c34bc25 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -10,6 +10,7 @@ framework: handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler name: '%env(APP_ALIAS)%' gc_probability: null + gc_maxlifetime: '%env(resolve:APP_SESSIONTIME)%' cookie_secure: auto cookie_samesite: lax storage_factory_id: session.storage.factory.native diff --git a/config/services.yaml b/config/services.yaml index a3e91e4..e3e41c4 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -2,7 +2,8 @@ parameters: appEnv: '%env(resolve:APP_ENV)%' appSecret: '%env(resolve:APP_SECRET)%' - + appSessiontime: '%env(resolve:APP_SESSIONTIME)%' + appWeburl: '%env(resolve:APP_WEBURL)%' appAuth: '%env(resolve:APP_AUTH)%' appAlias: '%env(resolve:APP_ALIAS)%' diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 2b2d567..b039b7b 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -722,9 +722,9 @@ class UserController extends AbstractController case 'manager': if ($this->getUser()->getNiveau03() && $this->getUser()->getNiveau03() == $entity->getNiveau03()) { return true; - } elseif ($this->getUser()->getNiveau02() && $this->getUser()->getNiveau02() == $entity->getNiveau02()) { + } elseif (!$this->getUser()->getNiveau03() && $this->getUser()->getNiveau02() && $this->getUser()->getNiveau02() == $entity->getNiveau02()) { return true; - } elseif ($this->getUser()->getNiveau01() && $this->getUser()->getNiveau01() == $entity->getNiveau01()) { + } elseif (!$this->getUser()->getNiveau02() && $this->getUser()->getNiveau01() && $this->getUser()->getNiveau01() == $entity->getNiveau01()) { return true; } @@ -759,6 +759,19 @@ class UserController extends AbstractController return true; break; + + case 'manager': + if ($this->getUser()->getNiveau03() && $this->getUser()->getNiveau03() == $entity->getNiveau03()) { + return true; + } elseif (!$this->getUser()->getNiveau03() && $this->getUser()->getNiveau02() && $this->getUser()->getNiveau02() == $entity->getNiveau02()) { + return true; + } elseif (!$this->getUser()->getNiveau02() && $this->getUser()->getNiveau01() && $this->getUser()->getNiveau01() == $entity->getNiveau01()) { + return true; + } + + throw $this->createAccessDeniedException('Permission denied'); + break; + case 'all': if ($this->getUser()->getId() != $entity->getId()) { throw $this->createAccessDeniedException('Permission denied'); diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index 0b9c2d6..6928402 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -17,20 +17,32 @@ use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\HttpKernel\KernelInterface; +use LasseRafn\InitialAvatarGenerator\InitialAvatar; +use App\Service\MinioService; +use Symfony\Component\Filesystem\Filesystem; class AppFixtures extends Fixture { private $kernel; private $output; + private $minio; + private $colorbg; + private $colorft; - public function __construct(KernelInterface $kernel) + public function __construct(KernelInterface $kernel, MinioService $minio) { $this->kernel = $kernel; + $this->minio = $minio; $this->output = new ConsoleOutput(); } public function load(ObjectManager $manager): void { + // Création Répertoire Avatar + $fs = new Filesystem(); + $roottmp = $this->kernel->getProjectDir().'/var/tmp'; + $fs->mkdir($roottmp.'/avatar'); + // app:Init $this->writeln('app:Init'); $application = new Application($this->kernel); @@ -40,6 +52,10 @@ class AppFixtures extends Fixture $application->run($input, $boutput); $manager->flush(); + // Color + $this->colorbg=$manager->getRepository("App\Entity\Config")->find("colorbgbodydark")->getValue(); + $this->colorft=$manager->getRepository("App\Entity\Config")->find("colorfttitledark")->getValue(); + // app:Synchro $manager->clear(); $this->writeln('app:Synchro'); @@ -196,10 +212,12 @@ class AppFixtures extends Fixture $user->setEmail($username.'@noreply.fr'); $user->setIsvisible(true); $user->setIsactive(true); - $user->setAvatar('noavatar.png'); $user->setApikey($username); $user->setNiveau01($niveau01); + $this->generateavatar($username); + $user->setAvatar($username.'.png'); + $manager->flush(); } @@ -228,11 +246,14 @@ class AppFixtures extends Fixture $user->setEmail($username.'@noreply.fr'); $user->setIsvisible(true); $user->setIsactive(true); - $user->setAvatar('noavatar.png'); $user->setApikey($username); $user->setNiveau01($niveau02->getNiveau01()); $user->setNiveau02($niveau02); + + $this->generateavatar($username); + $user->setAvatar($username.'.png'); + $manager->flush(); } @@ -261,12 +282,15 @@ class AppFixtures extends Fixture $user->setEmail($username.'@noreply.fr'); $user->setIsvisible(true); $user->setIsactive(true); - $user->setAvatar('noavatar.png'); $user->setApikey($username); $user->setNiveau01($niveau03->getNiveau02()->getNiveau01()); $user->setNiveau02($niveau03->getNiveau02()); $user->setNiveau03($niveau03); + $this->generateavatar($username); + $user->setAvatar($username.'.png'); + + $manager->flush(); } @@ -295,12 +319,14 @@ class AppFixtures extends Fixture $user->setEmail($username.'@noreply.fr'); $user->setIsvisible(true); $user->setIsactive(true); - $user->setAvatar('noavatar.png'); $user->setApikey($username); $user->setNiveau01($niveau03->getNiveau02()->getNiveau01()); $user->setNiveau02($niveau03->getNiveau02()); $user->setNiveau03($niveau03); + $this->generateavatar($username); + $user->setAvatar($username.'.png'); + $manager->flush(); } @@ -337,4 +363,11 @@ class AppFixtures extends Fixture return $r; } + + private function generateavatar($username) { + $avatar = new InitialAvatar(); + $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)); + $this->minio->upload($this->kernel->getProjectDir().'/var/tmp/avatar/'.$username.'.png', 'avatar/'.$username.'.png', true); + } } diff --git a/src/EventListener/ExceptionListener.php b/src/EventListener/ExceptionListener.php new file mode 100644 index 0000000..621ec8f --- /dev/null +++ b/src/EventListener/ExceptionListener.php @@ -0,0 +1,45 @@ +router=$router; + } + + public static function getSubscribedEvents(): array + { + return [ + // the priority must be greater than the Security HTTP + // ExceptionListener, to make sure it's called before + // the default exception listener + KernelEvents::EXCEPTION => ['onKernelException', 2], + ]; + } + + public function onKernelException(ExceptionEvent $event): void + { + $exception = $event->getThrowable(); + if (!$exception instanceof AccessDeniedException&&!$exception instanceof NotFoundHttpException) { + return; + } + + $response = new RedirectResponse($this->router->generate('app_home')); + + // optionally set the custom response + $event->setResponse($response); + + } +} \ No newline at end of file diff --git a/src/Form/ConfigType.php b/src/Form/ConfigType.php index 5efad82..69823c4 100644 --- a/src/Form/ConfigType.php +++ b/src/Form/ConfigType.php @@ -76,6 +76,7 @@ class ConfigType extends AbstractType 'Chewy-Regular' => 'Chewy-Regular', 'Courgette-Regular' => 'Courgette-Regular', 'FredokaOne-Regular' => 'FredokaOne-Regular', + 'Futura-Condensed-Extra-Bold' => 'Futura-Condensed-Extra-Bold', 'Grandstander' => 'Grandstander', 'Helvetica' => 'Helvetica', 'Justanotherhand-Regular' => 'Justanotherhand-Regular', diff --git a/templates/base.html.twig b/templates/base.html.twig index b81294d..00921dd 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -87,7 +87,13 @@ - Accueil + + {% if not app.session.get("fgheader") %} + {{app.session.get("appname")}} + {% else %} + Accueil + {% endif %} +