Update framework to version 6.3

This commit is contained in:
Jeroen De Meerleer 2023-06-27 12:15:30 +02:00
parent de9b9380c2
commit ec1b3313a2
Signed by: JeroenED
GPG Key ID: 28CCCB8F62BFADD6
16 changed files with 927 additions and 820 deletions

View File

@ -11,25 +11,25 @@
"ext-openssl": "*",
"ext-pcntl": "*",
"ext-posix": "*",
"doctrine/doctrine-bundle": "^2.9",
"doctrine/doctrine-bundle": "^2.10",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.14",
"guzzlehttp/guzzle": "^7.5",
"doctrine/orm": "^2.15",
"guzzlehttp/guzzle": "^7.7",
"phpseclib/phpseclib": "^3.0",
"scienta/doctrine-json-functions": "^5.2",
"symfony/console": "^6.2",
"symfony/crowdin-translation-provider": "^6.2",
"symfony/dotenv": "^6.2",
"symfony/flex": "^2.2",
"symfony/framework-bundle": "^6.2",
"symfony/mailer": "^6.2",
"symfony/proxy-manager-bridge": "^6.2",
"symfony/runtime": "^6.2",
"symfony/security-bundle": "^6.2",
"symfony/translation": "^6.2",
"symfony/twig-bundle": "^6.2",
"symfony/webpack-encore-bundle": "^v1.16",
"symfony/yaml": "^6.2"
"scienta/doctrine-json-functions": "^5.3",
"symfony/console": "^6.3",
"symfony/crowdin-translation-provider": "^6.3",
"symfony/dotenv": "^6.3",
"symfony/flex": "^2.3",
"symfony/framework-bundle": "^6.3",
"symfony/mailer": "^6.3",
"symfony/proxy-manager-bridge": "^6.3",
"symfony/runtime": "^6.3",
"symfony/security-bundle": "^6.3",
"symfony/translation": "^6.3",
"symfony/twig-bundle": "^6.3",
"symfony/webpack-encore-bundle": "^v2.0",
"symfony/yaml": "^6.3"
},
"config": {
"allow-plugins": {
@ -83,10 +83,10 @@
}
},
"require-dev": {
"symfony/debug-bundle": "^6.2",
"symfony/maker-bundle": "^v1.48",
"symfony/monolog-bundle": "^3.8",
"symfony/stopwatch": "^6.2",
"symfony/web-profiler-bundle": "^6.2"
"symfony/debug-bundle": "^6.3",
"symfony/maker-bundle": "^1.48",
"symfony/monolog-bundle": "^3.0",
"symfony/stopwatch": "^6.3",
"symfony/web-profiler-bundle": "^6.3"
}
}

1425
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -4,9 +4,12 @@ doctrine:
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '13'
#server_version: '15'
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
auto_mapping: true
dql:
@ -29,6 +32,7 @@ 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

View File

@ -3,4 +3,4 @@ doctrine_migrations:
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
'DoctrineMigrations': '%kernel.project_dir%/migrations'
enable_profiler: '%kernel.debug%'
enable_profiler: false

View File

@ -3,6 +3,7 @@ framework:
secret: '%env(APP_SECRET)%'
#csrf_protection: true
http_method_override: false
handle_all_throwables: true
# Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support.

View File

@ -1,5 +1,4 @@
security:
enable_authenticator_manager: true
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'

View File

@ -4,7 +4,9 @@ when@dev:
intercept_redirects: false
framework:
profiler: { only_exceptions: false }
profiler:
only_exceptions: false
collect_serializer_data: true
when@test:
web_profiler:

View File

@ -25,14 +25,10 @@ webpack_encore:
# If you have multiple builds:
# builds:
# pass "frontend" as the 3rg arg to the Twig functions
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
# frontend: '%kernel.project_dir%/public/frontend/build'
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
# Put in config/packages/prod/webpack_encore.yaml
# cache: true
# pass the build name as the 3rd argument to the Twig functions
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
framework:
assets:

View File

@ -1,82 +1,5 @@
default:
path: '/'
controller: App\Controller\UserController::loginAction
login_check:
path: '/login_check'
logout:
path: '/logout'
health:
path: '/health'
controller: App\Controller\SiteController::healthAction
favicon:
path: '/favicon.ico'
controller: App\Controller\SiteController::faviconAction
settings:
path: '/{_locale}/settings'
methods: [ 'GET' ]
controller: App\Controller\UserController::settingsAction
settings_save:
path: '/{_locale}/settings'
methods: [ 'POST' ]
controller: App\Controller\UserController::settingsSaveAction
default_locale:
path: '/{_locale}'
controller: App\Controller\UserController::loginAction
login:
path: '/{_locale}/login'
controller: App\Controller\UserController::loginAction
webhook:
path: '/hook/{id}/{token}'
controller: App\Controller\JobController::hookAction
requirements:
id: \d+
token: '[A-Za-z0-9]+'
job_index:
path: '/{_locale}/job'
controller: App\Controller\JobController::defaultAction
job_view:
path: '/{_locale}/job/{id}/{all}'
methods: [ 'GET' ]
controller: App\Controller\JobController::jobAction
defaults:
all: false
requirements:
id: \d+
all: (all|)
job_delete:
path: '/{_locale}/job/{id}'
methods: [ 'DELETE' ]
controller: App\Controller\JobController::jobAction
requirements:
id: \d+
job_edit:
path: '/{_locale}/job/{id}/edit'
controller: App\Controller\JobController::editAction
requirements:
id: \d+
job_run:
path: '/{_locale}/job/{id}/run/{timestamp}'
controller: App\Controller\JobController::runAction
requirements:
id: \d+
timestamp: \d+
defaults:
timestamp: 0
job_add:
path: '/{_locale}/job/add'
controller: App\Controller\JobController::addAction
controllers:
resource:
path: ../src/Controller/
namespace: App\Controller
type: attribute

View File

@ -13,14 +13,19 @@
"moment": "^2.29"
},
"devDependencies": {
"@symfony/webpack-encore": "^4.3",
"core-js": "^3.30",
"sass": "^1.62",
"sass-loader": "^13.2"
"@babel/core": "^7.17.0",
"@babel/preset-env": "^7.16.0",
"@symfony/webpack-encore": "^4.0.0",
"core-js": "^3.23.0",
"regenerator-runtime": "^0.13.9",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0",
"webpack-notifier": "^1.15.0"
},
"scripts": {
"dev-server": "encore dev-server",
"dev": "encore dev",
"watch": "encore dev --watch",
"build-dev": "encore dev",
"build": "encore prod"
"build": "encore production --progress"
}
}

View File

@ -11,10 +11,12 @@ use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class JobController extends AbstractController
{
#[Route('/{_locale}/job', name: 'job_index')]
public function defaultAction(ManagerRegistry $doctrine): Response
{
$jobRepo = $doctrine->getRepository(Job::class);
@ -22,23 +24,27 @@ class JobController extends AbstractController
return $this->render('job/index.html.twig', ['jobs' => $jobs]);
}
public function jobAction(Request $request, ManagerRegistry $doctrine, int $id, mixed $all = false): Response
#[Route('/{_locale}/job/{id}/{all}', name: 'job_view', methods: ['GET'], defaults: [ 'all' => false ], requirements: ['id' => '\d+', 'all' => '(all|)'])]
public function viewAction(Request $request, ManagerRegistry $doctrine, int $id, mixed $all = false): Response
{
$jobRepo = $doctrine->getRepository(Job::class);
$runRepo = $doctrine->getRepository(Run::class);
if($request->getMethod() == 'GET') {
$job = $jobRepo->find($id);
$runs = $runRepo->getRunsForJob($job, $all != 'all');
return $this->render('job/view.html.twig', ['job' => $job, 'runs' => $runs, 'allruns' => $all == 'all']);
} elseif($request->getMethod() == 'DELETE') {
$success = $jobRepo->deleteJob($id);
$this->addFlash('success', 'job.index.flashes.jobdeleted');
return new JsonResponse(['return_path' => $this->GenerateUrl('job_index')]);
}
return new JsonResponse(['success'=>false, 'message' => 'Your request is invalid'], Response::HTTP_BAD_REQUEST);
$job = $jobRepo->find($id);
$runs = $runRepo->getRunsForJob($job, $all != 'all');
return $this->render('job/view.html.twig', ['job' => $job, 'runs' => $runs, 'allruns' => $all == 'all']);
}
#[Route('/{_locale}/job/{id}', name: 'job_delete', methods: ['DELETE'], defaults: [ 'all' => false ], requirements: ['id' => '\d+', 'all' => '(all|)'])]
public function deleteAction(Request $request, ManagerRegistry $doctrine, int $id, mixed $all = false): Response
{
$jobRepo = $doctrine->getRepository(Job::class);
$success = $jobRepo->deleteJob($id);
$this->addFlash('success', 'job.index.flashes.jobdeleted');
return new JsonResponse(['return_path' => $this->GenerateUrl('job_index')]);
}
#[Route('/{_locale}/job/{id}/edit', name: 'job_edit', requirements: ['id' => '\d+'])]
public function editAction(Request $request, ManagerRegistry $doctrine, int $id): Response
{
if($request->getMethod() == 'GET') {
@ -61,6 +67,7 @@ class JobController extends AbstractController
return new JsonResponse(['success'=>false, 'message' => 'Your request is invalid'], Response::HTTP_BAD_REQUEST);
}
#[Route('/{_locale}/job/add', name: 'job_add')]
public function addAction(Request $request, ManagerRegistry $doctrine): Response
{
if($request->getMethod() == 'GET') {
@ -80,7 +87,7 @@ class JobController extends AbstractController
return new Response('Not implemented yet', Response::HTTP_TOO_EARLY);
}
}
#[Route('/{_locale}/job/{id}/run/{timestamp}', name: 'job_run', defaults: ['timestamp' => 0 ], requirements: ['id' => '\d+', 'timestamp' => '\d+'])]
public function runAction(Request $request, ManagerRegistry $doctrine, TranslatorInterface $translator, int $id, int $timestamp): JsonResponse
{
if($request->getMethod() == 'GET') {
@ -112,6 +119,7 @@ class JobController extends AbstractController
return new JsonResponse(['success'=>false, 'message' => 'Your request is invalid'], Response::HTTP_BAD_REQUEST);
}
#[Route('/hook/{id}/{token}', name: 'webhook', requirements: ['id' => '\d+', 'token' => '[A-Za-z0-9]+'])]
public function hookAction(Request $request, ManagerRegistry $doctrine, int $id, string $token)
{
$jobRepo = $doctrine->getRepository(Job::class);

View File

@ -10,10 +10,12 @@ use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\Annotation\Route;
class SiteController extends AbstractController
{
#[Route('/health', name: 'health')]
public function healthAction(Request $request, ManagerRegistry $doctrine, KernelInterface $kernel)
{
$em = $doctrine->getManager();
@ -28,6 +30,7 @@ class SiteController extends AbstractController
return new JsonResponse($return, $return['DaemonRunning'] ? 200 : 500);
}
#[Route('/favicon.ico', name: 'favicon')]
public function faviconAction(Request $request)
{
return new Response('', 200);

View File

@ -11,10 +11,13 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class UserController extends AbstractController
{
#[Route('/', name: 'default')]
public function loginAction(Request $request, AuthenticationUtils $authenticationUtils): Response
{
if($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
@ -42,13 +45,14 @@ class UserController extends AbstractController
]);
}
#[Route('/{_locale}/settings', name: 'settings', methods: ['GET'])]
public function settingsAction(Request $request)
{
$params['locales'] = $this->getParameter('enabled_locales');
$params['user'] = $this->getUser();
return $this->render('settings.html.twig', $params);
}
#[Route('/{_locale}/settings', name: 'settings_save', methods: ['POST'])]
public function settingsSaveAction(Request $request, ManagerRegistry $em, UserPasswordHasherInterface $passwordHasher)
{
$session = $request->getSession();
@ -94,12 +98,14 @@ class UserController extends AbstractController
return $this->redirect($this->generateUrl($route, ['_locale' => $locale]));
}
#[Route('/logout', name: 'logout')]
public function logoutAction(): void
{
// controller can be blank: it will never be called!
throw new \Exception('Don\'t forget to activate logout in security.yaml');
}
#[Route('/login_check', name: 'login_check')]
public function loginCheckAction(): void
{

View File

@ -24,12 +24,12 @@
"version": "v0.5.3"
},
"doctrine/doctrine-bundle": {
"version": "2.6",
"version": "2.10",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "2.4",
"ref": "ddddd8249dd55bbda16fa7a45bb7499ef6f8e90e"
"branch": "main",
"version": "2.10",
"ref": "f0d8c9a4da17815830aac0d63e153a940ae176bb"
},
"files": [
"config/packages/doctrine.yaml",
@ -41,9 +41,9 @@
"version": "3.2",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"branch": "main",
"version": "3.1",
"ref": "ee609429c9ee23e22d6fa5728211768f51ed2818"
"ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33"
},
"files": [
"config/packages/doctrine_migrations.yaml",
@ -104,18 +104,6 @@
"paragonie/random_compat": {
"version": "v9.99.100"
},
"pentatrion/vite-bundle": {
"version": "1.2",
"recipe": {
"repo": "github.com/symfony/recipes-contrib",
"branch": "main",
"version": "1.0",
"ref": "33d48a1c831b2d29641175c8320e66a9f1c9911f"
},
"files": [
"config/routes/dev/pentatrion_vite.yaml"
]
},
"phpseclib/phpseclib": {
"version": "3.0.14"
},
@ -168,12 +156,12 @@
]
},
"symfony/crowdin-translation-provider": {
"version": "6.1",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "8acdcff2acee247e79f16ed0b2abc8fd53cf0d30"
"ref": "9f5f1508bc80ed56c8a3ae7febc53a8aa982e424"
}
},
"symfony/debug-bundle": {
@ -216,24 +204,24 @@
"version": "v6.0.3"
},
"symfony/flex": {
"version": "2.1",
"version": "2.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"branch": "main",
"version": "1.0",
"ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e"
"ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
},
"files": [
".env"
]
},
"symfony/framework-bundle": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "5.4",
"ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb"
"branch": "main",
"version": "6.2",
"ref": "af47254c5e4cd543e6af3e4508298ffebbdaddd3"
},
"files": [
"config/packages/cache.yaml",
@ -259,12 +247,12 @@
"version": "v6.0.7"
},
"symfony/mailer": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"branch": "main",
"version": "4.3",
"ref": "97a61eabb351d7f6cb7702039bcfe07fe9d7e03c"
"ref": "2bf89438209656b85b9a49238c4467bff1b1f939"
},
"files": [
"config/packages/mailer.yaml"
@ -325,12 +313,12 @@
"version": "v6.0.6"
},
"symfony/routing": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "6.0",
"ref": "eb3b377a4dc07006c4bdb2c773652cc9434f5246"
"branch": "main",
"version": "6.2",
"ref": "e0a11b4ccb8c9e70b574ff5ad3dfdcd41dec5aa6"
},
"files": [
"config/packages/routing.yaml",
@ -341,12 +329,12 @@
"version": "v6.0.7"
},
"symfony/security-bundle": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "5.3",
"ref": "98f1f2b0d635908c2b40f3675da2d23b1a069d30"
"branch": "main",
"version": "6.0",
"ref": "8a5b112826f7d3d5b07027f93786ae11a1c7de48"
},
"files": [
"config/packages/security.yaml"
@ -390,12 +378,12 @@
"version": "v6.0.7"
},
"symfony/twig-bundle": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "5.4",
"ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387"
"branch": "main",
"version": "6.3",
"ref": "b7772eb20e92f3fb4d4fe756e7505b4ba2ca1a2c"
},
"files": [
"config/packages/twig.yaml",
@ -409,12 +397,12 @@
"version": "v6.0.7"
},
"symfony/web-profiler-bundle": {
"version": "6.0",
"version": "6.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "5.3",
"ref": "24bbc3d84ef2f427f82104f766014e799eefcc3e"
"branch": "main",
"version": "6.1",
"ref": "e42b3f0177df239add25373083a564e5ead4e13a"
},
"files": [
"config/packages/web_profiler.yaml",
@ -422,18 +410,15 @@
]
},
"symfony/webpack-encore-bundle": {
"version": "1.15",
"version": "2.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.10",
"ref": "2e458cc7e6f1df1dad890eb104b81e4f302c9bd4"
"version": "2.0",
"ref": "13ebe04e25085e2ff0bcb0f9218b561d8b5089f3"
},
"files": [
"assets/app.js",
"assets/bootstrap.js",
"assets/controllers.json",
"assets/controllers/hello_controller.js",
"assets/styles/app.css",
"config/packages/webpack_encore.yaml",
"package.json",

View File

@ -1,8 +1,8 @@
<!doctype html>
<!DOCTYPE html>
<html class="h-100">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ "title" | trans }} :: {% block title %}{% endblock %}</title>
{% block styles %}{% endblock %}
@ -39,5 +39,4 @@
{% block extrahtml %}{% endblock %}
{{ include('footer.html.twig') }}
</body>
</html>
</html>

View File

@ -11,7 +11,7 @@ Encore
.setOutputPath('public/build/')
// public path used by the web server to access the output path
.setPublicPath('/build')
// only needed for CDN's or sub-directory deploy
// only needed for CDN's or subdirectory deploy
//.setManifestKeyPrefix('build/')
/*
@ -47,14 +47,15 @@ Encore
// enables hashed filenames (e.g. app.abc123.css)
.enableVersioning(Encore.isProduction())
.configureBabel((config) => {
config.plugins.push('@babel/plugin-proposal-class-properties');
})
// configure Babel
// .configureBabel((config) => {
// config.plugins.push('@babel/a-babel-plugin');
// })
// enables @babel/preset-env polyfills
// enables and configure @babel/preset-env polyfills
.configureBabelPresetEnv((config) => {
config.useBuiltIns = 'usage';
config.corejs = 3;
config.corejs = '3.23';
})
// enables Sass/SCSS support