Add webapp packages
This commit is contained in:
		
							
								
								
									
										21
									
								
								.env
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								.env
									
									
									
									
									
								
							@@ -18,3 +18,24 @@
 | 
				
			|||||||
APP_ENV=dev
 | 
					APP_ENV=dev
 | 
				
			||||||
APP_SECRET=
 | 
					APP_SECRET=
 | 
				
			||||||
###< symfony/framework-bundle ###
 | 
					###< symfony/framework-bundle ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
 | 
				
			||||||
 | 
					# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_%kernel.environment%.db"
 | 
				
			||||||
 | 
					# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
 | 
				
			||||||
 | 
					# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
 | 
				
			||||||
 | 
					DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
 | 
				
			||||||
 | 
					###< doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> symfony/messenger ###
 | 
				
			||||||
 | 
					# Choose one of the transports below
 | 
				
			||||||
 | 
					# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
 | 
				
			||||||
 | 
					# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
 | 
				
			||||||
 | 
					MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
 | 
				
			||||||
 | 
					###< symfony/messenger ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> symfony/mailer ###
 | 
				
			||||||
 | 
					MAILER_DSN=null://null
 | 
				
			||||||
 | 
					###< symfony/mailer ###
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.env.test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.env.test
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					# define your env variables for the test env here
 | 
				
			||||||
 | 
					KERNEL_CLASS='App\Kernel'
 | 
				
			||||||
 | 
					APP_SECRET='$ecretf0rt3st'
 | 
				
			||||||
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -8,3 +8,13 @@
 | 
				
			|||||||
/var/
 | 
					/var/
 | 
				
			||||||
/vendor/
 | 
					/vendor/
 | 
				
			||||||
###< symfony/framework-bundle ###
 | 
					###< symfony/framework-bundle ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> phpunit/phpunit ###
 | 
				
			||||||
 | 
					/phpunit.xml
 | 
				
			||||||
 | 
					/.phpunit.cache/
 | 
				
			||||||
 | 
					###< phpunit/phpunit ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> symfony/asset-mapper ###
 | 
				
			||||||
 | 
					/public/assets/
 | 
				
			||||||
 | 
					/assets/vendor/
 | 
				
			||||||
 | 
					###< symfony/asset-mapper ###
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								assets/app.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								assets/app.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					import './bootstrap.js';
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Welcome to your app's main JavaScript file!
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This file will be included onto the page via the importmap() Twig function,
 | 
				
			||||||
 | 
					 * which should already be in your base.html.twig.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					import './styles/app.css';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.log('This log comes from assets/app.js - welcome to AssetMapper! 🎉');
 | 
				
			||||||
							
								
								
									
										5
									
								
								assets/bootstrap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								assets/bootstrap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					import { startStimulusApp } from '@symfony/stimulus-bundle';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const app = startStimulusApp();
 | 
				
			||||||
 | 
					// register any custom, 3rd party controllers here
 | 
				
			||||||
 | 
					// app.register('some_controller_name', SomeImportedController);
 | 
				
			||||||
							
								
								
									
										15
									
								
								assets/controllers.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								assets/controllers.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "controllers": {
 | 
				
			||||||
 | 
					        "@symfony/ux-turbo": {
 | 
				
			||||||
 | 
					            "turbo-core": {
 | 
				
			||||||
 | 
					                "enabled": true,
 | 
				
			||||||
 | 
					                "fetch": "eager"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "mercure-turbo-stream": {
 | 
				
			||||||
 | 
					                "enabled": false,
 | 
				
			||||||
 | 
					                "fetch": "eager"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "entrypoints": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										79
									
								
								assets/controllers/csrf_protection_controller.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								assets/controllers/csrf_protection_controller.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
				
			|||||||
 | 
					const nameCheck = /^[-_a-zA-Z0-9]{4,22}$/;
 | 
				
			||||||
 | 
					const tokenCheck = /^[-_/+a-zA-Z0-9]{24,}$/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Generate and double-submit a CSRF token in a form field and a cookie, as defined by Symfony's SameOriginCsrfTokenManager
 | 
				
			||||||
 | 
					document.addEventListener('submit', function (event) {
 | 
				
			||||||
 | 
					    generateCsrfToken(event.target);
 | 
				
			||||||
 | 
					}, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// When @hotwired/turbo handles form submissions, send the CSRF token in a header in addition to a cookie
 | 
				
			||||||
 | 
					// The `framework.csrf_protection.check_header` config option needs to be enabled for the header to be checked
 | 
				
			||||||
 | 
					document.addEventListener('turbo:submit-start', function (event) {
 | 
				
			||||||
 | 
					    const h = generateCsrfHeaders(event.detail.formSubmission.formElement);
 | 
				
			||||||
 | 
					    Object.keys(h).map(function (k) {
 | 
				
			||||||
 | 
					        event.detail.formSubmission.fetchRequest.headers[k] = h[k];
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// When @hotwired/turbo handles form submissions, remove the CSRF cookie once a form has been submitted
 | 
				
			||||||
 | 
					document.addEventListener('turbo:submit-end', function (event) {
 | 
				
			||||||
 | 
					    removeCsrfToken(event.detail.formSubmission.formElement);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function generateCsrfToken (formElement) {
 | 
				
			||||||
 | 
					    const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!csrfField) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value');
 | 
				
			||||||
 | 
					    let csrfToken = csrfField.value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!csrfCookie && nameCheck.test(csrfToken)) {
 | 
				
			||||||
 | 
					        csrfField.setAttribute('data-csrf-protection-cookie-value', csrfCookie = csrfToken);
 | 
				
			||||||
 | 
					        csrfField.defaultValue = csrfToken = btoa(String.fromCharCode.apply(null, (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(18))));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    csrfField.dispatchEvent(new Event('change', { bubbles: true }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (csrfCookie && tokenCheck.test(csrfToken)) {
 | 
				
			||||||
 | 
					        const cookie = csrfCookie + '_' + csrfToken + '=' + csrfCookie + '; path=/; samesite=strict';
 | 
				
			||||||
 | 
					        document.cookie = window.location.protocol === 'https:' ? '__Host-' + cookie + '; secure' : cookie;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function generateCsrfHeaders (formElement) {
 | 
				
			||||||
 | 
					    const headers = {};
 | 
				
			||||||
 | 
					    const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!csrfField) {
 | 
				
			||||||
 | 
					        return headers;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (tokenCheck.test(csrfField.value) && nameCheck.test(csrfCookie)) {
 | 
				
			||||||
 | 
					        headers[csrfCookie] = csrfField.value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return headers;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function removeCsrfToken (formElement) {
 | 
				
			||||||
 | 
					    const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!csrfField) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (tokenCheck.test(csrfField.value) && nameCheck.test(csrfCookie)) {
 | 
				
			||||||
 | 
					        const cookie = csrfCookie + '_' + csrfField.value + '=0; path=/; samesite=strict; max-age=0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        document.cookie = window.location.protocol === 'https:' ? '__Host-' + cookie + '; secure' : cookie;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* stimulusFetch: 'lazy' */
 | 
				
			||||||
 | 
					export default 'csrf-protection-controller';
 | 
				
			||||||
							
								
								
									
										16
									
								
								assets/controllers/hello_controller.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								assets/controllers/hello_controller.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					import { Controller } from '@hotwired/stimulus';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This is an example Stimulus controller!
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Any element with a data-controller="hello" attribute will cause
 | 
				
			||||||
 | 
					 * this controller to be executed. The name "hello" comes from the filename:
 | 
				
			||||||
 | 
					 * hello_controller.js -> "hello"
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Delete this file or adapt it for your use!
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export default class extends Controller {
 | 
				
			||||||
 | 
					    connect() {
 | 
				
			||||||
 | 
					        this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3
									
								
								assets/styles/app.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								assets/styles/app.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					body {
 | 
				
			||||||
 | 
					    background-color: skyblue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										23
									
								
								bin/phpunit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								bin/phpunit
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env php
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!ini_get('date.timezone')) {
 | 
				
			||||||
 | 
					    ini_set('date.timezone', 'UTC');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (is_file(dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit')) {
 | 
				
			||||||
 | 
					    if (PHP_VERSION_ID >= 80000) {
 | 
				
			||||||
 | 
					        require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit';
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__).'/vendor/autoload.php');
 | 
				
			||||||
 | 
					        require PHPUNIT_COMPOSER_INSTALL;
 | 
				
			||||||
 | 
					        PHPUnit\TextUI\Command::main();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					} else {
 | 
				
			||||||
 | 
					    if (!is_file(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php')) {
 | 
				
			||||||
 | 
					        echo "Unable to find the `simple-phpunit.php` script in `vendor/symfony/phpunit-bridge/bin/`.\n";
 | 
				
			||||||
 | 
					        exit(1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								compose.override.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								compose.override.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					###> doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					  database:
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - "5432"
 | 
				
			||||||
 | 
					###< doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###> symfony/mailer ###
 | 
				
			||||||
 | 
					  mailer:
 | 
				
			||||||
 | 
					    image: axllent/mailpit
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - "1025"
 | 
				
			||||||
 | 
					      - "8025"
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      MP_SMTP_AUTH_ACCEPT_ANY: 1
 | 
				
			||||||
 | 
					      MP_SMTP_AUTH_ALLOW_INSECURE: 1
 | 
				
			||||||
 | 
					###< symfony/mailer ###
 | 
				
			||||||
							
								
								
									
										25
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					###> doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					  database:
 | 
				
			||||||
 | 
					    image: postgres:${POSTGRES_VERSION:-16}-alpine
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      POSTGRES_DB: ${POSTGRES_DB:-app}
 | 
				
			||||||
 | 
					      # You should definitely change the password in production
 | 
				
			||||||
 | 
					      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
 | 
				
			||||||
 | 
					      POSTGRES_USER: ${POSTGRES_USER:-app}
 | 
				
			||||||
 | 
					    healthcheck:
 | 
				
			||||||
 | 
					      test: ["CMD", "pg_isready", "-d", "${POSTGRES_DB:-app}", "-U", "${POSTGRES_USER:-app}"]
 | 
				
			||||||
 | 
					      timeout: 5s
 | 
				
			||||||
 | 
					      retries: 5
 | 
				
			||||||
 | 
					      start_period: 60s
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - database_data:/var/lib/postgresql/data:rw
 | 
				
			||||||
 | 
					      # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
 | 
				
			||||||
 | 
					      # - ./docker/db/data:/var/lib/postgresql/data:rw
 | 
				
			||||||
 | 
					###< doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					volumes:
 | 
				
			||||||
 | 
					###> doctrine/doctrine-bundle ###
 | 
				
			||||||
 | 
					  database_data:
 | 
				
			||||||
 | 
					###< doctrine/doctrine-bundle ###
 | 
				
			||||||
@@ -7,14 +7,43 @@
 | 
				
			|||||||
        "php": ">=8.2",
 | 
					        "php": ">=8.2",
 | 
				
			||||||
        "ext-ctype": "*",
 | 
					        "ext-ctype": "*",
 | 
				
			||||||
        "ext-iconv": "*",
 | 
					        "ext-iconv": "*",
 | 
				
			||||||
 | 
					        "doctrine/dbal": "^3",
 | 
				
			||||||
 | 
					        "doctrine/doctrine-bundle": "^2.16",
 | 
				
			||||||
 | 
					        "doctrine/doctrine-migrations-bundle": "^3.4",
 | 
				
			||||||
 | 
					        "doctrine/orm": "^3.5",
 | 
				
			||||||
 | 
					        "phpdocumentor/reflection-docblock": "^5.6",
 | 
				
			||||||
 | 
					        "phpstan/phpdoc-parser": "^2.3",
 | 
				
			||||||
 | 
					        "symfony/asset": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/asset-mapper": "7.3.*",
 | 
				
			||||||
        "symfony/console": "7.3.*",
 | 
					        "symfony/console": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/doctrine-messenger": "7.3.*",
 | 
				
			||||||
        "symfony/dotenv": "7.3.*",
 | 
					        "symfony/dotenv": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/expression-language": "7.3.*",
 | 
				
			||||||
        "symfony/flex": "^2",
 | 
					        "symfony/flex": "^2",
 | 
				
			||||||
 | 
					        "symfony/form": "7.3.*",
 | 
				
			||||||
        "symfony/framework-bundle": "7.3.*",
 | 
					        "symfony/framework-bundle": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/http-client": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/intl": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/mailer": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/mime": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/monolog-bundle": "^3.0",
 | 
				
			||||||
 | 
					        "symfony/notifier": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/process": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/property-access": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/property-info": "7.3.*",
 | 
				
			||||||
        "symfony/runtime": "7.3.*",
 | 
					        "symfony/runtime": "7.3.*",
 | 
				
			||||||
        "symfony/yaml": "7.3.*"
 | 
					        "symfony/security-bundle": "7.3.*",
 | 
				
			||||||
    },
 | 
					        "symfony/serializer": "7.3.*",
 | 
				
			||||||
    "require-dev": {
 | 
					        "symfony/stimulus-bundle": "^2.30",
 | 
				
			||||||
 | 
					        "symfony/string": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/translation": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/twig-bundle": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/ux-turbo": "^2.30",
 | 
				
			||||||
 | 
					        "symfony/validator": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/web-link": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/yaml": "7.3.*",
 | 
				
			||||||
 | 
					        "twig/extra-bundle": "^2.12|^3.0",
 | 
				
			||||||
 | 
					        "twig/twig": "^2.12|^3.0"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "config": {
 | 
					    "config": {
 | 
				
			||||||
        "allow-plugins": {
 | 
					        "allow-plugins": {
 | 
				
			||||||
@@ -48,7 +77,8 @@
 | 
				
			|||||||
    "scripts": {
 | 
					    "scripts": {
 | 
				
			||||||
        "auto-scripts": {
 | 
					        "auto-scripts": {
 | 
				
			||||||
            "cache:clear": "symfony-cmd",
 | 
					            "cache:clear": "symfony-cmd",
 | 
				
			||||||
            "assets:install %PUBLIC_DIR%": "symfony-cmd"
 | 
					            "assets:install %PUBLIC_DIR%": "symfony-cmd",
 | 
				
			||||||
 | 
					            "importmap:install": "symfony-cmd"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "post-install-cmd": [
 | 
					        "post-install-cmd": [
 | 
				
			||||||
            "@auto-scripts"
 | 
					            "@auto-scripts"
 | 
				
			||||||
@@ -65,5 +95,14 @@
 | 
				
			|||||||
            "allow-contrib": false,
 | 
					            "allow-contrib": false,
 | 
				
			||||||
            "require": "7.3.*"
 | 
					            "require": "7.3.*"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "require-dev": {
 | 
				
			||||||
 | 
					        "phpunit/phpunit": "^12.3",
 | 
				
			||||||
 | 
					        "symfony/browser-kit": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/css-selector": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/debug-bundle": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/maker-bundle": "^1.0",
 | 
				
			||||||
 | 
					        "symfony/stopwatch": "7.3.*",
 | 
				
			||||||
 | 
					        "symfony/web-profiler-bundle": "7.3.*"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7434
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7434
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -2,4 +2,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
return [
 | 
					return [
 | 
				
			||||||
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
 | 
					    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
 | 
				
			||||||
 | 
					    Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\UX\Turbo\TurboBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
 | 
				
			||||||
 | 
					    Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								config/packages/asset_mapper.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								config/packages/asset_mapper.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    asset_mapper:
 | 
				
			||||||
 | 
					        # The paths to make available to the asset mapper.
 | 
				
			||||||
 | 
					        paths:
 | 
				
			||||||
 | 
					            - assets/
 | 
				
			||||||
 | 
					        missing_import_mode: strict
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@prod:
 | 
				
			||||||
 | 
					    framework:
 | 
				
			||||||
 | 
					        asset_mapper:
 | 
				
			||||||
 | 
					            missing_import_mode: warn
 | 
				
			||||||
							
								
								
									
										11
									
								
								config/packages/csrf.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								config/packages/csrf.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					# Enable stateless CSRF protection for forms and logins/logouts
 | 
				
			||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    form:
 | 
				
			||||||
 | 
					        csrf_protection:
 | 
				
			||||||
 | 
					            token_id: submit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    csrf_protection:
 | 
				
			||||||
 | 
					        stateless_token_ids:
 | 
				
			||||||
 | 
					            - submit
 | 
				
			||||||
 | 
					            - authenticate
 | 
				
			||||||
 | 
					            - logout
 | 
				
			||||||
							
								
								
									
										5
									
								
								config/packages/debug.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								config/packages/debug.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					when@dev:
 | 
				
			||||||
 | 
					    debug:
 | 
				
			||||||
 | 
					        # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
 | 
				
			||||||
 | 
					        # See the "server:dump" command to start a new server.
 | 
				
			||||||
 | 
					        dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
 | 
				
			||||||
							
								
								
									
										54
									
								
								config/packages/doctrine.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								config/packages/doctrine.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					doctrine:
 | 
				
			||||||
 | 
					    dbal:
 | 
				
			||||||
 | 
					        url: '%env(resolve:DATABASE_URL)%'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # IMPORTANT: You MUST configure your server version,
 | 
				
			||||||
 | 
					        # either here or in the DATABASE_URL env var (see .env file)
 | 
				
			||||||
 | 
					        #server_version: '16'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        profiling_collect_backtrace: '%kernel.debug%'
 | 
				
			||||||
 | 
					        use_savepoints: true
 | 
				
			||||||
 | 
					    orm:
 | 
				
			||||||
 | 
					        auto_generate_proxy_classes: true
 | 
				
			||||||
 | 
					        enable_lazy_ghost_objects: true
 | 
				
			||||||
 | 
					        report_fields_where_declared: true
 | 
				
			||||||
 | 
					        validate_xml_mapping: true
 | 
				
			||||||
 | 
					        naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
 | 
				
			||||||
 | 
					        identity_generation_preferences:
 | 
				
			||||||
 | 
					            Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
 | 
				
			||||||
 | 
					        auto_mapping: true
 | 
				
			||||||
 | 
					        mappings:
 | 
				
			||||||
 | 
					            App:
 | 
				
			||||||
 | 
					                type: attribute
 | 
				
			||||||
 | 
					                is_bundle: false
 | 
				
			||||||
 | 
					                dir: '%kernel.project_dir%/src/Entity'
 | 
				
			||||||
 | 
					                prefix: 'App\Entity'
 | 
				
			||||||
 | 
					                alias: App
 | 
				
			||||||
 | 
					        controller_resolver:
 | 
				
			||||||
 | 
					            auto_mapping: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    doctrine:
 | 
				
			||||||
 | 
					        dbal:
 | 
				
			||||||
 | 
					            # "TEST_TOKEN" is typically set by ParaTest
 | 
				
			||||||
 | 
					            dbname_suffix: '_test%env(default::TEST_TOKEN)%'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@prod:
 | 
				
			||||||
 | 
					    doctrine:
 | 
				
			||||||
 | 
					        orm:
 | 
				
			||||||
 | 
					            auto_generate_proxy_classes: false
 | 
				
			||||||
 | 
					            proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
 | 
				
			||||||
 | 
					            query_cache_driver:
 | 
				
			||||||
 | 
					                type: pool
 | 
				
			||||||
 | 
					                pool: doctrine.system_cache_pool
 | 
				
			||||||
 | 
					            result_cache_driver:
 | 
				
			||||||
 | 
					                type: pool
 | 
				
			||||||
 | 
					                pool: doctrine.result_cache_pool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    framework:
 | 
				
			||||||
 | 
					        cache:
 | 
				
			||||||
 | 
					            pools:
 | 
				
			||||||
 | 
					                doctrine.result_cache_pool:
 | 
				
			||||||
 | 
					                    adapter: cache.app
 | 
				
			||||||
 | 
					                doctrine.system_cache_pool:
 | 
				
			||||||
 | 
					                    adapter: cache.system
 | 
				
			||||||
							
								
								
									
										6
									
								
								config/packages/doctrine_migrations.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								config/packages/doctrine_migrations.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					doctrine_migrations:
 | 
				
			||||||
 | 
					    migrations_paths:
 | 
				
			||||||
 | 
					        # namespace is arbitrary but should be different from App\Migrations
 | 
				
			||||||
 | 
					        # as migrations classes should NOT be autoloaded
 | 
				
			||||||
 | 
					        'DoctrineMigrations': '%kernel.project_dir%/migrations'
 | 
				
			||||||
 | 
					    enable_profiler: false
 | 
				
			||||||
							
								
								
									
										3
									
								
								config/packages/mailer.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/packages/mailer.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    mailer:
 | 
				
			||||||
 | 
					        dsn: '%env(MAILER_DSN)%'
 | 
				
			||||||
							
								
								
									
										29
									
								
								config/packages/messenger.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								config/packages/messenger.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    messenger:
 | 
				
			||||||
 | 
					        failure_transport: failed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        transports:
 | 
				
			||||||
 | 
					            # https://symfony.com/doc/current/messenger.html#transport-configuration
 | 
				
			||||||
 | 
					            async:
 | 
				
			||||||
 | 
					                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
 | 
				
			||||||
 | 
					                options:
 | 
				
			||||||
 | 
					                    use_notify: true
 | 
				
			||||||
 | 
					                    check_delayed_interval: 60000
 | 
				
			||||||
 | 
					                retry_strategy:
 | 
				
			||||||
 | 
					                    max_retries: 3
 | 
				
			||||||
 | 
					                    multiplier: 2
 | 
				
			||||||
 | 
					            failed: 'doctrine://default?queue_name=failed'
 | 
				
			||||||
 | 
					            # sync: 'sync://'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        default_bus: messenger.bus.default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        buses:
 | 
				
			||||||
 | 
					            messenger.bus.default: []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        routing:
 | 
				
			||||||
 | 
					            Symfony\Component\Mailer\Messenger\SendEmailMessage: async
 | 
				
			||||||
 | 
					            Symfony\Component\Notifier\Message\ChatMessage: async
 | 
				
			||||||
 | 
					            Symfony\Component\Notifier\Message\SmsMessage: async
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # Route your messages to the transports
 | 
				
			||||||
 | 
					            # 'App\Message\YourMessage': async
 | 
				
			||||||
							
								
								
									
										62
									
								
								config/packages/monolog.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								config/packages/monolog.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					monolog:
 | 
				
			||||||
 | 
					    channels:
 | 
				
			||||||
 | 
					        - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@dev:
 | 
				
			||||||
 | 
					    monolog:
 | 
				
			||||||
 | 
					        handlers:
 | 
				
			||||||
 | 
					            main:
 | 
				
			||||||
 | 
					                type: stream
 | 
				
			||||||
 | 
					                path: "%kernel.logs_dir%/%kernel.environment%.log"
 | 
				
			||||||
 | 
					                level: debug
 | 
				
			||||||
 | 
					                channels: ["!event"]
 | 
				
			||||||
 | 
					            # uncomment to get logging in your browser
 | 
				
			||||||
 | 
					            # you may have to allow bigger header sizes in your Web server configuration
 | 
				
			||||||
 | 
					            #firephp:
 | 
				
			||||||
 | 
					            #    type: firephp
 | 
				
			||||||
 | 
					            #    level: info
 | 
				
			||||||
 | 
					            #chromephp:
 | 
				
			||||||
 | 
					            #    type: chromephp
 | 
				
			||||||
 | 
					            #    level: info
 | 
				
			||||||
 | 
					            console:
 | 
				
			||||||
 | 
					                type: console
 | 
				
			||||||
 | 
					                process_psr_3_messages: false
 | 
				
			||||||
 | 
					                channels: ["!event", "!doctrine", "!console"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    monolog:
 | 
				
			||||||
 | 
					        handlers:
 | 
				
			||||||
 | 
					            main:
 | 
				
			||||||
 | 
					                type: fingers_crossed
 | 
				
			||||||
 | 
					                action_level: error
 | 
				
			||||||
 | 
					                handler: nested
 | 
				
			||||||
 | 
					                excluded_http_codes: [404, 405]
 | 
				
			||||||
 | 
					                channels: ["!event"]
 | 
				
			||||||
 | 
					            nested:
 | 
				
			||||||
 | 
					                type: stream
 | 
				
			||||||
 | 
					                path: "%kernel.logs_dir%/%kernel.environment%.log"
 | 
				
			||||||
 | 
					                level: debug
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@prod:
 | 
				
			||||||
 | 
					    monolog:
 | 
				
			||||||
 | 
					        handlers:
 | 
				
			||||||
 | 
					            main:
 | 
				
			||||||
 | 
					                type: fingers_crossed
 | 
				
			||||||
 | 
					                action_level: error
 | 
				
			||||||
 | 
					                handler: nested
 | 
				
			||||||
 | 
					                excluded_http_codes: [404, 405]
 | 
				
			||||||
 | 
					                buffer_size: 50 # How many messages should be saved? Prevent memory leaks
 | 
				
			||||||
 | 
					            nested:
 | 
				
			||||||
 | 
					                type: stream
 | 
				
			||||||
 | 
					                path: php://stderr
 | 
				
			||||||
 | 
					                level: debug
 | 
				
			||||||
 | 
					                formatter: monolog.formatter.json
 | 
				
			||||||
 | 
					            console:
 | 
				
			||||||
 | 
					                type: console
 | 
				
			||||||
 | 
					                process_psr_3_messages: false
 | 
				
			||||||
 | 
					                channels: ["!event", "!doctrine"]
 | 
				
			||||||
 | 
					            deprecation:
 | 
				
			||||||
 | 
					                type: stream
 | 
				
			||||||
 | 
					                channels: [deprecation]
 | 
				
			||||||
 | 
					                path: php://stderr
 | 
				
			||||||
 | 
					                formatter: monolog.formatter.json
 | 
				
			||||||
							
								
								
									
										12
									
								
								config/packages/notifier.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								config/packages/notifier.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    notifier:
 | 
				
			||||||
 | 
					        chatter_transports:
 | 
				
			||||||
 | 
					        texter_transports:
 | 
				
			||||||
 | 
					        channel_policy:
 | 
				
			||||||
 | 
					            # use chat/slack, chat/telegram, sms/twilio or sms/nexmo
 | 
				
			||||||
 | 
					            urgent: ['email']
 | 
				
			||||||
 | 
					            high: ['email']
 | 
				
			||||||
 | 
					            medium: ['email']
 | 
				
			||||||
 | 
					            low: ['email']
 | 
				
			||||||
 | 
					        admin_recipients:
 | 
				
			||||||
 | 
					            - { email: admin@example.com }
 | 
				
			||||||
							
								
								
									
										3
									
								
								config/packages/property_info.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/packages/property_info.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    property_info:
 | 
				
			||||||
 | 
					        with_constructor_extractor: true
 | 
				
			||||||
							
								
								
									
										39
									
								
								config/packages/security.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								config/packages/security.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					security:
 | 
				
			||||||
 | 
					    # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
 | 
				
			||||||
 | 
					    password_hashers:
 | 
				
			||||||
 | 
					        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
 | 
				
			||||||
 | 
					    # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
 | 
				
			||||||
 | 
					    providers:
 | 
				
			||||||
 | 
					        users_in_memory: { memory: null }
 | 
				
			||||||
 | 
					    firewalls:
 | 
				
			||||||
 | 
					        dev:
 | 
				
			||||||
 | 
					            pattern: ^/(_(profiler|wdt)|css|images|js)/
 | 
				
			||||||
 | 
					            security: false
 | 
				
			||||||
 | 
					        main:
 | 
				
			||||||
 | 
					            lazy: true
 | 
				
			||||||
 | 
					            provider: users_in_memory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # activate different ways to authenticate
 | 
				
			||||||
 | 
					            # https://symfony.com/doc/current/security.html#the-firewall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # https://symfony.com/doc/current/security/impersonating_user.html
 | 
				
			||||||
 | 
					            # switch_user: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Easy way to control access for large sections of your site
 | 
				
			||||||
 | 
					    # Note: Only the *first* access control that matches will be used
 | 
				
			||||||
 | 
					    access_control:
 | 
				
			||||||
 | 
					        # - { path: ^/admin, roles: ROLE_ADMIN }
 | 
				
			||||||
 | 
					        # - { path: ^/profile, roles: ROLE_USER }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    security:
 | 
				
			||||||
 | 
					        password_hashers:
 | 
				
			||||||
 | 
					            # By default, password hashers are resource intensive and take time. This is
 | 
				
			||||||
 | 
					            # important to generate secure password hashes. In tests however, secure hashes
 | 
				
			||||||
 | 
					            # are not important, waste resources and increase test times. The following
 | 
				
			||||||
 | 
					            # reduces the work factor to the lowest possible values.
 | 
				
			||||||
 | 
					            Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
 | 
				
			||||||
 | 
					                algorithm: auto
 | 
				
			||||||
 | 
					                cost: 4 # Lowest possible value for bcrypt
 | 
				
			||||||
 | 
					                time_cost: 3 # Lowest possible value for argon
 | 
				
			||||||
 | 
					                memory_cost: 10 # Lowest possible value for argon
 | 
				
			||||||
							
								
								
									
										5
									
								
								config/packages/translation.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								config/packages/translation.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    default_locale: en
 | 
				
			||||||
 | 
					    translator:
 | 
				
			||||||
 | 
					        default_path: '%kernel.project_dir%/translations'
 | 
				
			||||||
 | 
					        providers:
 | 
				
			||||||
							
								
								
									
										6
									
								
								config/packages/twig.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								config/packages/twig.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					twig:
 | 
				
			||||||
 | 
					    file_name_pattern: '*.twig'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    twig:
 | 
				
			||||||
 | 
					        strict_variables: true
 | 
				
			||||||
							
								
								
									
										4
									
								
								config/packages/ux_turbo.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								config/packages/ux_turbo.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					# Enable stateless CSRF protection for forms and logins/logouts
 | 
				
			||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    csrf_protection:
 | 
				
			||||||
 | 
					        check_header: true
 | 
				
			||||||
							
								
								
									
										11
									
								
								config/packages/validator.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								config/packages/validator.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					framework:
 | 
				
			||||||
 | 
					    validation:
 | 
				
			||||||
 | 
					        # Enables validator auto-mapping support.
 | 
				
			||||||
 | 
					        # For instance, basic validation constraints will be inferred from Doctrine's metadata.
 | 
				
			||||||
 | 
					        #auto_mapping:
 | 
				
			||||||
 | 
					        #    App\Entity\: []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    framework:
 | 
				
			||||||
 | 
					        validation:
 | 
				
			||||||
 | 
					            not_compromised_password: false
 | 
				
			||||||
							
								
								
									
										13
									
								
								config/packages/web_profiler.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								config/packages/web_profiler.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					when@dev:
 | 
				
			||||||
 | 
					    web_profiler:
 | 
				
			||||||
 | 
					        toolbar: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    framework:
 | 
				
			||||||
 | 
					        profiler:
 | 
				
			||||||
 | 
					            collect_serializer_data: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					when@test:
 | 
				
			||||||
 | 
					    framework:
 | 
				
			||||||
 | 
					        profiler:
 | 
				
			||||||
 | 
					            collect: false
 | 
				
			||||||
 | 
					            collect_serializer_data: true
 | 
				
			||||||
							
								
								
									
										3
									
								
								config/routes/security.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								config/routes/security.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					_security_logout:
 | 
				
			||||||
 | 
					    resource: security.route_loader.logout
 | 
				
			||||||
 | 
					    type: service
 | 
				
			||||||
							
								
								
									
										8
									
								
								config/routes/web_profiler.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								config/routes/web_profiler.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					when@dev:
 | 
				
			||||||
 | 
					    web_profiler_wdt:
 | 
				
			||||||
 | 
					        resource: '@WebProfilerBundle/Resources/config/routing/wdt.php'
 | 
				
			||||||
 | 
					        prefix: /_wdt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    web_profiler_profiler:
 | 
				
			||||||
 | 
					        resource: '@WebProfilerBundle/Resources/config/routing/profiler.php'
 | 
				
			||||||
 | 
					        prefix: /_profiler
 | 
				
			||||||
							
								
								
									
										28
									
								
								importmap.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								importmap.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Returns the importmap for this application.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - "path" is a path inside the asset mapper system. Use the
 | 
				
			||||||
 | 
					 *     "debug:asset-map" command to see the full list of paths.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - "entrypoint" (JavaScript only) set to true for any module that will
 | 
				
			||||||
 | 
					 *     be used as an "entrypoint" (and passed to the importmap() Twig function).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The "importmap:require" command can be used to add new entries to this file.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					return [
 | 
				
			||||||
 | 
					    'app' => [
 | 
				
			||||||
 | 
					        'path' => './assets/app.js',
 | 
				
			||||||
 | 
					        'entrypoint' => true,
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    '@hotwired/stimulus' => [
 | 
				
			||||||
 | 
					        'version' => '3.2.2',
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    '@symfony/stimulus-bundle' => [
 | 
				
			||||||
 | 
					        'path' => './vendor/symfony/stimulus-bundle/assets/dist/loader.js',
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    '@hotwired/turbo' => [
 | 
				
			||||||
 | 
					        'version' => '7.3.0',
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
							
								
								
									
										0
									
								
								migrations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								migrations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										44
									
								
								phpunit.dist.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								phpunit.dist.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
 | 
				
			||||||
 | 
					<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
 | 
				
			||||||
 | 
					         colors="true"
 | 
				
			||||||
 | 
					         failOnDeprecation="true"
 | 
				
			||||||
 | 
					         failOnNotice="true"
 | 
				
			||||||
 | 
					         failOnWarning="true"
 | 
				
			||||||
 | 
					         bootstrap="tests/bootstrap.php"
 | 
				
			||||||
 | 
					         cacheDirectory=".phpunit.cache"
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					    <php>
 | 
				
			||||||
 | 
					        <ini name="display_errors" value="1" />
 | 
				
			||||||
 | 
					        <ini name="error_reporting" value="-1" />
 | 
				
			||||||
 | 
					        <server name="APP_ENV" value="test" force="true" />
 | 
				
			||||||
 | 
					        <server name="SHELL_VERBOSITY" value="-1" />
 | 
				
			||||||
 | 
					    </php>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <testsuites>
 | 
				
			||||||
 | 
					        <testsuite name="Project Test Suite">
 | 
				
			||||||
 | 
					            <directory>tests</directory>
 | 
				
			||||||
 | 
					        </testsuite>
 | 
				
			||||||
 | 
					    </testsuites>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <source ignoreSuppressionOfDeprecations="true"
 | 
				
			||||||
 | 
					            ignoreIndirectDeprecations="true"
 | 
				
			||||||
 | 
					            restrictNotices="true"
 | 
				
			||||||
 | 
					            restrictWarnings="true"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					        <include>
 | 
				
			||||||
 | 
					            <directory>src</directory>
 | 
				
			||||||
 | 
					        </include>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <deprecationTrigger>
 | 
				
			||||||
 | 
					            <method>Doctrine\Deprecations\Deprecation::trigger</method>
 | 
				
			||||||
 | 
					            <method>Doctrine\Deprecations\Deprecation::delegateTriggerToBackend</method>
 | 
				
			||||||
 | 
					            <function>trigger_deprecation</function>
 | 
				
			||||||
 | 
					        </deprecationTrigger>
 | 
				
			||||||
 | 
					    </source>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <extensions>
 | 
				
			||||||
 | 
					    </extensions>
 | 
				
			||||||
 | 
					</phpunit>
 | 
				
			||||||
							
								
								
									
										0
									
								
								src/Entity/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/Entity/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								src/Repository/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/Repository/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
								
								
									
										265
									
								
								symfony.lock
									
									
									
									
									
								
							
							
						
						
									
										265
									
								
								symfony.lock
									
									
									
									
									
								
							@@ -1,4 +1,70 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    "doctrine/deprecations": {
 | 
				
			||||||
 | 
					        "version": "1.1",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "1.0",
 | 
				
			||||||
 | 
					            "ref": "87424683adc81d7dc305eefec1fced883084aab9"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "doctrine/doctrine-bundle": {
 | 
				
			||||||
 | 
					        "version": "2.16",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "2.13",
 | 
				
			||||||
 | 
					            "ref": "620b57f496f2e599a6015a9fa222c2ee0a32adcb"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/doctrine.yaml",
 | 
				
			||||||
 | 
					            "src/Entity/.gitignore",
 | 
				
			||||||
 | 
					            "src/Repository/.gitignore"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "doctrine/doctrine-migrations-bundle": {
 | 
				
			||||||
 | 
					        "version": "3.4",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "3.1",
 | 
				
			||||||
 | 
					            "ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/doctrine_migrations.yaml",
 | 
				
			||||||
 | 
					            "migrations/.gitignore"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "phpunit/phpunit": {
 | 
				
			||||||
 | 
					        "version": "12.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "11.1",
 | 
				
			||||||
 | 
					            "ref": "c6658a60fc9d594805370eacdf542c3d6b5c0869"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            ".env.test",
 | 
				
			||||||
 | 
					            "phpunit.dist.xml",
 | 
				
			||||||
 | 
					            "tests/bootstrap.php",
 | 
				
			||||||
 | 
					            "bin/phpunit"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/asset-mapper": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "6.4",
 | 
				
			||||||
 | 
					            "ref": "5ad1308aa756d58f999ffbe1540d1189f5d7d14a"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "assets/app.js",
 | 
				
			||||||
 | 
					            "assets/styles/app.css",
 | 
				
			||||||
 | 
					            "config/packages/asset_mapper.yaml",
 | 
				
			||||||
 | 
					            "importmap.php"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "symfony/console": {
 | 
					    "symfony/console": {
 | 
				
			||||||
        "version": "7.3",
 | 
					        "version": "7.3",
 | 
				
			||||||
        "recipe": {
 | 
					        "recipe": {
 | 
				
			||||||
@@ -11,6 +77,18 @@
 | 
				
			|||||||
            "bin/console"
 | 
					            "bin/console"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/debug-bundle": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "5.3",
 | 
				
			||||||
 | 
					            "ref": "5aa8aa48234c8eb6dbdd7b3cd5d791485d2cec4b"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/debug.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "symfony/flex": {
 | 
					    "symfony/flex": {
 | 
				
			||||||
        "version": "2.8",
 | 
					        "version": "2.8",
 | 
				
			||||||
        "recipe": {
 | 
					        "recipe": {
 | 
				
			||||||
@@ -24,6 +102,18 @@
 | 
				
			|||||||
            ".env.dev"
 | 
					            ".env.dev"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/form": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "7.2",
 | 
				
			||||||
 | 
					            "ref": "7d86a6723f4a623f59e2bf966b6aad2fc461d36b"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/csrf.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "symfony/framework-bundle": {
 | 
					    "symfony/framework-bundle": {
 | 
				
			||||||
        "version": "7.3",
 | 
					        "version": "7.3",
 | 
				
			||||||
        "recipe": {
 | 
					        "recipe": {
 | 
				
			||||||
@@ -44,6 +134,75 @@
 | 
				
			|||||||
            ".editorconfig"
 | 
					            ".editorconfig"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/mailer": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "4.3",
 | 
				
			||||||
 | 
					            "ref": "09051cfde49476e3c12cd3a0e44289ace1c75a4f"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/mailer.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/maker-bundle": {
 | 
				
			||||||
 | 
					        "version": "1.64",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "1.0",
 | 
				
			||||||
 | 
					            "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/messenger": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "6.0",
 | 
				
			||||||
 | 
					            "ref": "ba1ac4e919baba5644d31b57a3284d6ba12d52ee"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/messenger.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/monolog-bundle": {
 | 
				
			||||||
 | 
					        "version": "3.10",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "3.7",
 | 
				
			||||||
 | 
					            "ref": "aff23899c4440dd995907613c1dd709b6f59503f"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/monolog.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/notifier": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "5.0",
 | 
				
			||||||
 | 
					            "ref": "178877daf79d2dbd62129dd03612cb1a2cb407cc"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/notifier.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/property-info": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "7.3",
 | 
				
			||||||
 | 
					            "ref": "dae70df71978ae9226ae915ffd5fad817f5ca1f7"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/property_info.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "symfony/routing": {
 | 
					    "symfony/routing": {
 | 
				
			||||||
        "version": "7.3",
 | 
					        "version": "7.3",
 | 
				
			||||||
        "recipe": {
 | 
					        "recipe": {
 | 
				
			||||||
@@ -56,5 +215,111 @@
 | 
				
			|||||||
            "config/packages/routing.yaml",
 | 
					            "config/packages/routing.yaml",
 | 
				
			||||||
            "config/routes.yaml"
 | 
					            "config/routes.yaml"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/security-bundle": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "6.4",
 | 
				
			||||||
 | 
					            "ref": "2ae08430db28c8eb4476605894296c82a642028f"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/security.yaml",
 | 
				
			||||||
 | 
					            "config/routes/security.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/stimulus-bundle": {
 | 
				
			||||||
 | 
					        "version": "2.30",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "2.20",
 | 
				
			||||||
 | 
					            "ref": "c30f782a8910ae9f12e7a1399db607d172d23da6"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "assets/bootstrap.js",
 | 
				
			||||||
 | 
					            "assets/controllers.json",
 | 
				
			||||||
 | 
					            "assets/controllers/csrf_protection_controller.js",
 | 
				
			||||||
 | 
					            "assets/controllers/hello_controller.js"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/translation": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "6.3",
 | 
				
			||||||
 | 
					            "ref": "620a1b84865ceb2ba304c8f8bf2a185fbf32a843"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/translation.yaml",
 | 
				
			||||||
 | 
					            "translations/.gitignore"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/twig-bundle": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "6.4",
 | 
				
			||||||
 | 
					            "ref": "cab5fd2a13a45c266d45a7d9337e28dee6272877"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/twig.yaml",
 | 
				
			||||||
 | 
					            "templates/base.html.twig"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/ux-turbo": {
 | 
				
			||||||
 | 
					        "version": "2.30",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "2.20",
 | 
				
			||||||
 | 
					            "ref": "287f7c6eb6e9b65e422d34c00795b360a787380b"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/ux_turbo.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/validator": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "7.0",
 | 
				
			||||||
 | 
					            "ref": "8c1c4e28d26a124b0bb273f537ca8ce443472bfd"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/validator.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/web-profiler-bundle": {
 | 
				
			||||||
 | 
					        "version": "7.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "7.3",
 | 
				
			||||||
 | 
					            "ref": "a363460c1b0b4a4d0242f2ce1a843ca0f6ac9026"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/web_profiler.yaml",
 | 
				
			||||||
 | 
					            "config/routes/web_profiler.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "symfony/webapp-pack": {
 | 
				
			||||||
 | 
					        "version": "1.3",
 | 
				
			||||||
 | 
					        "recipe": {
 | 
				
			||||||
 | 
					            "repo": "github.com/symfony/recipes",
 | 
				
			||||||
 | 
					            "branch": "main",
 | 
				
			||||||
 | 
					            "version": "1.0",
 | 
				
			||||||
 | 
					            "ref": "7d5c5e282f7e2c36a2c3bbb1504f78456c352407"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "files": [
 | 
				
			||||||
 | 
					            "config/packages/messenger.yaml"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "twig/extra-bundle": {
 | 
				
			||||||
 | 
					        "version": "v3.21.0"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								templates/base.html.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								templates/base.html.twig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					    <head>
 | 
				
			||||||
 | 
					        <meta charset="UTF-8">
 | 
				
			||||||
 | 
					        <title>{% block title %}Welcome!{% endblock %}</title>
 | 
				
			||||||
 | 
					        <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
 | 
				
			||||||
 | 
					        {% block stylesheets %}
 | 
				
			||||||
 | 
					        {% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        {% block javascripts %}
 | 
				
			||||||
 | 
					            {% block importmap %}{{ importmap('app') }}{% endblock %}
 | 
				
			||||||
 | 
					        {% endblock %}
 | 
				
			||||||
 | 
					    </head>
 | 
				
			||||||
 | 
					    <body>
 | 
				
			||||||
 | 
					        {% block body %}{% endblock %}
 | 
				
			||||||
 | 
					    </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										13
									
								
								tests/bootstrap.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/bootstrap.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Symfony\Component\Dotenv\Dotenv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require dirname(__DIR__).'/vendor/autoload.php';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (method_exists(Dotenv::class, 'bootEnv')) {
 | 
				
			||||||
 | 
					    (new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ($_SERVER['APP_DEBUG']) {
 | 
				
			||||||
 | 
					    umask(0000);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										0
									
								
								translations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								translations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
		Reference in New Issue
	
	Block a user