From a0f3830e70b29be5830b37de0800ab151045f4c3 Mon Sep 17 00:00:00 2001 From: eddsaura Date: Thu, 13 Oct 2022 16:57:09 +0200 Subject: [PATCH 01/52] Release 1.2.1 (#664) --- CHANGELOG.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e931f9be..6dc7760fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,76 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [1.2.0](https://github.com/Stooa/Stooa/compare/1.1.0...1.2.0) +## [1.2.1](https://github.com/Stooa/Stooa/compare/1.2.0...1.2.1) ### Merged +- Update psalm [`#663`](https://github.com/Stooa/Stooa/pull/663) +- [Feature] Change hostnow flow [`#660`](https://github.com/Stooa/Stooa/pull/660) +- Update dependency friendsofphp/php-cs-fixer to v3.12.0 [`#662`](https://github.com/Stooa/Stooa/pull/662) +- Update symfony packages to v6.1.6 [`#661`](https://github.com/Stooa/Stooa/pull/661) +- Update dependency sonata-project/user-bundle to v5.4.0 [`#659`](https://github.com/Stooa/Stooa/pull/659) +- Update dependency api-platform/core to v2.7.2 [`#658`](https://github.com/Stooa/Stooa/pull/658) +- Update dependency doctrine/orm to v2.13.3 [`#657`](https://github.com/Stooa/Stooa/pull/657) +- Update dependency phpstan/phpstan to v1.8.8 [`#655`](https://github.com/Stooa/Stooa/pull/655) +- Update phpstan [`#653`](https://github.com/Stooa/Stooa/pull/653) +- Update dependency symfony/maker-bundle to v1.47.0 [`#652`](https://github.com/Stooa/Stooa/pull/652) +- Update dependency symfonycasts/reset-password-bundle to v1.16.0 [`#645`](https://github.com/Stooa/Stooa/pull/645) +- Update dependency doctrine/orm to v2.13.2 [`#578`](https://github.com/Stooa/Stooa/pull/578) +- Update sonata-project [`#642`](https://github.com/Stooa/Stooa/pull/642) +- Update symfony packages to v6.1.5 [`#641`](https://github.com/Stooa/Stooa/pull/641) +- Update dependency api-platform/core to v2.7.1 [`#640`](https://github.com/Stooa/Stooa/pull/640) +- Update dependency rector/rector to v0.14.5 [`#638`](https://github.com/Stooa/Stooa/pull/638) +- Update dependency phpstan/phpstan-doctrine to v1.3.15 [`#637`](https://github.com/Stooa/Stooa/pull/637) +- Update dependency zenstruck/foundry to v1.22.1 [`#639`](https://github.com/Stooa/Stooa/pull/639) +- Update dependency twig/twig to v3.4.3 [SECURITY] [`#636`](https://github.com/Stooa/Stooa/pull/636) +- Fix Wrong name as registered user after guest login [`#634`](https://github.com/Stooa/Stooa/pull/634) +- Update eslint [`#632`](https://github.com/Stooa/Stooa/pull/632) +- Update dependency @faker-js/faker to v7.5.0 [`#596`](https://github.com/Stooa/Stooa/pull/596) +- Update dependency symfonycasts/reset-password-bundle to v1.15.0 [`#614`](https://github.com/Stooa/Stooa/pull/614) +- Update nginx Docker tag to v1.23 [`#620`](https://github.com/Stooa/Stooa/pull/620) +- Update dependency @svgr/webpack to v6.3.1 [`#597`](https://github.com/Stooa/Stooa/pull/597) +- Update dependency symfony/maker-bundle to v1.46.0 [`#627`](https://github.com/Stooa/Stooa/pull/627) +- Update dependency phpunit/phpunit to v9.5.25 [`#626`](https://github.com/Stooa/Stooa/pull/626) +- Update dependency @cypress/code-coverage to v3.10.0 [`#529`](https://github.com/Stooa/Stooa/pull/529) +- Update dependency next to v12.2.5 [`#525`](https://github.com/Stooa/Stooa/pull/525) +- Update dependency @types/node to v16.11.59 [`#513`](https://github.com/Stooa/Stooa/pull/513) +- Update dependency gsap to v3.11.1 [`#378`](https://github.com/Stooa/Stooa/pull/378) +- Update sonata-project [`#619`](https://github.com/Stooa/Stooa/pull/619) +- Update dependency api-platform/core to v2.7.0 [`#618`](https://github.com/Stooa/Stooa/pull/618) +- Update dependency @testing-library/cypress to v8.0.3 [`#512`](https://github.com/Stooa/Stooa/pull/512) +- update lock [`#616`](https://github.com/Stooa/Stooa/pull/616) +- Update Node.js to v18.9 [`#595`](https://github.com/Stooa/Stooa/pull/595) +- Update dependency ramsey/uuid to v4.5.1 [`#613`](https://github.com/Stooa/Stooa/pull/613) +- Update sonata-project [`#611`](https://github.com/Stooa/Stooa/pull/611) +- Update dependency symfony/maker-bundle to v1.45.0 [`#610`](https://github.com/Stooa/Stooa/pull/610) +- Update dependency gedmo/doctrine-extensions to v3.9.0 [`#609`](https://github.com/Stooa/Stooa/pull/609) +- Update dependency vimeo/psalm to v4.27.0 [`#607`](https://github.com/Stooa/Stooa/pull/607) +- Update dependency zenstruck/foundry to v1.22.0 [`#608`](https://github.com/Stooa/Stooa/pull/608) +- Update symfony packages [`#585`](https://github.com/Stooa/Stooa/pull/585) +- Update phpstan [`#604`](https://github.com/Stooa/Stooa/pull/604) +- Translations update from Hosted Weblate [`#581`](https://github.com/Stooa/Stooa/pull/581) +- Remove before unload to confirm to test better options [`#606`](https://github.com/Stooa/Stooa/pull/606) + +### Commits + +- Update dependency next to v12.2.6 [`617a6af`](https://github.com/Stooa/Stooa/commit/617a6af15d84065d7951f4e16db6fde0b487f64e) +- Update dependency @apollo/client to v3.6.10 [`df981ce`](https://github.com/Stooa/Stooa/commit/df981ced56806b19628240fc9e0e1f8ed7504eae) +- Update dependency styled-components to v5.3.6 [`fcffee3`](https://github.com/Stooa/Stooa/commit/fcffee3f1d9d915c64dbd05500abbe1763ceef74) +- Update dependency rector/rector to v0.14.3 [`69367c3`](https://github.com/Stooa/Stooa/commit/69367c3655b4efb7705066ca02bccdc2054df8c8) +- Update dependency phpstan/phpstan to v1.8.7 [`a69a8bd`](https://github.com/Stooa/Stooa/commit/a69a8bd7654ff014bea21c63355dfc2a77694227) +- Update dependency gsap to v3.11.3 [`ba00e01`](https://github.com/Stooa/Stooa/commit/ba00e015b235d521dd47fa7509d2f23397050a0e) +- Update dependency @types/node to v16.11.64 [`d8f58be`](https://github.com/Stooa/Stooa/commit/d8f58be69edffc53168b8751f46279247dcfb26f) +- Update dependency gsap to v3.11.2 [`05e78ba`](https://github.com/Stooa/Stooa/commit/05e78ba22c1d3e45efe759e06ee6a2fbd8e5c31e) +- Update dependency @types/node to v16.11.62 [`e608393`](https://github.com/Stooa/Stooa/commit/e608393d32f3f514d56e5b4bfc0e359db724b9b3) +- Update dependency phpstan/phpstan to v1.8.6 [`fc1ef0b`](https://github.com/Stooa/Stooa/commit/fc1ef0b61aa276ec5f0125d36587e87e0fad5c78) +- Update dependency webonyx/graphql-php to v14.11.8 [`2f9c7ed`](https://github.com/Stooa/Stooa/commit/2f9c7edad5eede4ef56e60903e804f3ad720a76a) + +## [1.2.0](https://github.com/Stooa/Stooa/compare/1.1.0...1.2.0) - 2022-09-22 + +### Merged + +- Release 1.2.0 [`#603`](https://github.com/Stooa/Stooa/pull/603) - Fix selected fishbowl dependency array [`#601`](https://github.com/Stooa/Stooa/pull/601) - Enable Xdebug on demand [`#599`](https://github.com/Stooa/Stooa/pull/599) - [Hotfix] - Edit private fishbowl [`#598`](https://github.com/Stooa/Stooa/pull/598) diff --git a/package.json b/package.json index 5d0ac9b1d..3bf46c2c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "title": "Stooa", - "version": "1.2.0", + "version": "1.2.1", "devDependencies": { "auto-changelog": "2.4.0" }, From 22b2c4f49eb18c9c4b4227b15db893c9e2daf89b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Oct 2022 09:10:18 +0200 Subject: [PATCH 02/52] Update dependency phpstan/phpstan to v1.8.9 (#665) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 0c1ca268b..70568c314 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,7 +59,7 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.12.0", - "phpstan/phpstan": "1.8.8", + "phpstan/phpstan": "1.8.9", "phpstan/phpstan-doctrine": "1.3.16", "phpstan/phpstan-phpunit": "1.1.1", "phpstan/phpstan-symfony": "1.2.14", diff --git a/backend/composer.lock b/backend/composer.lock index e2fdde095..ef35f4bb2 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cfb86cdd5d459c2e8b16234441632d63", + "content-hash": "383ec596cbce6e655d7f4416bbfda507", "packages": [ { "name": "api-platform/core", @@ -3350,16 +3350,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.8", + "version": "1.8.9", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "08310ce271984587e2a4cda94e1ac66510a6ea07" + "reference": "3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/08310ce271984587e2a4cda94e1ac66510a6ea07", - "reference": "08310ce271984587e2a4cda94e1ac66510a6ea07", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2", + "reference": "3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2", "shasum": "" }, "require": { @@ -3389,7 +3389,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.8" + "source": "https://github.com/phpstan/phpstan/tree/1.8.9" }, "funding": [ { @@ -3405,7 +3405,7 @@ "type": "tidelift" } ], - "time": "2022-10-06T12:51:57+00:00" + "time": "2022-10-13T13:40:18+00:00" }, { "name": "psr/cache", From 6335d853903ba60302fed5e5b4909571edbd914a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 09:38:22 +0200 Subject: [PATCH 03/52] Update dependency rector/rector to v0.14.6 (#666) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 70568c314..452698c6e 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -18,7 +18,7 @@ "paragonie/halite": "5.1.0", "ramsey/uuid": "4.5.1", "ramsey/uuid-doctrine": "1.8.1", - "rector/rector": "0.14.5", + "rector/rector": "0.14.6", "sonata-project/admin-bundle": "4.19.0", "sonata-project/doctrine-extensions": "2.0.1", "sonata-project/doctrine-orm-admin-bundle": "4.8.0", diff --git a/backend/composer.lock b/backend/composer.lock index ef35f4bb2..82aa46a51 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "383ec596cbce6e655d7f4416bbfda507", + "content-hash": "eb0cac13a0cf2b237de57b16ff07839c", "packages": [ { "name": "api-platform/core", @@ -3907,25 +3907,25 @@ }, { "name": "rector/rector", - "version": "0.14.5", + "version": "0.14.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f7fd87b2435835f481e6a94ee28e09af412bd3cc" + "reference": "e61574288661334155de6e5f0f45497285abad5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7fd87b2435835f481e6a94ee28e09af412bd3cc", - "reference": "f7fd87b2435835f481e6a94ee28e09af412bd3cc", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/e61574288661334155de6e5f0f45497285abad5d", + "reference": "e61574288661334155de6e5f0f45497285abad5d", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.8.6" + "phpstan/phpstan": "^1.8.7" }, "conflict": { - "rector/rector-cakephp": "*", "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", "rector/rector-laravel": "*", "rector/rector-php-parser": "*", "rector/rector-phpoffice": "*", @@ -3953,7 +3953,7 @@ "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.14.5" + "source": "https://github.com/rectorphp/rector/tree/0.14.6" }, "funding": [ { @@ -3961,7 +3961,7 @@ "type": "github" } ], - "time": "2022-09-29T11:05:42+00:00" + "time": "2022-10-15T22:58:22+00:00" }, { "name": "sonata-project/admin-bundle", From 45e4cd6d8dde626764d81f4dc85851a212268dcf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Oct 2022 18:19:41 +0200 Subject: [PATCH 04/52] Update phpstan (#667) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 4 ++-- backend/composer.lock | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 452698c6e..34ed3993b 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,8 +59,8 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.12.0", - "phpstan/phpstan": "1.8.9", - "phpstan/phpstan-doctrine": "1.3.16", + "phpstan/phpstan": "1.8.10", + "phpstan/phpstan-doctrine": "1.3.18", "phpstan/phpstan-phpunit": "1.1.1", "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", diff --git a/backend/composer.lock b/backend/composer.lock index 82aa46a51..b452c0c58 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "eb0cac13a0cf2b237de57b16ff07839c", + "content-hash": "9cf3e62ac9943c9bb61788999d54a4e6", "packages": [ { "name": "api-platform/core", @@ -3350,16 +3350,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.9", + "version": "1.8.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2" + "reference": "0c4459dc42c568b818b3f25186589f3acddc1823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2", - "reference": "3a72d9d9f2528fbd50c2d8fcf155fd9f74ade3f2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0c4459dc42c568b818b3f25186589f3acddc1823", + "reference": "0c4459dc42c568b818b3f25186589f3acddc1823", "shasum": "" }, "require": { @@ -3389,7 +3389,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.9" + "source": "https://github.com/phpstan/phpstan/tree/1.8.10" }, "funding": [ { @@ -3405,7 +3405,7 @@ "type": "tidelift" } ], - "time": "2022-10-13T13:40:18+00:00" + "time": "2022-10-17T14:23:35+00:00" }, { "name": "psr/cache", @@ -12493,16 +12493,16 @@ }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.16", + "version": "1.3.18", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "2d1ddae7ef9a6263ba708538ef7d0fbe362e6e25" + "reference": "b30c243c786428b4b72a8ef48e465e2ae20a6061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/2d1ddae7ef9a6263ba708538ef7d0fbe362e6e25", - "reference": "2d1ddae7ef9a6263ba708538ef7d0fbe362e6e25", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/b30c243c786428b4b72a8ef48e465e2ae20a6061", + "reference": "b30c243c786428b4b72a8ef48e465e2ae20a6061", "shasum": "" }, "require": { @@ -12556,9 +12556,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.16" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.18" }, - "time": "2022-10-05T08:47:34+00:00" + "time": "2022-10-17T14:03:44+00:00" }, { "name": "phpstan/phpstan-phpunit", From 3cea265d4570bb42715cf5a1b339627e634d218d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 08:44:06 +0200 Subject: [PATCH 05/52] Update dependency @faker-js/faker to v7.6.0 (#669) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1d3ef5354..9dda55a51 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -43,7 +43,7 @@ }, "devDependencies": { "@cypress/code-coverage": "3.10.0", - "@faker-js/faker": "7.5.0", + "@faker-js/faker": "7.6.0", "@runroom/design-tokens": "2.0.2", "@svgr/webpack": "6.3.1", "@testing-library/cypress": "8.0.3", @@ -2242,9 +2242,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.5.0.tgz", - "integrity": "sha512-8wNUCCUHvfvI0gQpDUho/3gPzABffnCn5um65F8dzQ86zz6dlt4+nmAA7PQUc8L+eH+9RgR/qzy5N/8kN0Ozdw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true, "engines": { "node": ">=14.0.0", @@ -17602,9 +17602,9 @@ } }, "@faker-js/faker": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.5.0.tgz", - "integrity": "sha512-8wNUCCUHvfvI0gQpDUho/3gPzABffnCn5um65F8dzQ86zz6dlt4+nmAA7PQUc8L+eH+9RgR/qzy5N/8kN0Ozdw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz", + "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==", "dev": true }, "@graphql-typed-document-node/core": { diff --git a/frontend/package.json b/frontend/package.json index ad3fa0aa0..94d20db88 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -61,7 +61,7 @@ }, "devDependencies": { "@cypress/code-coverage": "3.10.0", - "@faker-js/faker": "7.5.0", + "@faker-js/faker": "7.6.0", "@runroom/design-tokens": "2.0.2", "@svgr/webpack": "6.3.1", "@testing-library/cypress": "8.0.3", From 0a58343d5425a833eec5e5ef7bd21a89fb146b74 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 09:09:34 +0200 Subject: [PATCH 06/52] Update eslint (#670) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 338 ++++++++++++++++++------------------- frontend/package.json | 4 +- 2 files changed, 170 insertions(+), 172 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9dda55a51..d22c9b0d9 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -53,12 +53,12 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.38.1", + "@typescript-eslint/eslint-plugin": "5.40.1", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.24.0", + "eslint": "8.25.0", "eslint-config-next": "12.3.1", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", @@ -2174,9 +2174,9 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "node_modules/@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2273,16 +2273,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3755,6 +3745,12 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "node_modules/@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "dev": true + }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", @@ -3829,14 +3825,14 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", - "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", + "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/type-utils": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -3861,13 +3857,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3878,9 +3874,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3891,12 +3887,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -3908,9 +3904,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3967,13 +3963,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", - "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", + "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3994,9 +3990,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4007,13 +4003,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4034,12 +4030,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4071,9 +4067,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4161,17 +4157,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", - "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", + "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4185,13 +4183,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4202,9 +4200,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4215,13 +4213,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4242,12 +4240,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4279,9 +4277,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7474,14 +7472,13 @@ } }, "node_modules/eslint": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.2", + "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -17553,9 +17550,9 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -17624,12 +17621,6 @@ "minimatch": "^3.0.4" } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true - }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -18725,6 +18716,12 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, + "@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "dev": true + }, "@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", @@ -18799,14 +18796,14 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", - "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", + "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/type-utils": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -18815,35 +18812,35 @@ }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" } }, "@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18874,31 +18871,31 @@ } }, "@typescript-eslint/type-utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", - "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", + "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -18907,12 +18904,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -18931,9 +18928,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18988,43 +18985,45 @@ } }, "@typescript-eslint/utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", - "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", + "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" } }, "@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -19033,12 +19032,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -19057,9 +19056,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -21686,14 +21685,13 @@ } }, "eslint": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.2", + "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 94d20db88..028e55566 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,12 +71,12 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.38.1", + "@typescript-eslint/eslint-plugin": "5.40.1", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.24.0", + "eslint": "8.25.0", "eslint-config-next": "12.3.1", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", From 4bc5b0b071e22c05bea15d92ea2b09afc9707312 Mon Sep 17 00:00:00 2001 From: Aitor Errasti Date: Fri, 21 Oct 2022 14:48:53 +0200 Subject: [PATCH 07/52] Split backend code (#671) * create folders * wip * refactor config * wip * wip * wip * Fix services.yaml * Fix security --- backend/config/fishbowl.yaml | 8 +-- backend/config/packages/api_platform.yaml | 5 +- backend/config/packages/doctrine.yaml | 14 +++-- .../packages/gesdinet_jwt_refresh_token.yaml | 2 +- backend/config/packages/reset_password.yaml | 2 +- backend/config/packages/security.yaml | 4 +- backend/config/packages/sonata_admin.yaml | 8 +-- backend/config/packages/sonata_user.yaml | 2 +- backend/config/packages/workflow.yaml | 2 +- backend/config/routes/sonata_user.yaml | 2 +- backend/config/services.yaml | 56 ++++++++++--------- backend/src/{ => Core}/Admin/GuestAdmin.php | 4 +- .../src/{ => Core}/Admin/ParticipantAdmin.php | 5 +- .../Admin/ResetPasswordRequestAdmin.php | 4 +- backend/src/{ => Core}/Admin/UserAdmin.php | 8 +-- .../DataFixtures/DefaultFixtures.php | 10 ++-- .../DataPersister/UserDataPersister.php | 8 +-- .../ChangePasswordDataTransformer.php | 8 +-- .../ChangePasswordLoggedDataTransformer.php | 6 +- .../Encryption/HalitePasswordEncryption.php | 2 +- .../PasswordEncryptionInterface.php | 2 +- backend/src/{ => Core}/Entity/Guest.php | 2 +- backend/src/{ => Core}/Entity/Participant.php | 5 +- .../src/{ => Core}/Entity/RefreshToken.php | 2 +- .../Entity/ResetPasswordRequest.php | 4 +- .../src/{ => Core}/Entity/SonataUserUser.php | 2 +- backend/src/{ => Core}/Entity/User.php | 13 +++-- .../EventSubscriber/JWTCreatedSubscriber.php | 6 +- .../EventSubscriber/LocaleSubscriber.php | 2 +- ...nslateJWTAuthenticationFailureResponse.php | 2 +- .../Extension/FishbowlListExtension.php | 6 +- .../src/{ => Core}/Factory/GuestFactory.php | 4 +- .../{ => Core}/Factory/ParticipantFactory.php | 4 +- .../Factory/SonataUserUserFactory.php | 4 +- .../src/{ => Core}/Factory/UserFactory.php | 4 +- .../{ => Core}/JWT/CurrentUserFishbowl.php | 4 +- .../src/{ => Core}/JWT/CurrentUserRoom.php | 4 +- backend/src/{ => Core}/JWT/HostValidator.php | 6 +- backend/src/{ => Core}/JWT/Model/JWTToken.php | 8 +-- .../JWT/Model/Payload/FeaturesPayload.php | 2 +- .../JWT/Model/Payload/HeaderPayload.php | 2 +- .../JWT/Model/Payload/PayloadInterface.php | 2 +- .../JWT/Model/Payload/UserPayload.php | 4 +- .../JWT/TokenGenerator/JaasTokenGenerator.php | 14 ++--- .../SelfHostedTokenGenerator.php | 10 ++-- .../TokenGeneratorInterface.php | 6 +- .../{ => Core}/Model/ChangePasswordInput.php | 4 +- .../Model/ChangePasswordLoggedInput.php | 2 +- .../src/{ => Core}/Model/ResetPassword.php | 4 +- .../src/{ => Core}/OpenApi/OpenApiFactory.php | 2 +- .../{ => Core}/Repository/GuestRepository.php | 4 +- .../Repository/ParticipantRepository.php | 10 ++-- .../ResetPasswordRequestRepository.php | 6 +- .../{ => Core}/Repository/UserRepository.php | 4 +- .../Resolver/ResetPasswordResolver.php | 8 +-- .../src/{ => Core}/Resolver/UserResolver.php | 4 +- .../Security/PasswordEncoderService.php | 4 +- .../src/{ => Core}/Service/MailerService.php | 9 +-- .../Constraints/SameUserPassword.php | 2 +- .../Constraints/SameUserPasswordValidator.php | 8 +-- .../Constraints/ValidResetPasswordToken.php | 2 +- .../ValidResetPasswordTokenValidator.php | 2 +- .../{ => Fishbowl}/Admin/FishbowlAdmin.php | 6 +- .../Controller/FishbowlController.php | 6 +- .../DataPersister/FishbowlDataPersister.php | 6 +- .../DataProvider/FishbowlDataProvider.php | 6 +- .../src/{ => Fishbowl}/Entity/Fishbowl.php | 26 +++++---- .../FishbowlDoctrineSubscriber.php | 4 +- ...shbowlIntroduceAndNoIntroRunSubscriber.php | 4 +- .../FishbowlPasswordDoctrineSubscriber.php | 6 +- .../EventSubscriber/FishbowlSubscriber.php | 8 +-- .../FishbowlTransitionsSubscriber.php | 6 +- .../FishbowlWorkflowSubscriber.php | 4 +- .../Factory/FishbowlFactory.php | 4 +- .../Repository/FishbowlRepository.php | 4 +- .../Resolver/FishbowlCreatorResolver.php | 8 +-- .../FishbowlFinishMutationResolver.php | 6 +- .../FishbowlIntroduceMutationResolver.php | 6 +- .../FishbowlNoIntroRunMutationResolver.php | 6 +- .../Resolver/FishbowlResolver.php | 8 +-- .../Resolver/FishbowlRunMutationResolver.php | 6 +- .../Service/FishbowlService.php | 18 +++--- .../Service/PrivateFishbowlService.php | 8 +-- .../Stage/FishbowlValidateStage.php | 8 +-- .../Validator/Constraints/FutureFishbowl.php | 2 +- .../Constraints/FutureFishbowlValidator.php | 4 +- .../Validator/Constraints/PrivateFishbowl.php | 2 +- .../Constraints/PrivateFishbowlValidator.php | 4 +- backend/src/Kernel.php | 6 +- .../Functional/FishbowlListFunctionalTest.php | 8 +-- .../FishbowlWorkflowFunctionalTest.php | 8 +-- .../Functional/GetFishbowlFunctionalTest.php | 6 +- .../tests/Functional/LoginFunctionalTest.php | 2 +- .../Functional/RefreshTokenFunctionalTest.php | 6 +- .../UpdateFishbowlFunctionalTest.php | 8 +-- .../Integration/FishbowlRepositoryTest.php | 6 +- .../Integration/ParticipantRepositoryTest.php | 12 ++-- .../Controller/FishbowlControllerTest.php | 6 +- .../Unit/FishbowlDoctrineSubscriberTest.php | 6 +- ...wlIntroduceAndNoIntroRunSubscriberTest.php | 6 +- .../tests/Unit/FishbowlListExtensionTest.php | 6 +- backend/tests/Unit/FishbowlServiceTest.php | 16 +++--- .../FishbowlTransitionsSubscriberTest.php | 8 +-- .../Unit/FishbowlWorkflowSubscriberTest.php | 6 +- .../Unit/JWT/CurrentUserFishbowlTest.php | 12 ++-- .../tests/Unit/JWT/CurrentUserRoomTest.php | 8 +-- backend/tests/Unit/JWT/HostValidatorTest.php | 12 ++-- .../Unit/JWT/JWTCreatedSubscriberTest.php | 15 +++-- .../tests/Unit/JWT/JaasTokenGeneratorTest.php | 16 +++--- .../Unit/JWT/SelfHostedTokenGeneratorTest.php | 12 ++-- backend/tests/Unit/LocaleSubscriberTest.php | 2 +- backend/tests/Unit/MailServiceTest.php | 10 ++-- .../tests/Unit/PrivateFishbowlServiceTest.php | 8 +-- .../Resolver/FishbowlCreatorResolverTest.php | 10 ++-- .../Unit/Resolver/FishbowlResolverTest.php | 8 +-- .../PrivateFishbowlValidatorTest.php | 6 +- .../Unit/WorkflowMutationResolverTest.php | 14 ++--- 117 files changed, 399 insertions(+), 385 deletions(-) rename backend/src/{ => Core}/Admin/GuestAdmin.php (96%) rename backend/src/{ => Core}/Admin/ParticipantAdmin.php (96%) rename backend/src/{ => Core}/Admin/ResetPasswordRequestAdmin.php (95%) rename backend/src/{ => Core}/Admin/UserAdmin.php (96%) rename backend/src/{ => Core}/DataFixtures/DefaultFixtures.php (90%) rename backend/src/{ => Core}/DataPersister/UserDataPersister.php (93%) rename backend/src/{ => Core}/DataTransformer/ChangePasswordDataTransformer.php (91%) rename backend/src/{ => Core}/DataTransformer/ChangePasswordLoggedDataTransformer.php (92%) rename backend/src/{ => Core}/Encryption/HalitePasswordEncryption.php (97%) rename backend/src/{ => Core}/Encryption/PasswordEncryptionInterface.php (93%) rename backend/src/{ => Core}/Entity/Guest.php (98%) rename backend/src/{ => Core}/Entity/Participant.php (96%) rename backend/src/{ => Core}/Entity/RefreshToken.php (94%) rename backend/src/{ => Core}/Entity/ResetPasswordRequest.php (94%) rename backend/src/{ => Core}/Entity/SonataUserUser.php (95%) rename backend/src/{ => Core}/Entity/User.php (97%) rename backend/src/{ => Core}/EventSubscriber/JWTCreatedSubscriber.php (91%) rename backend/src/{ => Core}/EventSubscriber/LocaleSubscriber.php (97%) rename backend/src/{ => Core}/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php (97%) rename backend/src/{ => Core}/Extension/FishbowlListExtension.php (94%) rename backend/src/{ => Core}/Factory/GuestFactory.php (92%) rename backend/src/{ => Core}/Factory/ParticipantFactory.php (91%) rename backend/src/{ => Core}/Factory/SonataUserUserFactory.php (92%) rename backend/src/{ => Core}/Factory/UserFactory.php (95%) rename backend/src/{ => Core}/JWT/CurrentUserFishbowl.php (94%) rename backend/src/{ => Core}/JWT/CurrentUserRoom.php (94%) rename backend/src/{ => Core}/JWT/HostValidator.php (90%) rename backend/src/{ => Core}/JWT/Model/JWTToken.php (90%) rename backend/src/{ => Core}/JWT/Model/Payload/FeaturesPayload.php (96%) rename backend/src/{ => Core}/JWT/Model/Payload/HeaderPayload.php (94%) rename backend/src/{ => Core}/JWT/Model/Payload/PayloadInterface.php (92%) rename backend/src/{ => Core}/JWT/Model/Payload/UserPayload.php (95%) rename backend/src/{ => Core}/JWT/TokenGenerator/JaasTokenGenerator.php (78%) rename backend/src/{ => Core}/JWT/TokenGenerator/SelfHostedTokenGenerator.php (79%) rename backend/src/{ => Core}/JWT/TokenGenerator/TokenGeneratorInterface.php (77%) rename backend/src/{ => Core}/Model/ChangePasswordInput.php (94%) rename backend/src/{ => Core}/Model/ChangePasswordLoggedInput.php (98%) rename backend/src/{ => Core}/Model/ResetPassword.php (96%) rename backend/src/{ => Core}/OpenApi/OpenApiFactory.php (99%) rename backend/src/{ => Core}/Repository/GuestRepository.php (91%) rename backend/src/{ => Core}/Repository/ParticipantRepository.php (94%) rename backend/src/{ => Core}/Repository/ResetPasswordRequestRepository.php (95%) rename backend/src/{ => Core}/Repository/UserRepository.php (97%) rename backend/src/{ => Core}/Resolver/ResetPasswordResolver.php (92%) rename backend/src/{ => Core}/Resolver/UserResolver.php (95%) rename backend/src/{ => Core}/Security/PasswordEncoderService.php (93%) rename backend/src/{ => Core}/Service/MailerService.php (96%) rename backend/src/{ => Core}/Validator/Constraints/SameUserPassword.php (92%) rename backend/src/{ => Core}/Validator/Constraints/SameUserPasswordValidator.php (92%) rename backend/src/{ => Core}/Validator/Constraints/ValidResetPasswordToken.php (90%) rename backend/src/{ => Core}/Validator/Constraints/ValidResetPasswordTokenValidator.php (96%) rename backend/src/{ => Fishbowl}/Admin/FishbowlAdmin.php (98%) rename backend/src/{ => Fishbowl}/Controller/FishbowlController.php (91%) rename backend/src/{ => Fishbowl}/DataPersister/FishbowlDataPersister.php (93%) rename backend/src/{ => Fishbowl}/DataProvider/FishbowlDataProvider.php (93%) rename backend/src/{ => Fishbowl}/Entity/Fishbowl.php (95%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlDoctrineSubscriber.php (93%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php (94%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php (92%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlSubscriber.php (91%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlTransitionsSubscriber.php (94%) rename backend/src/{ => Fishbowl}/EventSubscriber/FishbowlWorkflowSubscriber.php (93%) rename backend/src/{ => Fishbowl}/Factory/FishbowlFactory.php (94%) rename backend/src/{ => Fishbowl}/Repository/FishbowlRepository.php (93%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlCreatorResolver.php (90%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlFinishMutationResolver.php (91%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlIntroduceMutationResolver.php (91%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlNoIntroRunMutationResolver.php (91%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlResolver.php (88%) rename backend/src/{ => Fishbowl}/Resolver/FishbowlRunMutationResolver.php (91%) rename backend/src/{ => Fishbowl}/Service/FishbowlService.php (95%) rename backend/src/{ => Fishbowl}/Service/PrivateFishbowlService.php (91%) rename backend/src/{ => Fishbowl}/Stage/FishbowlValidateStage.php (90%) rename backend/src/{ => Fishbowl}/Validator/Constraints/FutureFishbowl.php (91%) rename backend/src/{ => Fishbowl}/Validator/Constraints/FutureFishbowlValidator.php (94%) rename backend/src/{ => Fishbowl}/Validator/Constraints/PrivateFishbowl.php (92%) rename backend/src/{ => Fishbowl}/Validator/Constraints/PrivateFishbowlValidator.php (94%) diff --git a/backend/config/fishbowl.yaml b/backend/config/fishbowl.yaml index e90a1af25..325cf54cf 100644 --- a/backend/config/fishbowl.yaml +++ b/backend/config/fishbowl.yaml @@ -7,20 +7,20 @@ app.fishbowl.ready: path: /fishbowl-status/{slug} - controller: App\Controller\FishbowlController::status + controller: App\Fishbowl\Controller\FishbowlController::status methods: [GET] app.fishbowl.participants: path: /fishbowl-participants/{slug} - controller: App\Controller\FishbowlController::participants + controller: App\Fishbowl\Controller\FishbowlController::participants methods: [GET] app.fishbowl.ping: path: /ping/{slug} - controller: App\Controller\FishbowlController::ping + controller: App\Fishbowl\Controller\FishbowlController::ping methods: [POST] app.fishbowl.private: path: /private-password/{slug} - controller: App\Controller\FishbowlController::private + controller: App\Fishbowl\Controller\FishbowlController::private methods: [POST] diff --git a/backend/config/packages/api_platform.yaml b/backend/config/packages/api_platform.yaml index 2c398c3db..19972d994 100644 --- a/backend/config/packages/api_platform.yaml +++ b/backend/config/packages/api_platform.yaml @@ -10,8 +10,9 @@ api_platform: enable_docs: false mapping: paths: - - '%kernel.project_dir%/src/Entity' - - '%kernel.project_dir%/src/Model' + - '%kernel.project_dir%/src/Core/Entity' + - '%kernel.project_dir%/src/Fishbowl/Entity' + - '%kernel.project_dir%/src/Core/Model' patch_formats: json: ['application/merge-patch+json'] graphql: diff --git a/backend/config/packages/doctrine.yaml b/backend/config/packages/doctrine.yaml index e59abd30b..27a7b2aeb 100644 --- a/backend/config/packages/doctrine.yaml +++ b/backend/config/packages/doctrine.yaml @@ -15,9 +15,15 @@ doctrine: naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware auto_mapping: true mappings: - App: + App\Core: is_bundle: false type: annotation - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App + dir: '%kernel.project_dir%/src/Core/Entity' + prefix: 'App\Core\Entity' + alias: App\Core + App\Fishbowl: + is_bundle: false + type: annotation + dir: '%kernel.project_dir%/src/Fishbowl/Entity' + prefix: 'App\Fishbowl\Entity' + alias: App\Fishbowl diff --git a/backend/config/packages/gesdinet_jwt_refresh_token.yaml b/backend/config/packages/gesdinet_jwt_refresh_token.yaml index 0ffabe34a..87311eb96 100644 --- a/backend/config/packages/gesdinet_jwt_refresh_token.yaml +++ b/backend/config/packages/gesdinet_jwt_refresh_token.yaml @@ -6,4 +6,4 @@ # file that was distributed with this source code. gesdinet_jwt_refresh_token: - refresh_token_class: App\Entity\RefreshToken + refresh_token_class: App\Core\Entity\RefreshToken diff --git a/backend/config/packages/reset_password.yaml b/backend/config/packages/reset_password.yaml index b0a1c4a81..5d2d7641c 100755 --- a/backend/config/packages/reset_password.yaml +++ b/backend/config/packages/reset_password.yaml @@ -6,7 +6,7 @@ # file that was distributed with this source code. symfonycasts_reset_password: - request_password_repository: App\Repository\ResetPasswordRequestRepository + request_password_repository: App\Core\Repository\ResetPasswordRequestRepository lifetime: 3600 throttle_limit: 60 enable_garbage_collection: true diff --git a/backend/config/packages/security.yaml b/backend/config/packages/security.yaml index 6edec900e..d22af6194 100644 --- a/backend/config/packages/security.yaml +++ b/backend/config/packages/security.yaml @@ -10,7 +10,7 @@ security: password_hashers: Sonata\UserBundle\Model\UserInterface: auto - App\Entity\User: auto + App\Core\Entity\User: auto access_control: - { path: ^/admin/login$, role: PUBLIC_ACCESS } @@ -39,7 +39,7 @@ security: id: sonata.user.security.user_provider api: entity: - class: App\Entity\User + class: App\Core\Entity\User firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ diff --git a/backend/config/packages/sonata_admin.yaml b/backend/config/packages/sonata_admin.yaml index 1c9d71e63..6a108aad7 100644 --- a/backend/config/packages/sonata_admin.yaml +++ b/backend/config/packages/sonata_admin.yaml @@ -28,10 +28,10 @@ sonata_admin: stooa: label: Stooa items: - - App\Admin\UserAdmin - - App\Admin\FishbowlAdmin - - App\Admin\ResetPasswordRequestAdmin - - App\Admin\ParticipantAdmin + - App\Core\Admin\UserAdmin + - App\Fishbowl\Admin\FishbowlAdmin + - App\Core\Admin\ResetPasswordRequestAdmin + - App\Core\Admin\ParticipantAdmin sonata_block: http_cache: false diff --git a/backend/config/packages/sonata_user.yaml b/backend/config/packages/sonata_user.yaml index f415ad4ee..a12a90c7e 100644 --- a/backend/config/packages/sonata_user.yaml +++ b/backend/config/packages/sonata_user.yaml @@ -7,7 +7,7 @@ sonata_user: class: - user: App\Entity\SonataUserUser + user: App\Core\Entity\SonataUserUser impersonating: route: sonata_admin_dashboard resetting: diff --git a/backend/config/packages/workflow.yaml b/backend/config/packages/workflow.yaml index 31e4d99b3..f704c8bf5 100755 --- a/backend/config/packages/workflow.yaml +++ b/backend/config/packages/workflow.yaml @@ -15,7 +15,7 @@ framework: type: 'method' property: 'currentStatus' supports: - - App\Entity\Fishbowl + - App\Fishbowl\Entity\Fishbowl initial_marking: not_started places: - not_started diff --git a/backend/config/routes/sonata_user.yaml b/backend/config/routes/sonata_user.yaml index d69c81e8e..84fbb3ad7 100644 --- a/backend/config/routes/sonata_user.yaml +++ b/backend/config/routes/sonata_user.yaml @@ -19,4 +19,4 @@ fos_user_resetting_reset: symfonycast_reset_pass: path: /admin/reset-password - controller: App\Controller\ResetPasswordController::request + controller: App\Core\Controller\ResetPasswordController::request diff --git a/backend/config/services.yaml b/backend/config/services.yaml index f648b9aa3..82beabc9c 100644 --- a/backend/config/services.yaml +++ b/backend/config/services.yaml @@ -27,73 +27,75 @@ services: App\: resource: ../src/ exclude: - - ../src/DependencyInjection/ - - ../src/Entity/ + - ../src/Core/DependencyInjection/ + - ../src/Core/Entity/ + - ../src/Fishbowl/DependencyInjection/ + - ../src/Fishbowl/Entity/ - ../src/Kernel.php - App\Controller\: - resource: ../src/Controller/ + App\Fishbowl\Controller\: + resource: ../src/Fishbowl/Controller/ tags: [controller.service_arguments] - App\EventSubscriber\LocaleSubscriber: + App\Core\EventSubscriber\LocaleSubscriber: bind: $locales: '%locales%' - App\OpenApi\OpenApiFactory: + App\Core\OpenApi\OpenApiFactory: decorates: api_platform.openapi.factory arguments: - - '@App\OpenApi\OpenApiFactory.inner' + - '@App\Core\OpenApi\OpenApiFactory.inner' autoconfigure: false - App\DataPersister\UserDataPersister: + App\Core\DataPersister\UserDataPersister: decorates: api_platform.doctrine.orm.data_persister - App\DataPersister\FishbowlDataPersister: + App\Fishbowl\DataPersister\FishbowlDataPersister: decorates: api_platform.doctrine.orm.data_persister - App\Service\MailerService: + App\Core\Service\MailerService: bind: $from: '%env(MAILER_FROM)%' $appUrl: '%env(APP_URL)%' - App\JWT\TokenGenerator\JaasTokenGenerator: + App\Core\JWT\TokenGenerator\JaasTokenGenerator: bind: $appId: '%env(JAAS_APP_ID)%' $apiKey: '%env(JAAS_API_KEY)%' - App\Encryption\HalitePasswordEncryption: + App\Core\Encryption\HalitePasswordEncryption: bind: $key: '%env(HALITE_KEY)%' - App\Stage\FishbowlValidateStage: + App\Fishbowl\Stage\FishbowlValidateStage: decorates: api_platform.graphql.resolver.stage.validate - App\DataProvider\FishbowlDataProvider: + App\Fishbowl\DataProvider\FishbowlDataProvider: bind: $collectionDataProvider: '@api_platform.doctrine.orm.default.collection_data_provider' # Admin - App\Admin\UserAdmin: + App\Core\Admin\UserAdmin: tags: - - { name: sonata.admin, model_class: App\Entity\User, manager_type: orm, label: Users } + - { name: sonata.admin, model_class: App\Core\Entity\User, manager_type: orm, label: Users } calls: - - [setPasswordEncoder, ['@App\Security\PasswordEncoderService']] - - [setMailerService, ['@App\Service\MailerService']] + - [setPasswordEncoder, ['@App\Core\Security\PasswordEncoderService']] + - [setMailerService, ['@App\Core\Service\MailerService']] - App\Admin\FishbowlAdmin: + App\Fishbowl\Admin\FishbowlAdmin: tags: - - { name: sonata.admin, model_class: App\Entity\Fishbowl, manager_type: orm, label: Fishbowls } + - { name: sonata.admin, model_class: App\Fishbowl\Entity\Fishbowl, manager_type: orm, label: Fishbowls } calls: - - [setFishbowlService, ['@App\Service\FishbowlService']] + - [setFishbowlService, ['@App\Fishbowl\Service\FishbowlService']] - App\Admin\ResetPasswordRequestAdmin: + App\Core\Admin\ResetPasswordRequestAdmin: tags: - - { name: sonata.admin, model_class: App\Entity\ResetPasswordRequest, manager_type: orm, label: Reset Password Requests } + - { name: sonata.admin, model_class: App\Core\Entity\ResetPasswordRequest, manager_type: orm, label: Reset Password Requests } - App\Admin\ParticipantAdmin: + App\Core\Admin\ParticipantAdmin: tags: - - { name: sonata.admin, model_class: App\Entity\Participant, manager_type: orm, label: Participants } + - { name: sonata.admin, model_class: App\Core\Entity\Participant, manager_type: orm, label: Participants } - App\Admin\GuestAdmin: + App\Core\Admin\GuestAdmin: tags: - - { name: sonata.admin, model_class: App\Entity\Guest, manager_type: orm, label: Guests } + - { name: sonata.admin, model_class: App\Core\Entity\Guest, manager_type: orm, label: Guests } diff --git a/backend/src/Admin/GuestAdmin.php b/backend/src/Core/Admin/GuestAdmin.php similarity index 96% rename from backend/src/Admin/GuestAdmin.php rename to backend/src/Core/Admin/GuestAdmin.php index 536d3acf0..d02d34c83 100644 --- a/backend/src/Admin/GuestAdmin.php +++ b/backend/src/Core/Admin/GuestAdmin.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Admin; +namespace App\Core\Admin; -use App\Entity\Guest; +use App\Core\Entity\Guest; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Datagrid\ListMapper; diff --git a/backend/src/Admin/ParticipantAdmin.php b/backend/src/Core/Admin/ParticipantAdmin.php similarity index 96% rename from backend/src/Admin/ParticipantAdmin.php rename to backend/src/Core/Admin/ParticipantAdmin.php index a92b9579e..8695cbc1b 100644 --- a/backend/src/Admin/ParticipantAdmin.php +++ b/backend/src/Core/Admin/ParticipantAdmin.php @@ -11,9 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Admin; +namespace App\Core\Admin; -use App\Entity\Participant; +use App\Core\Entity\Participant; +use App\Fishbowl\Admin\FishbowlAdmin; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Datagrid\ListMapper; diff --git a/backend/src/Admin/ResetPasswordRequestAdmin.php b/backend/src/Core/Admin/ResetPasswordRequestAdmin.php similarity index 95% rename from backend/src/Admin/ResetPasswordRequestAdmin.php rename to backend/src/Core/Admin/ResetPasswordRequestAdmin.php index 1885ea108..61d61dbdd 100644 --- a/backend/src/Admin/ResetPasswordRequestAdmin.php +++ b/backend/src/Core/Admin/ResetPasswordRequestAdmin.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Admin; +namespace App\Core\Admin; -use App\Entity\ResetPasswordRequest; +use App\Core\Entity\ResetPasswordRequest; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Datagrid\ListMapper; diff --git a/backend/src/Admin/UserAdmin.php b/backend/src/Core/Admin/UserAdmin.php similarity index 96% rename from backend/src/Admin/UserAdmin.php rename to backend/src/Core/Admin/UserAdmin.php index b39f89a1a..b9c97df62 100644 --- a/backend/src/Admin/UserAdmin.php +++ b/backend/src/Core/Admin/UserAdmin.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Admin; +namespace App\Core\Admin; -use App\Entity\User; -use App\Security\PasswordEncoderService; -use App\Service\MailerService; +use App\Core\Entity\User; +use App\Core\Security\PasswordEncoderService; +use App\Core\Service\MailerService; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Datagrid\ListMapper; diff --git a/backend/src/DataFixtures/DefaultFixtures.php b/backend/src/Core/DataFixtures/DefaultFixtures.php similarity index 90% rename from backend/src/DataFixtures/DefaultFixtures.php rename to backend/src/Core/DataFixtures/DefaultFixtures.php index 055ce1feb..5f8de0d45 100644 --- a/backend/src/DataFixtures/DefaultFixtures.php +++ b/backend/src/Core/DataFixtures/DefaultFixtures.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\DataFixtures; +namespace App\Core\DataFixtures; -use App\Entity\Fishbowl; -use App\Factory\FishbowlFactory; -use App\Factory\SonataUserUserFactory; -use App\Factory\UserFactory; +use App\Core\Factory\SonataUserUserFactory; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; use Sonata\UserBundle\Model\UserInterface; diff --git a/backend/src/DataPersister/UserDataPersister.php b/backend/src/Core/DataPersister/UserDataPersister.php similarity index 93% rename from backend/src/DataPersister/UserDataPersister.php rename to backend/src/Core/DataPersister/UserDataPersister.php index 7c3981fc7..9bbeec4a0 100644 --- a/backend/src/DataPersister/UserDataPersister.php +++ b/backend/src/Core/DataPersister/UserDataPersister.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\DataPersister; +namespace App\Core\DataPersister; use ApiPlatform\Core\DataPersister\ContextAwareDataPersisterInterface; -use App\Entity\User; -use App\Security\PasswordEncoderService; -use App\Service\MailerService; +use App\Core\Entity\User; +use App\Core\Security\PasswordEncoderService; +use App\Core\Service\MailerService; class UserDataPersister implements ContextAwareDataPersisterInterface { diff --git a/backend/src/DataTransformer/ChangePasswordDataTransformer.php b/backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php similarity index 91% rename from backend/src/DataTransformer/ChangePasswordDataTransformer.php rename to backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php index cad49d97c..7f5c54d39 100644 --- a/backend/src/DataTransformer/ChangePasswordDataTransformer.php +++ b/backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php @@ -11,13 +11,13 @@ * file that was distributed with this source code. */ -namespace App\DataTransformer; +namespace App\Core\DataTransformer; use ApiPlatform\Core\DataTransformer\DataTransformerInterface; use ApiPlatform\Core\Validator\ValidatorInterface; -use App\Entity\User; -use App\Model\ChangePasswordInput; -use App\Security\PasswordEncoderService; +use App\Core\Entity\User; +use App\Core\Model\ChangePasswordInput; +use App\Core\Security\PasswordEncoderService; use SymfonyCasts\Bundle\ResetPassword\ResetPasswordHelperInterface; use Webmozart\Assert\Assert; diff --git a/backend/src/DataTransformer/ChangePasswordLoggedDataTransformer.php b/backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php similarity index 92% rename from backend/src/DataTransformer/ChangePasswordLoggedDataTransformer.php rename to backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php index 1913da325..3e5fb5d91 100644 --- a/backend/src/DataTransformer/ChangePasswordLoggedDataTransformer.php +++ b/backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\DataTransformer; +namespace App\Core\DataTransformer; use ApiPlatform\Core\DataTransformer\DataTransformerInterface; use ApiPlatform\Core\Validator\ValidatorInterface; -use App\Entity\User; -use App\Model\ChangePasswordLoggedInput; +use App\Core\Entity\User; +use App\Core\Model\ChangePasswordLoggedInput; use Symfony\Component\Security\Core\Security; use Webmozart\Assert\Assert; diff --git a/backend/src/Encryption/HalitePasswordEncryption.php b/backend/src/Core/Encryption/HalitePasswordEncryption.php similarity index 97% rename from backend/src/Encryption/HalitePasswordEncryption.php rename to backend/src/Core/Encryption/HalitePasswordEncryption.php index a02616013..bf0a05e8a 100644 --- a/backend/src/Encryption/HalitePasswordEncryption.php +++ b/backend/src/Core/Encryption/HalitePasswordEncryption.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Encryption; +namespace App\Core\Encryption; use ParagonIE\Halite\KeyFactory; use ParagonIE\Halite\Symmetric\Crypto; diff --git a/backend/src/Encryption/PasswordEncryptionInterface.php b/backend/src/Core/Encryption/PasswordEncryptionInterface.php similarity index 93% rename from backend/src/Encryption/PasswordEncryptionInterface.php rename to backend/src/Core/Encryption/PasswordEncryptionInterface.php index 324df723b..0f6883448 100644 --- a/backend/src/Encryption/PasswordEncryptionInterface.php +++ b/backend/src/Core/Encryption/PasswordEncryptionInterface.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Encryption; +namespace App\Core\Encryption; interface PasswordEncryptionInterface { diff --git a/backend/src/Entity/Guest.php b/backend/src/Core/Entity/Guest.php similarity index 98% rename from backend/src/Entity/Guest.php rename to backend/src/Core/Entity/Guest.php index 28425b3c0..8b97292ff 100644 --- a/backend/src/Entity/Guest.php +++ b/backend/src/Core/Entity/Guest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; use ApiPlatform\Core\Action\NotFoundAction; use ApiPlatform\Core\Annotation\ApiResource; diff --git a/backend/src/Entity/Participant.php b/backend/src/Core/Entity/Participant.php similarity index 96% rename from backend/src/Entity/Participant.php rename to backend/src/Core/Entity/Participant.php index c6c7007da..dcd1d962c 100644 --- a/backend/src/Entity/Participant.php +++ b/backend/src/Core/Entity/Participant.php @@ -11,9 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; use ApiPlatform\Core\Annotation\ApiResource; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\Doctrine\UuidGenerator; use Ramsey\Uuid\UuidInterface; @@ -70,7 +71,7 @@ class Participant implements \Stringable /** * @Groups({"participant:read"}) * @Assert\NotNull - * @ORM\ManyToOne(targetEntity="Fishbowl", inversedBy="participants") + * @ORM\ManyToOne(targetEntity="App\Fishbowl\Entity\Fishbowl", inversedBy="participants") */ private ?Fishbowl $fishbowl = null; diff --git a/backend/src/Entity/RefreshToken.php b/backend/src/Core/Entity/RefreshToken.php similarity index 94% rename from backend/src/Entity/RefreshToken.php rename to backend/src/Core/Entity/RefreshToken.php index 9dba287da..8d6df3d3c 100644 --- a/backend/src/Entity/RefreshToken.php +++ b/backend/src/Core/Entity/RefreshToken.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; use Doctrine\ORM\Mapping as ORM; use Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken as BaseRefreshToken; diff --git a/backend/src/Entity/ResetPasswordRequest.php b/backend/src/Core/Entity/ResetPasswordRequest.php similarity index 94% rename from backend/src/Entity/ResetPasswordRequest.php rename to backend/src/Core/Entity/ResetPasswordRequest.php index 89b2ff111..84f8721aa 100644 --- a/backend/src/Entity/ResetPasswordRequest.php +++ b/backend/src/Core/Entity/ResetPasswordRequest.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; -use App\Repository\ResetPasswordRequestRepository; +use App\Core\Repository\ResetPasswordRequestRepository; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\Doctrine\UuidGenerator; use Ramsey\Uuid\UuidInterface; diff --git a/backend/src/Entity/SonataUserUser.php b/backend/src/Core/Entity/SonataUserUser.php similarity index 95% rename from backend/src/Entity/SonataUserUser.php rename to backend/src/Core/Entity/SonataUserUser.php index 80da506e3..c4599cbd6 100644 --- a/backend/src/Entity/SonataUserUser.php +++ b/backend/src/Core/Entity/SonataUserUser.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; use Doctrine\ORM\Mapping as ORM; use Sonata\UserBundle\Entity\BaseUser; diff --git a/backend/src/Entity/User.php b/backend/src/Core/Entity/User.php similarity index 97% rename from backend/src/Entity/User.php rename to backend/src/Core/Entity/User.php index 0ca585a29..aea1a4345 100644 --- a/backend/src/Entity/User.php +++ b/backend/src/Core/Entity/User.php @@ -11,14 +11,15 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Core\Entity; use ApiPlatform\Core\Action\NotFoundAction; use ApiPlatform\Core\Annotation\ApiResource; -use App\Model\ChangePasswordInput; -use App\Model\ChangePasswordLoggedInput; -use App\Repository\UserRepository; -use App\Resolver\UserResolver; +use App\Core\Model\ChangePasswordInput; +use App\Core\Model\ChangePasswordLoggedInput; +use App\Core\Repository\UserRepository; +use App\Core\Resolver\UserResolver; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -189,7 +190,7 @@ class User implements UserInterface, \Stringable, PasswordAuthenticatedUserInter /** * @var Collection * - * @ORM\OneToMany(targetEntity="Fishbowl", mappedBy="host") + * @ORM\OneToMany(targetEntity="App\Fishbowl\Entity\Fishbowl", mappedBy="host") */ private Collection $fishbowls; diff --git a/backend/src/EventSubscriber/JWTCreatedSubscriber.php b/backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php similarity index 91% rename from backend/src/EventSubscriber/JWTCreatedSubscriber.php rename to backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php index e506141b2..f2dfe6a13 100644 --- a/backend/src/EventSubscriber/JWTCreatedSubscriber.php +++ b/backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Core\EventSubscriber; -use App\Entity\User; -use App\JWT\TokenGenerator\TokenGeneratorInterface; +use App\Core\Entity\User; +use App\Core\JWT\TokenGenerator\TokenGeneratorInterface; use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent; use Lexik\Bundle\JWTAuthenticationBundle\Events; use Symfony\Component\EventDispatcher\EventSubscriberInterface; diff --git a/backend/src/EventSubscriber/LocaleSubscriber.php b/backend/src/Core/EventSubscriber/LocaleSubscriber.php similarity index 97% rename from backend/src/EventSubscriber/LocaleSubscriber.php rename to backend/src/Core/EventSubscriber/LocaleSubscriber.php index af980197c..884038b55 100644 --- a/backend/src/EventSubscriber/LocaleSubscriber.php +++ b/backend/src/Core/EventSubscriber/LocaleSubscriber.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Core\EventSubscriber; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; diff --git a/backend/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php b/backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php similarity index 97% rename from backend/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php rename to backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php index 0e0c7fc78..8f3376b87 100644 --- a/backend/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php +++ b/backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Core\EventSubscriber; use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationFailureEvent; use Lexik\Bundle\JWTAuthenticationBundle\Events; diff --git a/backend/src/Extension/FishbowlListExtension.php b/backend/src/Core/Extension/FishbowlListExtension.php similarity index 94% rename from backend/src/Extension/FishbowlListExtension.php rename to backend/src/Core/Extension/FishbowlListExtension.php index c1510c128..67be09c8e 100644 --- a/backend/src/Extension/FishbowlListExtension.php +++ b/backend/src/Core/Extension/FishbowlListExtension.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Extension; +namespace App\Core\Extension; use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryCollectionExtensionInterface; use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface; -use App\Entity\Fishbowl; -use App\Entity\User; +use App\Core\Entity\User; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\ORM\QueryBuilder; use Symfony\Component\Security\Core\Security; use Webmozart\Assert\Assert; diff --git a/backend/src/Factory/GuestFactory.php b/backend/src/Core/Factory/GuestFactory.php similarity index 92% rename from backend/src/Factory/GuestFactory.php rename to backend/src/Core/Factory/GuestFactory.php index 0d879b846..2c4fd6bc4 100644 --- a/backend/src/Factory/GuestFactory.php +++ b/backend/src/Core/Factory/GuestFactory.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Factory; +namespace App\Core\Factory; -use App\Entity\Guest; +use App\Core\Entity\Guest; use Zenstruck\Foundry\ModelFactory; /** @extends ModelFactory */ diff --git a/backend/src/Factory/ParticipantFactory.php b/backend/src/Core/Factory/ParticipantFactory.php similarity index 91% rename from backend/src/Factory/ParticipantFactory.php rename to backend/src/Core/Factory/ParticipantFactory.php index fa1056233..72db46ffa 100644 --- a/backend/src/Factory/ParticipantFactory.php +++ b/backend/src/Core/Factory/ParticipantFactory.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Factory; +namespace App\Core\Factory; -use App\Entity\Participant; +use App\Core\Entity\Participant; use Zenstruck\Foundry\ModelFactory; /** @extends ModelFactory */ diff --git a/backend/src/Factory/SonataUserUserFactory.php b/backend/src/Core/Factory/SonataUserUserFactory.php similarity index 92% rename from backend/src/Factory/SonataUserUserFactory.php rename to backend/src/Core/Factory/SonataUserUserFactory.php index 8b1a56b8d..b3b6818f7 100644 --- a/backend/src/Factory/SonataUserUserFactory.php +++ b/backend/src/Core/Factory/SonataUserUserFactory.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Factory; +namespace App\Core\Factory; -use App\Entity\SonataUserUser; +use App\Core\Entity\SonataUserUser; use Zenstruck\Foundry\ModelFactory; /** @extends ModelFactory */ diff --git a/backend/src/Factory/UserFactory.php b/backend/src/Core/Factory/UserFactory.php similarity index 95% rename from backend/src/Factory/UserFactory.php rename to backend/src/Core/Factory/UserFactory.php index 6aee030ce..78ddd6230 100644 --- a/backend/src/Factory/UserFactory.php +++ b/backend/src/Core/Factory/UserFactory.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Factory; +namespace App\Core\Factory; -use App\Entity\User; +use App\Core\Entity\User; use Zenstruck\Foundry\ModelFactory; /** @extends ModelFactory */ diff --git a/backend/src/JWT/CurrentUserFishbowl.php b/backend/src/Core/JWT/CurrentUserFishbowl.php similarity index 94% rename from backend/src/JWT/CurrentUserFishbowl.php rename to backend/src/Core/JWT/CurrentUserFishbowl.php index f785f3a5a..2669de63f 100644 --- a/backend/src/JWT/CurrentUserFishbowl.php +++ b/backend/src/Core/JWT/CurrentUserFishbowl.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\JWT; +namespace App\Core\JWT; -use App\Entity\User; +use App\Core\Entity\User; use Symfony\Component\Security\Core\User\UserInterface; use Webmozart\Assert\Assert; diff --git a/backend/src/JWT/CurrentUserRoom.php b/backend/src/Core/JWT/CurrentUserRoom.php similarity index 94% rename from backend/src/JWT/CurrentUserRoom.php rename to backend/src/Core/JWT/CurrentUserRoom.php index 7bc9dbd2d..9c79a1311 100644 --- a/backend/src/JWT/CurrentUserRoom.php +++ b/backend/src/Core/JWT/CurrentUserRoom.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\JWT; +namespace App\Core\JWT; -use App\Service\FishbowlService; +use App\Fishbowl\Service\FishbowlService; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Security\Core\User\UserInterface; diff --git a/backend/src/JWT/HostValidator.php b/backend/src/Core/JWT/HostValidator.php similarity index 90% rename from backend/src/JWT/HostValidator.php rename to backend/src/Core/JWT/HostValidator.php index 79ee5dbff..e0d3c7d46 100644 --- a/backend/src/JWT/HostValidator.php +++ b/backend/src/Core/JWT/HostValidator.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\JWT; +namespace App\Core\JWT; -use App\Entity\User; -use App\Repository\FishbowlRepository; +use App\Core\Entity\User; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\Security\Core\User\UserInterface; use Webmozart\Assert\Assert; diff --git a/backend/src/JWT/Model/JWTToken.php b/backend/src/Core/JWT/Model/JWTToken.php similarity index 90% rename from backend/src/JWT/Model/JWTToken.php rename to backend/src/Core/JWT/Model/JWTToken.php index 4e204970d..9613973ae 100644 --- a/backend/src/JWT/Model/JWTToken.php +++ b/backend/src/Core/JWT/Model/JWTToken.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\JWT\Model; +namespace App\Core\JWT\Model; -use App\JWT\Model\Payload\FeaturesPayload; -use App\JWT\Model\Payload\HeaderPayload; -use App\JWT\Model\Payload\UserPayload; +use App\Core\JWT\Model\Payload\FeaturesPayload; +use App\Core\JWT\Model\Payload\HeaderPayload; +use App\Core\JWT\Model\Payload\UserPayload; use Lcobucci\JWT\Token\RegisteredClaims; class JWTToken diff --git a/backend/src/JWT/Model/Payload/FeaturesPayload.php b/backend/src/Core/JWT/Model/Payload/FeaturesPayload.php similarity index 96% rename from backend/src/JWT/Model/Payload/FeaturesPayload.php rename to backend/src/Core/JWT/Model/Payload/FeaturesPayload.php index 6f34d9bb1..bfef9cdf3 100644 --- a/backend/src/JWT/Model/Payload/FeaturesPayload.php +++ b/backend/src/Core/JWT/Model/Payload/FeaturesPayload.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\JWT\Model\Payload; +namespace App\Core\JWT\Model\Payload; final class FeaturesPayload implements PayloadInterface { diff --git a/backend/src/JWT/Model/Payload/HeaderPayload.php b/backend/src/Core/JWT/Model/Payload/HeaderPayload.php similarity index 94% rename from backend/src/JWT/Model/Payload/HeaderPayload.php rename to backend/src/Core/JWT/Model/Payload/HeaderPayload.php index ad80ce3d2..04bf4deaa 100644 --- a/backend/src/JWT/Model/Payload/HeaderPayload.php +++ b/backend/src/Core/JWT/Model/Payload/HeaderPayload.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\JWT\Model\Payload; +namespace App\Core\JWT\Model\Payload; final class HeaderPayload implements PayloadInterface { diff --git a/backend/src/JWT/Model/Payload/PayloadInterface.php b/backend/src/Core/JWT/Model/Payload/PayloadInterface.php similarity index 92% rename from backend/src/JWT/Model/Payload/PayloadInterface.php rename to backend/src/Core/JWT/Model/Payload/PayloadInterface.php index 43798d4a2..7193ff153 100644 --- a/backend/src/JWT/Model/Payload/PayloadInterface.php +++ b/backend/src/Core/JWT/Model/Payload/PayloadInterface.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\JWT\Model\Payload; +namespace App\Core\JWT\Model\Payload; use Ramsey\Uuid\UuidInterface; diff --git a/backend/src/JWT/Model/Payload/UserPayload.php b/backend/src/Core/JWT/Model/Payload/UserPayload.php similarity index 95% rename from backend/src/JWT/Model/Payload/UserPayload.php rename to backend/src/Core/JWT/Model/Payload/UserPayload.php index 894a752f3..43579b678 100644 --- a/backend/src/JWT/Model/Payload/UserPayload.php +++ b/backend/src/Core/JWT/Model/Payload/UserPayload.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\JWT\Model\Payload; +namespace App\Core\JWT\Model\Payload; -use App\Entity\User; +use App\Core\Entity\User; use Ramsey\Uuid\UuidInterface; final class UserPayload implements PayloadInterface diff --git a/backend/src/JWT/TokenGenerator/JaasTokenGenerator.php b/backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php similarity index 78% rename from backend/src/JWT/TokenGenerator/JaasTokenGenerator.php rename to backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php index 62409dfe2..90eb7ce5b 100644 --- a/backend/src/JWT/TokenGenerator/JaasTokenGenerator.php +++ b/backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php @@ -11,14 +11,14 @@ * file that was distributed with this source code. */ -namespace App\JWT\TokenGenerator; +namespace App\Core\JWT\TokenGenerator; -use App\Entity\User; -use App\JWT\HostValidator; -use App\JWT\Model\JWTToken; -use App\JWT\Model\Payload\FeaturesPayload; -use App\JWT\Model\Payload\HeaderPayload; -use App\JWT\Model\Payload\UserPayload; +use App\Core\Entity\User; +use App\Core\JWT\HostValidator; +use App\Core\JWT\Model\JWTToken; +use App\Core\JWT\Model\Payload\FeaturesPayload; +use App\Core\JWT\Model\Payload\HeaderPayload; +use App\Core\JWT\Model\Payload\UserPayload; final class JaasTokenGenerator implements TokenGeneratorInterface { diff --git a/backend/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php b/backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php similarity index 79% rename from backend/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php rename to backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php index b70d956dd..f04f3c1ee 100644 --- a/backend/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php +++ b/backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\JWT\TokenGenerator; +namespace App\Core\JWT\TokenGenerator; -use App\Entity\User; -use App\JWT\CurrentUserFishbowl; -use App\JWT\Model\JWTToken; -use App\JWT\Model\Payload\UserPayload; +use App\Core\Entity\User; +use App\Core\JWT\CurrentUserFishbowl; +use App\Core\JWT\Model\JWTToken; +use App\Core\JWT\Model\Payload\UserPayload; final class SelfHostedTokenGenerator implements TokenGeneratorInterface { diff --git a/backend/src/JWT/TokenGenerator/TokenGeneratorInterface.php b/backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php similarity index 77% rename from backend/src/JWT/TokenGenerator/TokenGeneratorInterface.php rename to backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php index 9451ce566..bd1d3a72b 100644 --- a/backend/src/JWT/TokenGenerator/TokenGeneratorInterface.php +++ b/backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\JWT\TokenGenerator; +namespace App\Core\JWT\TokenGenerator; -use App\Entity\User; -use App\JWT\Model\JWTToken; +use App\Core\Entity\User; +use App\Core\JWT\Model\JWTToken; interface TokenGeneratorInterface { diff --git a/backend/src/Model/ChangePasswordInput.php b/backend/src/Core/Model/ChangePasswordInput.php similarity index 94% rename from backend/src/Model/ChangePasswordInput.php rename to backend/src/Core/Model/ChangePasswordInput.php index 087185bf3..e51cdc1c5 100644 --- a/backend/src/Model/ChangePasswordInput.php +++ b/backend/src/Core/Model/ChangePasswordInput.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Model; +namespace App\Core\Model; -use App\Validator\Constraints\ValidResetPasswordToken; +use App\Core\Validator\Constraints\ValidResetPasswordToken; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; diff --git a/backend/src/Model/ChangePasswordLoggedInput.php b/backend/src/Core/Model/ChangePasswordLoggedInput.php similarity index 98% rename from backend/src/Model/ChangePasswordLoggedInput.php rename to backend/src/Core/Model/ChangePasswordLoggedInput.php index 6a26c79b9..a534d76a3 100644 --- a/backend/src/Model/ChangePasswordLoggedInput.php +++ b/backend/src/Core/Model/ChangePasswordLoggedInput.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Model; +namespace App\Core\Model; use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert; use Symfony\Component\Serializer\Annotation\Groups; diff --git a/backend/src/Model/ResetPassword.php b/backend/src/Core/Model/ResetPassword.php similarity index 96% rename from backend/src/Model/ResetPassword.php rename to backend/src/Core/Model/ResetPassword.php index 94d9fde0e..ae770ee1e 100644 --- a/backend/src/Model/ResetPassword.php +++ b/backend/src/Core/Model/ResetPassword.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Model; +namespace App\Core\Model; use ApiPlatform\Core\Annotation\ApiProperty; use ApiPlatform\Core\Annotation\ApiResource; -use App\Resolver\ResetPasswordResolver; +use App\Core\Resolver\ResetPasswordResolver; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; diff --git a/backend/src/OpenApi/OpenApiFactory.php b/backend/src/Core/OpenApi/OpenApiFactory.php similarity index 99% rename from backend/src/OpenApi/OpenApiFactory.php rename to backend/src/Core/OpenApi/OpenApiFactory.php index da2265f2c..5675a130a 100644 --- a/backend/src/OpenApi/OpenApiFactory.php +++ b/backend/src/Core/OpenApi/OpenApiFactory.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\OpenApi; +namespace App\Core\OpenApi; use ApiPlatform\Core\OpenApi\Factory\OpenApiFactoryInterface; use ApiPlatform\Core\OpenApi\Model\Info; diff --git a/backend/src/Repository/GuestRepository.php b/backend/src/Core/Repository/GuestRepository.php similarity index 91% rename from backend/src/Repository/GuestRepository.php rename to backend/src/Core/Repository/GuestRepository.php index 723810553..4ed7e8fb2 100644 --- a/backend/src/Repository/GuestRepository.php +++ b/backend/src/Core/Repository/GuestRepository.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Repository; +namespace App\Core\Repository; -use App\Entity\Guest; +use App\Core\Entity\Guest; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; diff --git a/backend/src/Repository/ParticipantRepository.php b/backend/src/Core/Repository/ParticipantRepository.php similarity index 94% rename from backend/src/Repository/ParticipantRepository.php rename to backend/src/Core/Repository/ParticipantRepository.php index b215d50dd..cc18e6d35 100644 --- a/backend/src/Repository/ParticipantRepository.php +++ b/backend/src/Core/Repository/ParticipantRepository.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Repository; +namespace App\Core\Repository; -use App\Entity\Fishbowl; -use App\Entity\Guest; -use App\Entity\Participant; -use App\Entity\User; +use App\Core\Entity\Guest; +use App\Core\Entity\Participant; +use App\Core\Entity\User; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\DBAL\Types\Types; use Doctrine\Persistence\ManagerRegistry; diff --git a/backend/src/Repository/ResetPasswordRequestRepository.php b/backend/src/Core/Repository/ResetPasswordRequestRepository.php similarity index 95% rename from backend/src/Repository/ResetPasswordRequestRepository.php rename to backend/src/Core/Repository/ResetPasswordRequestRepository.php index 2d4c29660..01ea09fcf 100644 --- a/backend/src/Repository/ResetPasswordRequestRepository.php +++ b/backend/src/Core/Repository/ResetPasswordRequestRepository.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Repository; +namespace App\Core\Repository; -use App\Entity\ResetPasswordRequest; -use App\Entity\User; +use App\Core\Entity\ResetPasswordRequest; +use App\Core\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface; diff --git a/backend/src/Repository/UserRepository.php b/backend/src/Core/Repository/UserRepository.php similarity index 97% rename from backend/src/Repository/UserRepository.php rename to backend/src/Core/Repository/UserRepository.php index 96e738fb6..1727806f8 100644 --- a/backend/src/Repository/UserRepository.php +++ b/backend/src/Core/Repository/UserRepository.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Repository; +namespace App\Core\Repository; -use App\Entity\User; +use App\Core\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\DBAL\Types\Types; use Doctrine\Persistence\ManagerRegistry; diff --git a/backend/src/Resolver/ResetPasswordResolver.php b/backend/src/Core/Resolver/ResetPasswordResolver.php similarity index 92% rename from backend/src/Resolver/ResetPasswordResolver.php rename to backend/src/Core/Resolver/ResetPasswordResolver.php index 8cf6e0e71..7e1d7b9b9 100644 --- a/backend/src/Resolver/ResetPasswordResolver.php +++ b/backend/src/Core/Resolver/ResetPasswordResolver.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Core\Resolver; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Model\ResetPassword; -use App\Repository\UserRepository; -use App\Service\MailerService; +use App\Core\Model\ResetPassword; +use App\Core\Repository\UserRepository; +use App\Core\Service\MailerService; use Ramsey\Uuid\Uuid; use SymfonyCasts\Bundle\ResetPassword\Exception\ResetPasswordExceptionInterface; use SymfonyCasts\Bundle\ResetPassword\ResetPasswordHelperInterface; diff --git a/backend/src/Resolver/UserResolver.php b/backend/src/Core/Resolver/UserResolver.php similarity index 95% rename from backend/src/Resolver/UserResolver.php rename to backend/src/Core/Resolver/UserResolver.php index c6e5434ee..8f47dd369 100644 --- a/backend/src/Resolver/UserResolver.php +++ b/backend/src/Core/Resolver/UserResolver.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Core\Resolver; use ApiPlatform\Core\GraphQl\Resolver\QueryItemResolverInterface; -use App\Entity\User; +use App\Core\Entity\User; use Symfony\Component\Security\Core\Security; use Webmozart\Assert\Assert; diff --git a/backend/src/Security/PasswordEncoderService.php b/backend/src/Core/Security/PasswordEncoderService.php similarity index 93% rename from backend/src/Security/PasswordEncoderService.php rename to backend/src/Core/Security/PasswordEncoderService.php index 02e9f84be..bca3e152d 100644 --- a/backend/src/Security/PasswordEncoderService.php +++ b/backend/src/Core/Security/PasswordEncoderService.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Security; +namespace App\Core\Security; -use App\Entity\User; +use App\Core\Entity\User; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class PasswordEncoderService diff --git a/backend/src/Service/MailerService.php b/backend/src/Core/Service/MailerService.php similarity index 96% rename from backend/src/Service/MailerService.php rename to backend/src/Core/Service/MailerService.php index 956822fb5..1b544794e 100644 --- a/backend/src/Service/MailerService.php +++ b/backend/src/Core/Service/MailerService.php @@ -11,11 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Service; +namespace App\Core\Service; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Model\ResetPassword; +use App\Core\Entity\User; +use App\Core\Model\ResetPassword; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Service\PrivateFishbowlService; use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; diff --git a/backend/src/Validator/Constraints/SameUserPassword.php b/backend/src/Core/Validator/Constraints/SameUserPassword.php similarity index 92% rename from backend/src/Validator/Constraints/SameUserPassword.php rename to backend/src/Core/Validator/Constraints/SameUserPassword.php index 9216ea8b0..8faedc5b7 100644 --- a/backend/src/Validator/Constraints/SameUserPassword.php +++ b/backend/src/Core/Validator/Constraints/SameUserPassword.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Core\Validator\Constraints; use Symfony\Component\Validator\Constraint; diff --git a/backend/src/Validator/Constraints/SameUserPasswordValidator.php b/backend/src/Core/Validator/Constraints/SameUserPasswordValidator.php similarity index 92% rename from backend/src/Validator/Constraints/SameUserPasswordValidator.php rename to backend/src/Core/Validator/Constraints/SameUserPasswordValidator.php index c599db877..2ed0d20d7 100644 --- a/backend/src/Validator/Constraints/SameUserPasswordValidator.php +++ b/backend/src/Core/Validator/Constraints/SameUserPasswordValidator.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Core\Validator\Constraints; -use App\Entity\User; -use App\Model\ChangePasswordLoggedInput; -use App\Repository\UserRepository; +use App\Core\Entity\User; +use App\Core\Model\ChangePasswordLoggedInput; +use App\Core\Repository\UserRepository; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Security\Core\Security; use Symfony\Component\Validator\Constraint; diff --git a/backend/src/Validator/Constraints/ValidResetPasswordToken.php b/backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php similarity index 90% rename from backend/src/Validator/Constraints/ValidResetPasswordToken.php rename to backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php index 7ddfa52bd..5287a77da 100644 --- a/backend/src/Validator/Constraints/ValidResetPasswordToken.php +++ b/backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Core\Validator\Constraints; use Symfony\Component\Validator\Constraint; diff --git a/backend/src/Validator/Constraints/ValidResetPasswordTokenValidator.php b/backend/src/Core/Validator/Constraints/ValidResetPasswordTokenValidator.php similarity index 96% rename from backend/src/Validator/Constraints/ValidResetPasswordTokenValidator.php rename to backend/src/Core/Validator/Constraints/ValidResetPasswordTokenValidator.php index 487df04ac..aca729b72 100644 --- a/backend/src/Validator/Constraints/ValidResetPasswordTokenValidator.php +++ b/backend/src/Core/Validator/Constraints/ValidResetPasswordTokenValidator.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Core\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; diff --git a/backend/src/Admin/FishbowlAdmin.php b/backend/src/Fishbowl/Admin/FishbowlAdmin.php similarity index 98% rename from backend/src/Admin/FishbowlAdmin.php rename to backend/src/Fishbowl/Admin/FishbowlAdmin.php index 83f40f638..f98e4cd0f 100644 --- a/backend/src/Admin/FishbowlAdmin.php +++ b/backend/src/Fishbowl/Admin/FishbowlAdmin.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Admin; +namespace App\Fishbowl\Admin; -use App\Entity\Fishbowl; -use App\Service\FishbowlService; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Service\FishbowlService; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\AdminBundle\Admin\AdminInterface; use Sonata\AdminBundle\Datagrid\DatagridMapper; diff --git a/backend/src/Controller/FishbowlController.php b/backend/src/Fishbowl/Controller/FishbowlController.php similarity index 91% rename from backend/src/Controller/FishbowlController.php rename to backend/src/Fishbowl/Controller/FishbowlController.php index 3da027089..671e85f30 100644 --- a/backend/src/Controller/FishbowlController.php +++ b/backend/src/Fishbowl/Controller/FishbowlController.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\Controller; +namespace App\Fishbowl\Controller; -use App\Service\FishbowlService; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Service\FishbowlService; +use App\Fishbowl\Service\PrivateFishbowlService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; diff --git a/backend/src/DataPersister/FishbowlDataPersister.php b/backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php similarity index 93% rename from backend/src/DataPersister/FishbowlDataPersister.php rename to backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php index 5079a0bc8..7bc201726 100644 --- a/backend/src/DataPersister/FishbowlDataPersister.php +++ b/backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\DataPersister; +namespace App\Fishbowl\DataPersister; use ApiPlatform\Core\DataPersister\ContextAwareDataPersisterInterface; -use App\Entity\Fishbowl; -use App\Service\MailerService; +use App\Core\Service\MailerService; +use App\Fishbowl\Entity\Fishbowl; class FishbowlDataPersister implements ContextAwareDataPersisterInterface { diff --git a/backend/src/DataProvider/FishbowlDataProvider.php b/backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php similarity index 93% rename from backend/src/DataProvider/FishbowlDataProvider.php rename to backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php index aaa331554..97ebcadff 100644 --- a/backend/src/DataProvider/FishbowlDataProvider.php +++ b/backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php @@ -11,14 +11,14 @@ * file that was distributed with this source code. */ -namespace App\DataProvider; +namespace App\Fishbowl\DataProvider; use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface; use ApiPlatform\Core\DataProvider\ContextAwareCollectionDataProviderInterface; use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface; use ApiPlatform\Core\Exception\ResourceClassNotSupportedException; -use App\Entity\Fishbowl; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Service\PrivateFishbowlService; final class FishbowlDataProvider implements ContextAwareCollectionDataProviderInterface, RestrictedDataProviderInterface { diff --git a/backend/src/Entity/Fishbowl.php b/backend/src/Fishbowl/Entity/Fishbowl.php similarity index 95% rename from backend/src/Entity/Fishbowl.php rename to backend/src/Fishbowl/Entity/Fishbowl.php index 05e95d5e6..b67bd2825 100644 --- a/backend/src/Entity/Fishbowl.php +++ b/backend/src/Fishbowl/Entity/Fishbowl.php @@ -11,21 +11,23 @@ * file that was distributed with this source code. */ -namespace App\Entity; +namespace App\Fishbowl\Entity; use ApiPlatform\Core\Annotation\ApiFilter; use ApiPlatform\Core\Annotation\ApiProperty; use ApiPlatform\Core\Annotation\ApiResource; use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter; -use App\Repository\FishbowlRepository; -use App\Resolver\FishbowlCreatorResolver; -use App\Resolver\FishbowlFinishMutationResolver; -use App\Resolver\FishbowlIntroduceMutationResolver; -use App\Resolver\FishbowlNoIntroRunMutationResolver; -use App\Resolver\FishbowlResolver; -use App\Resolver\FishbowlRunMutationResolver; -use App\Validator\Constraints\FutureFishbowl; -use App\Validator\Constraints\PrivateFishbowl; +use App\Core\Entity\Participant; +use App\Core\Entity\User; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Resolver\FishbowlCreatorResolver; +use App\Fishbowl\Resolver\FishbowlFinishMutationResolver; +use App\Fishbowl\Resolver\FishbowlIntroduceMutationResolver; +use App\Fishbowl\Resolver\FishbowlNoIntroRunMutationResolver; +use App\Fishbowl\Resolver\FishbowlResolver; +use App\Fishbowl\Resolver\FishbowlRunMutationResolver; +use App\Fishbowl\Validator\Constraints\FutureFishbowl; +use App\Fishbowl\Validator\Constraints\PrivateFishbowl; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -200,7 +202,7 @@ class Fishbowl implements \Stringable /** * @Groups({"fishbowl:read"}) * @Assert\NotNull - * @ORM\ManyToOne(targetEntity="User", inversedBy="fishbowls") + * @ORM\ManyToOne(targetEntity="App\Core\Entity\User", inversedBy="fishbowls") */ private ?User $host = null; @@ -239,7 +241,7 @@ class Fishbowl implements \Stringable /** * @var Collection * - * @ORM\OneToMany(targetEntity="Participant", mappedBy="fishbowl", cascade={"all"}) + * @ORM\OneToMany(targetEntity="App\Core\Entity\Participant", mappedBy="fishbowl", cascade={"all"}) */ private Collection $participants; diff --git a/backend/src/EventSubscriber/FishbowlDoctrineSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php similarity index 93% rename from backend/src/EventSubscriber/FishbowlDoctrineSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php index 7a144b753..e9ea87554 100644 --- a/backend/src/EventSubscriber/FishbowlDoctrineSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Events; diff --git a/backend/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php similarity index 94% rename from backend/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php index 83b870a60..dd2cfedad 100644 --- a/backend/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Workflow\Event\GuardEvent; use Webmozart\Assert\Assert; diff --git a/backend/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php similarity index 92% rename from backend/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php index 1516c749c..8dc07507a 100644 --- a/backend/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; -use App\Encryption\HalitePasswordEncryption; -use App\Entity\Fishbowl; +use App\Core\Encryption\HalitePasswordEncryption; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Events; diff --git a/backend/src/EventSubscriber/FishbowlSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php similarity index 91% rename from backend/src/EventSubscriber/FishbowlSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php index 1e870239f..1896f462a 100644 --- a/backend/src/EventSubscriber/FishbowlSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; use ApiPlatform\Core\EventListener\EventPriorities; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Service\FishbowlService; +use App\Core\Entity\User; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Service\FishbowlService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\ViewEvent; use Symfony\Component\HttpKernel\KernelEvents; diff --git a/backend/src/EventSubscriber/FishbowlTransitionsSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php similarity index 94% rename from backend/src/EventSubscriber/FishbowlTransitionsSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php index fb1b6f2bb..db3f32a22 100644 --- a/backend/src/EventSubscriber/FishbowlTransitionsSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php @@ -11,10 +11,10 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Workflow\Event\Event; use Webmozart\Assert\Assert; diff --git a/backend/src/EventSubscriber/FishbowlWorkflowSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php similarity index 93% rename from backend/src/EventSubscriber/FishbowlWorkflowSubscriber.php rename to backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php index f291c2ac9..62629e868 100644 --- a/backend/src/EventSubscriber/FishbowlWorkflowSubscriber.php +++ b/backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\EventSubscriber; +namespace App\Fishbowl\EventSubscriber; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Security\Core\Security; use Symfony\Component\Workflow\Event\GuardEvent; diff --git a/backend/src/Factory/FishbowlFactory.php b/backend/src/Fishbowl/Factory/FishbowlFactory.php similarity index 94% rename from backend/src/Factory/FishbowlFactory.php rename to backend/src/Fishbowl/Factory/FishbowlFactory.php index 40bc272f5..b18c553c2 100644 --- a/backend/src/Factory/FishbowlFactory.php +++ b/backend/src/Fishbowl/Factory/FishbowlFactory.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Factory; +namespace App\Fishbowl\Factory; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Zenstruck\Foundry\ModelFactory; /** @extends ModelFactory */ diff --git a/backend/src/Repository/FishbowlRepository.php b/backend/src/Fishbowl/Repository/FishbowlRepository.php similarity index 93% rename from backend/src/Repository/FishbowlRepository.php rename to backend/src/Fishbowl/Repository/FishbowlRepository.php index 6639bd792..b75d5f40c 100644 --- a/backend/src/Repository/FishbowlRepository.php +++ b/backend/src/Fishbowl/Repository/FishbowlRepository.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Repository; +namespace App\Fishbowl\Repository; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\DBAL\Types\Types; use Doctrine\Persistence\ManagerRegistry; diff --git a/backend/src/Resolver/FishbowlCreatorResolver.php b/backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php similarity index 90% rename from backend/src/Resolver/FishbowlCreatorResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php index 1f49b3292..1d82232b2 100644 --- a/backend/src/Resolver/FishbowlCreatorResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\QueryItemResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Service\PrivateFishbowlService; use Symfony\Component\Security\Core\Security; use Webmozart\Assert\Assert; diff --git a/backend/src/Resolver/FishbowlFinishMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php similarity index 91% rename from backend/src/Resolver/FishbowlFinishMutationResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php index 3439a8e0d..17e754e86 100644 --- a/backend/src/Resolver/FishbowlFinishMutationResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\Workflow\WorkflowInterface; class FishbowlFinishMutationResolver implements MutationResolverInterface diff --git a/backend/src/Resolver/FishbowlIntroduceMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php similarity index 91% rename from backend/src/Resolver/FishbowlIntroduceMutationResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php index 16e307edb..ae346bfea 100644 --- a/backend/src/Resolver/FishbowlIntroduceMutationResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\Workflow\WorkflowInterface; class FishbowlIntroduceMutationResolver implements MutationResolverInterface diff --git a/backend/src/Resolver/FishbowlNoIntroRunMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php similarity index 91% rename from backend/src/Resolver/FishbowlNoIntroRunMutationResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php index c35051e12..fcf30bc4d 100644 --- a/backend/src/Resolver/FishbowlNoIntroRunMutationResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\Workflow\WorkflowInterface; class FishbowlNoIntroRunMutationResolver implements MutationResolverInterface diff --git a/backend/src/Resolver/FishbowlResolver.php b/backend/src/Fishbowl/Resolver/FishbowlResolver.php similarity index 88% rename from backend/src/Resolver/FishbowlResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlResolver.php index 9024b277e..ba5aa22ea 100644 --- a/backend/src/Resolver/FishbowlResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlResolver.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\QueryItemResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Service\PrivateFishbowlService; use Webmozart\Assert\Assert; class FishbowlResolver implements QueryItemResolverInterface diff --git a/backend/src/Resolver/FishbowlRunMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php similarity index 91% rename from backend/src/Resolver/FishbowlRunMutationResolver.php rename to backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php index 1349b5f2a..96276e09d 100644 --- a/backend/src/Resolver/FishbowlRunMutationResolver.php +++ b/backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Resolver; +namespace App\Fishbowl\Resolver; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\Workflow\WorkflowInterface; class FishbowlRunMutationResolver implements MutationResolverInterface diff --git a/backend/src/Service/FishbowlService.php b/backend/src/Fishbowl/Service/FishbowlService.php similarity index 95% rename from backend/src/Service/FishbowlService.php rename to backend/src/Fishbowl/Service/FishbowlService.php index 3986ad0b7..4fa4b1025 100644 --- a/backend/src/Service/FishbowlService.php +++ b/backend/src/Fishbowl/Service/FishbowlService.php @@ -11,15 +11,15 @@ * file that was distributed with this source code. */ -namespace App\Service; - -use App\Entity\Fishbowl; -use App\Entity\Guest; -use App\Entity\Participant; -use App\Entity\User; -use App\Repository\FishbowlRepository; -use App\Repository\GuestRepository; -use App\Repository\ParticipantRepository; +namespace App\Fishbowl\Service; + +use App\Core\Entity\Guest; +use App\Core\Entity\Participant; +use App\Core\Entity\User; +use App\Core\Repository\GuestRepository; +use App\Core\Repository\ParticipantRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Hashids\Hashids; use Ramsey\Uuid\UuidInterface; use Symfony\Component\HttpFoundation\Request; diff --git a/backend/src/Service/PrivateFishbowlService.php b/backend/src/Fishbowl/Service/PrivateFishbowlService.php similarity index 91% rename from backend/src/Service/PrivateFishbowlService.php rename to backend/src/Fishbowl/Service/PrivateFishbowlService.php index 840098c34..a1e4a7cde 100644 --- a/backend/src/Service/PrivateFishbowlService.php +++ b/backend/src/Fishbowl/Service/PrivateFishbowlService.php @@ -11,11 +11,11 @@ * file that was distributed with this source code. */ -namespace App\Service; +namespace App\Fishbowl\Service; -use App\Encryption\HalitePasswordEncryption; -use App\Entity\Fishbowl; -use App\Repository\FishbowlRepository; +use App\Core\Encryption\HalitePasswordEncryption; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Security\Core\Security; diff --git a/backend/src/Stage/FishbowlValidateStage.php b/backend/src/Fishbowl/Stage/FishbowlValidateStage.php similarity index 90% rename from backend/src/Stage/FishbowlValidateStage.php rename to backend/src/Fishbowl/Stage/FishbowlValidateStage.php index c06b2f865..a2f9255c0 100644 --- a/backend/src/Stage/FishbowlValidateStage.php +++ b/backend/src/Fishbowl/Stage/FishbowlValidateStage.php @@ -11,12 +11,12 @@ * file that was distributed with this source code. */ -namespace App\Stage; +namespace App\Fishbowl\Stage; use ApiPlatform\Core\GraphQl\Resolver\Stage\ValidateStageInterface; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Service\FishbowlService; +use App\Core\Entity\User; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Service\FishbowlService; use Symfony\Component\Security\Core\Security; use Webmozart\Assert\Assert; diff --git a/backend/src/Validator/Constraints/FutureFishbowl.php b/backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php similarity index 91% rename from backend/src/Validator/Constraints/FutureFishbowl.php rename to backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php index 0e7100bfe..f5a9e3be7 100644 --- a/backend/src/Validator/Constraints/FutureFishbowl.php +++ b/backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Fishbowl\Validator\Constraints; use Symfony\Component\Validator\Constraint; diff --git a/backend/src/Validator/Constraints/FutureFishbowlValidator.php b/backend/src/Fishbowl/Validator/Constraints/FutureFishbowlValidator.php similarity index 94% rename from backend/src/Validator/Constraints/FutureFishbowlValidator.php rename to backend/src/Fishbowl/Validator/Constraints/FutureFishbowlValidator.php index e79e94a31..6f0b4762f 100644 --- a/backend/src/Validator/Constraints/FutureFishbowlValidator.php +++ b/backend/src/Fishbowl/Validator/Constraints/FutureFishbowlValidator.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Fishbowl\Validator\Constraints; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; diff --git a/backend/src/Validator/Constraints/PrivateFishbowl.php b/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php similarity index 92% rename from backend/src/Validator/Constraints/PrivateFishbowl.php rename to backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php index 532ec249b..c76b19b61 100644 --- a/backend/src/Validator/Constraints/PrivateFishbowl.php +++ b/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Fishbowl\Validator\Constraints; use Symfony\Component\Validator\Constraint; diff --git a/backend/src/Validator/Constraints/PrivateFishbowlValidator.php b/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowlValidator.php similarity index 94% rename from backend/src/Validator/Constraints/PrivateFishbowlValidator.php rename to backend/src/Fishbowl/Validator/Constraints/PrivateFishbowlValidator.php index ca5bf1086..ab67df26f 100644 --- a/backend/src/Validator/Constraints/PrivateFishbowlValidator.php +++ b/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowlValidator.php @@ -11,9 +11,9 @@ * file that was distributed with this source code. */ -namespace App\Validator\Constraints; +namespace App\Fishbowl\Validator\Constraints; -use App\Entity\Fishbowl; +use App\Fishbowl\Entity\Fishbowl; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; diff --git a/backend/src/Kernel.php b/backend/src/Kernel.php index 648571116..ee8d49aa4 100644 --- a/backend/src/Kernel.php +++ b/backend/src/Kernel.php @@ -13,9 +13,9 @@ namespace App; -use App\JWT\TokenGenerator\JaasTokenGenerator; -use App\JWT\TokenGenerator\SelfHostedTokenGenerator; -use App\JWT\TokenGenerator\TokenGeneratorInterface; +use App\Core\JWT\TokenGenerator\JaasTokenGenerator; +use App\Core\JWT\TokenGenerator\SelfHostedTokenGenerator; +use App\Core\JWT\TokenGenerator\TokenGeneratorInterface; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\Config\Resource\FileResource; diff --git a/backend/tests/Functional/FishbowlListFunctionalTest.php b/backend/tests/Functional/FishbowlListFunctionalTest.php index b31e65712..76f963c14 100644 --- a/backend/tests/Functional/FishbowlListFunctionalTest.php +++ b/backend/tests/Functional/FishbowlListFunctionalTest.php @@ -14,10 +14,10 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php b/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php index c6f574180..9723f8f18 100644 --- a/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php +++ b/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php @@ -14,10 +14,10 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use Symfony\Contracts\HttpClient\ResponseInterface; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Functional/GetFishbowlFunctionalTest.php b/backend/tests/Functional/GetFishbowlFunctionalTest.php index 30edade12..3143d5c75 100644 --- a/backend/tests/Functional/GetFishbowlFunctionalTest.php +++ b/backend/tests/Functional/GetFishbowlFunctionalTest.php @@ -14,9 +14,9 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Factory\FishbowlFactory; use Symfony\Contracts\HttpClient\ResponseInterface; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Functional/LoginFunctionalTest.php b/backend/tests/Functional/LoginFunctionalTest.php index 74bc492bf..4300de4a2 100644 --- a/backend/tests/Functional/LoginFunctionalTest.php +++ b/backend/tests/Functional/LoginFunctionalTest.php @@ -14,7 +14,7 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Factory\UserFactory; +use App\Core\Factory\UserFactory; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Functional/RefreshTokenFunctionalTest.php b/backend/tests/Functional/RefreshTokenFunctionalTest.php index 66639b4ee..88bddbe71 100644 --- a/backend/tests/Functional/RefreshTokenFunctionalTest.php +++ b/backend/tests/Functional/RefreshTokenFunctionalTest.php @@ -14,9 +14,9 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Entity\Fishbowl; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use Lexik\Bundle\JWTAuthenticationBundle\Security\Authentication\Token\JWTUserToken; use Sonata\UserBundle\Model\UserInterface; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Functional/UpdateFishbowlFunctionalTest.php b/backend/tests/Functional/UpdateFishbowlFunctionalTest.php index 8aa88091f..bbdc92910 100644 --- a/backend/tests/Functional/UpdateFishbowlFunctionalTest.php +++ b/backend/tests/Functional/UpdateFishbowlFunctionalTest.php @@ -14,10 +14,10 @@ namespace App\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use Ramsey\Uuid\UuidInterface; use Symfony\Contracts\HttpClient\ResponseInterface; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Integration/FishbowlRepositoryTest.php b/backend/tests/Integration/FishbowlRepositoryTest.php index f055175a9..14525bd18 100644 --- a/backend/tests/Integration/FishbowlRepositoryTest.php +++ b/backend/tests/Integration/FishbowlRepositoryTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Integration; -use App\Entity\Fishbowl; -use App\Factory\FishbowlFactory; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Integration/ParticipantRepositoryTest.php b/backend/tests/Integration/ParticipantRepositoryTest.php index c340fb341..6370937e5 100644 --- a/backend/tests/Integration/ParticipantRepositoryTest.php +++ b/backend/tests/Integration/ParticipantRepositoryTest.php @@ -13,12 +13,12 @@ namespace App\Tests\Integration; -use App\Entity\Participant; -use App\Factory\FishbowlFactory; -use App\Factory\GuestFactory; -use App\Factory\ParticipantFactory; -use App\Factory\UserFactory; -use App\Repository\ParticipantRepository; +use App\Core\Entity\Participant; +use App\Core\Factory\GuestFactory; +use App\Core\Factory\ParticipantFactory; +use App\Core\Factory\UserFactory; +use App\Core\Repository\ParticipantRepository; +use App\Fishbowl\Factory\FishbowlFactory; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Zenstruck\Foundry\Test\Factories; use Zenstruck\Foundry\Test\ResetDatabase; diff --git a/backend/tests/Unit/Controller/FishbowlControllerTest.php b/backend/tests/Unit/Controller/FishbowlControllerTest.php index c97740acf..ae4a0d449 100644 --- a/backend/tests/Unit/Controller/FishbowlControllerTest.php +++ b/backend/tests/Unit/Controller/FishbowlControllerTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Unit\Controller; -use App\Controller\FishbowlController; -use App\Service\FishbowlService; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Controller\FishbowlController; +use App\Fishbowl\Service\FishbowlService; +use App\Fishbowl\Service\PrivateFishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\JsonResponse; diff --git a/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php b/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php index 3f6d19279..432b5ea50 100644 --- a/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php +++ b/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Unit; -use App\Entity\Fishbowl; -use App\EventSubscriber\FishbowlDoctrineSubscriber; -use App\Factory\FishbowlFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\EventSubscriber\FishbowlDoctrineSubscriber; +use App\Fishbowl\Factory\FishbowlFactory; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Events; diff --git a/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php b/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php index 62d89d467..92200cdcf 100644 --- a/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php +++ b/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Unit; -use App\Entity\Fishbowl; -use App\EventSubscriber\FishbowlIntroduceAndNoIntroRunSubscriber; -use App\Factory\FishbowlFactory; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\EventSubscriber\FishbowlIntroduceAndNoIntroRunSubscriber; +use App\Fishbowl\Factory\FishbowlFactory; use PHPUnit\Framework\TestCase; use Symfony\Component\Workflow\Event\GuardEvent; use Symfony\Component\Workflow\Marking; diff --git a/backend/tests/Unit/FishbowlListExtensionTest.php b/backend/tests/Unit/FishbowlListExtensionTest.php index 13f212465..8cf1d551d 100644 --- a/backend/tests/Unit/FishbowlListExtensionTest.php +++ b/backend/tests/Unit/FishbowlListExtensionTest.php @@ -14,9 +14,9 @@ namespace App\Tests\Unit; use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGenerator; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Extension\FishbowlListExtension; +use App\Core\Entity\User; +use App\Core\Extension\FishbowlListExtension; +use App\Fishbowl\Entity\Fishbowl; use Doctrine\ORM\EntityManager; use Doctrine\ORM\QueryBuilder; use PHPUnit\Framework\MockObject\Stub; diff --git a/backend/tests/Unit/FishbowlServiceTest.php b/backend/tests/Unit/FishbowlServiceTest.php index 0465dc7a6..281d2edff 100644 --- a/backend/tests/Unit/FishbowlServiceTest.php +++ b/backend/tests/Unit/FishbowlServiceTest.php @@ -13,14 +13,14 @@ namespace App\Tests\Unit; -use App\Entity\Fishbowl; -use App\Entity\Guest; -use App\Entity\Participant; -use App\Entity\User; -use App\Repository\FishbowlRepository; -use App\Repository\GuestRepository; -use App\Repository\ParticipantRepository; -use App\Service\FishbowlService; +use App\Core\Entity\Guest; +use App\Core\Entity\Participant; +use App\Core\Entity\User; +use App\Core\Repository\GuestRepository; +use App\Core\Repository\ParticipantRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Service\FishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; diff --git a/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php b/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php index bd36b411a..3a9bb725d 100644 --- a/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php +++ b/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php @@ -13,10 +13,10 @@ namespace App\Tests\Unit; -use App\Entity\Fishbowl; -use App\EventSubscriber\FishbowlTransitionsSubscriber; -use App\Factory\FishbowlFactory; -use App\Repository\FishbowlRepository; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\EventSubscriber\FishbowlTransitionsSubscriber; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Symfony\Component\Workflow\Event\Event; diff --git a/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php b/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php index 01551c9ab..e6be30e30 100644 --- a/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php +++ b/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Unit; -use App\EventSubscriber\FishbowlWorkflowSubscriber; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; +use App\Core\Factory\UserFactory; +use App\Fishbowl\EventSubscriber\FishbowlWorkflowSubscriber; +use App\Fishbowl\Factory\FishbowlFactory; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Security; diff --git a/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php b/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php index 078abeec0..f8ec6f877 100644 --- a/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php +++ b/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php @@ -13,12 +13,12 @@ namespace App\Tests\Unit\JWT; -use App\Entity\Fishbowl; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; -use App\JWT\CurrentUserFishbowl; -use App\JWT\CurrentUserRoom; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Core\JWT\CurrentUserFishbowl; +use App\Core\JWT\CurrentUserRoom; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/JWT/CurrentUserRoomTest.php b/backend/tests/Unit/JWT/CurrentUserRoomTest.php index a0928b251..7bc39e74f 100644 --- a/backend/tests/Unit/JWT/CurrentUserRoomTest.php +++ b/backend/tests/Unit/JWT/CurrentUserRoomTest.php @@ -13,10 +13,10 @@ namespace App\Tests\Unit\JWT; -use App\Entity\User; -use App\Factory\UserFactory; -use App\JWT\CurrentUserRoom; -use App\Service\FishbowlService; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Core\JWT\CurrentUserRoom; +use App\Fishbowl\Service\FishbowlService; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; diff --git a/backend/tests/Unit/JWT/HostValidatorTest.php b/backend/tests/Unit/JWT/HostValidatorTest.php index ceca7d072..85a7840f7 100644 --- a/backend/tests/Unit/JWT/HostValidatorTest.php +++ b/backend/tests/Unit/JWT/HostValidatorTest.php @@ -13,12 +13,12 @@ namespace App\Tests\Unit\JWT; -use App\Entity\User; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; -use App\JWT\CurrentUserRoom; -use App\JWT\HostValidator; -use App\Repository\FishbowlRepository; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Core\JWT\CurrentUserRoom; +use App\Core\JWT\HostValidator; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php b/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php index 1652e341d..5cf00dd8f 100644 --- a/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php +++ b/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php @@ -13,17 +13,16 @@ namespace App\Tests\Unit\JWT; -use App\Entity\User; -use App\EventSubscriber\JWTCreatedSubscriber; -use App\Factory\UserFactory; -use App\JWT\Model\JWTToken; -use App\JWT\Model\Payload\HeaderPayload; -use App\JWT\Model\Payload\UserPayload; -use App\JWT\TokenGenerator\TokenGeneratorInterface; +use App\Core\Entity\User; +use App\Core\EventSubscriber\JWTCreatedSubscriber; +use App\Core\Factory\UserFactory; +use App\Core\JWT\Model\JWTToken; +use App\Core\JWT\Model\Payload\HeaderPayload; +use App\Core\JWT\Model\Payload\UserPayload; +use App\Core\JWT\TokenGenerator\TokenGeneratorInterface; use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; - use Zenstruck\Foundry\Test\Factories; class JWTCreatedSubscriberTest extends TestCase diff --git a/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php b/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php index 6a6ef3a94..ee0218d76 100644 --- a/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php +++ b/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php @@ -13,14 +13,14 @@ namespace App\Tests\Unit\JWT; -use App\Entity\User; -use App\Factory\UserFactory; -use App\JWT\HostValidator; -use App\JWT\Model\JWTToken; -use App\JWT\Model\Payload\FeaturesPayload; -use App\JWT\Model\Payload\HeaderPayload; -use App\JWT\Model\Payload\UserPayload; -use App\JWT\TokenGenerator\JaasTokenGenerator; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Core\JWT\HostValidator; +use App\Core\JWT\Model\JWTToken; +use App\Core\JWT\Model\Payload\FeaturesPayload; +use App\Core\JWT\Model\Payload\HeaderPayload; +use App\Core\JWT\Model\Payload\UserPayload; +use App\Core\JWT\TokenGenerator\JaasTokenGenerator; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php b/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php index 75ade1de9..0649f2232 100644 --- a/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php +++ b/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php @@ -13,12 +13,12 @@ namespace App\Tests\Unit\JWT; -use App\Entity\User; -use App\Factory\UserFactory; -use App\JWT\CurrentUserFishbowl; -use App\JWT\Model\JWTToken; -use App\JWT\Model\Payload\UserPayload; -use App\JWT\TokenGenerator\SelfHostedTokenGenerator; +use App\Core\Entity\User; +use App\Core\Factory\UserFactory; +use App\Core\JWT\CurrentUserFishbowl; +use App\Core\JWT\Model\JWTToken; +use App\Core\JWT\Model\Payload\UserPayload; +use App\Core\JWT\TokenGenerator\SelfHostedTokenGenerator; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/LocaleSubscriberTest.php b/backend/tests/Unit/LocaleSubscriberTest.php index 048e241b7..7bbc90ffc 100644 --- a/backend/tests/Unit/LocaleSubscriberTest.php +++ b/backend/tests/Unit/LocaleSubscriberTest.php @@ -13,7 +13,7 @@ namespace App\Tests\Unit; -use App\EventSubscriber\LocaleSubscriber; +use App\Core\EventSubscriber\LocaleSubscriber; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\RequestEvent; diff --git a/backend/tests/Unit/MailServiceTest.php b/backend/tests/Unit/MailServiceTest.php index cecdcdd55..685b46279 100644 --- a/backend/tests/Unit/MailServiceTest.php +++ b/backend/tests/Unit/MailServiceTest.php @@ -13,11 +13,11 @@ namespace App\Tests\Unit; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; -use App\Model\ResetPassword; -use App\Service\MailerService; -use App\Service\PrivateFishbowlService; +use App\Core\Factory\UserFactory; +use App\Core\Model\ResetPassword; +use App\Core\Service\MailerService; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Service\PrivateFishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; diff --git a/backend/tests/Unit/PrivateFishbowlServiceTest.php b/backend/tests/Unit/PrivateFishbowlServiceTest.php index e11d8ef57..36db10b1f 100644 --- a/backend/tests/Unit/PrivateFishbowlServiceTest.php +++ b/backend/tests/Unit/PrivateFishbowlServiceTest.php @@ -13,10 +13,10 @@ namespace App\Tests\Unit; -use App\Encryption\HalitePasswordEncryption; -use App\Factory\FishbowlFactory; -use App\Repository\FishbowlRepository; -use App\Service\PrivateFishbowlService; +use App\Core\Encryption\HalitePasswordEncryption; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Service\PrivateFishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; diff --git a/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php b/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php index 1bce515df..5e1043dcc 100644 --- a/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php +++ b/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php @@ -13,11 +13,11 @@ namespace App\Tests\Unit\Resolver; -use App\Factory\FishbowlFactory; -use App\Factory\UserFactory; -use App\Repository\FishbowlRepository; -use App\Resolver\FishbowlCreatorResolver; -use App\Service\PrivateFishbowlService; +use App\Core\Factory\UserFactory; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Resolver\FishbowlCreatorResolver; +use App\Fishbowl\Service\PrivateFishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Security; diff --git a/backend/tests/Unit/Resolver/FishbowlResolverTest.php b/backend/tests/Unit/Resolver/FishbowlResolverTest.php index 17cf5e320..f10f70888 100644 --- a/backend/tests/Unit/Resolver/FishbowlResolverTest.php +++ b/backend/tests/Unit/Resolver/FishbowlResolverTest.php @@ -13,10 +13,10 @@ namespace App\Tests\Unit\Resolver; -use App\Factory\FishbowlFactory; -use App\Repository\FishbowlRepository; -use App\Resolver\FishbowlResolver; -use App\Service\PrivateFishbowlService; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Resolver\FishbowlResolver; +use App\Fishbowl\Service\PrivateFishbowlService; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php b/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php index 42b58d18a..21a257208 100644 --- a/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php +++ b/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php @@ -13,9 +13,9 @@ namespace App\Tests\Unit\Validator; -use App\Factory\FishbowlFactory; -use App\Validator\Constraints\PrivateFishbowl; -use App\Validator\Constraints\PrivateFishbowlValidator; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Validator\Constraints\PrivateFishbowl; +use App\Fishbowl\Validator\Constraints\PrivateFishbowlValidator; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; use Zenstruck\Foundry\Test\Factories; diff --git a/backend/tests/Unit/WorkflowMutationResolverTest.php b/backend/tests/Unit/WorkflowMutationResolverTest.php index d149b5e41..a50d4226d 100644 --- a/backend/tests/Unit/WorkflowMutationResolverTest.php +++ b/backend/tests/Unit/WorkflowMutationResolverTest.php @@ -14,13 +14,13 @@ namespace App\Tests\Unit; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; -use App\Entity\Fishbowl; -use App\Factory\FishbowlFactory; -use App\Repository\FishbowlRepository; -use App\Resolver\FishbowlFinishMutationResolver; -use App\Resolver\FishbowlIntroduceMutationResolver; -use App\Resolver\FishbowlNoIntroRunMutationResolver; -use App\Resolver\FishbowlRunMutationResolver; +use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Factory\FishbowlFactory; +use App\Fishbowl\Repository\FishbowlRepository; +use App\Fishbowl\Resolver\FishbowlFinishMutationResolver; +use App\Fishbowl\Resolver\FishbowlIntroduceMutationResolver; +use App\Fishbowl\Resolver\FishbowlNoIntroRunMutationResolver; +use App\Fishbowl\Resolver\FishbowlRunMutationResolver; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\Stub; use PHPUnit\Framework\TestCase; From 4160e014d5bbdc10b219ac618957ccd51cb11d42 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 16:58:52 +0200 Subject: [PATCH 08/52] Update dependency eslint to v8.26.0 (#674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 74 +++++++++++--------------------------- frontend/package.json | 2 +- 2 files changed, 22 insertions(+), 54 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d22c9b0d9..7be40e413 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -58,7 +58,7 @@ "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.25.0", + "eslint": "8.26.0", "eslint-config-next": "12.3.1", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", @@ -2260,9 +2260,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", - "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -7472,14 +7472,15 @@ } }, "node_modules/eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7495,14 +7496,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -8001,26 +8002,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -17611,9 +17592,9 @@ "requires": {} }, "@humanwhocodes/config-array": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", - "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.6.tgz", + "integrity": "sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -21685,14 +21666,15 @@ } }, "eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", - "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -21708,14 +21690,14 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "glob-parent": "^6.0.1", + "glob-parent": "^6.0.2", "globals": "^13.15.0", - "globby": "^11.1.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -21780,20 +21762,6 @@ "type-fest": "^0.20.2" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 028e55566..a740109e9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -76,7 +76,7 @@ "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.25.0", + "eslint": "8.26.0", "eslint-config-next": "12.3.1", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", From 4b421bcce86b7edf065ce48fc8c1af7182b15ca9 Mon Sep 17 00:00:00 2001 From: eddsaura Date: Tue, 25 Oct 2022 12:39:57 +0200 Subject: [PATCH 09/52] Move landing (#675) * Move landing * Move description --- .../Common/Description/Description.tsx | 26 +++++++++++++ .../components/Common/Description/index.ts | 11 ++++++ .../components/Common/Description/style.ts | 35 +++++++++++++++++ .../src/components/Web/Modals/Nickname.tsx | 39 ------------------- .../Web => landing}/HomeSections/Banner.tsx | 4 +- .../Web => landing}/HomeSections/Benefits.tsx | 5 ++- .../ui/animations/home/banner-morph.json | 0 .../ui/animations/home/billboard-desktop.json | 0 .../ui/animations/home/billboard-mobile.json | 0 .../ui/animations/home/billboard-morph-2.json | 0 .../ui/animations/home/billboard-morph.json | 0 .../ui/animations/home/keybenefit1.json | 0 .../ui/animations/home/keybenefit2-morph.json | 0 .../ui/animations/home/keybenefit2.json | 0 .../ui/animations/home/keybenefit3.json | 0 .../ui/animations/home/keybenefit4.json | 0 .../pages/index.ts => landing/ui/styles.ts} | 26 +------------ .../src/{ => landing}/ui/svg/wave-desktop.svg | 0 .../src/{ => landing}/ui/svg/wave-mobile.svg | 0 frontend/src/pages/index.tsx | 21 +++++----- frontend/src/pages/recover-password.tsx | 2 +- 21 files changed, 90 insertions(+), 79 deletions(-) create mode 100644 frontend/src/components/Common/Description/Description.tsx create mode 100644 frontend/src/components/Common/Description/index.ts create mode 100644 frontend/src/components/Common/Description/style.ts delete mode 100644 frontend/src/components/Web/Modals/Nickname.tsx rename frontend/src/{components/Web => landing}/HomeSections/Banner.tsx (91%) rename frontend/src/{components/Web => landing}/HomeSections/Benefits.tsx (87%) rename frontend/src/{ => landing}/ui/animations/home/banner-morph.json (100%) rename frontend/src/{ => landing}/ui/animations/home/billboard-desktop.json (100%) rename frontend/src/{ => landing}/ui/animations/home/billboard-mobile.json (100%) rename frontend/src/{ => landing}/ui/animations/home/billboard-morph-2.json (100%) rename frontend/src/{ => landing}/ui/animations/home/billboard-morph.json (100%) rename frontend/src/{ => landing}/ui/animations/home/keybenefit1.json (100%) rename frontend/src/{ => landing}/ui/animations/home/keybenefit2-morph.json (100%) rename frontend/src/{ => landing}/ui/animations/home/keybenefit2.json (100%) rename frontend/src/{ => landing}/ui/animations/home/keybenefit3.json (100%) rename frontend/src/{ => landing}/ui/animations/home/keybenefit4.json (100%) rename frontend/src/{ui/pages/index.ts => landing/ui/styles.ts} (90%) rename frontend/src/{ => landing}/ui/svg/wave-desktop.svg (100%) rename frontend/src/{ => landing}/ui/svg/wave-mobile.svg (100%) diff --git a/frontend/src/components/Common/Description/Description.tsx b/frontend/src/components/Common/Description/Description.tsx new file mode 100644 index 000000000..3043bca57 --- /dev/null +++ b/frontend/src/components/Common/Description/Description.tsx @@ -0,0 +1,26 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { StyledDescription } from './style'; + +interface Props { + children: React.ReactNode; + className?: string; + center?: boolean; +} + +const Description = ({ children, className = '', center }: Props) => { + return ( + + {children} + + ); +}; + +export default Description; diff --git a/frontend/src/components/Common/Description/index.ts b/frontend/src/components/Common/Description/index.ts new file mode 100644 index 000000000..663408cc8 --- /dev/null +++ b/frontend/src/components/Common/Description/index.ts @@ -0,0 +1,11 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +export * from './Description'; +export { default } from './Description'; diff --git a/frontend/src/components/Common/Description/style.ts b/frontend/src/components/Common/Description/style.ts new file mode 100644 index 000000000..9bf87ec09 --- /dev/null +++ b/frontend/src/components/Common/Description/style.ts @@ -0,0 +1,35 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { media, rems, space } from '@/ui/helpers'; +import styled from 'styled-components'; + +export const StyledDescription = styled.div<{ center?: boolean }>` + margin-bottom: ${space(5)}; + text-align: left; + + a { + text-decoration: underline; + } + + ${media.min('tablet')` + margin: ${({ center }) => (center ? `0 auto ${space(5)}}` : `0 0 ${space(5)}}`)}; + max-width: ${rems(700)}; + text-align:'left'; + + ${media.min('tablet')` + text-align: ${({ center }) => (center ? 'center' : 'left')}; + margin: ${({ center }) => (center ? `0 auto ${space(5)}}` : `0 0 ${space(5)}}`)}; + `} + `} + + p + p { + margin-top: ${space(2)}; + } +`; diff --git a/frontend/src/components/Web/Modals/Nickname.tsx b/frontend/src/components/Web/Modals/Nickname.tsx deleted file mode 100644 index ccbd14bf8..000000000 --- a/frontend/src/components/Web/Modals/Nickname.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/*! - * This file is part of the Stooa codebase. - * - * (c) 2020 - present Runroom SL - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -import React from 'react'; -import useTranslation from 'next-translate/useTranslation'; - -import Modal from '@/ui/Modal'; -import Cross from '@/ui/svg/cross.svg'; -import Button from '@/components/Common/Button'; - -interface Props { - toggleModal: () => void; -} - -const Nickname: React.FC = ({ toggleModal }) => { - const { t } = useTranslation('common'); - - return ( - -
- -

{t('fishbowl:prejoin.title')}

- -
-
- ); -}; - -export default Nickname; diff --git a/frontend/src/components/Web/HomeSections/Banner.tsx b/frontend/src/landing/HomeSections/Banner.tsx similarity index 91% rename from frontend/src/components/Web/HomeSections/Banner.tsx rename to frontend/src/landing/HomeSections/Banner.tsx index 32a29d267..ee4543e56 100644 --- a/frontend/src/components/Web/HomeSections/Banner.tsx +++ b/frontend/src/landing/HomeSections/Banner.tsx @@ -12,8 +12,8 @@ import useTranslation from 'next-translate/useTranslation'; import lottie from 'lottie-web'; import { ROUTE_FISHBOWL_CREATE } from '@/app.config'; -import { Banner as BannerStyled } from '@/ui/pages'; -import AnimPath from '@/ui/animations/home/banner-morph.json'; +import { Banner as BannerStyled } from '@/landing/ui/styles'; +import AnimPath from '@/landing/ui/animations/home/banner-morph.json'; import RedirectLink from '@/components/Web/RedirectLink'; import Button from '@/components/Common/Button'; diff --git a/frontend/src/components/Web/HomeSections/Benefits.tsx b/frontend/src/landing/HomeSections/Benefits.tsx similarity index 87% rename from frontend/src/components/Web/HomeSections/Benefits.tsx rename to frontend/src/landing/HomeSections/Benefits.tsx index d3472337d..5ab2128de 100644 --- a/frontend/src/components/Web/HomeSections/Benefits.tsx +++ b/frontend/src/landing/HomeSections/Benefits.tsx @@ -12,13 +12,14 @@ import useTranslation from 'next-translate/useTranslation'; import lottie from 'lottie-web'; import { Lottie } from '@/types/animations'; -import { Column, Description, Row, Wrapper } from '@/ui/pages'; +import { Column, Row, Wrapper } from '@/landing/ui/styles'; +import Description from '@/components/Common/Description'; interface Props { item: Lottie; } -const importAnimatiom = (path: string) => require(`@/ui/animations/home/${path}`); +const importAnimatiom = (path: string) => require(`@/landing/ui/animations/home/${path}`); const Benefits = ({ item }: Props): JSX.Element => { const { t } = useTranslation('home'); diff --git a/frontend/src/ui/animations/home/banner-morph.json b/frontend/src/landing/ui/animations/home/banner-morph.json similarity index 100% rename from frontend/src/ui/animations/home/banner-morph.json rename to frontend/src/landing/ui/animations/home/banner-morph.json diff --git a/frontend/src/ui/animations/home/billboard-desktop.json b/frontend/src/landing/ui/animations/home/billboard-desktop.json similarity index 100% rename from frontend/src/ui/animations/home/billboard-desktop.json rename to frontend/src/landing/ui/animations/home/billboard-desktop.json diff --git a/frontend/src/ui/animations/home/billboard-mobile.json b/frontend/src/landing/ui/animations/home/billboard-mobile.json similarity index 100% rename from frontend/src/ui/animations/home/billboard-mobile.json rename to frontend/src/landing/ui/animations/home/billboard-mobile.json diff --git a/frontend/src/ui/animations/home/billboard-morph-2.json b/frontend/src/landing/ui/animations/home/billboard-morph-2.json similarity index 100% rename from frontend/src/ui/animations/home/billboard-morph-2.json rename to frontend/src/landing/ui/animations/home/billboard-morph-2.json diff --git a/frontend/src/ui/animations/home/billboard-morph.json b/frontend/src/landing/ui/animations/home/billboard-morph.json similarity index 100% rename from frontend/src/ui/animations/home/billboard-morph.json rename to frontend/src/landing/ui/animations/home/billboard-morph.json diff --git a/frontend/src/ui/animations/home/keybenefit1.json b/frontend/src/landing/ui/animations/home/keybenefit1.json similarity index 100% rename from frontend/src/ui/animations/home/keybenefit1.json rename to frontend/src/landing/ui/animations/home/keybenefit1.json diff --git a/frontend/src/ui/animations/home/keybenefit2-morph.json b/frontend/src/landing/ui/animations/home/keybenefit2-morph.json similarity index 100% rename from frontend/src/ui/animations/home/keybenefit2-morph.json rename to frontend/src/landing/ui/animations/home/keybenefit2-morph.json diff --git a/frontend/src/ui/animations/home/keybenefit2.json b/frontend/src/landing/ui/animations/home/keybenefit2.json similarity index 100% rename from frontend/src/ui/animations/home/keybenefit2.json rename to frontend/src/landing/ui/animations/home/keybenefit2.json diff --git a/frontend/src/ui/animations/home/keybenefit3.json b/frontend/src/landing/ui/animations/home/keybenefit3.json similarity index 100% rename from frontend/src/ui/animations/home/keybenefit3.json rename to frontend/src/landing/ui/animations/home/keybenefit3.json diff --git a/frontend/src/ui/animations/home/keybenefit4.json b/frontend/src/landing/ui/animations/home/keybenefit4.json similarity index 100% rename from frontend/src/ui/animations/home/keybenefit4.json rename to frontend/src/landing/ui/animations/home/keybenefit4.json diff --git a/frontend/src/ui/pages/index.ts b/frontend/src/landing/ui/styles.ts similarity index 90% rename from frontend/src/ui/pages/index.ts rename to frontend/src/landing/ui/styles.ts index 110e974b7..c54ce47f2 100644 --- a/frontend/src/ui/pages/index.ts +++ b/frontend/src/landing/ui/styles.ts @@ -121,30 +121,6 @@ const Billboard = styled.div` } `; -const Description = styled.div<{ center?: boolean }>` - margin-bottom: ${space(5)}; - text-align: left; - - a { - text-decoration: underline; - } - - ${media.min('tablet')` - margin: ${({ center }) => (center ? `0 auto ${space(5)}}` : `0 0 ${space(5)}}`)}; - max-width: ${rems(700)}; - text-align:'left'; - - ${media.min('tablet')` - text-align: ${({ center }) => (center ? 'center' : 'left')}; - margin: ${({ center }) => (center ? `0 auto ${space(5)}}` : `0 0 ${space(5)}}`)}; - `} - `} - - p + p { - margin-top: ${space(2)}; - } -`; - const Content = styled.div` min-height: ${rems(250)}; position: relative; @@ -366,4 +342,4 @@ const Banner = styled.div` `} `; -export { Content, Description, Row, Column, Billboard, Wrapper, Banner, Sections }; +export { Content, Row, Column, Billboard, Wrapper, Banner, Sections }; diff --git a/frontend/src/ui/svg/wave-desktop.svg b/frontend/src/landing/ui/svg/wave-desktop.svg similarity index 100% rename from frontend/src/ui/svg/wave-desktop.svg rename to frontend/src/landing/ui/svg/wave-desktop.svg diff --git a/frontend/src/ui/svg/wave-mobile.svg b/frontend/src/landing/ui/svg/wave-mobile.svg similarity index 100% rename from frontend/src/ui/svg/wave-mobile.svg rename to frontend/src/landing/ui/svg/wave-mobile.svg diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx index 7ba644f6d..014b8f589 100644 --- a/frontend/src/pages/index.tsx +++ b/frontend/src/pages/index.tsx @@ -22,21 +22,22 @@ import { Lottie } from '@/types/animations'; import { pushEventDataLayer } from '@/lib/analytics'; -import { Billboard, Content, Description, Row, Sections, Wrapper } from '@/ui/pages'; -import WaveMobile from '@/ui/svg/wave-mobile.svg'; -import WaveDesktop from '@/ui/svg/wave-desktop.svg'; -import BillboardDeskAnimPath from '@/ui/animations/home/billboard-desktop.json'; -import BillboardMobAnimPath from '@/ui/animations/home/billboard-mobile.json'; -import MorphBillAnimPath from '@/ui/animations/home/billboard-morph.json'; -import Morph2BillAnimPath from '@/ui/animations/home/billboard-morph-2.json'; -import KeyBenefit2MorphPath from '@/ui/animations/home/keybenefit2-morph.json'; +import { Billboard, Content, Row, Sections, Wrapper } from '@/landing/ui/styles'; +import WaveMobile from '@/landing/ui/svg/wave-mobile.svg'; +import WaveDesktop from '@/landing/ui/svg/wave-desktop.svg'; +import BillboardDeskAnimPath from '@/landing/ui/animations/home/billboard-desktop.json'; +import BillboardMobAnimPath from '@/landing/ui/animations/home/billboard-mobile.json'; +import MorphBillAnimPath from '@/landing/ui/animations/home/billboard-morph.json'; +import Morph2BillAnimPath from '@/landing/ui/animations/home/billboard-morph-2.json'; +import KeyBenefit2MorphPath from '@/landing/ui/animations/home/keybenefit2-morph.json'; import Button from '@/components/Common/Button'; import RedirectLink from '@/components/Web/RedirectLink'; +import Description from '@/components/Common/Description'; -const Benefits = dynamic(import('@/components/Web/HomeSections/Benefits'), { +const Benefits = dynamic(import('@/landing/HomeSections/Benefits'), { loading: () =>
}); -const Banner = dynamic(import('@/components/Web/HomeSections/Banner'), { loading: () =>
}); +const Banner = dynamic(import('@/landing/HomeSections/Banner'), { loading: () =>
}); const Home = () => { const { t } = useTranslation('home'); diff --git a/frontend/src/pages/recover-password.tsx b/frontend/src/pages/recover-password.tsx index 9a1ad7199..c8f8dd91f 100644 --- a/frontend/src/pages/recover-password.tsx +++ b/frontend/src/pages/recover-password.tsx @@ -12,7 +12,7 @@ import useTranslation from 'next-translate/useTranslation'; import { useAuth } from '@/contexts/AuthContext'; import RecoverPasswordForm from '@/components/Web/Forms/recover-password'; import Layout from '@/layouts/Default'; -import { Description } from '@/ui/pages'; +import Description from '@/components/Common/Description'; const RecoverPassword = () => { const { t } = useTranslation('recover'); From 2998d95e49ae8eb17524f520f286f0525633e478 Mon Sep 17 00:00:00 2001 From: Aitor Errasti Date: Tue, 25 Oct 2022 15:15:38 +0200 Subject: [PATCH 10/52] Split backend in bundles (#673) * create folders * wip * refactor config * wip * wip * wip * Fix services.yaml * Fix security * Create fishbowl bundle * wip * wip * Core Bundle * move tests * Fix phpstan config * Fix psalm configuration * Fix lint --- backend/composer.json | 8 +- backend/composer.lock | 239 ++++--- backend/config/bundles.php | 2 + backend/config/packages/api_platform.yaml | 6 +- backend/config/packages/doctrine.yaml | 4 +- backend/config/routes.yaml | 2 +- backend/config/services.yaml | 77 -- backend/packages/Core/config/services.yaml | 72 ++ .../packages/Core/src/Admin/GuestAdmin.php | 55 ++ .../Core/src/Admin/ParticipantAdmin.php | 87 +++ .../src/Admin/ResetPasswordRequestAdmin.php | 61 ++ backend/packages/Core/src/Admin/UserAdmin.php | 129 ++++ backend/packages/Core/src/CoreBundle.php | 27 + .../Core/src/DataFixtures/DefaultFixtures.php | 64 ++ .../src/DataPersister/UserDataPersister.php | 76 ++ .../ChangePasswordDataTransformer.php | 61 ++ .../ChangePasswordLoggedDataTransformer.php | 55 ++ .../Encryption/HalitePasswordEncryption.php | 50 ++ .../PasswordEncryptionInterface.php | 21 + backend/packages/Core/src/Entity/Guest.php | 95 +++ .../packages/Core/src/Entity/Participant.php | 211 ++++++ .../packages/Core/src/Entity/RefreshToken.php | 25 + .../Core/src/Entity/ResetPasswordRequest.php | 60 ++ .../Core/src/Entity/SonataUserUser.php | 33 + backend/packages/Core/src/Entity/User.php | 452 ++++++++++++ .../EventSubscriber/JWTCreatedSubscriber.php | 55 ++ .../src/EventSubscriber/LocaleSubscriber.php | 57 ++ ...nslateJWTAuthenticationFailureResponse.php | 44 ++ .../src/Extension/FishbowlListExtension.php | 52 ++ .../Core/src/Factory/GuestFactory.php | 34 + .../Core/src/Factory/ParticipantFactory.php | 34 + .../src/Factory/SonataUserUserFactory.php | 37 + .../packages/Core/src/Factory/UserFactory.php | 46 ++ .../Core/src/JWT/CurrentUserFishbowl.php | 44 ++ .../packages/Core/src/JWT/CurrentUserRoom.php | 46 ++ .../packages/Core/src/JWT/HostValidator.php | 47 ++ .../packages/Core/src/JWT/Model/JWTToken.php | 68 ++ .../src/JWT/Model/Payload/FeaturesPayload.php | 38 + .../src/JWT/Model/Payload/HeaderPayload.php | 34 + .../JWT/Model/Payload/PayloadInterface.php | 22 + .../src/JWT/Model/Payload/UserPayload.php | 51 ++ .../JWT/TokenGenerator/JaasTokenGenerator.php | 42 ++ .../SelfHostedTokenGenerator.php | 36 + .../TokenGeneratorInterface.php | 22 + .../Core/src/Model/ChangePasswordInput.php | 78 ++ .../src/Model/ChangePasswordLoggedInput.php | 77 ++ .../packages/Core/src/Model/ResetPassword.php | 95 +++ .../Core/src/OpenApi/OpenApiFactory.php | 112 +++ .../Core/src/Repository/GuestRepository.php | 27 + .../src/Repository/ParticipantRepository.php | 78 ++ .../ResetPasswordRequestRepository.php | 65 ++ .../Core/src/Repository/UserRepository.php | 65 ++ .../src/Resolver/ResetPasswordResolver.php | 58 ++ .../Core/src/Resolver/UserResolver.php | 47 ++ .../src/Security/PasswordEncoderService.php | 36 + .../Core/src/Service/MailerService.php | 120 ++++ .../Constraints/SameUserPassword.php | 29 + .../Constraints/SameUserPasswordValidator.php | 68 ++ .../Constraints/ValidResetPasswordToken.php | 24 + .../ValidResetPasswordTokenValidator.php | 44 ++ .../tests/Functional/LoginFunctionalTest.php | 2 +- .../Functional/RefreshTokenFunctionalTest.php | 2 +- .../Integration/ParticipantRepositoryTest.php | 2 +- .../Unit/JWT/CurrentUserFishbowlTest.php | 2 +- .../tests/Unit/JWT/CurrentUserRoomTest.php | 2 +- .../tests/Unit/JWT/HostValidatorTest.php | 2 +- .../Unit/JWT/JWTCreatedSubscriberTest.php | 2 +- .../tests/Unit/JWT/JaasTokenGeneratorTest.php | 2 +- .../Unit/JWT/SelfHostedTokenGeneratorTest.php | 2 +- .../Core}/tests/Unit/LocaleSubscriberTest.php | 2 +- .../Core}/tests/Unit/MailServiceTest.php | 2 +- .../Unit/WorkflowMutationResolverTest.php | 2 +- .../Fishbowl/config/routes.yaml} | 0 .../packages/Fishbowl/config/services.yaml | 38 + .../Fishbowl/src/Admin/FishbowlAdmin.php | 174 +++++ .../src/Controller/FishbowlController.php | 49 ++ .../DataPersister/FishbowlDataPersister.php | 65 ++ .../src/DataProvider/FishbowlDataProvider.php | 53 ++ .../packages/Fishbowl/src/Entity/Fishbowl.php | 670 ++++++++++++++++++ .../FishbowlDoctrineSubscriber.php | 53 ++ ...shbowlIntroduceAndNoIntroRunSubscriber.php | 45 ++ .../FishbowlPasswordDoctrineSubscriber.php | 65 ++ .../EventSubscriber/FishbowlSubscriber.php | 61 ++ .../FishbowlTransitionsSubscriber.php | 81 +++ .../FishbowlWorkflowSubscriber.php | 47 ++ .../Fishbowl/src/Factory/FishbowlFactory.php | 43 ++ .../packages/Fishbowl/src/FishbowlBundle.php | 27 + .../src/Repository/FishbowlRepository.php | 44 ++ .../src/Resolver/FishbowlCreatorResolver.php | 62 ++ .../FishbowlFinishMutationResolver.php | 50 ++ .../FishbowlIntroduceMutationResolver.php | 50 ++ .../FishbowlNoIntroRunMutationResolver.php | 50 ++ .../src/Resolver/FishbowlResolver.php | 52 ++ .../Resolver/FishbowlRunMutationResolver.php | 50 ++ .../Fishbowl/src/Service/FishbowlService.php | 230 ++++++ .../src/Service/PrivateFishbowlService.php | 67 ++ .../src/Stage/FishbowlValidateStage.php | 51 ++ .../Validator/Constraints/FutureFishbowl.php | 29 + .../Constraints/FutureFishbowlValidator.php | 47 ++ .../Validator/Constraints/PrivateFishbowl.php | 30 + .../Constraints/PrivateFishbowlValidator.php | 46 ++ .../Functional/FishbowlListFunctionalTest.php | 2 +- .../FishbowlWorkflowFunctionalTest.php | 2 +- .../Functional/GetFishbowlFunctionalTest.php | 2 +- .../UpdateFishbowlFunctionalTest.php | 2 +- .../Integration/FishbowlRepositoryTest.php | 2 +- .../Controller/FishbowlControllerTest.php | 2 +- .../Unit/FishbowlDoctrineSubscriberTest.php | 2 +- ...wlIntroduceAndNoIntroRunSubscriberTest.php | 2 +- .../tests/Unit/FishbowlListExtensionTest.php | 2 +- .../tests/Unit/FishbowlServiceTest.php | 2 +- .../FishbowlTransitionsSubscriberTest.php | 2 +- .../Unit/FishbowlWorkflowSubscriberTest.php | 2 +- .../tests/Unit/PrivateFishbowlServiceTest.php | 2 +- .../Resolver/FishbowlCreatorResolverTest.php | 2 +- .../Unit/Resolver/FishbowlResolverTest.php | 2 +- .../PrivateFishbowlValidatorTest.php | 2 +- backend/phpstan.neon.dist | 6 + backend/phpunit.xml.dist | 2 +- backend/psalm.xml | 4 +- 120 files changed, 5971 insertions(+), 230 deletions(-) create mode 100644 backend/packages/Core/config/services.yaml create mode 100644 backend/packages/Core/src/Admin/GuestAdmin.php create mode 100644 backend/packages/Core/src/Admin/ParticipantAdmin.php create mode 100644 backend/packages/Core/src/Admin/ResetPasswordRequestAdmin.php create mode 100644 backend/packages/Core/src/Admin/UserAdmin.php create mode 100644 backend/packages/Core/src/CoreBundle.php create mode 100644 backend/packages/Core/src/DataFixtures/DefaultFixtures.php create mode 100644 backend/packages/Core/src/DataPersister/UserDataPersister.php create mode 100644 backend/packages/Core/src/DataTransformer/ChangePasswordDataTransformer.php create mode 100644 backend/packages/Core/src/DataTransformer/ChangePasswordLoggedDataTransformer.php create mode 100644 backend/packages/Core/src/Encryption/HalitePasswordEncryption.php create mode 100644 backend/packages/Core/src/Encryption/PasswordEncryptionInterface.php create mode 100644 backend/packages/Core/src/Entity/Guest.php create mode 100644 backend/packages/Core/src/Entity/Participant.php create mode 100644 backend/packages/Core/src/Entity/RefreshToken.php create mode 100644 backend/packages/Core/src/Entity/ResetPasswordRequest.php create mode 100644 backend/packages/Core/src/Entity/SonataUserUser.php create mode 100644 backend/packages/Core/src/Entity/User.php create mode 100644 backend/packages/Core/src/EventSubscriber/JWTCreatedSubscriber.php create mode 100644 backend/packages/Core/src/EventSubscriber/LocaleSubscriber.php create mode 100644 backend/packages/Core/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php create mode 100644 backend/packages/Core/src/Extension/FishbowlListExtension.php create mode 100644 backend/packages/Core/src/Factory/GuestFactory.php create mode 100644 backend/packages/Core/src/Factory/ParticipantFactory.php create mode 100644 backend/packages/Core/src/Factory/SonataUserUserFactory.php create mode 100644 backend/packages/Core/src/Factory/UserFactory.php create mode 100644 backend/packages/Core/src/JWT/CurrentUserFishbowl.php create mode 100644 backend/packages/Core/src/JWT/CurrentUserRoom.php create mode 100644 backend/packages/Core/src/JWT/HostValidator.php create mode 100644 backend/packages/Core/src/JWT/Model/JWTToken.php create mode 100644 backend/packages/Core/src/JWT/Model/Payload/FeaturesPayload.php create mode 100644 backend/packages/Core/src/JWT/Model/Payload/HeaderPayload.php create mode 100644 backend/packages/Core/src/JWT/Model/Payload/PayloadInterface.php create mode 100644 backend/packages/Core/src/JWT/Model/Payload/UserPayload.php create mode 100644 backend/packages/Core/src/JWT/TokenGenerator/JaasTokenGenerator.php create mode 100644 backend/packages/Core/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php create mode 100644 backend/packages/Core/src/JWT/TokenGenerator/TokenGeneratorInterface.php create mode 100644 backend/packages/Core/src/Model/ChangePasswordInput.php create mode 100644 backend/packages/Core/src/Model/ChangePasswordLoggedInput.php create mode 100644 backend/packages/Core/src/Model/ResetPassword.php create mode 100644 backend/packages/Core/src/OpenApi/OpenApiFactory.php create mode 100644 backend/packages/Core/src/Repository/GuestRepository.php create mode 100644 backend/packages/Core/src/Repository/ParticipantRepository.php create mode 100644 backend/packages/Core/src/Repository/ResetPasswordRequestRepository.php create mode 100644 backend/packages/Core/src/Repository/UserRepository.php create mode 100644 backend/packages/Core/src/Resolver/ResetPasswordResolver.php create mode 100644 backend/packages/Core/src/Resolver/UserResolver.php create mode 100644 backend/packages/Core/src/Security/PasswordEncoderService.php create mode 100644 backend/packages/Core/src/Service/MailerService.php create mode 100644 backend/packages/Core/src/Validator/Constraints/SameUserPassword.php create mode 100644 backend/packages/Core/src/Validator/Constraints/SameUserPasswordValidator.php create mode 100644 backend/packages/Core/src/Validator/Constraints/ValidResetPasswordToken.php create mode 100644 backend/packages/Core/src/Validator/Constraints/ValidResetPasswordTokenValidator.php rename backend/{ => packages/Core}/tests/Functional/LoginFunctionalTest.php (98%) rename backend/{ => packages/Core}/tests/Functional/RefreshTokenFunctionalTest.php (99%) rename backend/{ => packages/Core}/tests/Integration/ParticipantRepositoryTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/CurrentUserFishbowlTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/CurrentUserRoomTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/HostValidatorTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/JWTCreatedSubscriberTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/JaasTokenGeneratorTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php (97%) rename backend/{ => packages/Core}/tests/Unit/LocaleSubscriberTest.php (98%) rename backend/{ => packages/Core}/tests/Unit/MailServiceTest.php (99%) rename backend/{ => packages/Core}/tests/Unit/WorkflowMutationResolverTest.php (99%) rename backend/{config/fishbowl.yaml => packages/Fishbowl/config/routes.yaml} (100%) create mode 100644 backend/packages/Fishbowl/config/services.yaml create mode 100644 backend/packages/Fishbowl/src/Admin/FishbowlAdmin.php create mode 100644 backend/packages/Fishbowl/src/Controller/FishbowlController.php create mode 100644 backend/packages/Fishbowl/src/DataPersister/FishbowlDataPersister.php create mode 100644 backend/packages/Fishbowl/src/DataProvider/FishbowlDataProvider.php create mode 100644 backend/packages/Fishbowl/src/Entity/Fishbowl.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlDoctrineSubscriber.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlSubscriber.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlTransitionsSubscriber.php create mode 100644 backend/packages/Fishbowl/src/EventSubscriber/FishbowlWorkflowSubscriber.php create mode 100644 backend/packages/Fishbowl/src/Factory/FishbowlFactory.php create mode 100644 backend/packages/Fishbowl/src/FishbowlBundle.php create mode 100644 backend/packages/Fishbowl/src/Repository/FishbowlRepository.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlCreatorResolver.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlFinishMutationResolver.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlIntroduceMutationResolver.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlNoIntroRunMutationResolver.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlResolver.php create mode 100644 backend/packages/Fishbowl/src/Resolver/FishbowlRunMutationResolver.php create mode 100644 backend/packages/Fishbowl/src/Service/FishbowlService.php create mode 100644 backend/packages/Fishbowl/src/Service/PrivateFishbowlService.php create mode 100644 backend/packages/Fishbowl/src/Stage/FishbowlValidateStage.php create mode 100644 backend/packages/Fishbowl/src/Validator/Constraints/FutureFishbowl.php create mode 100644 backend/packages/Fishbowl/src/Validator/Constraints/FutureFishbowlValidator.php create mode 100644 backend/packages/Fishbowl/src/Validator/Constraints/PrivateFishbowl.php create mode 100644 backend/packages/Fishbowl/src/Validator/Constraints/PrivateFishbowlValidator.php rename backend/{ => packages/Fishbowl}/tests/Functional/FishbowlListFunctionalTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Functional/FishbowlWorkflowFunctionalTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Functional/GetFishbowlFunctionalTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Functional/UpdateFishbowlFunctionalTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Integration/FishbowlRepositoryTest.php (97%) rename backend/{ => packages/Fishbowl}/tests/Unit/Controller/FishbowlControllerTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlDoctrineSubscriberTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlListExtensionTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlServiceTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlTransitionsSubscriberTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Unit/FishbowlWorkflowSubscriberTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/PrivateFishbowlServiceTest.php (99%) rename backend/{ => packages/Fishbowl}/tests/Unit/Resolver/FishbowlCreatorResolverTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/Resolver/FishbowlResolverTest.php (98%) rename backend/{ => packages/Fishbowl}/tests/Unit/Validator/PrivateFishbowlValidatorTest.php (97%) diff --git a/backend/composer.json b/backend/composer.json index 34ed3993b..65e6fa36e 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -92,12 +92,16 @@ }, "autoload": { "psr-4": { - "App\\": "src/" + "App\\": "src/", + "App\\Core\\": "packages/Core/src/", + "App\\Fishbowl\\": "packages/Fishbowl/src/" } }, "autoload-dev": { "psr-4": { - "App\\Tests\\": "tests/" + "App\\Tests\\": "tests/", + "App\\Core\\Tests\\": "packages/Core/tests/", + "App\\Fishbowl\\Tests\\": "packages/Fishbowl/tests/" } }, "config": { diff --git a/backend/composer.lock b/backend/composer.lock index b452c0c58..a6956ab3c 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -733,23 +733,23 @@ }, { "name": "doctrine/dbal", - "version": "3.4.5", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "a5a58773109c0abb13e658c8ccd92aeec8d07f9e" + "reference": "f38ee8aaca2d58ee88653cb34a6a3880c23f38a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/a5a58773109c0abb13e658c8ccd92aeec8d07f9e", - "reference": "a5a58773109c0abb13e658c8ccd92aeec8d07f9e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/f38ee8aaca2d58ee88653cb34a6a3880c23f38a5", + "reference": "f38ee8aaca2d58ee88653cb34a6a3880c23f38a5", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" @@ -757,14 +757,14 @@ "require-dev": { "doctrine/coding-standard": "10.0.0", "jetbrains/phpstorm-stubs": "2022.2", - "phpstan/phpstan": "1.8.3", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "9.5.24", + "phpstan/phpstan": "1.8.10", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "9.5.25", "psalm/plugin-phpunit": "0.17.0", "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.27.0" + "vimeo/psalm": "4.29.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -824,7 +824,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.4.5" + "source": "https://github.com/doctrine/dbal/tree/3.5.1" }, "funding": [ { @@ -840,7 +840,7 @@ "type": "tidelift" } ], - "time": "2022-09-23T17:48:57+00:00" + "time": "2022-10-24T07:26:18+00:00" }, { "name": "doctrine/deprecations", @@ -1086,34 +1086,35 @@ }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1157,7 +1158,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -1173,27 +1174,27 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392" + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ade2b3bbfb776f27f0558e26eed43b5d9fe1b392", - "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^10", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", @@ -1248,7 +1249,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.5" + "source": "https://github.com/doctrine/inflector/tree/2.0.6" }, "funding": [ { @@ -1264,7 +1265,7 @@ "type": "tidelift" } ], - "time": "2022-09-07T09:01:28+00:00" + "time": "2022-10-20T09:10:12+00:00" }, { "name": "doctrine/instantiator", @@ -1623,20 +1624,20 @@ }, { "name": "doctrine/persistence", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "ac6fce61f037d7e54dbb2435f5b5648d86548e23" + "reference": "05612da375f8a3931161f435f91d6704926e6ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/ac6fce61f037d7e54dbb2435f5b5648d86548e23", - "reference": "ac6fce61f037d7e54dbb2435f5b5648d86548e23", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/05612da375f8a3931161f435f91d6704926e6ec5", + "reference": "05612da375f8a3931161f435f91d6704926e6ec5", "shasum": "" }, "require": { - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1 || ^2", "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, @@ -1647,14 +1648,14 @@ "require-dev": { "composer/package-versions-deprecated": "^1.11", "doctrine/annotations": "^1.7", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^10", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.5.0", + "phpstan/phpstan": "1.8.8", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.22.0" + "vimeo/psalm": "4.29.0" }, "type": "library", "autoload": { @@ -1703,7 +1704,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.0.3" + "source": "https://github.com/doctrine/persistence/tree/3.0.4" }, "funding": [ { @@ -1719,7 +1720,7 @@ "type": "tidelift" } ], - "time": "2022-08-04T21:14:21+00:00" + "time": "2022-10-13T07:34:14+00:00" }, { "name": "doctrine/sql-formatter", @@ -1843,16 +1844,16 @@ }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.12", + "version": "v1.0.13", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7" + "reference": "88354616f4cf4f6620910fd035e282173ba453e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/88354616f4cf4f6620910fd035e282173ba453e8", + "reference": "88354616f4cf4f6620910fd035e282173ba453e8", "shasum": "" }, "require": { @@ -1909,7 +1910,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.13" }, "funding": [ { @@ -1921,7 +1922,7 @@ "type": "tidelift" } ], - "time": "2022-05-05T09:31:05+00:00" + "time": "2022-10-17T19:48:16+00:00" }, { "name": "gedmo/doctrine-extensions", @@ -3219,16 +3220,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.18.0", + "version": "v1.19.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f" + "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/906e0b925895d3a5941eda25f371fbafb3cbc22f", - "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933", + "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933", "shasum": "" }, "require": { @@ -3299,22 +3300,22 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.18.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v1.19.0" }, - "time": "2022-09-13T20:54:27+00:00" + "time": "2022-09-26T03:40:35+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.8.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "8dd908dd6156e974b9a0f8bb4cd5ad0707830f04" + "reference": "33aefcdab42900e36366d0feab6206e2dd68f947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/8dd908dd6156e974b9a0f8bb4cd5ad0707830f04", - "reference": "8dd908dd6156e974b9a0f8bb4cd5ad0707830f04", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/33aefcdab42900e36366d0feab6206e2dd68f947", + "reference": "33aefcdab42900e36366d0feab6206e2dd68f947", "shasum": "" }, "require": { @@ -3344,9 +3345,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.8.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.13.0" }, - "time": "2022-09-04T18:59:06+00:00" + "time": "2022-10-21T09:57:39+00:00" }, { "name": "phpstan/phpstan", @@ -5009,16 +5010,16 @@ }, { "name": "stella-maris/clock", - "version": "0.1.5", + "version": "0.1.6", "source": { "type": "git", - "url": "git@gitlab.com:stella-maris/clock.git", - "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158" + "url": "https://github.com/stella-maris-solutions/clock.git", + "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3" }, "dist": { "type": "zip", - "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=447879c53ca0b2a762cdbfba5e76ccf4deca9158", - "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/a94228dac03c9a8411198ce8c8dacbbe99c930c3", + "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3", "shasum": "" }, "require": { @@ -5048,7 +5049,11 @@ "point in time", "psr20" ], - "time": "2022-08-05T07:21:25+00:00" + "support": { + "issues": "https://github.com/stella-maris-solutions/clock/issues", + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.6" + }, + "time": "2022-09-27T15:03:11+00:00" }, { "name": "symfony/amazon-mailer", @@ -5692,16 +5697,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.1.5", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "ca0fdecd106f81d6bd7f123e77b5830c558e1148" + "reference": "5db7ac51c40d03d576b2696a6b55975e53a3dfd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/ca0fdecd106f81d6bd7f123e77b5830c558e1148", - "reference": "ca0fdecd106f81d6bd7f123e77b5830c558e1148", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/5db7ac51c40d03d576b2696a6b55975e53a3dfd5", + "reference": "5db7ac51c40d03d576b2696a6b55975e53a3dfd5", "shasum": "" }, "require": { @@ -5787,7 +5792,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.1.5" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.1.6" }, "funding": [ { @@ -5803,7 +5808,7 @@ "type": "tidelift" } ], - "time": "2022-09-08T09:34:40+00:00" + "time": "2022-10-10T09:34:31+00:00" }, { "name": "symfony/doctrine-messenger", @@ -7283,16 +7288,16 @@ }, { "name": "symfony/mime", - "version": "v6.1.5", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d521b2204f7dcebe81c1b5fb99ed70dfb6f34b4b" + "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d521b2204f7dcebe81c1b5fb99ed70dfb6f34b4b", - "reference": "d521b2204f7dcebe81c1b5fb99ed70dfb6f34b4b", + "url": "https://api.github.com/repos/symfony/mime/zipball/5ae192b9a39730435cfec025a499f79d05ac68a3", + "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3", "shasum": "" }, "require": { @@ -7304,7 +7309,8 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", @@ -7312,7 +7318,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" }, "type": "library", "autoload": { @@ -7344,7 +7350,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.5" + "source": "https://github.com/symfony/mime/tree/v6.1.6" }, "funding": [ { @@ -7360,7 +7366,7 @@ "type": "tidelift" } ], - "time": "2022-09-02T08:05:20+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/monolog-bridge", @@ -8330,16 +8336,16 @@ }, { "name": "symfony/property-info", - "version": "v6.1.3", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8" + "reference": "f28d0db9d2687f81d68d0dc6b2e42817647f5d64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8", - "reference": "2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8", + "url": "https://api.github.com/repos/symfony/property-info/zipball/f28d0db9d2687f81d68d0dc6b2e42817647f5d64", + "reference": "f28d0db9d2687f81d68d0dc6b2e42817647f5d64", "shasum": "" }, "require": { @@ -8399,7 +8405,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.1.3" + "source": "https://github.com/symfony/property-info/tree/v6.1.6" }, "funding": [ { @@ -8415,7 +8421,7 @@ "type": "tidelift" } ], - "time": "2022-07-19T08:34:05+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/routing", @@ -8765,16 +8771,16 @@ }, { "name": "symfony/security-core", - "version": "v6.1.5", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "ddba1c08f084ac851c41eab99243db7c42ebf189" + "reference": "e42fb611d1a36e6e1e34f8cd715cea108a39cad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/ddba1c08f084ac851c41eab99243db7c42ebf189", - "reference": "ddba1c08f084ac851c41eab99243db7c42ebf189", + "url": "https://api.github.com/repos/symfony/security-core/zipball/e42fb611d1a36e6e1e34f8cd715cea108a39cad5", + "reference": "e42fb611d1a36e6e1e34f8cd715cea108a39cad5", "shasum": "" }, "require": { @@ -8836,7 +8842,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.1.5" + "source": "https://github.com/symfony/security-core/tree/v6.1.6" }, "funding": [ { @@ -8852,7 +8858,7 @@ "type": "tidelift" } ], - "time": "2022-09-17T07:55:45+00:00" + "time": "2022-10-02T08:30:52+00:00" }, { "name": "symfony/security-csrf", @@ -8927,16 +8933,16 @@ }, { "name": "symfony/security-http", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "a106f0f55e9942da5aa9181fbf2175512f583449" + "reference": "789492510f7127035da8bb5dbb4fb745970e2348" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/a106f0f55e9942da5aa9181fbf2175512f583449", - "reference": "a106f0f55e9942da5aa9181fbf2175512f583449", + "url": "https://api.github.com/repos/symfony/security-http/zipball/789492510f7127035da8bb5dbb4fb745970e2348", + "reference": "789492510f7127035da8bb5dbb4fb745970e2348", "shasum": "" }, "require": { @@ -8990,7 +8996,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.1.4" + "source": "https://github.com/symfony/security-http/tree/v6.1.6" }, "funding": [ { @@ -9006,20 +9012,20 @@ "type": "tidelift" } ], - "time": "2022-08-26T10:32:31+00:00" + "time": "2022-10-01T16:55:12+00:00" }, { "name": "symfony/serializer", - "version": "v6.1.5", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "0986800f0c394bd46443afbf0a05c4386ffa1cd6" + "reference": "76af774da9daf606d6400f1445b69d23efa3b238" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/0986800f0c394bd46443afbf0a05c4386ffa1cd6", - "reference": "0986800f0c394bd46443afbf0a05c4386ffa1cd6", + "url": "https://api.github.com/repos/symfony/serializer/zipball/76af774da9daf606d6400f1445b69d23efa3b238", + "reference": "76af774da9daf606d6400f1445b69d23efa3b238", "shasum": "" }, "require": { @@ -9091,7 +9097,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.1.5" + "source": "https://github.com/symfony/serializer/tree/v6.1.6" }, "funding": [ { @@ -9107,7 +9113,7 @@ "type": "tidelift" } ], - "time": "2022-09-29T11:04:32+00:00" + "time": "2022-10-12T05:10:31+00:00" }, { "name": "symfony/service-contracts", @@ -9520,16 +9526,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "ec8da630a439a233817412fca93d14aa1813cc5d" + "reference": "368e9bac2dbaed85d943745b521077f8101b599d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ec8da630a439a233817412fca93d14aa1813cc5d", - "reference": "ec8da630a439a233817412fca93d14aa1813cc5d", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/368e9bac2dbaed85d943745b521077f8101b599d", + "reference": "368e9bac2dbaed85d943745b521077f8101b599d", "shasum": "" }, "require": { @@ -9622,7 +9628,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.1.4" + "source": "https://github.com/symfony/twig-bridge/tree/v6.1.6" }, "funding": [ { @@ -9638,7 +9644,7 @@ "type": "tidelift" } ], - "time": "2022-08-04T19:19:00+00:00" + "time": "2022-10-12T05:10:31+00:00" }, { "name": "symfony/twig-bundle", @@ -12443,25 +12449,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -12487,9 +12498,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "phpstan/phpstan-doctrine", diff --git a/backend/config/bundles.php b/backend/config/bundles.php index 743302ddc..f3981219d 100644 --- a/backend/config/bundles.php +++ b/backend/config/bundles.php @@ -12,6 +12,8 @@ */ return [ + App\Core\CoreBundle::class => ['all' => true], + App\Fishbowl\FishbowlBundle::class => ['all' => true], ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], diff --git a/backend/config/packages/api_platform.yaml b/backend/config/packages/api_platform.yaml index 19972d994..f92ca2ed8 100644 --- a/backend/config/packages/api_platform.yaml +++ b/backend/config/packages/api_platform.yaml @@ -10,9 +10,9 @@ api_platform: enable_docs: false mapping: paths: - - '%kernel.project_dir%/src/Core/Entity' - - '%kernel.project_dir%/src/Fishbowl/Entity' - - '%kernel.project_dir%/src/Core/Model' + - '%kernel.project_dir%/packages/Core/src/Entity' + - '%kernel.project_dir%/packages/Core/src/Model' + - '%kernel.project_dir%/packages/Fishbowl/src/Entity' patch_formats: json: ['application/merge-patch+json'] graphql: diff --git a/backend/config/packages/doctrine.yaml b/backend/config/packages/doctrine.yaml index 27a7b2aeb..bd57e8d5c 100644 --- a/backend/config/packages/doctrine.yaml +++ b/backend/config/packages/doctrine.yaml @@ -18,12 +18,12 @@ doctrine: App\Core: is_bundle: false type: annotation - dir: '%kernel.project_dir%/src/Core/Entity' + dir: '%kernel.project_dir%/packages/Core/src/Entity' prefix: 'App\Core\Entity' alias: App\Core App\Fishbowl: is_bundle: false type: annotation - dir: '%kernel.project_dir%/src/Fishbowl/Entity' + dir: '%kernel.project_dir%/packages/Fishbowl/src/Entity' prefix: 'App\Fishbowl\Entity' alias: App\Fishbowl diff --git a/backend/config/routes.yaml b/backend/config/routes.yaml index 9d01bb98b..3b0deeddc 100644 --- a/backend/config/routes.yaml +++ b/backend/config/routes.yaml @@ -6,7 +6,7 @@ # file that was distributed with this source code. fishbowl: - resource: fishbowl.yaml + resource: '@FishbowlBundle/config/routes.yaml' prefix: /{_locale} requirements: _locale: en|es|ca|fr|id diff --git a/backend/config/services.yaml b/backend/config/services.yaml index 82beabc9c..a109a6a30 100644 --- a/backend/config/services.yaml +++ b/backend/config/services.yaml @@ -22,80 +22,3 @@ services: tags: [doctrine.event_subscriber] calls: - [setAnnotationReader, ['@annotation_reader']] - - # App - App\: - resource: ../src/ - exclude: - - ../src/Core/DependencyInjection/ - - ../src/Core/Entity/ - - ../src/Fishbowl/DependencyInjection/ - - ../src/Fishbowl/Entity/ - - ../src/Kernel.php - - App\Fishbowl\Controller\: - resource: ../src/Fishbowl/Controller/ - tags: [controller.service_arguments] - - App\Core\EventSubscriber\LocaleSubscriber: - bind: - $locales: '%locales%' - - App\Core\OpenApi\OpenApiFactory: - decorates: api_platform.openapi.factory - arguments: - - '@App\Core\OpenApi\OpenApiFactory.inner' - autoconfigure: false - - App\Core\DataPersister\UserDataPersister: - decorates: api_platform.doctrine.orm.data_persister - - App\Fishbowl\DataPersister\FishbowlDataPersister: - decorates: api_platform.doctrine.orm.data_persister - - App\Core\Service\MailerService: - bind: - $from: '%env(MAILER_FROM)%' - $appUrl: '%env(APP_URL)%' - - App\Core\JWT\TokenGenerator\JaasTokenGenerator: - bind: - $appId: '%env(JAAS_APP_ID)%' - $apiKey: '%env(JAAS_API_KEY)%' - - App\Core\Encryption\HalitePasswordEncryption: - bind: - $key: '%env(HALITE_KEY)%' - - App\Fishbowl\Stage\FishbowlValidateStage: - decorates: api_platform.graphql.resolver.stage.validate - - App\Fishbowl\DataProvider\FishbowlDataProvider: - bind: - $collectionDataProvider: '@api_platform.doctrine.orm.default.collection_data_provider' - - # Admin - App\Core\Admin\UserAdmin: - tags: - - { name: sonata.admin, model_class: App\Core\Entity\User, manager_type: orm, label: Users } - calls: - - [setPasswordEncoder, ['@App\Core\Security\PasswordEncoderService']] - - [setMailerService, ['@App\Core\Service\MailerService']] - - App\Fishbowl\Admin\FishbowlAdmin: - tags: - - { name: sonata.admin, model_class: App\Fishbowl\Entity\Fishbowl, manager_type: orm, label: Fishbowls } - calls: - - [setFishbowlService, ['@App\Fishbowl\Service\FishbowlService']] - - App\Core\Admin\ResetPasswordRequestAdmin: - tags: - - { name: sonata.admin, model_class: App\Core\Entity\ResetPasswordRequest, manager_type: orm, label: Reset Password Requests } - - App\Core\Admin\ParticipantAdmin: - tags: - - { name: sonata.admin, model_class: App\Core\Entity\Participant, manager_type: orm, label: Participants } - - App\Core\Admin\GuestAdmin: - tags: - - { name: sonata.admin, model_class: App\Core\Entity\Guest, manager_type: orm, label: Guests } diff --git a/backend/packages/Core/config/services.yaml b/backend/packages/Core/config/services.yaml new file mode 100644 index 000000000..47a6d1733 --- /dev/null +++ b/backend/packages/Core/config/services.yaml @@ -0,0 +1,72 @@ +# This file is part of the Stooa codebase. +# +# (c) 2020 - present Runroom SL +# +# For the full copyright and license information, please view the LICENSE +# file that was distributed with this source code. + +services: + _defaults: + autowire: true + autoconfigure: true + + # App + App\Core\: + resource: ../src/ + exclude: + - ../src/DependencyInjection/ + - ../src/Entity/ + + App\Core\EventSubscriber\LocaleSubscriber: + bind: + $locales: '%locales%' + + App\Core\OpenApi\OpenApiFactory: + decorates: api_platform.openapi.factory + arguments: + - '@App\Core\OpenApi\OpenApiFactory.inner' + autoconfigure: false + + App\Core\DataPersister\UserDataPersister: + decorates: api_platform.doctrine.orm.data_persister + + App\Core\Service\MailerService: + bind: + $from: '%env(MAILER_FROM)%' + $appUrl: '%env(APP_URL)%' + + App\Core\JWT\TokenGenerator\JaasTokenGenerator: + bind: + $appId: '%env(JAAS_APP_ID)%' + $apiKey: '%env(JAAS_API_KEY)%' + + App\Core\Encryption\HalitePasswordEncryption: + bind: + $key: '%env(HALITE_KEY)%' + + App\Fishbowl\Stage\FishbowlValidateStage: + decorates: api_platform.graphql.resolver.stage.validate + + App\Fishbowl\DataProvider\FishbowlDataProvider: + bind: + $collectionDataProvider: '@api_platform.doctrine.orm.default.collection_data_provider' + + # Admin + App\Core\Admin\UserAdmin: + tags: + - { name: sonata.admin, model_class: App\Core\Entity\User, manager_type: orm, label: Users } + calls: + - [setPasswordEncoder, ['@App\Core\Security\PasswordEncoderService']] + - [setMailerService, ['@App\Core\Service\MailerService']] + + App\Core\Admin\ResetPasswordRequestAdmin: + tags: + - { name: sonata.admin, model_class: App\Core\Entity\ResetPasswordRequest, manager_type: orm, label: Reset Password Requests } + + App\Core\Admin\ParticipantAdmin: + tags: + - { name: sonata.admin, model_class: App\Core\Entity\Participant, manager_type: orm, label: Participants } + + App\Core\Admin\GuestAdmin: + tags: + - { name: sonata.admin, model_class: App\Core\Entity\Guest, manager_type: orm, label: Guests } diff --git a/backend/packages/Core/src/Admin/GuestAdmin.php b/backend/packages/Core/src/Admin/GuestAdmin.php new file mode 100644 index 000000000..d02d34c83 --- /dev/null +++ b/backend/packages/Core/src/Admin/GuestAdmin.php @@ -0,0 +1,55 @@ + */ +class GuestAdmin extends AbstractAdmin +{ + /** @param mixed[] $sortValues */ + protected function configureDefaultSortValues(array &$sortValues): void + { + $sortValues['_sort_by'] = 'updatedAt'; + $sortValues['_sort_order'] = 'DESC'; + } + + protected function configureRoutes(RouteCollectionInterface $collection): void + { + $collection->remove('create'); + } + + protected function configureDatagridFilters(DatagridMapper $filter): void + { + $filter + ->add('name'); + } + + protected function configureListFields(ListMapper $list): void + { + $list + ->add('name'); + } + + protected function configureFormFields(FormMapper $form): void + { + $form + ->add('name'); + } +} diff --git a/backend/packages/Core/src/Admin/ParticipantAdmin.php b/backend/packages/Core/src/Admin/ParticipantAdmin.php new file mode 100644 index 000000000..8695cbc1b --- /dev/null +++ b/backend/packages/Core/src/Admin/ParticipantAdmin.php @@ -0,0 +1,87 @@ + */ +class ParticipantAdmin extends AbstractAdmin +{ + /** @param mixed[] $sortValues */ + protected function configureDefaultSortValues(array &$sortValues): void + { + $sortValues['_sort_by'] = 'lastPing'; + $sortValues['_sort_order'] = 'DESC'; + } + + protected function configureRoutes(RouteCollectionInterface $collection): void + { + $collection->remove('create'); + } + + protected function configureDatagridFilters(DatagridMapper $filter): void + { + $filter + ->add('user', ModelFilter::class, [ + 'field_type' => ModelAutocompleteType::class, + 'field_options' => [ + 'property' => 'email', + 'callback' => FishbowlAdmin::hostCallbackFunction(), + ], + ]) + ->add('guest', ModelFilter::class, [ + 'field_type' => ModelAutocompleteType::class, + 'field_options' => [ + 'property' => 'name', + ], + ]) + ->add('fishbowl', ModelFilter::class, [ + 'field_type' => ModelAutocompleteType::class, + 'field_options' => [ + 'property' => 'name', + ], + ]) + ->add('lastPing', DateRangeFilter::class, [ + 'field_type' => DateRangePickerType::class, + ]); + } + + protected function configureListFields(ListMapper $list): void + { + $list + ->add('user') + ->add('guest') + ->add('fishbowl') + ->add('lastPing'); + } + + protected function configureFormFields(FormMapper $form): void + { + $form + ->add('user') + ->add('guest') + ->add('fishbowl') + ->add('lastPing'); + } +} diff --git a/backend/packages/Core/src/Admin/ResetPasswordRequestAdmin.php b/backend/packages/Core/src/Admin/ResetPasswordRequestAdmin.php new file mode 100644 index 000000000..61d61dbdd --- /dev/null +++ b/backend/packages/Core/src/Admin/ResetPasswordRequestAdmin.php @@ -0,0 +1,61 @@ + */ +class ResetPasswordRequestAdmin extends AbstractAdmin +{ + /** @param mixed[] $sortValues */ + protected function configureDefaultSortValues(array &$sortValues): void + { + $sortValues['_sort_by'] = 'requestedAt'; + $sortValues['_sort_order'] = 'DESC'; + } + + protected function configureRoutes(RouteCollectionInterface $collection): void + { + $collection->remove('create'); + } + + protected function configureDatagridFilters(DatagridMapper $filter): void + { + $filter + ->add('user'); + } + + protected function configureListFields(ListMapper $list): void + { + $list + ->add('hashedToken') + ->add('requestedAt') + ->add('expiresAt') + ->add('user'); + } + + protected function configureFormFields(FormMapper $form): void + { + $form + ->add('hashedToken') + ->add('requestedAt') + ->add('expiresAt') + ->add('user'); + } +} diff --git a/backend/packages/Core/src/Admin/UserAdmin.php b/backend/packages/Core/src/Admin/UserAdmin.php new file mode 100644 index 000000000..b9c97df62 --- /dev/null +++ b/backend/packages/Core/src/Admin/UserAdmin.php @@ -0,0 +1,129 @@ + */ +class UserAdmin extends AbstractAdmin +{ + protected ?PasswordEncoderService $passwordEncoder = null; + protected ?MailerService $mailerService = null; + + public function setPasswordEncoder(PasswordEncoderService $passwordEncoder): void + { + $this->passwordEncoder = $passwordEncoder; + } + + public function setMailerService(MailerService $mailerService): void + { + $this->mailerService = $mailerService; + } + + public function prePersist($object): void + { + if (null !== $this->passwordEncoder) { + $this->passwordEncoder->encodePassword($object); + } + if (null !== $this->mailerService) { + $this->mailerService->sendWelcomeEmail($object); + } + } + + public function preUpdate($object): void + { + if (null !== $this->passwordEncoder) { + $this->passwordEncoder->encodePassword($object); + } + } + + protected function configureFormOptions(array &$formOptions): void + { + if (!$this->hasSubject()) { + return; + } + + $subject = $this->getSubject(); + + if (null === $subject->getId()) { + $formOptions = ['validation_groups' => ['Default', 'user:create']]; + } + } + + /** @param mixed[] $sortValues */ + protected function configureDefaultSortValues(array &$sortValues): void + { + $sortValues['_sort_by'] = 'createdAt'; + $sortValues['_sort_order'] = 'DESC'; + } + + protected function configureDatagridFilters(DatagridMapper $filter): void + { + $filter + ->add('name') + ->add('surnames') + ->add('email'); + } + + protected function configureListFields(ListMapper $list): void + { + $list + ->add('createdAt') + ->addIdentifier('email') + ->add('name') + ->add('surnames') + ->add('privacyPolicy') + ->add('allowShareData', FieldDescriptionInterface::TYPE_BOOLEAN, [ + 'editable' => true, + ]) + ->add('locale') + ->add('active', FieldDescriptionInterface::TYPE_BOOLEAN, [ + 'editable' => true, + ]); + } + + protected function configureFormFields(FormMapper $form): void + { + $required = !$this->hasSubject() || null === $this->getSubject()->getId(); + + $form + ->add('email', EmailType::class, [ + 'disabled' => !$required, + ]) + ->add('name') + ->add('surnames') + ->add('privacyPolicy', CheckboxType::class, [ + 'disabled' => !$required, + ]) + ->add('allowShareData') + ->add('linkedinProfile') + ->add('twitterProfile') + ->add('locale', LocaleType::class) + ->add('active') + ->add('plainPassword', TextType::class, [ + 'required' => $required, + ]); + } +} diff --git a/backend/packages/Core/src/CoreBundle.php b/backend/packages/Core/src/CoreBundle.php new file mode 100644 index 000000000..25cc23c12 --- /dev/null +++ b/backend/packages/Core/src/CoreBundle.php @@ -0,0 +1,27 @@ + $config */ + public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void + { + $container->import('../config/services.yaml'); + } +} diff --git a/backend/packages/Core/src/DataFixtures/DefaultFixtures.php b/backend/packages/Core/src/DataFixtures/DefaultFixtures.php new file mode 100644 index 000000000..5f8de0d45 --- /dev/null +++ b/backend/packages/Core/src/DataFixtures/DefaultFixtures.php @@ -0,0 +1,64 @@ + 'admin', + 'email' => 'admin@localhost', + 'password' => self::ADMIN_PASSWORD, + 'enabled' => true, + 'roles' => [UserInterface::ROLE_SUPER_ADMIN], + ]); + + UserFactory::createOne([ + 'email' => 'user@stooa.com', + 'password' => self::ADMIN_PASSWORD, + 'active' => true, + ]); + + $fishbowl = FishbowlFactory::createOne([ + 'startDateTime' => new \DateTime(), + 'timezone' => 'Europe/Madrid', + 'duration' => \DateTime::createFromFormat('!H:i', '02:00'), + 'currentStatus' => Fishbowl::STATUS_NOT_STARTED, + 'slug' => 'test-me-fishbowl', + ])->object(); + + UserFactory::createOne([ + 'email' => 'host@stooa.com', + 'password' => self::ADMIN_PASSWORD, + 'active' => true, + 'fishbowls' => [$fishbowl], + 'createdAt' => new \DateTime(), + ]); + } +} diff --git a/backend/packages/Core/src/DataPersister/UserDataPersister.php b/backend/packages/Core/src/DataPersister/UserDataPersister.php new file mode 100644 index 000000000..9bbeec4a0 --- /dev/null +++ b/backend/packages/Core/src/DataPersister/UserDataPersister.php @@ -0,0 +1,76 @@ +decorated->supports($data, $context); + } + + /** + * @param mixed $data + * @param mixed[] $context + * + * @return object|void + */ + public function persist($data, array $context = []) + { + if ($data instanceof User) { + if (($context['collection_operation_name'] ?? null) === 'post' || + ($context['graphql_operation_name'] ?? null) === 'create') { + $data->setActive(true); + } + + $this->passwordEncoder->encodePassword($data); + } + + $result = $this->decorated->persist($data, $context); + + if ($data instanceof User && ( + ($context['collection_operation_name'] ?? null) === 'post' || + ($context['graphql_operation_name'] ?? null) === 'create') + ) { + $this->mailerService->sendWelcomeEmail($data); + } + + return $result; + } + + /** + * @param mixed $data + * @param mixed[] $context + */ + public function remove($data, array $context = []): void + { + $this->decorated->remove($data, $context); + } +} diff --git a/backend/packages/Core/src/DataTransformer/ChangePasswordDataTransformer.php b/backend/packages/Core/src/DataTransformer/ChangePasswordDataTransformer.php new file mode 100644 index 000000000..7f5c54d39 --- /dev/null +++ b/backend/packages/Core/src/DataTransformer/ChangePasswordDataTransformer.php @@ -0,0 +1,61 @@ +validator->validate($object); + + Assert::isInstanceOf($object, ChangePasswordInput::class); + + $token = (string) $object->getToken(); + $user = $this->helper->validateTokenAndFetchUser($token); + + Assert::isInstanceOf($user, User::class); + + $user->setPlainPassword($object->getPassword()); + + $this->helper->removeResetRequest($token); + $this->passwordEncoder->encodePassword($user); + + return $user; + } + + /** + * @param object|mixed[] $data + * @param mixed[] $context + */ + public function supportsTransformation($data, string $to, array $context = []): bool + { + return User::class === $to && ChangePasswordInput::class === ($context['input']['class'] ?? null); + } +} diff --git a/backend/packages/Core/src/DataTransformer/ChangePasswordLoggedDataTransformer.php b/backend/packages/Core/src/DataTransformer/ChangePasswordLoggedDataTransformer.php new file mode 100644 index 000000000..3e5fb5d91 --- /dev/null +++ b/backend/packages/Core/src/DataTransformer/ChangePasswordLoggedDataTransformer.php @@ -0,0 +1,55 @@ +validator->validate($object); + + Assert::isInstanceOf($object, ChangePasswordLoggedInput::class); + + $user = $this->security->getUser(); + + Assert::isInstanceOf($user, User::class); + + $user->setPlainPassword($object->getNewPassword()); + + return $user; + } + + /** + * @param object|mixed[] $data + * @param mixed[] $context + */ + public function supportsTransformation($data, string $to, array $context = []): bool + { + return User::class === $to && ChangePasswordLoggedInput::class === ($context['input']['class'] ?? null); + } +} diff --git a/backend/packages/Core/src/Encryption/HalitePasswordEncryption.php b/backend/packages/Core/src/Encryption/HalitePasswordEncryption.php new file mode 100644 index 000000000..bf0a05e8a --- /dev/null +++ b/backend/packages/Core/src/Encryption/HalitePasswordEncryption.php @@ -0,0 +1,50 @@ +key)) + ); + } + + public function decrypt(?string $cipherPassword): ?string + { + if (null === $cipherPassword) { + return null; + } + + return Crypto::decrypt( + $cipherPassword, + KeyFactory::importEncryptionKey(new HiddenString($this->key)) + )->getString(); + } +} diff --git a/backend/packages/Core/src/Encryption/PasswordEncryptionInterface.php b/backend/packages/Core/src/Encryption/PasswordEncryptionInterface.php new file mode 100644 index 000000000..0f6883448 --- /dev/null +++ b/backend/packages/Core/src/Encryption/PasswordEncryptionInterface.php @@ -0,0 +1,21 @@ +getId(); + $stringUid = null !== $uid ? ' (' . $uid->toString() . ')' : ''; + + return ($this->getName() ?? '') . $stringUid; + } + + public function getId(): ?UuidInterface + { + return $this->id; + } + + public function setId(string $id): self + { + $this->id = Uuid::fromString($id); + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(?string $name): self + { + $this->name = $name; + + return $this; + } +} diff --git a/backend/packages/Core/src/Entity/Participant.php b/backend/packages/Core/src/Entity/Participant.php new file mode 100644 index 000000000..dcd1d962c --- /dev/null +++ b/backend/packages/Core/src/Entity/Participant.php @@ -0,0 +1,211 @@ +getUserName(); + } + + public function getId(): ?UuidInterface + { + return $this->id; + } + + public function setId(?UuidInterface $id): void + { + $this->id = $id; + } + + public function getUser(): ?User + { + return $this->user; + } + + public function setUser(?User $user): void + { + $this->user = $user; + } + + public function getGuest(): ?Guest + { + return $this->guest; + } + + public function setGuest(?Guest $guest): void + { + $this->guest = $guest; + } + + public function getFishbowl(): ?Fishbowl + { + return $this->fishbowl; + } + + public function setFishbowl(?Fishbowl $fishbowl): void + { + $this->fishbowl = $fishbowl; + } + + public function getLastPing(): ?\DateTimeInterface + { + return $this->lastPing; + } + + public function setLastPing(?\DateTimeInterface $lastPing): self + { + $this->lastPing = $lastPing; + + return $this; + } + + public function getUserName(): string + { + $user = $this->getUser(); + + if (null !== $user) { + return $user->getFullName(); + } + + $guest = $this->getGuest(); + + if (null !== $guest) { + $guestName = $guest->getName(); + MAssert::notNull($guestName); + + return $guestName; + } + + return ''; + } + + public function getPublicTwitterProfile(): ?string + { + $user = $this->getUser(); + + if (null !== $user) { + return $user->getPublicTwitterProfile(); + } + + return null; + } + + public function getPublicLinkedinAccount(): ?string + { + $user = $this->getUser(); + + if (null !== $user) { + return $user->getPublicLinkedinProfile(); + } + + return null; + } + + public function isModerator(Fishbowl $fishbowl): bool + { + $user = $this->getUser(); + + if (null !== $this->getUser()) { + return $fishbowl->getHost() === $user; + } + + return false; + } + + public function isCurrentUser(?UserInterface $currentUser): bool + { + if (null !== $this->getUser()) { + return $this->getUser() === $currentUser; + } + + return false; + } + + public function getGuestId(): ?string + { + $guest = $this->getGuest(); + + if (null !== $guest) { + $uid = $guest->getId(); + + if (null !== $uid) { + return $uid->toString(); + } + } + + return null; + } +} diff --git a/backend/packages/Core/src/Entity/RefreshToken.php b/backend/packages/Core/src/Entity/RefreshToken.php new file mode 100644 index 000000000..8d6df3d3c --- /dev/null +++ b/backend/packages/Core/src/Entity/RefreshToken.php @@ -0,0 +1,25 @@ +initialize($expiresAt, $selector, $hashedToken); + } + + public function getId(): ?UuidInterface + { + return $this->id; + } + + public function getUser(): User + { + return $this->user; + } +} diff --git a/backend/packages/Core/src/Entity/SonataUserUser.php b/backend/packages/Core/src/Entity/SonataUserUser.php new file mode 100644 index 000000000..c4599cbd6 --- /dev/null +++ b/backend/packages/Core/src/Entity/SonataUserUser.php @@ -0,0 +1,33 @@ + + * + * @ORM\OneToMany(targetEntity="App\Fishbowl\Entity\Fishbowl", mappedBy="host") + */ + private Collection $fishbowls; + + /** + * @Groups({"user:write"}) + * @Assert\NotBlank(groups={"user:create"}) + */ + private ?string $plainPassword = null; + + public function __construct() + { + $this->fishbowls = new ArrayCollection(); + } + + public function __toString(): string + { + return $this->getFullName() . ' (' . $this->getUserIdentifier() . ')'; + } + + public function getId(): ?UuidInterface + { + return $this->id; + } + + public function setId(string $id): self + { + $this->id = Uuid::fromString($id); + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getSurnames(): ?string + { + return $this->surnames; + } + + public function setSurnames(string $surnames): self + { + $this->surnames = $surnames; + + return $this; + } + + public function getFullName(): string + { + return $this->getName() . ' ' . $this->getSurnames(); + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } + + public function getUserIdentifier(): string + { + return (string) $this->email; + } + + public function getRoles(): array + { + $roles = $this->roles; + $roles[] = 'ROLE_USER'; + + return array_unique($roles); + } + + /** @param string[] $roles */ + public function setRoles(array $roles): self + { + $this->roles = $roles; + + return $this; + } + + public function getPassword(): string + { + return (string) $this->password; + } + + public function setPassword(string $password): self + { + $this->password = $password; + + return $this; + } + + public function getPrivacyPolicy(): bool + { + return $this->privacyPolicy; + } + + public function setPrivacyPolicy(bool $privacyPolicy): self + { + $this->privacyPolicy = $privacyPolicy; + + return $this; + } + + public function getAllowShareData(): bool + { + return $this->allowShareData; + } + + public function setAllowShareData(bool $allowShareData): self + { + $this->allowShareData = $allowShareData; + + return $this; + } + + public function getActive(): bool + { + return $this->active; + } + + public function setActive(bool $active): self + { + $this->active = $active; + + return $this; + } + + public function getLinkedinProfile(): ?string + { + return $this->linkedinProfile; + } + + public function setLinkedinProfile(?string $linkedinProfile = null): self + { + $this->linkedinProfile = $linkedinProfile; + + return $this; + } + + /** @Groups({"user:foreign"}) */ + public function getPublicLinkedinProfile(): ?string + { + if ($this->getAllowShareData()) { + return $this->linkedinProfile; + } + + return null; + } + + public function getTwitterProfile(): ?string + { + return $this->twitterProfile; + } + + public function setTwitterProfile(?string $twitterProfile = null): self + { + $this->twitterProfile = $twitterProfile; + + return $this; + } + + /** @Groups({"user:foreign"}) */ + public function getPublicTwitterProfile(): ?string + { + if ($this->getAllowShareData()) { + return $this->twitterProfile; + } + + return null; + } + + public function getPlainPassword(): string + { + return (string) $this->plainPassword; + } + + public function setPlainPassword(?string $plainPassword): self + { + $this->plainPassword = $plainPassword; + + return $this; + } + + public function getLocale(): ?string + { + return $this->locale; + } + + public function setLocale(string $locale): self + { + $this->locale = $locale; + + return $this; + } + + /** @return Collection */ + public function getFishbowls(): Collection + { + return $this->fishbowls; + } + + public function addFishbowl(Fishbowl $fishbowl): self + { + if (!$this->fishbowls->contains($fishbowl)) { + $this->fishbowls[] = $fishbowl; + $fishbowl->setHost($this); + } + + return $this; + } + + public function removeFishbowl(Fishbowl $fishbowl): self + { + if ($this->fishbowls->contains($fishbowl)) { + $this->fishbowls->removeElement($fishbowl); + + if ($fishbowl->getHost() === $this) { + $fishbowl->setHost(null); + } + } + + return $this; + } + + public function getCurrentFishbowl(): ?Fishbowl + { + foreach ($this->fishbowls as $fishbowl) { + if (!$fishbowl->isFinished() && $fishbowl->isHappeningNow()) { + return $fishbowl; + } + } + + return null; + } + + public function eraseCredentials(): void + { + $this->plainPassword = null; + } + + public function getSalt(): ?string + { + return null; + } +} diff --git a/backend/packages/Core/src/EventSubscriber/JWTCreatedSubscriber.php b/backend/packages/Core/src/EventSubscriber/JWTCreatedSubscriber.php new file mode 100644 index 000000000..f2dfe6a13 --- /dev/null +++ b/backend/packages/Core/src/EventSubscriber/JWTCreatedSubscriber.php @@ -0,0 +1,55 @@ + */ + public static function getSubscribedEvents(): array + { + return [ + Events::JWT_CREATED => 'onJWTCreated', + ]; + } + + public function onJWTCreated(JWTCreatedEvent $event): void + { + /** @var User */ + $user = $event->getUser(); + + $payload = $event->getData(); + + $jwtPayload = $this->tokenGenerator->generate($user); + + $event->setData(array_merge($jwtPayload->toArray(), $payload)); + + $headerPayload = $jwtPayload->getHeaderPayload(); + + if (null !== $headerPayload) { + $header = $event->getHeader(); + + $event->setHeader(array_merge($header, $headerPayload->toArray())); + } + } +} diff --git a/backend/packages/Core/src/EventSubscriber/LocaleSubscriber.php b/backend/packages/Core/src/EventSubscriber/LocaleSubscriber.php new file mode 100644 index 000000000..884038b55 --- /dev/null +++ b/backend/packages/Core/src/EventSubscriber/LocaleSubscriber.php @@ -0,0 +1,57 @@ +|string> */ + public static function getSubscribedEvents(): array + { + return [ + KernelEvents::REQUEST => [['onKernelRequest', 200]], + ]; + } + + public function onKernelRequest(RequestEvent $event): void + { + $request = $event->getRequest(); + + if (!$request->headers->has('Accept-Language')) { + return; + } + + $locales = $request->headers->get('Accept-Language'); + + if (null === $locales) { + return; + } + + $requestLocale = $request->getPreferredLanguage($this->locales); + + if (null === $requestLocale) { + return; + } + + $request->setLocale($requestLocale); + } +} diff --git a/backend/packages/Core/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php b/backend/packages/Core/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php new file mode 100644 index 000000000..8f3376b87 --- /dev/null +++ b/backend/packages/Core/src/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php @@ -0,0 +1,44 @@ + 'onAuthenticationFailureResponse', + ]; + } + + public function onAuthenticationFailureResponse(AuthenticationFailureEvent $event): void + { + $response = $event->getResponse(); + + Assert::isInstanceOf($response, JWTAuthenticationFailureResponse::class); + + $response->setMessage($this->translator->trans('login.failure')); + } +} diff --git a/backend/packages/Core/src/Extension/FishbowlListExtension.php b/backend/packages/Core/src/Extension/FishbowlListExtension.php new file mode 100644 index 000000000..67be09c8e --- /dev/null +++ b/backend/packages/Core/src/Extension/FishbowlListExtension.php @@ -0,0 +1,52 @@ +security->getUser()) { + return; + } + + Assert::isInstanceOf($user, User::class); + + $rootAlias = $queryBuilder->getRootAliases()[0]; + + $queryBuilder->andWhere(sprintf('%s.host = :host', $rootAlias)); + $queryBuilder->setParameter('host', $user->getId(), 'uuid'); + + $queryBuilder->andWhere(sprintf('%s.currentStatus != :finished', $rootAlias)); + $queryBuilder->setParameter('finished', Fishbowl::STATUS_FINISHED); + + $queryBuilder->addOrderBy(sprintf('%s.startDateTime', $rootAlias), 'ASC'); + } +} diff --git a/backend/packages/Core/src/Factory/GuestFactory.php b/backend/packages/Core/src/Factory/GuestFactory.php new file mode 100644 index 000000000..2c4fd6bc4 --- /dev/null +++ b/backend/packages/Core/src/Factory/GuestFactory.php @@ -0,0 +1,34 @@ + */ +final class GuestFactory extends ModelFactory +{ + /** @return array */ + protected function getDefaults(): array + { + return [ + 'name' => self::faker()->firstName(), + ]; + } + + protected static function getClass(): string + { + return Guest::class; + } +} diff --git a/backend/packages/Core/src/Factory/ParticipantFactory.php b/backend/packages/Core/src/Factory/ParticipantFactory.php new file mode 100644 index 000000000..72db46ffa --- /dev/null +++ b/backend/packages/Core/src/Factory/ParticipantFactory.php @@ -0,0 +1,34 @@ + */ +final class ParticipantFactory extends ModelFactory +{ + /** @return array */ + protected function getDefaults(): array + { + return [ + 'lastPing' => self::faker()->dateTime(), + ]; + } + + protected static function getClass(): string + { + return Participant::class; + } +} diff --git a/backend/packages/Core/src/Factory/SonataUserUserFactory.php b/backend/packages/Core/src/Factory/SonataUserUserFactory.php new file mode 100644 index 000000000..b3b6818f7 --- /dev/null +++ b/backend/packages/Core/src/Factory/SonataUserUserFactory.php @@ -0,0 +1,37 @@ + */ +final class SonataUserUserFactory extends ModelFactory +{ + /** @return array */ + protected function getDefaults(): array + { + return [ + 'username' => self::faker()->unique()->userName(), + 'email' => self::faker()->unique()->email(), + 'password' => self::faker()->password(), + 'enabled' => self::faker()->boolean(), + ]; + } + + protected static function getClass(): string + { + return SonataUserUser::class; + } +} diff --git a/backend/packages/Core/src/Factory/UserFactory.php b/backend/packages/Core/src/Factory/UserFactory.php new file mode 100644 index 000000000..78ddd6230 --- /dev/null +++ b/backend/packages/Core/src/Factory/UserFactory.php @@ -0,0 +1,46 @@ + */ +final class UserFactory extends ModelFactory +{ + /** @return array */ + protected function getDefaults(): array + { + return [ + 'name' => self::faker()->firstName(), + 'surnames' => self::faker()->lastName(), + 'email' => self::faker()->unique()->email(), + 'password' => self::faker()->password(), + 'plainPassword' => self::faker()->word(), + 'privacyPolicy' => self::faker()->boolean(), + 'allowShareData' => true, + 'active' => self::faker()->boolean(), + 'linkedinProfile' => 'https://www.linkedin.com/in/wearestooa', + 'twitterProfile' => 'https://www.twitter.com/wearestooa', + 'locale' => 'en', + 'createdAt' => self::faker()->dateTime(), + 'updatedAt' => self::faker()->dateTime(), + ]; + } + + protected static function getClass(): string + { + return User::class; + } +} diff --git a/backend/packages/Core/src/JWT/CurrentUserFishbowl.php b/backend/packages/Core/src/JWT/CurrentUserFishbowl.php new file mode 100644 index 000000000..2669de63f --- /dev/null +++ b/backend/packages/Core/src/JWT/CurrentUserFishbowl.php @@ -0,0 +1,44 @@ +currentUserRoom->getRoom($user); + + if (null !== $slug) { + return $slug; + } + + Assert::isInstanceOf($user, User::class); + + $currentFishbowl = $user->getCurrentFishbowl(); + + if (null !== $currentFishbowl) { + return (string) $currentFishbowl->getSlug(); + } + + return ''; + } +} diff --git a/backend/packages/Core/src/JWT/CurrentUserRoom.php b/backend/packages/Core/src/JWT/CurrentUserRoom.php new file mode 100644 index 000000000..9c79a1311 --- /dev/null +++ b/backend/packages/Core/src/JWT/CurrentUserRoom.php @@ -0,0 +1,46 @@ +requestStack->getCurrentRequest(); + + if (null !== $currentRequest) { + $slug = $currentRequest->request->get('room'); + + if (null !== $slug && \is_string($slug) && $this->fishbowlService->canFishbowlStart($slug, $user)) { + return $slug; + } + } + + return null; + } +} diff --git a/backend/packages/Core/src/JWT/HostValidator.php b/backend/packages/Core/src/JWT/HostValidator.php new file mode 100644 index 000000000..e0d3c7d46 --- /dev/null +++ b/backend/packages/Core/src/JWT/HostValidator.php @@ -0,0 +1,47 @@ +currentUserRoom->getRoom($user); + + if (null === $slug) { + return false; + } + + Assert::isInstanceOf($user, User::class); + + $fishbowl = $this->fishbowlRepository->findBySlug($slug); + + if (null === $fishbowl) { + return false; + } + + return $fishbowl->getHost() === $user; + } +} diff --git a/backend/packages/Core/src/JWT/Model/JWTToken.php b/backend/packages/Core/src/JWT/Model/JWTToken.php new file mode 100644 index 000000000..9613973ae --- /dev/null +++ b/backend/packages/Core/src/JWT/Model/JWTToken.php @@ -0,0 +1,68 @@ +headerPayload; + } + + public function getNbf(): ?\DateTimeImmutable + { + return $this->nbf; + } + + /** @return array>|null> */ + public function toArray(): array + { + $arrayResponse = [ + RegisteredClaims::ISSUER => $this->iss, + RegisteredClaims::AUDIENCE => $this->aud, + RegisteredClaims::SUBJECT => $this->sub, + 'room' => $this->room, + 'context' => [ + 'user' => $this->user->toArray(), + ], + ]; + + if (null !== $this->nbf) { + $arrayResponse[RegisteredClaims::NOT_BEFORE] = $this->nbf; + } + + if (null !== $this->features) { + $arrayResponse['context']['features'] = $this->features->toArray(); + } + + return $arrayResponse; + } +} diff --git a/backend/packages/Core/src/JWT/Model/Payload/FeaturesPayload.php b/backend/packages/Core/src/JWT/Model/Payload/FeaturesPayload.php new file mode 100644 index 000000000..bfef9cdf3 --- /dev/null +++ b/backend/packages/Core/src/JWT/Model/Payload/FeaturesPayload.php @@ -0,0 +1,38 @@ + */ + public function toArray(): array + { + return [ + 'livestreaming' => $this->livestreaming, + 'outbound-call' => $this->outboundCall, + 'transcription' => $this->transcription, + 'sip-outbound-call' => $this->sipOutboundCall, + 'recording' => $this->recording, + ]; + } +} diff --git a/backend/packages/Core/src/JWT/Model/Payload/HeaderPayload.php b/backend/packages/Core/src/JWT/Model/Payload/HeaderPayload.php new file mode 100644 index 000000000..04bf4deaa --- /dev/null +++ b/backend/packages/Core/src/JWT/Model/Payload/HeaderPayload.php @@ -0,0 +1,34 @@ + */ + public function toArray(): array + { + return [ + 'alg' => $this->alg, + 'kid' => $this->kid, + 'typ' => $this->typ, + ]; + } +} diff --git a/backend/packages/Core/src/JWT/Model/Payload/PayloadInterface.php b/backend/packages/Core/src/JWT/Model/Payload/PayloadInterface.php new file mode 100644 index 000000000..7193ff153 --- /dev/null +++ b/backend/packages/Core/src/JWT/Model/Payload/PayloadInterface.php @@ -0,0 +1,22 @@ +|null> */ + public function toArray(): array; +} diff --git a/backend/packages/Core/src/JWT/Model/Payload/UserPayload.php b/backend/packages/Core/src/JWT/Model/Payload/UserPayload.php new file mode 100644 index 000000000..43579b678 --- /dev/null +++ b/backend/packages/Core/src/JWT/Model/Payload/UserPayload.php @@ -0,0 +1,51 @@ +name = $user->getFullName(); + $this->email = $user->getEmail(); + $this->twitter = $user->getPublicTwitterProfile(); + $this->linkedin = $user->getPublicLinkedinProfile(); + } + + /** @return array */ + public function toArray(): array + { + return [ + 'name' => $this->name, + 'email' => $this->email, + 'twitter' => $this->twitter, + 'linkedin' => $this->linkedin, + 'moderator' => $this->moderator, + 'id' => $this->id, + 'avatar' => $this->avatar, + ]; + } +} diff --git a/backend/packages/Core/src/JWT/TokenGenerator/JaasTokenGenerator.php b/backend/packages/Core/src/JWT/TokenGenerator/JaasTokenGenerator.php new file mode 100644 index 000000000..90eb7ce5b --- /dev/null +++ b/backend/packages/Core/src/JWT/TokenGenerator/JaasTokenGenerator.php @@ -0,0 +1,42 @@ +hostValidator->validateFromRequest($user), $user->getId(), ''); + + return new JWTToken('chat', 'jitsi', $this->appId, '*', $userPayload, + new \DateTimeImmutable('-10 seconds'), + new HeaderPayload($this->apiKey, 'RS256', 'JWT'), + new FeaturesPayload(false, false, false, false, false) + ); + } +} diff --git a/backend/packages/Core/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php b/backend/packages/Core/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php new file mode 100644 index 000000000..f04f3c1ee --- /dev/null +++ b/backend/packages/Core/src/JWT/TokenGenerator/SelfHostedTokenGenerator.php @@ -0,0 +1,36 @@ +currentUserFishbowl->currentSlug($user), + $userPayload + ); + } +} diff --git a/backend/packages/Core/src/JWT/TokenGenerator/TokenGeneratorInterface.php b/backend/packages/Core/src/JWT/TokenGenerator/TokenGeneratorInterface.php new file mode 100644 index 000000000..bd1d3a72b --- /dev/null +++ b/backend/packages/Core/src/JWT/TokenGenerator/TokenGeneratorInterface.php @@ -0,0 +1,22 @@ +token; + } + + public function setToken(?string $token): self + { + $this->token = $token; + + return $this; + } + + public function getPassword(): ?string + { + return $this->password; + } + + public function setPassword(?string $password): self + { + $this->password = $password; + + return $this; + } + + public function getPasswordConfirmation(): ?string + { + return $this->passwordConfirmation; + } + + public function setPasswordConfirmation(?string $passwordConfirmation): self + { + $this->passwordConfirmation = $passwordConfirmation; + + return $this; + } +} diff --git a/backend/packages/Core/src/Model/ChangePasswordLoggedInput.php b/backend/packages/Core/src/Model/ChangePasswordLoggedInput.php new file mode 100644 index 000000000..a534d76a3 --- /dev/null +++ b/backend/packages/Core/src/Model/ChangePasswordLoggedInput.php @@ -0,0 +1,77 @@ +password; + } + + public function setPassword(?string $password): self + { + $this->password = $password; + + return $this; + } + + public function getNewPassword(): ?string + { + return $this->newPassword; + } + + public function setNewPassword(?string $newPassword): self + { + $this->newPassword = $newPassword; + + return $this; + } + + public function getNewPasswordConfirmation(): ?string + { + return $this->newPasswordConfirmation; + } + + public function setNewPasswordConfirmation(?string $newPasswordConfirmation): self + { + $this->newPasswordConfirmation = $newPasswordConfirmation; + + return $this; + } +} diff --git a/backend/packages/Core/src/Model/ResetPassword.php b/backend/packages/Core/src/Model/ResetPassword.php new file mode 100644 index 000000000..ae770ee1e --- /dev/null +++ b/backend/packages/Core/src/Model/ResetPassword.php @@ -0,0 +1,95 @@ +id; + } + + public function setId(UuidInterface $id): self + { + $this->id = $id; + + return $this; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } + + public function getLocale(): ?string + { + return $this->locale; + } + + public function setLocale(string $locale): self + { + $this->locale = $locale; + + return $this; + } +} diff --git a/backend/packages/Core/src/OpenApi/OpenApiFactory.php b/backend/packages/Core/src/OpenApi/OpenApiFactory.php new file mode 100644 index 000000000..5675a130a --- /dev/null +++ b/backend/packages/Core/src/OpenApi/OpenApiFactory.php @@ -0,0 +1,112 @@ +decorated->__invoke($context); + $schemas = $openApi->getComponents()->getSchemas() ?? new \ArrayObject(); + + $schemas['Credentials'] = [ + 'type' => 'object', + 'properties' => [ + 'email' => [ + 'type' => 'string', + 'example' => 'api@stooa.com', + ], + 'password' => [ + 'type' => 'string', + 'example' => 'api', + ], + ], + ]; + + $schemas['Token'] = [ + 'type' => 'object', + 'properties' => [ + 'token' => [ + 'type' => 'string', + 'readOnly' => true, + ], + 'refresh_token' => [ + 'type' => 'string', + 'readOnly' => true, + ], + ], + ]; + + $schemas['RefreshToken'] = [ + 'type' => 'object', + 'properties' => [ + 'email' => [ + 'type' => 'string', + 'example' => 'api', + ], + 'refresh_token' => [ + 'type' => 'string', + 'example' => 'api', + ], + ], + ]; + + $loginOperation = (new Operation('postCredentialsItem')) + ->withTags(['Token']) + ->withSummary('Get JWT token to login.') + ->withRequestBody(new RequestBody('Create new JWT Token', new \ArrayObject([ + 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Credentials'])), + ]))) + ->withResponses([ + HttpFoundationResponse::HTTP_OK => new Response('Get JWT token', new \ArrayObject([ + 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Token'])), + ])), + ]); + + $refreshTokenOperation = (new Operation('postRefreshCredentialsItem')) + ->withTags(['Token']) + ->withSummary('Get JWT token.') + ->withRequestBody(new RequestBody('Create new JWT Token given a refresh token', new \ArrayObject([ + 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/RefreshToken'])), + ]))) + ->withResponses([ + HttpFoundationResponse::HTTP_OK => new Response('Get JWT token', new \ArrayObject([ + 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Token'])), + ])), + ]); + + $openApi = $openApi->withInfo(new Info('Stooa', 'v1')); + + $openApi->getComponents()->withSchemas($schemas); + $openApi->getPaths()->addPath('/login', (new PathItem())->withPost($loginOperation)); + $openApi->getPaths()->addPath('/refresh-token', (new PathItem())->withPost($refreshTokenOperation)); + + return $openApi; + } +} diff --git a/backend/packages/Core/src/Repository/GuestRepository.php b/backend/packages/Core/src/Repository/GuestRepository.php new file mode 100644 index 000000000..4ed7e8fb2 --- /dev/null +++ b/backend/packages/Core/src/Repository/GuestRepository.php @@ -0,0 +1,27 @@ + */ +class GuestRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Guest::class); + } +} diff --git a/backend/packages/Core/src/Repository/ParticipantRepository.php b/backend/packages/Core/src/Repository/ParticipantRepository.php new file mode 100644 index 000000000..cc18e6d35 --- /dev/null +++ b/backend/packages/Core/src/Repository/ParticipantRepository.php @@ -0,0 +1,78 @@ + */ +class ParticipantRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Participant::class); + } + + public function findUserInFishbowl(Fishbowl $fishbowl, User $user): ?Participant + { + $query = $this->createQueryBuilder('participant') + ->where('participant.fishbowl = :fishbowl') + ->andWhere('participant.user = :user') + ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') + ->setParameter('user', $user->getId(), 'uuid') + ->getQuery(); + + return $query->getOneOrNullResult(); + } + + public function findGuestInFishbowl(Fishbowl $fishbowl, Guest $guest): ?Participant + { + $query = $this->createQueryBuilder('participant') + ->where('participant.fishbowl = :fishbowl') + ->andWhere('participant.guest = :guest') + ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') + ->setParameter('guest', $guest->getId(), 'uuid') + ->getQuery(); + + return $query->getOneOrNullResult(); + } + + /** @return Participant[] */ + public function getParticipants(Fishbowl $fishbowl): array + { + $now = new \DateTimeImmutable(); + $twentySeconds = new \DateInterval('PT20S'); + + $query = $this->createQueryBuilder('participant') + ->where('participant.fishbowl = :fishbowl') + ->andWhere('participant.lastPing >= :twentySeconds') + ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') + ->setParameter('twentySeconds', $now->sub($twentySeconds), Types::DATETIME_IMMUTABLE) + ->orderBy('participant.id', 'ASC') + ->getQuery(); + + return $query->getResult(); + } + + public function persist(Participant $participant): void + { + $this->_em->persist($participant); + $this->_em->flush(); + } +} diff --git a/backend/packages/Core/src/Repository/ResetPasswordRequestRepository.php b/backend/packages/Core/src/Repository/ResetPasswordRequestRepository.php new file mode 100644 index 000000000..01ea09fcf --- /dev/null +++ b/backend/packages/Core/src/Repository/ResetPasswordRequestRepository.php @@ -0,0 +1,65 @@ + */ +class ResetPasswordRequestRepository extends ServiceEntityRepository implements ResetPasswordRequestRepositoryInterface +{ + use ResetPasswordRequestRepositoryTrait { + getMostRecentNonExpiredRequestDate as getMostRecentNonExpiredRequestDate; + } + + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, ResetPasswordRequest::class); + } + + public function createResetPasswordRequest(object $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken): ResetPasswordRequestInterface + { + Assert::isInstanceOf($user, User::class); + + return new ResetPasswordRequest($user, $expiresAt, $selector, $hashedToken); + } + + public function getMostRecentNonExpiredRequestDate(object $user): ?\DateTimeInterface + { + Assert::isInstanceOf($user, User::class); + + /** @var ResetPasswordRequestInterface $resetPasswordRequest */ + $resetPasswordRequest = $this->createQueryBuilder('t') + ->where('t.user = :user') + ->setParameter('user', $user->getId(), 'uuid') + ->leftJoin('t.user', 'user') + ->orderBy('t.requestedAt', 'DESC') + ->setMaxResults(1) + ->getQuery() + ->getOneorNullResult() + ; + + if (null !== $resetPasswordRequest && !$resetPasswordRequest->isExpired()) { + return $resetPasswordRequest->getRequestedAt(); + } + + return null; + } +} diff --git a/backend/packages/Core/src/Repository/UserRepository.php b/backend/packages/Core/src/Repository/UserRepository.php new file mode 100644 index 000000000..1727806f8 --- /dev/null +++ b/backend/packages/Core/src/Repository/UserRepository.php @@ -0,0 +1,65 @@ + */ +class UserRepository extends ServiceEntityRepository implements PasswordUpgraderInterface, UserLoaderInterface +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + + public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void + { + if (!$user instanceof User) { + throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class)); + } + + $user->setPassword($newHashedPassword); + $this->_em->persist($user); + $this->_em->flush(); + } + + public function loadUserByIdentifier(string $identifier): ?User + { + $query = $this->createQueryBuilder('user') + ->where('user.email = :email') + ->andWhere('user.active = true') + ->setParameter('email', $identifier, Types::STRING) + ->getQuery(); + + return $query->getOneOrNullResult(); + } + + public function findUserById(?string $id): ?User + { + $query = $this->createQueryBuilder('user') + ->where('user.id = :id') + ->andWhere('user.active = true') + ->setParameter('id', $id, Types::STRING) + ->getQuery(); + + return $query->getOneOrNullResult(); + } +} diff --git a/backend/packages/Core/src/Resolver/ResetPasswordResolver.php b/backend/packages/Core/src/Resolver/ResetPasswordResolver.php new file mode 100644 index 000000000..7e1d7b9b9 --- /dev/null +++ b/backend/packages/Core/src/Resolver/ResetPasswordResolver.php @@ -0,0 +1,58 @@ +userRepository->loadUserByIdentifier($email); + + $resetPassword = new ResetPassword(); + $resetPassword->setId(Uuid::uuid4()); + $resetPassword->setEmail($email); + $resetPassword->setLocale($locale); + + if (null !== $user) { + try { + $token = $this->helper->generateResetToken($user); + } catch (ResetPasswordExceptionInterface) { + return $resetPassword; + } + + $this->mailerService->sendResetPasswordEmail($user, $token, $resetPassword); + } + + return $resetPassword; + } +} diff --git a/backend/packages/Core/src/Resolver/UserResolver.php b/backend/packages/Core/src/Resolver/UserResolver.php new file mode 100644 index 000000000..8f47dd369 --- /dev/null +++ b/backend/packages/Core/src/Resolver/UserResolver.php @@ -0,0 +1,47 @@ +security->getUser(); + + if (null !== $user) { + Assert::isInstanceOf($user, User::class); + + return $user; + } + + return null; + } +} diff --git a/backend/packages/Core/src/Security/PasswordEncoderService.php b/backend/packages/Core/src/Security/PasswordEncoderService.php new file mode 100644 index 000000000..bca3e152d --- /dev/null +++ b/backend/packages/Core/src/Security/PasswordEncoderService.php @@ -0,0 +1,36 @@ +getPlainPassword()) { + return; + } + + $hashedPassword = $this->hasher->hashPassword($user, $user->getPlainPassword()); + + $user->setPassword($hashedPassword); + $user->eraseCredentials(); + } +} diff --git a/backend/packages/Core/src/Service/MailerService.php b/backend/packages/Core/src/Service/MailerService.php new file mode 100644 index 000000000..1b544794e --- /dev/null +++ b/backend/packages/Core/src/Service/MailerService.php @@ -0,0 +1,120 @@ +getLocale(); + + $email = (new TemplatedEmail()) + ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) + ->to((string) $user->getEmail()) + ->subject($this->translator->trans('emails.welcome_email.subject', [], null, $locale)) + ->htmlTemplate('emails/signup.html.twig') + ->context([ + 'name' => $user->getName(), + 'surnames' => $user->getSurnames(), + 'locale' => $locale, + 'appUrl' => $this->appUrl, + ]); + + $this->mailer->send($email); + } + + public function sendResetPasswordEmail(User $user, ResetPasswordToken $resetToken, ResetPassword $resetPassword): void + { + // User resets password in an specific locale, with this we make sure + // we send the password reset email in that locale + $locale = $resetPassword->getLocale(); + + $email = (new TemplatedEmail()) + ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) + ->to((string) $user->getEmail()) + ->subject($this->translator->trans('emails.reset_password_email.subject', + ['%name%' => $user->getName()], + null, + $locale + )) + ->htmlTemplate('emails/reset-password.html.twig') + ->context([ + 'name' => $user->getName(), + 'resetToken' => $resetToken->getToken(), + 'locale' => $locale, + 'appUrl' => $this->appUrl, + ]); + + $this->mailer->send($email); + } + + public function sendFishbowlCreatedEmail(Fishbowl $fishbowl): void + { + // Fishbowl has its own locale, despite the one set on the request. + $locale = $fishbowl->getLocale(); + $user = $fishbowl->getHost(); + $uid = $fishbowl->getId(); + + if (null !== $user) { + $email = (new TemplatedEmail()) + ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) + ->to((string) $user->getEmail()) + ->subject($this->translator->trans( + 'emails.fishbowl_created_email.subject', + ['%name%' => $user->getName()], + null, + $locale + )) + ->htmlTemplate('emails/fishbowl-created.html.twig') + ->context([ + 'name' => $user->getName(), + 'fishbowlId' => null !== $uid ? $uid->toString() : '', + 'fishbowlName' => $fishbowl->getName(), + 'fishbowlDescription' => $fishbowl->getDescription(), + 'fishbowlStartDate' => $fishbowl->getStartDateTimeFormatted(), + 'fishbowlStartTime' => $fishbowl->getStartDateTimeHourFormatted(), + 'fishbowlFinishTime' => $fishbowl->getFinishDateTimeHourFormatted(), + 'fishbowlDuration' => $fishbowl->getDurationFormatted(), + 'fishbowlSlug' => $fishbowl->getSlug(), + 'fishbowlPassword' => $this->privateFishbowlService->decryptPrivatePassword($fishbowl)->getPlainPassword(), + 'fishbowlIsPrivate' => $fishbowl->getIsPrivate(), + 'locale' => $locale, + 'appUrl' => $this->appUrl, + ]); + + $this->mailer->send($email); + } + } +} diff --git a/backend/packages/Core/src/Validator/Constraints/SameUserPassword.php b/backend/packages/Core/src/Validator/Constraints/SameUserPassword.php new file mode 100644 index 000000000..8faedc5b7 --- /dev/null +++ b/backend/packages/Core/src/Validator/Constraints/SameUserPassword.php @@ -0,0 +1,29 @@ +security->getUser(); + $inputPassword = $value->getPassword(); + + if (null === $inputPassword || null === $actualUser) { + return; + } + + Assert::isInstanceOf($actualUser, User::class); + + $uid = $actualUser->getId(); + $user = null; + + if (null !== $uid) { + $user = $this->userRepository->findUserById($uid->toString()); + } + + Assert::notNull($user); + + if (!$this->passwordEncoder->isPasswordValid($user, $inputPassword)) { + $this->context->buildViolation($constraint->message)->atPath('password')->addViolation(); + } + } +} diff --git a/backend/packages/Core/src/Validator/Constraints/ValidResetPasswordToken.php b/backend/packages/Core/src/Validator/Constraints/ValidResetPasswordToken.php new file mode 100644 index 000000000..5287a77da --- /dev/null +++ b/backend/packages/Core/src/Validator/Constraints/ValidResetPasswordToken.php @@ -0,0 +1,24 @@ +helper->validateTokenAndFetchUser($value); + } catch (ResetPasswordExceptionInterface) { + $this->context->buildViolation($constraint->message)->addViolation(); + } + } +} diff --git a/backend/tests/Functional/LoginFunctionalTest.php b/backend/packages/Core/tests/Functional/LoginFunctionalTest.php similarity index 98% rename from backend/tests/Functional/LoginFunctionalTest.php rename to backend/packages/Core/tests/Functional/LoginFunctionalTest.php index 4300de4a2..1aa1ac8e2 100644 --- a/backend/tests/Functional/LoginFunctionalTest.php +++ b/backend/packages/Core/tests/Functional/LoginFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Core\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Functional/RefreshTokenFunctionalTest.php b/backend/packages/Core/tests/Functional/RefreshTokenFunctionalTest.php similarity index 99% rename from backend/tests/Functional/RefreshTokenFunctionalTest.php rename to backend/packages/Core/tests/Functional/RefreshTokenFunctionalTest.php index 88bddbe71..7f4e4fe89 100644 --- a/backend/tests/Functional/RefreshTokenFunctionalTest.php +++ b/backend/packages/Core/tests/Functional/RefreshTokenFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Core\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Integration/ParticipantRepositoryTest.php b/backend/packages/Core/tests/Integration/ParticipantRepositoryTest.php similarity index 98% rename from backend/tests/Integration/ParticipantRepositoryTest.php rename to backend/packages/Core/tests/Integration/ParticipantRepositoryTest.php index 6370937e5..194d9bb19 100644 --- a/backend/tests/Integration/ParticipantRepositoryTest.php +++ b/backend/packages/Core/tests/Integration/ParticipantRepositoryTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Integration; +namespace App\Core\Tests\Integration; use App\Core\Entity\Participant; use App\Core\Factory\GuestFactory; diff --git a/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php b/backend/packages/Core/tests/Unit/JWT/CurrentUserFishbowlTest.php similarity index 98% rename from backend/tests/Unit/JWT/CurrentUserFishbowlTest.php rename to backend/packages/Core/tests/Unit/JWT/CurrentUserFishbowlTest.php index f8ec6f877..66cac861f 100644 --- a/backend/tests/Unit/JWT/CurrentUserFishbowlTest.php +++ b/backend/packages/Core/tests/Unit/JWT/CurrentUserFishbowlTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Unit/JWT/CurrentUserRoomTest.php b/backend/packages/Core/tests/Unit/JWT/CurrentUserRoomTest.php similarity index 98% rename from backend/tests/Unit/JWT/CurrentUserRoomTest.php rename to backend/packages/Core/tests/Unit/JWT/CurrentUserRoomTest.php index 7bc39e74f..45b26ac73 100644 --- a/backend/tests/Unit/JWT/CurrentUserRoomTest.php +++ b/backend/packages/Core/tests/Unit/JWT/CurrentUserRoomTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Unit/JWT/HostValidatorTest.php b/backend/packages/Core/tests/Unit/JWT/HostValidatorTest.php similarity index 98% rename from backend/tests/Unit/JWT/HostValidatorTest.php rename to backend/packages/Core/tests/Unit/JWT/HostValidatorTest.php index 85a7840f7..5d28888d7 100644 --- a/backend/tests/Unit/JWT/HostValidatorTest.php +++ b/backend/packages/Core/tests/Unit/JWT/HostValidatorTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php b/backend/packages/Core/tests/Unit/JWT/JWTCreatedSubscriberTest.php similarity index 98% rename from backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php rename to backend/packages/Core/tests/Unit/JWT/JWTCreatedSubscriberTest.php index 5cf00dd8f..faae1dd4f 100644 --- a/backend/tests/Unit/JWT/JWTCreatedSubscriberTest.php +++ b/backend/packages/Core/tests/Unit/JWT/JWTCreatedSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\EventSubscriber\JWTCreatedSubscriber; diff --git a/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php b/backend/packages/Core/tests/Unit/JWT/JaasTokenGeneratorTest.php similarity index 98% rename from backend/tests/Unit/JWT/JaasTokenGeneratorTest.php rename to backend/packages/Core/tests/Unit/JWT/JaasTokenGeneratorTest.php index ee0218d76..64fb7a4ce 100644 --- a/backend/tests/Unit/JWT/JaasTokenGeneratorTest.php +++ b/backend/packages/Core/tests/Unit/JWT/JaasTokenGeneratorTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php b/backend/packages/Core/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php similarity index 97% rename from backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php rename to backend/packages/Core/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php index 0649f2232..3209bdf9a 100644 --- a/backend/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php +++ b/backend/packages/Core/tests/Unit/JWT/SelfHostedTokenGeneratorTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\JWT; +namespace App\Core\Tests\Unit\JWT; use App\Core\Entity\User; use App\Core\Factory\UserFactory; diff --git a/backend/tests/Unit/LocaleSubscriberTest.php b/backend/packages/Core/tests/Unit/LocaleSubscriberTest.php similarity index 98% rename from backend/tests/Unit/LocaleSubscriberTest.php rename to backend/packages/Core/tests/Unit/LocaleSubscriberTest.php index 7bbc90ffc..8aa26a782 100644 --- a/backend/tests/Unit/LocaleSubscriberTest.php +++ b/backend/packages/Core/tests/Unit/LocaleSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Core\Tests\Unit; use App\Core\EventSubscriber\LocaleSubscriber; use PHPUnit\Framework\TestCase; diff --git a/backend/tests/Unit/MailServiceTest.php b/backend/packages/Core/tests/Unit/MailServiceTest.php similarity index 99% rename from backend/tests/Unit/MailServiceTest.php rename to backend/packages/Core/tests/Unit/MailServiceTest.php index 685b46279..0412a47db 100644 --- a/backend/tests/Unit/MailServiceTest.php +++ b/backend/packages/Core/tests/Unit/MailServiceTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Core\Tests\Unit; use App\Core\Factory\UserFactory; use App\Core\Model\ResetPassword; diff --git a/backend/tests/Unit/WorkflowMutationResolverTest.php b/backend/packages/Core/tests/Unit/WorkflowMutationResolverTest.php similarity index 99% rename from backend/tests/Unit/WorkflowMutationResolverTest.php rename to backend/packages/Core/tests/Unit/WorkflowMutationResolverTest.php index a50d4226d..000926323 100644 --- a/backend/tests/Unit/WorkflowMutationResolverTest.php +++ b/backend/packages/Core/tests/Unit/WorkflowMutationResolverTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Core\Tests\Unit; use ApiPlatform\Core\GraphQl\Resolver\MutationResolverInterface; use App\Fishbowl\Entity\Fishbowl; diff --git a/backend/config/fishbowl.yaml b/backend/packages/Fishbowl/config/routes.yaml similarity index 100% rename from backend/config/fishbowl.yaml rename to backend/packages/Fishbowl/config/routes.yaml diff --git a/backend/packages/Fishbowl/config/services.yaml b/backend/packages/Fishbowl/config/services.yaml new file mode 100644 index 000000000..aaece591a --- /dev/null +++ b/backend/packages/Fishbowl/config/services.yaml @@ -0,0 +1,38 @@ +# This file is part of the Stooa codebase. +# +# (c) 2020 - present Runroom SL +# +# For the full copyright and license information, please view the LICENSE +# file that was distributed with this source code. + +services: + _defaults: + autowire: true + autoconfigure: true + + App\Fishbowl\: + resource: ../src/ + exclude: + - ../src/DependencyInjection/ + - ../src/Entity/ + + App\Fishbowl\Controller\: + resource: ../src/Controller/ + tags: [controller.service_arguments] + + App\Fishbowl\DataPersister\FishbowlDataPersister: + decorates: api_platform.doctrine.orm.data_persister + + App\Fishbowl\Stage\FishbowlValidateStage: + decorates: api_platform.graphql.resolver.stage.validate + + App\Fishbowl\DataProvider\FishbowlDataProvider: + bind: + $collectionDataProvider: '@api_platform.doctrine.orm.default.collection_data_provider' + + #Admin + App\Fishbowl\Admin\FishbowlAdmin: + tags: + - { name: sonata.admin, model_class: App\Fishbowl\Entity\Fishbowl, manager_type: orm, label: Fishbowls } + calls: + - [ setFishbowlService, [ '@App\Fishbowl\Service\FishbowlService' ] ] diff --git a/backend/packages/Fishbowl/src/Admin/FishbowlAdmin.php b/backend/packages/Fishbowl/src/Admin/FishbowlAdmin.php new file mode 100644 index 000000000..f98e4cd0f --- /dev/null +++ b/backend/packages/Fishbowl/src/Admin/FishbowlAdmin.php @@ -0,0 +1,174 @@ + */ +class FishbowlAdmin extends AbstractAdmin +{ + protected ?FishbowlService $fishbowlService = null; + + public function setFishbowlService(FishbowlService $fishbowlService): void + { + $this->fishbowlService = $fishbowlService; + } + + public function prePersist($object): void + { + if (null !== $this->fishbowlService) { + $object->setSlug($this->fishbowlService->generateRandomSlug($object)); + + $this->fishbowlService->generateDefaultTitle($object); + } + } + + public static function hostCallbackFunction(): callable + { + return static function (AdminInterface $admin, string $property, string $value): void { + $datagrid = $admin->getDatagrid(); + + $valueParts = explode(':', $value); + if (2 === \count($valueParts) && \in_array($valueParts[0], ['name', 'surnames'], true)) { + [$property, $value] = $valueParts; + } + + $datagrid->setValue($datagrid->getFilter($property)->getFormName(), null, $value); + }; + } + + /** @param mixed[] $sortValues */ + protected function configureDefaultSortValues(array &$sortValues): void + { + $sortValues['_sort_by'] = 'createdAt'; + $sortValues['_sort_order'] = 'DESC'; + } + + protected function configureDatagridFilters(DatagridMapper $filter): void + { + $filter + ->add('name') + ->add('host', ModelFilter::class, [ + 'field_type' => ModelAutocompleteType::class, + 'field_options' => [ + 'property' => 'email', + 'callback' => self::hostCallbackFunction(), + ], + ]) + ->add('currentStatus', null, [ + 'field_type' => ChoiceType::class, + 'field_options' => [ + 'choices' => Fishbowl::$statusChoices, + ], + ]) + ->add('isFishbowlNow') + ->add('hasIntroduction'); + } + + protected function configureListFields(ListMapper $list): void + { + $list + ->add('createdAt') + ->addIdentifier('name') + ->add('description') + ->add('host') + ->add('currentStatus', null, [ + 'template' => 'sonata/fishbowl_status.html.twig', + ]) + ->add('isFishbowlNow') + ->add('hasIntroduction') + ->add('startDateTimeTz', FieldDescriptionInterface::TYPE_DATETIME) + ->add('endDateTimeTz', FieldDescriptionInterface::TYPE_DATETIME) + ->add('duration', FieldDescriptionInterface::TYPE_TIME) + ->add('timezone') + ->add('locale') + ->add('slug'); + } + + protected function configureFormFields(FormMapper $form): void + { + $form + ->with('Fishbowl') + ->add('name') + ->add('description') + ->add('startDateTime', DateTimePickerType::class, [ + 'dp_use_seconds' => false, + 'dp_minute_stepping' => 15, + 'format' => 'dd/MM/yyyy HH:mm', + ]) + ->add('duration', DateTimePickerType::class, [ + 'dp_pick_date' => false, + 'dp_use_seconds' => false, + 'dp_minute_stepping' => 15, + 'format' => 'HH:mm', + ]) + ->add('timezone', TimezoneType::class, [ + 'intl' => true, + ]) + ->add('locale', LocaleType::class) + ->add('host', ModelAutocompleteType::class, [ + 'property' => 'email', + 'callback' => self::hostCallbackFunction(), + ]) + ->add('isFishbowlNow', BooleanType::class, [ + 'transform' => true, + ]) + ->add('hasIntroduction', BooleanType::class, [ + 'transform' => true, + ]) + ->end() + ->with('Disabled') + ->add('currentStatus', ChoiceType::class, [ + 'choices' => Fishbowl::$statusChoices, + 'disabled' => true, + 'required' => true, + ]) + ->add('introducedAt', DateTimePickerType::class, [ + 'disabled' => true, + 'dp_use_seconds' => false, + 'dp_minute_stepping' => 15, + 'format' => 'dd/MM/yyyy HH:mm', + ]) + ->add('runnedAt', DateTimePickerType::class, [ + 'disabled' => true, + 'dp_use_seconds' => false, + 'dp_minute_stepping' => 15, + 'format' => 'dd/MM/yyyy HH:mm', + ]) + ->add('finishedAt', DateTimePickerType::class, [ + 'disabled' => true, + 'dp_use_seconds' => false, + 'dp_minute_stepping' => 15, + 'format' => 'dd/MM/yyyy HH:mm', + ]) + ->add('slug', null, [ + 'disabled' => true, + ]) + ->end(); + } +} diff --git a/backend/packages/Fishbowl/src/Controller/FishbowlController.php b/backend/packages/Fishbowl/src/Controller/FishbowlController.php new file mode 100644 index 000000000..671e85f30 --- /dev/null +++ b/backend/packages/Fishbowl/src/Controller/FishbowlController.php @@ -0,0 +1,49 @@ + $this->fishbowlService->ping($slug)]); + } + + public function status(string $slug): Response + { + return new JsonResponse(['status' => $this->fishbowlService->getFishbowlStatus($slug)]); + } + + public function participants(string $slug): Response + { + return new JsonResponse(['response' => $this->fishbowlService->getParticipants($slug)]); + } + + public function private(string $slug): Response + { + return new JsonResponse(['response' => $this->privateFishbowlService->isPasswordEqual($slug)]); + } +} diff --git a/backend/packages/Fishbowl/src/DataPersister/FishbowlDataPersister.php b/backend/packages/Fishbowl/src/DataPersister/FishbowlDataPersister.php new file mode 100644 index 000000000..7bc201726 --- /dev/null +++ b/backend/packages/Fishbowl/src/DataPersister/FishbowlDataPersister.php @@ -0,0 +1,65 @@ +decorated->supports($data, $context); + } + + /** + * @param mixed $data + * @param mixed[] $context + * + * @return object|void + */ + public function persist($data, array $context = []) + { + $result = $this->decorated->persist($data, $context); + + if ($data instanceof Fishbowl && ( + ($context['collection_operation_name'] ?? null) === 'post' || + ($context['graphql_operation_name'] ?? null) === 'create') + ) { + $this->mailerService->sendFishbowlCreatedEmail($data); + } + + return $result; + } + + /** + * @param mixed $data + * @param mixed[] $context + */ + public function remove($data, array $context = []): void + { + $this->decorated->remove($data, $context); + } +} diff --git a/backend/packages/Fishbowl/src/DataProvider/FishbowlDataProvider.php b/backend/packages/Fishbowl/src/DataProvider/FishbowlDataProvider.php new file mode 100644 index 000000000..97ebcadff --- /dev/null +++ b/backend/packages/Fishbowl/src/DataProvider/FishbowlDataProvider.php @@ -0,0 +1,53 @@ + $context */ + public function supports(string $resourceClass, string $operationName = null, array $context = []): bool + { + return Fishbowl::class === $resourceClass; + } + + /** + * @param array $context + * + * @throws ResourceClassNotSupportedException + * + * @return iterable + */ + public function getCollection(string $resourceClass, string $operationName = null, array $context = []): iterable + { + /** @var Fishbowl[] $fishbowls */ + $fishbowls = $this->collectionDataProvider->getCollection($resourceClass, $operationName); + + foreach ($fishbowls as $fishbowl) { + $this->privateFishbowlService->decryptPrivatePassword($fishbowl); + } + + return $fishbowls; + } +} diff --git a/backend/packages/Fishbowl/src/Entity/Fishbowl.php b/backend/packages/Fishbowl/src/Entity/Fishbowl.php new file mode 100644 index 000000000..b67bd2825 --- /dev/null +++ b/backend/packages/Fishbowl/src/Entity/Fishbowl.php @@ -0,0 +1,670 @@ + + * + * @phpstan-var array $statusChoices + */ + public static array $statusChoices = [ + 'Not Started' => self::STATUS_NOT_STARTED, + 'Introduction' => self::STATUS_INTRODUCTION, + 'Running' => self::STATUS_RUNNING, + 'Finished' => self::STATUS_FINISHED, + ]; + + /** + * @Groups({"fishbowl:read"}) + * @ORM\Id + * @ORM\Column(type="uuid", unique=true) + * @ORM\GeneratedValue(strategy="CUSTOM") + * @ORM\CustomIdGenerator(class=UuidGenerator::class) + */ + private ?UuidInterface $id = null; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @Assert\Length(max=255) + * @ORM\Column(type="string") + */ + private ?string $name = null; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @ORM\Column(type="text", nullable=true) + */ + private ?string $description = null; + + /** + * @Groups({"fishbowl:read"}) + * @Assert\NotBlank + * @Assert\Length(max=255) + * @ORM\Column(type="string", unique=true) + */ + private ?string $slug = null; + + /** + * @Groups({"fishbowl:write", "fishbowl:read"}) + * @Assert\NotNull + * @Assert\Type("\DateTimeInterface") + * @ORM\Column(type="datetime") + */ + private ?\DateTimeInterface $startDateTime = null; + + /** + * @Groups({"fishbowl:write", "fishbowl:read"}) + * @Assert\NotNull + * @Assert\Length(max=255) + * @Assert\Timezone + * @ORM\Column(type="string") + */ + private ?string $timezone = null; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @Assert\NotNull + * @Assert\Length(max=255) + * @Assert\Locale(canonicalize=true) + * @ORM\Column(type="string") + */ + private ?string $locale = null; + + /** + * @Groups({"fishbowl:write", "fishbowl:read"}) + * @Assert\NotNull + * @Assert\Type("\DateTimeInterface") + * @ApiProperty(attributes={ + * "openapi_context"={"format"="string"} + * }) + * @ORM\Column(type="time") + */ + private ?\DateTimeInterface $duration = null; + + /** + * @Groups({"fishbowl:read"}) + * @Assert\NotNull + * @ORM\ManyToOne(targetEntity="App\Core\Entity\User", inversedBy="fishbowls") + */ + private ?User $host = null; + + /** + * @Groups({"fishbowl:read"}) + * @Assert\Length(max=255) + * @Assert\Choice({self::STATUS_NOT_STARTED, self::STATUS_INTRODUCTION, self::STATUS_RUNNING, self::STATUS_FINISHED}) + * @ORM\Column(type="string", options={"default": self::STATUS_NOT_STARTED}) + */ + private string $currentStatus = self::STATUS_NOT_STARTED; + + /** + * @Assert\Type("\DateTimeInterface") + * @ORM\Column(type="datetime", nullable=true) + */ + private ?\DateTimeInterface $introducedAt = null; + + /** + * @Assert\Type("\DateTimeInterface") + * @ORM\Column(type="datetime", nullable=true) + */ + private ?\DateTimeInterface $runnedAt = null; + + /** + * @Assert\Type("\DateTimeInterface") + * @ORM\Column(type="datetime", nullable=true) + */ + private ?\DateTimeInterface $finishedAt = null; + + /** + * @Assert\Type("\DateTimeInterface") + * @ORM\Column(type="datetime", nullable=true) + */ + private ?\DateTimeInterface $finishDateTime = null; + + /** + * @var Collection + * + * @ORM\OneToMany(targetEntity="App\Core\Entity\Participant", mappedBy="fishbowl", cascade={"all"}) + */ + private Collection $participants; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @ORM\Column(type="boolean") + */ + private bool $isFishbowlNow = false; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @ORM\Column(type="boolean") + */ + private bool $hasIntroduction = false; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @ORM\Column(type="boolean") + */ + private bool $isPrivate = false; + + /** @ORM\Column(type="text", nullable=true) */ + private ?string $password = null; + + /** + * @Groups({"fishbowl:read", "fishbowl:write"}) + * @Assert\Length(min=8, max=255) + * @Assert\NotBlank(groups={"user:create"}) + */ + private ?string $plainPassword = null; + + public function __construct() + { + $this->participants = new ArrayCollection(); + } + + public function __toString(): string + { + $uid = $this->getId(); + $stringUid = null !== $uid ? ' (' . $uid->toString() . ')' : ''; + + return ($this->getName() ?? '') . $stringUid; + } + + public function getId(): ?UuidInterface + { + return $this->id; + } + + public function setId(string $id): self + { + $this->id = Uuid::fromString($id); + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getSlug(): ?string + { + return $this->slug; + } + + public function setSlug(string $slug): self + { + $this->slug = $slug; + + return $this; + } + + public function getRoomName(): string + { + return (string) $this->getName(); + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description = null): self + { + $this->description = $description; + + return $this; + } + + public function getStartDateTime(): ?\DateTimeInterface + { + return $this->startDateTime; + } + + public function setStartDateTime(\DateTimeInterface $startDateTime): self + { + $this->startDateTime = $startDateTime; + + return $this; + } + + public function getTimezone(): ?string + { + return $this->timezone; + } + + public function setTimezone(string $timezone): self + { + $this->timezone = $timezone; + + return $this; + } + + public function getLocale(): ?string + { + return $this->locale; + } + + public function setLocale(string $locale): self + { + $this->locale = $locale; + + return $this; + } + + /** + * This is needed to add the timezone information to the `startDateTime` property. + * + * @Groups({"fishbowl:read"}) + */ + public function getStartDateTimeTz(): \DateTimeImmutable + { + MAssert::notNull($this->startDateTime); + MAssert::notNull($this->timezone); + + return new \DateTimeImmutable( + $this->startDateTime->format('Y-m-d H:i:s'), + new \DateTimeZone($this->timezone) + ); + } + + /** + * This is needed to calculate the end time with the `timezone` information. + * + * @Groups({"fishbowl:read"}) + */ + public function getEndDateTimeTz(): \DateTimeImmutable + { + MAssert::notNull($this->duration); + + return $this->getStartDateTimeTz()->add( + new \DateInterval($this->duration->format('\P\TG\Hi\M')) + ); + } + + public function getFinishDateTime(): ?\DateTimeInterface + { + return $this->finishDateTime; + } + + public function setFinishDateTime(\DateTimeInterface $finishDateTime): self + { + $this->finishDateTime = $finishDateTime; + + return $this; + } + + public function calculateFinishTime(): void + { + MAssert::notNull($this->startDateTime); + MAssert::notNull($this->duration); + + $dateTime = new \DateTimeImmutable($this->startDateTime->format('Y-m-d H:i:s')); + + $dateTime = $dateTime->add( + new \DateInterval($this->duration->format('\P\TG\Hi\M')) + ); + + $this->setFinishDateTime($dateTime); + } + + public function getDuration(): ?\DateTimeInterface + { + return $this->duration; + } + + public function setDuration(\DateTimeInterface $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getCurrentStatus(): string + { + return $this->currentStatus; + } + + public function setCurrentStatus(string $status): self + { + $this->currentStatus = $status; + + return $this; + } + + /** + * This is needed to avoid the default normalizer for \DateTime object, + * instead we just want to output the time part of the `duration` property. + * + * @Groups({"fishbowl:read"}) + */ + public function getDurationFormatted(): string + { + MAssert::notNull($this->duration); + + return $this->duration->format('H:i'); + } + + public function getStartDateTimeFormatted(): string + { + MAssert::notNull($this->startDateTime); + + return $this->startDateTime->format('F d, Y'); + } + + public function getStartDateTimeHourFormatted(): string + { + MAssert::notNull($this->startDateTime); + + return $this->startDateTime->format('H:i'); + } + + public function getFinishDateTimeHourFormatted(): string + { + MAssert::notNull($this->finishDateTime); + + return $this->finishDateTime->format('H:i'); + } + + public function isHappeningNow(): bool + { + $now = new \DateTimeImmutable(); + $oneHour = new \DateInterval('PT1H'); + $tenMinutes = new \DateInterval('PT10M'); + + return $now >= $this->getStartDateTimeTz()->sub($oneHour) && + $now <= $this->getEndDateTimeTz()->add($tenMinutes); + } + + public function shouldHaveEnd(int $hoursAgo = 24): bool + { + $now = new \DateTimeImmutable(); + $hoursInterval = new \DateInterval('PT' . (string) $hoursAgo . 'H'); + + return $now > $this->getEndDateTimeTz()->add($hoursInterval); + } + + public function getHost(): ?User + { + return $this->host; + } + + public function setHost(?User $host): self + { + $this->host = $host; + + return $this; + } + + public function getIntroducedAt(): ?\DateTimeInterface + { + return $this->introducedAt; + } + + public function setIntroducedAt(\DateTimeInterface $introducedAt): self + { + $this->introducedAt = $introducedAt; + + return $this; + } + + public function getRunnedAt(): ?\DateTimeInterface + { + return $this->runnedAt; + } + + public function setRunnedAt(\DateTimeInterface $runnedAt): self + { + $this->runnedAt = $runnedAt; + + return $this; + } + + public function getFinishedAt(): ?\DateTimeInterface + { + return $this->finishedAt; + } + + public function setFinishedAt(\DateTimeInterface $finishedAt): self + { + $this->finishedAt = $finishedAt; + + return $this; + } + + /** @return Collection */ + public function getParticipants(): Collection + { + return $this->participants; + } + + public function addParticipant(Participant $participant): self + { + if (!$this->participants->contains($participant)) { + $this->$participant[] = $participant; + $participant->setFishbowl($this); + } + + return $this; + } + + public function removeParticipant(Participant $participant): self + { + if ($this->participants->contains($participant)) { + $this->participants->removeElement($participant); + } + + return $this; + } + + public function getIsFishbowlNow(): bool + { + return $this->isFishbowlNow; + } + + public function setIsFishbowlNow(bool $isFishbowlNow): self + { + $this->isFishbowlNow = $isFishbowlNow; + + return $this; + } + + public function getHasIntroduction(): bool + { + return $this->hasIntroduction; + } + + public function setHasIntroduction(bool $hasIntroduction): self + { + $this->hasIntroduction = $hasIntroduction; + + return $this; + } + + public function isFinished(): bool + { + return self::STATUS_FINISHED === $this->getCurrentStatus(); + } + + public function getHostName(): ?string + { + if (null === $this->getHost()) { + return ''; + } + + $host = $this->getHost(); + + MAssert::isInstanceOf($host, User::class); + + return $host->getName() ?? ''; + } + + public function getPassword(): ?string + { + return $this->password; + } + + public function setPassword(?string $password): self + { + $this->password = $password; + + return $this; + } + + public function getPlainPassword(): ?string + { + return $this->plainPassword; + } + + public function setPlainPassword(?string $plainPassword): self + { + $this->plainPassword = $plainPassword; + + return $this; + } + + public function getIsPrivate(): bool + { + return $this->isPrivate; + } + + public function setIsPrivate(bool $isPrivate): self + { + $this->isPrivate = $isPrivate; + + return $this; + } + + public function privateFishbowlHasPassword(): bool + { + return true === $this->getIsPrivate() && (null === $this->getPlainPassword() || '' === $this->getPlainPassword()); + } + + public function publicFishbowlHasPassword(): bool + { + return false === $this->getIsPrivate() && null !== $this->getPlainPassword(); + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlDoctrineSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlDoctrineSubscriber.php new file mode 100644 index 000000000..e9ea87554 --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlDoctrineSubscriber.php @@ -0,0 +1,53 @@ + */ + public function getSubscribedEvents(): array + { + return [ + Events::prePersist, + Events::preUpdate, + ]; + } + + public function preUpdate(LifecycleEventArgs $args): void + { + $fishbowl = $args->getObject(); + + if (!$fishbowl instanceof Fishbowl) { + return; + } + + $fishbowl->calculateFinishTime(); + } + + public function prePersist(LifecycleEventArgs $args): void + { + $fishbowl = $args->getObject(); + + if (!$fishbowl instanceof Fishbowl) { + return; + } + + $fishbowl->calculateFinishTime(); + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php new file mode 100644 index 000000000..dd2cfedad --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php @@ -0,0 +1,45 @@ +getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $transition = $event->getTransition(); + + if ((Fishbowl::TRANSITION_INTRODUCE === $transition->getName() && !$fishbowl->getHasIntroduction()) || + (Fishbowl::TRANSITION_NO_INTRO_RUN === $transition->getName() && $fishbowl->getHasIntroduction()) + ) { + $event->setBlocked(true); + } + } + + public static function getSubscribedEvents(): array + { + return [ + 'workflow.fishbowl.guard.' . Fishbowl::TRANSITION_INTRODUCE => ['guardFishbowl'], + 'workflow.fishbowl.guard.' . Fishbowl::TRANSITION_NO_INTRO_RUN => ['guardFishbowl'], + ]; + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php new file mode 100644 index 000000000..8dc07507a --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php @@ -0,0 +1,65 @@ + */ + public function getSubscribedEvents(): array + { + return [ + Events::prePersist, + Events::preUpdate, + ]; + } + + public function preUpdate(LifecycleEventArgs $args): void + { + $fishbowl = $args->getObject(); + + if (!$fishbowl instanceof Fishbowl) { + return; + } + + $this->encryptPassword($fishbowl); + } + + public function prePersist(LifecycleEventArgs $args): void + { + $fishbowl = $args->getObject(); + + if (!$fishbowl instanceof Fishbowl) { + return; + } + + $this->encryptPassword($fishbowl); + } + + private function encryptPassword(Fishbowl $fishbowl): void + { + if ($fishbowl->getIsPrivate() && null !== $fishbowl->getPlainPassword()) { + $fishbowl->setPassword($this->halitePasswordEncryption->encrypt($fishbowl->getPlainPassword())); + } + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlSubscriber.php new file mode 100644 index 000000000..1896f462a --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlSubscriber.php @@ -0,0 +1,61 @@ + [['setCurrentUser', EventPriorities::PRE_VALIDATE]], + ]; + } + + public function setCurrentUser(ViewEvent $event): void + { + $object = $event->getControllerResult(); + + if ($object instanceof Fishbowl && null === $object->getId()) { + $user = $this->security->getUser(); + + if (null !== $user) { + Assert::isInstanceOf($user, User::class); + + $object->setHost($user); + } + + $object->setSlug($this->service->generateRandomSlug($object)); + + $object = $this->service->generateDefaultTitle($object); + + $event->setControllerResult($object); + } + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlTransitionsSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlTransitionsSubscriber.php new file mode 100644 index 000000000..db3f32a22 --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlTransitionsSubscriber.php @@ -0,0 +1,81 @@ +getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $fishbowl->setIntroducedAt(new \DateTimeImmutable()); + + $this->repository->persist($fishbowl); + } + + public function onNoIntroductionRun(Event $event): void + { + $fishbowl = $event->getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $fishbowl->setRunnedAt(new \DateTimeImmutable()); + + $this->repository->persist($fishbowl); + } + + public function onRun(Event $event): void + { + $fishbowl = $event->getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $fishbowl->setRunnedAt(new \DateTimeImmutable()); + + $this->repository->persist($fishbowl); + } + + public function onFinish(Event $event): void + { + $fishbowl = $event->getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $fishbowl->setFinishedAt(new \DateTimeImmutable()); + + $this->repository->persist($fishbowl); + } + + public static function getSubscribedEvents(): iterable + { + return [ + 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_INTRODUCE => 'onIntroduction', + 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_NO_INTRO_RUN => 'onNoIntroductionRun', + 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_RUN => 'onRun', + 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_FINISH => 'onFinish', + ]; + } +} diff --git a/backend/packages/Fishbowl/src/EventSubscriber/FishbowlWorkflowSubscriber.php b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlWorkflowSubscriber.php new file mode 100644 index 000000000..62629e868 --- /dev/null +++ b/backend/packages/Fishbowl/src/EventSubscriber/FishbowlWorkflowSubscriber.php @@ -0,0 +1,47 @@ +getSubject(); + + Assert::isInstanceOf($fishbowl, Fishbowl::class); + + $user = $this->security->getUser(); + + if (null !== $user && $fishbowl->getHost() !== $user) { + $event->setBlocked(true); + } + } + + public static function getSubscribedEvents(): array + { + return [ + 'workflow.fishbowl.guard' => ['guardFishbowl'], + ]; + } +} diff --git a/backend/packages/Fishbowl/src/Factory/FishbowlFactory.php b/backend/packages/Fishbowl/src/Factory/FishbowlFactory.php new file mode 100644 index 000000000..b18c553c2 --- /dev/null +++ b/backend/packages/Fishbowl/src/Factory/FishbowlFactory.php @@ -0,0 +1,43 @@ + */ +final class FishbowlFactory extends ModelFactory +{ + /** @return array */ + protected function getDefaults(): array + { + return [ + 'name' => self::faker()->words(3, true), + 'description' => self::faker()->sentence(), + 'startDateTime' => self::faker()->dateTime(), + 'timezone' => self::faker()->timezone(), + 'locale' => 'en', + 'duration' => self::faker()->dateTime(), + 'currentStatus' => self::faker()->randomElement(Fishbowl::$statusChoices), + 'slug' => self::faker()->slug(), + 'hasIntroduction' => false, + 'isPrivate' => false, + ]; + } + + protected static function getClass(): string + { + return Fishbowl::class; + } +} diff --git a/backend/packages/Fishbowl/src/FishbowlBundle.php b/backend/packages/Fishbowl/src/FishbowlBundle.php new file mode 100644 index 000000000..b3fd5df98 --- /dev/null +++ b/backend/packages/Fishbowl/src/FishbowlBundle.php @@ -0,0 +1,27 @@ + $config */ + public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void + { + $container->import('../config/services.yaml'); + } +} diff --git a/backend/packages/Fishbowl/src/Repository/FishbowlRepository.php b/backend/packages/Fishbowl/src/Repository/FishbowlRepository.php new file mode 100644 index 000000000..b75d5f40c --- /dev/null +++ b/backend/packages/Fishbowl/src/Repository/FishbowlRepository.php @@ -0,0 +1,44 @@ + */ +class FishbowlRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Fishbowl::class); + } + + public function findBySlug(string $slug): ?Fishbowl + { + $query = $this->createQueryBuilder('fishbowl') + ->where('fishbowl.slug = :slug') + ->setParameter('slug', $slug, Types::STRING) + ->getQuery(); + + return $query->getOneOrNullResult(); + } + + public function persist(Fishbowl $fishbowl): void + { + $this->_em->persist($fishbowl); + $this->_em->flush(); + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlCreatorResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlCreatorResolver.php new file mode 100644 index 000000000..1d82232b2 --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlCreatorResolver.php @@ -0,0 +1,62 @@ +security->getUser(); + + if (null === $item) { + $fishbowl = $this->repository->findBySlug($context['args']['slug']); + + if (null !== $fishbowl && $user === $fishbowl->getHost()) { + return $this->privateFishbowlService->decryptPrivatePassword($fishbowl); + } + + return null; + } + + Assert::isInstanceOf($item, Fishbowl::class); + + return $item; + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlFinishMutationResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlFinishMutationResolver.php new file mode 100644 index 000000000..17e754e86 --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlFinishMutationResolver.php @@ -0,0 +1,50 @@ +repository->findBySlug($context['args']['input']['slug']); + + if (null === $fishbowl) { + return null; + } + + if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_FINISH)) { + return null; + } + + $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_FINISH); + + return $fishbowl; + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlIntroduceMutationResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlIntroduceMutationResolver.php new file mode 100644 index 000000000..ae346bfea --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlIntroduceMutationResolver.php @@ -0,0 +1,50 @@ +repository->findBySlug($context['args']['input']['slug']); + + if (null === $fishbowl) { + return null; + } + + if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_INTRODUCE)) { + return null; + } + + $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_INTRODUCE); + + return $fishbowl; + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlNoIntroRunMutationResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlNoIntroRunMutationResolver.php new file mode 100644 index 000000000..fcf30bc4d --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlNoIntroRunMutationResolver.php @@ -0,0 +1,50 @@ +repository->findBySlug($context['args']['input']['slug']); + + if (null === $fishbowl) { + return null; + } + + if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_NO_INTRO_RUN)) { + return null; + } + + $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_NO_INTRO_RUN); + + return $fishbowl; + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlResolver.php new file mode 100644 index 000000000..ba5aa22ea --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlResolver.php @@ -0,0 +1,52 @@ +repository->findBySlug($context['args']['slug']); + + if (null !== $fishbowl) { + return $this->privateFishbowlService->decryptPrivatePassword($fishbowl); + } + } + + Assert::isInstanceOf($item, Fishbowl::class); + + return $item; + } +} diff --git a/backend/packages/Fishbowl/src/Resolver/FishbowlRunMutationResolver.php b/backend/packages/Fishbowl/src/Resolver/FishbowlRunMutationResolver.php new file mode 100644 index 000000000..96276e09d --- /dev/null +++ b/backend/packages/Fishbowl/src/Resolver/FishbowlRunMutationResolver.php @@ -0,0 +1,50 @@ +repository->findBySlug($context['args']['input']['slug']); + + if (null === $fishbowl) { + return null; + } + + if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_RUN)) { + return null; + } + + $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_RUN); + + return $fishbowl; + } +} diff --git a/backend/packages/Fishbowl/src/Service/FishbowlService.php b/backend/packages/Fishbowl/src/Service/FishbowlService.php new file mode 100644 index 000000000..4fa4b1025 --- /dev/null +++ b/backend/packages/Fishbowl/src/Service/FishbowlService.php @@ -0,0 +1,230 @@ +fishbowlRepository->findBySlug($slug); + + if (null !== $fishbowl && $fishbowl->getHost() === $host && !$fishbowl->isFinished()) { + return true; + } + + return false; + } + + public function generateRandomSlug(Fishbowl $fishbowl): string + { + $hashids = new Hashids('', 10); + + return $hashids->encode(random_int(1, 1_000_000_000)); + } + + public function generateDefaultTitle(Fishbowl $fishbowl): Fishbowl + { + $fishbowlName = $fishbowl->getName(); + + if (!empty($fishbowlName) && !ctype_space($fishbowlName)) { + return $fishbowl; + } + + return $fishbowl->setName( + $this->translator->trans('fishbowl.default_title', ['%name%' => $fishbowl->getHostName()], null, $fishbowl->getLocale()) + ); + } + + public function getFishbowlStatus(string $slug): ?string + { + $fishbowl = $this->fishbowlRepository->findBySlug($slug); + + // Controls if an unfinished fishbowl is being access, if it should have end + // (24 hours passed since closing date), we consider it finish, BUT we do not persist + // this status, since we want to know how much Fishbowls are unfinished + if (null !== $fishbowl && !$fishbowl->isFinished() && $fishbowl->shouldHaveEnd()) { + $fishbowl->setCurrentStatus(Fishbowl::STATUS_FINISHED); + } + + return (null !== $fishbowl) ? strtoupper($fishbowl->getCurrentStatus()) : null; + } + + /** @return RawParticipant[] */ + public function getParticipants(string $slug): array + { + $fishbowl = $this->fishbowlRepository->findBySlug($slug); + $currentUser = $this->security->getUser(); + + if (null === $fishbowl) { + return []; + } + + return $this->buildParticipants( + $this->participantRepository->getParticipants($fishbowl), + $fishbowl, + $currentUser + ); + } + + public function ping(string $slug): bool + { + $request = $this->requestStack->getCurrentRequest(); + + if (null === $request) { + return false; + } + + $guest = $this->getGuest($request); + $user = $this->security->getUser(); + + if (null === $user && null === $guest) { + return false; + } + + $fishbowl = $this->fishbowlRepository->findBySlug($slug); + + if (null === $fishbowl) { + return false; + } + + $participant = null; + $created = false; + + if (null !== $guest) { + $participant = $this->participantRepository->findGuestInFishbowl($fishbowl, $guest); + + if (null === $participant) { + $participant = $this->createParticipantFromGuest($fishbowl, $guest); + $created = true; + } + } else { + Assert::isInstanceOf($user, User::class); + + $participant = $this->participantRepository->findUserInFishbowl($fishbowl, $user); + + if (null === $participant) { + $participant = $this->createParticipantFromUser($fishbowl, $user); + $created = true; + } + } + + $participant->setLastPing(new \DateTimeImmutable()); + + $this->participantRepository->persist($participant); + + if ($created) { + $this->fishbowlRepository->persist($fishbowl); + } + + return true; + } + + private function getGuest(Request $request): ?Guest + { + $guestId = $request->request->get('guestId'); + + if (null !== $guestId) { + return $this->guestRepository->find($guestId); + } + + return null; + } + + private function createParticipantFromUser(Fishbowl $fishbowl, User $user): Participant + { + $participant = $this->createParticipant($fishbowl); + $participant->setUser($user); + + return $participant; + } + + private function createParticipantFromGuest(Fishbowl $fishbowl, Guest $guest): Participant + { + $participant = $this->createParticipant($fishbowl); + $participant->setGuest($guest); + + return $participant; + } + + private function createParticipant(Fishbowl $fishbowl): Participant + { + $participant = new Participant(); + $participant->setFishbowl($fishbowl); + + $fishbowl->addParticipant($participant); + + return $participant; + } + + /** + * @param Participant[] $participants + * + * @return RawParticipant[] + */ + private function buildParticipants(array $participants, Fishbowl $fishbowl, ?UserInterface $currentUser): array + { + return array_map(fn (Participant $participant) => [ + 'id' => $participant->getId(), + 'lastPing' => $participant->getLastPing(), + 'name' => $participant->getUserName(), + 'twitter' => $participant->getPublicTwitterProfile(), + 'linkedin' => $participant->getPublicLinkedinAccount(), + 'isModerator' => $participant->isModerator($fishbowl), + 'isCurrentUser' => $participant->isCurrentUser($currentUser), + 'guestId' => $participant->getGuestId(), + 'joined' => false, + 'isMuted' => false, + ], $participants); + } +} diff --git a/backend/packages/Fishbowl/src/Service/PrivateFishbowlService.php b/backend/packages/Fishbowl/src/Service/PrivateFishbowlService.php new file mode 100644 index 000000000..a1e4a7cde --- /dev/null +++ b/backend/packages/Fishbowl/src/Service/PrivateFishbowlService.php @@ -0,0 +1,67 @@ +requestStack->getCurrentRequest(); + + if (null === $currentRequest) { + return false; + } + + $password = $currentRequest->request->get('password'); + + if (null === $password) { + return false; + } + + $fishbowl = $this->fishbowlRepository->findBySlug($slug); + + if (null === $fishbowl) { + return false; + } + + return $fishbowl->getIsPrivate() && $password === $this->halitePasswordEncryption->decrypt($fishbowl->getPassword()); + } + + public function decryptPrivatePassword(Fishbowl $fishbowl): Fishbowl + { + if (false === $fishbowl->getIsPrivate()) { + return $fishbowl; + } + + if ($this->security->getUser() === $fishbowl->getHost()) { + $fishbowl->setPlainPassword($this->halitePasswordEncryption->decrypt($fishbowl->getPassword())); + } + + return $fishbowl; + } +} diff --git a/backend/packages/Fishbowl/src/Stage/FishbowlValidateStage.php b/backend/packages/Fishbowl/src/Stage/FishbowlValidateStage.php new file mode 100644 index 000000000..a2f9255c0 --- /dev/null +++ b/backend/packages/Fishbowl/src/Stage/FishbowlValidateStage.php @@ -0,0 +1,51 @@ +getId()) { + $user = $this->security->getUser(); + + if (null !== $user) { + Assert::isInstanceOf($user, User::class); + + $object->setHost($user); + } + + $object->setSlug($this->service->generateRandomSlug($object)); + + $object = $this->service->generateDefaultTitle($object); + } + + ($this->decorated)($object, $resourceClass, $operationName, $context); + } +} diff --git a/backend/packages/Fishbowl/src/Validator/Constraints/FutureFishbowl.php b/backend/packages/Fishbowl/src/Validator/Constraints/FutureFishbowl.php new file mode 100644 index 000000000..f5a9e3be7 --- /dev/null +++ b/backend/packages/Fishbowl/src/Validator/Constraints/FutureFishbowl.php @@ -0,0 +1,29 @@ +isFromThePast($value)) { + $this->context->buildViolation($constraint->message)->atPath('startDateTime')->addViolation(); + } + } + + private function isFromThePast(Fishbowl $fishbowl): bool + { + return $fishbowl->getEndDateTimeTz() < new \DateTimeImmutable(); + } +} diff --git a/backend/packages/Fishbowl/src/Validator/Constraints/PrivateFishbowl.php b/backend/packages/Fishbowl/src/Validator/Constraints/PrivateFishbowl.php new file mode 100644 index 000000000..c76b19b61 --- /dev/null +++ b/backend/packages/Fishbowl/src/Validator/Constraints/PrivateFishbowl.php @@ -0,0 +1,30 @@ +privateFishbowlHasPassword()) { + $this->context->buildViolation($constraint->message)->atPath('password')->addViolation(); + } + + if ($value->publicFishbowlHasPassword()) { + $this->context->buildViolation($constraint->publicMessage)->atPath('isPrivate')->addViolation(); + } + } +} diff --git a/backend/tests/Functional/FishbowlListFunctionalTest.php b/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php similarity index 99% rename from backend/tests/Functional/FishbowlListFunctionalTest.php rename to backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php index 76f963c14..01bf047ca 100644 --- a/backend/tests/Functional/FishbowlListFunctionalTest.php +++ b/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Fishbowl\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Entity\User; diff --git a/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php b/backend/packages/Fishbowl/tests/Functional/FishbowlWorkflowFunctionalTest.php similarity index 99% rename from backend/tests/Functional/FishbowlWorkflowFunctionalTest.php rename to backend/packages/Fishbowl/tests/Functional/FishbowlWorkflowFunctionalTest.php index 9723f8f18..035638a70 100644 --- a/backend/tests/Functional/FishbowlWorkflowFunctionalTest.php +++ b/backend/packages/Fishbowl/tests/Functional/FishbowlWorkflowFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Fishbowl\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Entity\User; diff --git a/backend/tests/Functional/GetFishbowlFunctionalTest.php b/backend/packages/Fishbowl/tests/Functional/GetFishbowlFunctionalTest.php similarity index 99% rename from backend/tests/Functional/GetFishbowlFunctionalTest.php rename to backend/packages/Fishbowl/tests/Functional/GetFishbowlFunctionalTest.php index 3143d5c75..54a32069d 100644 --- a/backend/tests/Functional/GetFishbowlFunctionalTest.php +++ b/backend/packages/Fishbowl/tests/Functional/GetFishbowlFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Fishbowl\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Entity\User; diff --git a/backend/tests/Functional/UpdateFishbowlFunctionalTest.php b/backend/packages/Fishbowl/tests/Functional/UpdateFishbowlFunctionalTest.php similarity index 99% rename from backend/tests/Functional/UpdateFishbowlFunctionalTest.php rename to backend/packages/Fishbowl/tests/Functional/UpdateFishbowlFunctionalTest.php index bbdc92910..39723a64a 100644 --- a/backend/tests/Functional/UpdateFishbowlFunctionalTest.php +++ b/backend/packages/Fishbowl/tests/Functional/UpdateFishbowlFunctionalTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Functional; +namespace App\Fishbowl\Tests\Functional; use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase; use App\Core\Entity\User; diff --git a/backend/tests/Integration/FishbowlRepositoryTest.php b/backend/packages/Fishbowl/tests/Integration/FishbowlRepositoryTest.php similarity index 97% rename from backend/tests/Integration/FishbowlRepositoryTest.php rename to backend/packages/Fishbowl/tests/Integration/FishbowlRepositoryTest.php index 14525bd18..eab829f3d 100644 --- a/backend/tests/Integration/FishbowlRepositoryTest.php +++ b/backend/packages/Fishbowl/tests/Integration/FishbowlRepositoryTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Integration; +namespace App\Fishbowl\Tests\Integration; use App\Fishbowl\Entity\Fishbowl; use App\Fishbowl\Factory\FishbowlFactory; diff --git a/backend/tests/Unit/Controller/FishbowlControllerTest.php b/backend/packages/Fishbowl/tests/Unit/Controller/FishbowlControllerTest.php similarity index 98% rename from backend/tests/Unit/Controller/FishbowlControllerTest.php rename to backend/packages/Fishbowl/tests/Unit/Controller/FishbowlControllerTest.php index ae4a0d449..fd3991b6d 100644 --- a/backend/tests/Unit/Controller/FishbowlControllerTest.php +++ b/backend/packages/Fishbowl/tests/Unit/Controller/FishbowlControllerTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\Controller; +namespace App\Fishbowl\Tests\Unit\Controller; use App\Fishbowl\Controller\FishbowlController; use App\Fishbowl\Service\FishbowlService; diff --git a/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlDoctrineSubscriberTest.php similarity index 98% rename from backend/tests/Unit/FishbowlDoctrineSubscriberTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlDoctrineSubscriberTest.php index 432b5ea50..341531b63 100644 --- a/backend/tests/Unit/FishbowlDoctrineSubscriberTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlDoctrineSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Fishbowl\Entity\Fishbowl; use App\Fishbowl\EventSubscriber\FishbowlDoctrineSubscriber; diff --git a/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php similarity index 98% rename from backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php index 92200cdcf..9fdaf6361 100644 --- a/backend/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlIntroduceAndNoIntroRunSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Fishbowl\Entity\Fishbowl; use App\Fishbowl\EventSubscriber\FishbowlIntroduceAndNoIntroRunSubscriber; diff --git a/backend/tests/Unit/FishbowlListExtensionTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php similarity index 98% rename from backend/tests/Unit/FishbowlListExtensionTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php index 8cf1d551d..d23d66fbb 100644 --- a/backend/tests/Unit/FishbowlListExtensionTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGenerator; use App\Core\Entity\User; diff --git a/backend/tests/Unit/FishbowlServiceTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlServiceTest.php similarity index 99% rename from backend/tests/Unit/FishbowlServiceTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlServiceTest.php index 281d2edff..25a54375d 100644 --- a/backend/tests/Unit/FishbowlServiceTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlServiceTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Core\Entity\Guest; use App\Core\Entity\Participant; diff --git a/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlTransitionsSubscriberTest.php similarity index 99% rename from backend/tests/Unit/FishbowlTransitionsSubscriberTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlTransitionsSubscriberTest.php index 3a9bb725d..76a7ff874 100644 --- a/backend/tests/Unit/FishbowlTransitionsSubscriberTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlTransitionsSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Fishbowl\Entity\Fishbowl; use App\Fishbowl\EventSubscriber\FishbowlTransitionsSubscriber; diff --git a/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlWorkflowSubscriberTest.php similarity index 98% rename from backend/tests/Unit/FishbowlWorkflowSubscriberTest.php rename to backend/packages/Fishbowl/tests/Unit/FishbowlWorkflowSubscriberTest.php index e6be30e30..b34ea055b 100644 --- a/backend/tests/Unit/FishbowlWorkflowSubscriberTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlWorkflowSubscriberTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Core\Factory\UserFactory; use App\Fishbowl\EventSubscriber\FishbowlWorkflowSubscriber; diff --git a/backend/tests/Unit/PrivateFishbowlServiceTest.php b/backend/packages/Fishbowl/tests/Unit/PrivateFishbowlServiceTest.php similarity index 99% rename from backend/tests/Unit/PrivateFishbowlServiceTest.php rename to backend/packages/Fishbowl/tests/Unit/PrivateFishbowlServiceTest.php index 36db10b1f..aaeb8100f 100644 --- a/backend/tests/Unit/PrivateFishbowlServiceTest.php +++ b/backend/packages/Fishbowl/tests/Unit/PrivateFishbowlServiceTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit; +namespace App\Fishbowl\Tests\Unit; use App\Core\Encryption\HalitePasswordEncryption; use App\Fishbowl\Factory\FishbowlFactory; diff --git a/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php b/backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlCreatorResolverTest.php similarity index 98% rename from backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php rename to backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlCreatorResolverTest.php index 5e1043dcc..964260bde 100644 --- a/backend/tests/Unit/Resolver/FishbowlCreatorResolverTest.php +++ b/backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlCreatorResolverTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\Resolver; +namespace App\Fishbowl\Tests\Unit\Resolver; use App\Core\Factory\UserFactory; use App\Fishbowl\Factory\FishbowlFactory; diff --git a/backend/tests/Unit/Resolver/FishbowlResolverTest.php b/backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlResolverTest.php similarity index 98% rename from backend/tests/Unit/Resolver/FishbowlResolverTest.php rename to backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlResolverTest.php index f10f70888..a7156cd5d 100644 --- a/backend/tests/Unit/Resolver/FishbowlResolverTest.php +++ b/backend/packages/Fishbowl/tests/Unit/Resolver/FishbowlResolverTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\Resolver; +namespace App\Fishbowl\Tests\Unit\Resolver; use App\Fishbowl\Factory\FishbowlFactory; use App\Fishbowl\Repository\FishbowlRepository; diff --git a/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php b/backend/packages/Fishbowl/tests/Unit/Validator/PrivateFishbowlValidatorTest.php similarity index 97% rename from backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php rename to backend/packages/Fishbowl/tests/Unit/Validator/PrivateFishbowlValidatorTest.php index 21a257208..b613f3926 100644 --- a/backend/tests/Unit/Validator/PrivateFishbowlValidatorTest.php +++ b/backend/packages/Fishbowl/tests/Unit/Validator/PrivateFishbowlValidatorTest.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Tests\Unit\Validator; +namespace App\Fishbowl\Tests\Unit\Validator; use App\Fishbowl\Factory\FishbowlFactory; use App\Fishbowl\Validator\Constraints\PrivateFishbowl; diff --git a/backend/phpstan.neon.dist b/backend/phpstan.neon.dist index 9bd6a6688..2cb0a1fd4 100644 --- a/backend/phpstan.neon.dist +++ b/backend/phpstan.neon.dist @@ -18,6 +18,12 @@ parameters: - src - config - tests + - packages/Core/src + - packages/Core/config + - packages/Core/tests + - packages/Fishbowl/src + - packages/Fishbowl/config + - packages/Fishbowl/tests symfony: container_xml_path: '%rootDir%/../../../var/cache/test/App_KernelTestDebugContainer.xml' treatPhpDocTypesAsCertain: false diff --git a/backend/phpunit.xml.dist b/backend/phpunit.xml.dist index 4d74e9a41..d6a3a6eec 100644 --- a/backend/phpunit.xml.dist +++ b/backend/phpunit.xml.dist @@ -32,7 +32,7 @@ file that was distributed with this source code. - tests + packages/*/tests diff --git a/backend/psalm.xml b/backend/psalm.xml index 49e8d43fd..2a527b2dc 100644 --- a/backend/psalm.xml +++ b/backend/psalm.xml @@ -20,8 +20,8 @@ file that was distributed with this source code. errorBaseline="psalm-baseline.xml" > - - + + From f0bd9869fa648acbca3c29ca2f27910155fdf033 Mon Sep 17 00:00:00 2001 From: Aitor Errasti Date: Tue, 25 Oct 2022 16:08:49 +0200 Subject: [PATCH 11/52] Remove folders (#676) * create folders * wip * refactor config * wip * wip * wip * Fix services.yaml * Fix security * Create fishbowl bundle * wip * wip * Core Bundle * move tests * Fix phpstan config * Fix psalm configuration * Fix lint * Remove folders --- backend/src/Core/Admin/GuestAdmin.php | 55 -- backend/src/Core/Admin/ParticipantAdmin.php | 87 --- .../Core/Admin/ResetPasswordRequestAdmin.php | 61 -- backend/src/Core/Admin/UserAdmin.php | 129 ---- .../src/Core/DataFixtures/DefaultFixtures.php | 64 -- .../Core/DataPersister/UserDataPersister.php | 76 -- .../ChangePasswordDataTransformer.php | 61 -- .../ChangePasswordLoggedDataTransformer.php | 55 -- .../Encryption/HalitePasswordEncryption.php | 50 -- .../PasswordEncryptionInterface.php | 21 - backend/src/Core/Entity/Guest.php | 95 --- backend/src/Core/Entity/Participant.php | 211 ------ backend/src/Core/Entity/RefreshToken.php | 25 - .../src/Core/Entity/ResetPasswordRequest.php | 60 -- backend/src/Core/Entity/SonataUserUser.php | 33 - backend/src/Core/Entity/User.php | 452 ------------ .../EventSubscriber/JWTCreatedSubscriber.php | 55 -- .../Core/EventSubscriber/LocaleSubscriber.php | 57 -- ...nslateJWTAuthenticationFailureResponse.php | 44 -- .../Core/Extension/FishbowlListExtension.php | 52 -- backend/src/Core/Factory/GuestFactory.php | 34 - .../src/Core/Factory/ParticipantFactory.php | 34 - .../Core/Factory/SonataUserUserFactory.php | 37 - backend/src/Core/Factory/UserFactory.php | 46 -- backend/src/Core/JWT/CurrentUserFishbowl.php | 44 -- backend/src/Core/JWT/CurrentUserRoom.php | 46 -- backend/src/Core/JWT/HostValidator.php | 47 -- backend/src/Core/JWT/Model/JWTToken.php | 68 -- .../JWT/Model/Payload/FeaturesPayload.php | 38 - .../Core/JWT/Model/Payload/HeaderPayload.php | 34 - .../JWT/Model/Payload/PayloadInterface.php | 22 - .../Core/JWT/Model/Payload/UserPayload.php | 51 -- .../JWT/TokenGenerator/JaasTokenGenerator.php | 42 -- .../SelfHostedTokenGenerator.php | 36 - .../TokenGeneratorInterface.php | 22 - .../src/Core/Model/ChangePasswordInput.php | 78 -- .../Core/Model/ChangePasswordLoggedInput.php | 77 -- backend/src/Core/Model/ResetPassword.php | 95 --- backend/src/Core/OpenApi/OpenApiFactory.php | 112 --- .../src/Core/Repository/GuestRepository.php | 27 - .../Core/Repository/ParticipantRepository.php | 78 -- .../ResetPasswordRequestRepository.php | 65 -- .../src/Core/Repository/UserRepository.php | 65 -- .../Core/Resolver/ResetPasswordResolver.php | 58 -- backend/src/Core/Resolver/UserResolver.php | 47 -- .../Core/Security/PasswordEncoderService.php | 36 - backend/src/Core/Service/MailerService.php | 120 ---- .../Constraints/SameUserPassword.php | 29 - .../Constraints/SameUserPasswordValidator.php | 68 -- .../Constraints/ValidResetPasswordToken.php | 24 - .../ValidResetPasswordTokenValidator.php | 44 -- backend/src/Fishbowl/Admin/FishbowlAdmin.php | 174 ----- .../Controller/FishbowlController.php | 49 -- .../DataPersister/FishbowlDataPersister.php | 65 -- .../DataProvider/FishbowlDataProvider.php | 53 -- backend/src/Fishbowl/Entity/Fishbowl.php | 670 ------------------ .../FishbowlDoctrineSubscriber.php | 53 -- ...shbowlIntroduceAndNoIntroRunSubscriber.php | 45 -- .../FishbowlPasswordDoctrineSubscriber.php | 65 -- .../EventSubscriber/FishbowlSubscriber.php | 61 -- .../FishbowlTransitionsSubscriber.php | 81 --- .../FishbowlWorkflowSubscriber.php | 47 -- .../src/Fishbowl/Factory/FishbowlFactory.php | 43 -- .../Repository/FishbowlRepository.php | 44 -- .../Resolver/FishbowlCreatorResolver.php | 62 -- .../FishbowlFinishMutationResolver.php | 50 -- .../FishbowlIntroduceMutationResolver.php | 50 -- .../FishbowlNoIntroRunMutationResolver.php | 50 -- .../Fishbowl/Resolver/FishbowlResolver.php | 52 -- .../Resolver/FishbowlRunMutationResolver.php | 50 -- .../src/Fishbowl/Service/FishbowlService.php | 230 ------ .../Service/PrivateFishbowlService.php | 67 -- .../Fishbowl/Stage/FishbowlValidateStage.php | 51 -- .../Validator/Constraints/FutureFishbowl.php | 29 - .../Constraints/FutureFishbowlValidator.php | 47 -- .../Validator/Constraints/PrivateFishbowl.php | 30 - .../Constraints/PrivateFishbowlValidator.php | 46 -- 77 files changed, 5631 deletions(-) delete mode 100644 backend/src/Core/Admin/GuestAdmin.php delete mode 100644 backend/src/Core/Admin/ParticipantAdmin.php delete mode 100644 backend/src/Core/Admin/ResetPasswordRequestAdmin.php delete mode 100644 backend/src/Core/Admin/UserAdmin.php delete mode 100644 backend/src/Core/DataFixtures/DefaultFixtures.php delete mode 100644 backend/src/Core/DataPersister/UserDataPersister.php delete mode 100644 backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php delete mode 100644 backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php delete mode 100644 backend/src/Core/Encryption/HalitePasswordEncryption.php delete mode 100644 backend/src/Core/Encryption/PasswordEncryptionInterface.php delete mode 100644 backend/src/Core/Entity/Guest.php delete mode 100644 backend/src/Core/Entity/Participant.php delete mode 100644 backend/src/Core/Entity/RefreshToken.php delete mode 100644 backend/src/Core/Entity/ResetPasswordRequest.php delete mode 100644 backend/src/Core/Entity/SonataUserUser.php delete mode 100644 backend/src/Core/Entity/User.php delete mode 100644 backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php delete mode 100644 backend/src/Core/EventSubscriber/LocaleSubscriber.php delete mode 100644 backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php delete mode 100644 backend/src/Core/Extension/FishbowlListExtension.php delete mode 100644 backend/src/Core/Factory/GuestFactory.php delete mode 100644 backend/src/Core/Factory/ParticipantFactory.php delete mode 100644 backend/src/Core/Factory/SonataUserUserFactory.php delete mode 100644 backend/src/Core/Factory/UserFactory.php delete mode 100644 backend/src/Core/JWT/CurrentUserFishbowl.php delete mode 100644 backend/src/Core/JWT/CurrentUserRoom.php delete mode 100644 backend/src/Core/JWT/HostValidator.php delete mode 100644 backend/src/Core/JWT/Model/JWTToken.php delete mode 100644 backend/src/Core/JWT/Model/Payload/FeaturesPayload.php delete mode 100644 backend/src/Core/JWT/Model/Payload/HeaderPayload.php delete mode 100644 backend/src/Core/JWT/Model/Payload/PayloadInterface.php delete mode 100644 backend/src/Core/JWT/Model/Payload/UserPayload.php delete mode 100644 backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php delete mode 100644 backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php delete mode 100644 backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php delete mode 100644 backend/src/Core/Model/ChangePasswordInput.php delete mode 100644 backend/src/Core/Model/ChangePasswordLoggedInput.php delete mode 100644 backend/src/Core/Model/ResetPassword.php delete mode 100644 backend/src/Core/OpenApi/OpenApiFactory.php delete mode 100644 backend/src/Core/Repository/GuestRepository.php delete mode 100644 backend/src/Core/Repository/ParticipantRepository.php delete mode 100644 backend/src/Core/Repository/ResetPasswordRequestRepository.php delete mode 100644 backend/src/Core/Repository/UserRepository.php delete mode 100644 backend/src/Core/Resolver/ResetPasswordResolver.php delete mode 100644 backend/src/Core/Resolver/UserResolver.php delete mode 100644 backend/src/Core/Security/PasswordEncoderService.php delete mode 100644 backend/src/Core/Service/MailerService.php delete mode 100644 backend/src/Core/Validator/Constraints/SameUserPassword.php delete mode 100644 backend/src/Core/Validator/Constraints/SameUserPasswordValidator.php delete mode 100644 backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php delete mode 100644 backend/src/Core/Validator/Constraints/ValidResetPasswordTokenValidator.php delete mode 100644 backend/src/Fishbowl/Admin/FishbowlAdmin.php delete mode 100644 backend/src/Fishbowl/Controller/FishbowlController.php delete mode 100644 backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php delete mode 100644 backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php delete mode 100644 backend/src/Fishbowl/Entity/Fishbowl.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php delete mode 100644 backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php delete mode 100644 backend/src/Fishbowl/Factory/FishbowlFactory.php delete mode 100644 backend/src/Fishbowl/Repository/FishbowlRepository.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlResolver.php delete mode 100644 backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php delete mode 100644 backend/src/Fishbowl/Service/FishbowlService.php delete mode 100644 backend/src/Fishbowl/Service/PrivateFishbowlService.php delete mode 100644 backend/src/Fishbowl/Stage/FishbowlValidateStage.php delete mode 100644 backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php delete mode 100644 backend/src/Fishbowl/Validator/Constraints/FutureFishbowlValidator.php delete mode 100644 backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php delete mode 100644 backend/src/Fishbowl/Validator/Constraints/PrivateFishbowlValidator.php diff --git a/backend/src/Core/Admin/GuestAdmin.php b/backend/src/Core/Admin/GuestAdmin.php deleted file mode 100644 index d02d34c83..000000000 --- a/backend/src/Core/Admin/GuestAdmin.php +++ /dev/null @@ -1,55 +0,0 @@ - */ -class GuestAdmin extends AbstractAdmin -{ - /** @param mixed[] $sortValues */ - protected function configureDefaultSortValues(array &$sortValues): void - { - $sortValues['_sort_by'] = 'updatedAt'; - $sortValues['_sort_order'] = 'DESC'; - } - - protected function configureRoutes(RouteCollectionInterface $collection): void - { - $collection->remove('create'); - } - - protected function configureDatagridFilters(DatagridMapper $filter): void - { - $filter - ->add('name'); - } - - protected function configureListFields(ListMapper $list): void - { - $list - ->add('name'); - } - - protected function configureFormFields(FormMapper $form): void - { - $form - ->add('name'); - } -} diff --git a/backend/src/Core/Admin/ParticipantAdmin.php b/backend/src/Core/Admin/ParticipantAdmin.php deleted file mode 100644 index 8695cbc1b..000000000 --- a/backend/src/Core/Admin/ParticipantAdmin.php +++ /dev/null @@ -1,87 +0,0 @@ - */ -class ParticipantAdmin extends AbstractAdmin -{ - /** @param mixed[] $sortValues */ - protected function configureDefaultSortValues(array &$sortValues): void - { - $sortValues['_sort_by'] = 'lastPing'; - $sortValues['_sort_order'] = 'DESC'; - } - - protected function configureRoutes(RouteCollectionInterface $collection): void - { - $collection->remove('create'); - } - - protected function configureDatagridFilters(DatagridMapper $filter): void - { - $filter - ->add('user', ModelFilter::class, [ - 'field_type' => ModelAutocompleteType::class, - 'field_options' => [ - 'property' => 'email', - 'callback' => FishbowlAdmin::hostCallbackFunction(), - ], - ]) - ->add('guest', ModelFilter::class, [ - 'field_type' => ModelAutocompleteType::class, - 'field_options' => [ - 'property' => 'name', - ], - ]) - ->add('fishbowl', ModelFilter::class, [ - 'field_type' => ModelAutocompleteType::class, - 'field_options' => [ - 'property' => 'name', - ], - ]) - ->add('lastPing', DateRangeFilter::class, [ - 'field_type' => DateRangePickerType::class, - ]); - } - - protected function configureListFields(ListMapper $list): void - { - $list - ->add('user') - ->add('guest') - ->add('fishbowl') - ->add('lastPing'); - } - - protected function configureFormFields(FormMapper $form): void - { - $form - ->add('user') - ->add('guest') - ->add('fishbowl') - ->add('lastPing'); - } -} diff --git a/backend/src/Core/Admin/ResetPasswordRequestAdmin.php b/backend/src/Core/Admin/ResetPasswordRequestAdmin.php deleted file mode 100644 index 61d61dbdd..000000000 --- a/backend/src/Core/Admin/ResetPasswordRequestAdmin.php +++ /dev/null @@ -1,61 +0,0 @@ - */ -class ResetPasswordRequestAdmin extends AbstractAdmin -{ - /** @param mixed[] $sortValues */ - protected function configureDefaultSortValues(array &$sortValues): void - { - $sortValues['_sort_by'] = 'requestedAt'; - $sortValues['_sort_order'] = 'DESC'; - } - - protected function configureRoutes(RouteCollectionInterface $collection): void - { - $collection->remove('create'); - } - - protected function configureDatagridFilters(DatagridMapper $filter): void - { - $filter - ->add('user'); - } - - protected function configureListFields(ListMapper $list): void - { - $list - ->add('hashedToken') - ->add('requestedAt') - ->add('expiresAt') - ->add('user'); - } - - protected function configureFormFields(FormMapper $form): void - { - $form - ->add('hashedToken') - ->add('requestedAt') - ->add('expiresAt') - ->add('user'); - } -} diff --git a/backend/src/Core/Admin/UserAdmin.php b/backend/src/Core/Admin/UserAdmin.php deleted file mode 100644 index b9c97df62..000000000 --- a/backend/src/Core/Admin/UserAdmin.php +++ /dev/null @@ -1,129 +0,0 @@ - */ -class UserAdmin extends AbstractAdmin -{ - protected ?PasswordEncoderService $passwordEncoder = null; - protected ?MailerService $mailerService = null; - - public function setPasswordEncoder(PasswordEncoderService $passwordEncoder): void - { - $this->passwordEncoder = $passwordEncoder; - } - - public function setMailerService(MailerService $mailerService): void - { - $this->mailerService = $mailerService; - } - - public function prePersist($object): void - { - if (null !== $this->passwordEncoder) { - $this->passwordEncoder->encodePassword($object); - } - if (null !== $this->mailerService) { - $this->mailerService->sendWelcomeEmail($object); - } - } - - public function preUpdate($object): void - { - if (null !== $this->passwordEncoder) { - $this->passwordEncoder->encodePassword($object); - } - } - - protected function configureFormOptions(array &$formOptions): void - { - if (!$this->hasSubject()) { - return; - } - - $subject = $this->getSubject(); - - if (null === $subject->getId()) { - $formOptions = ['validation_groups' => ['Default', 'user:create']]; - } - } - - /** @param mixed[] $sortValues */ - protected function configureDefaultSortValues(array &$sortValues): void - { - $sortValues['_sort_by'] = 'createdAt'; - $sortValues['_sort_order'] = 'DESC'; - } - - protected function configureDatagridFilters(DatagridMapper $filter): void - { - $filter - ->add('name') - ->add('surnames') - ->add('email'); - } - - protected function configureListFields(ListMapper $list): void - { - $list - ->add('createdAt') - ->addIdentifier('email') - ->add('name') - ->add('surnames') - ->add('privacyPolicy') - ->add('allowShareData', FieldDescriptionInterface::TYPE_BOOLEAN, [ - 'editable' => true, - ]) - ->add('locale') - ->add('active', FieldDescriptionInterface::TYPE_BOOLEAN, [ - 'editable' => true, - ]); - } - - protected function configureFormFields(FormMapper $form): void - { - $required = !$this->hasSubject() || null === $this->getSubject()->getId(); - - $form - ->add('email', EmailType::class, [ - 'disabled' => !$required, - ]) - ->add('name') - ->add('surnames') - ->add('privacyPolicy', CheckboxType::class, [ - 'disabled' => !$required, - ]) - ->add('allowShareData') - ->add('linkedinProfile') - ->add('twitterProfile') - ->add('locale', LocaleType::class) - ->add('active') - ->add('plainPassword', TextType::class, [ - 'required' => $required, - ]); - } -} diff --git a/backend/src/Core/DataFixtures/DefaultFixtures.php b/backend/src/Core/DataFixtures/DefaultFixtures.php deleted file mode 100644 index 5f8de0d45..000000000 --- a/backend/src/Core/DataFixtures/DefaultFixtures.php +++ /dev/null @@ -1,64 +0,0 @@ - 'admin', - 'email' => 'admin@localhost', - 'password' => self::ADMIN_PASSWORD, - 'enabled' => true, - 'roles' => [UserInterface::ROLE_SUPER_ADMIN], - ]); - - UserFactory::createOne([ - 'email' => 'user@stooa.com', - 'password' => self::ADMIN_PASSWORD, - 'active' => true, - ]); - - $fishbowl = FishbowlFactory::createOne([ - 'startDateTime' => new \DateTime(), - 'timezone' => 'Europe/Madrid', - 'duration' => \DateTime::createFromFormat('!H:i', '02:00'), - 'currentStatus' => Fishbowl::STATUS_NOT_STARTED, - 'slug' => 'test-me-fishbowl', - ])->object(); - - UserFactory::createOne([ - 'email' => 'host@stooa.com', - 'password' => self::ADMIN_PASSWORD, - 'active' => true, - 'fishbowls' => [$fishbowl], - 'createdAt' => new \DateTime(), - ]); - } -} diff --git a/backend/src/Core/DataPersister/UserDataPersister.php b/backend/src/Core/DataPersister/UserDataPersister.php deleted file mode 100644 index 9bbeec4a0..000000000 --- a/backend/src/Core/DataPersister/UserDataPersister.php +++ /dev/null @@ -1,76 +0,0 @@ -decorated->supports($data, $context); - } - - /** - * @param mixed $data - * @param mixed[] $context - * - * @return object|void - */ - public function persist($data, array $context = []) - { - if ($data instanceof User) { - if (($context['collection_operation_name'] ?? null) === 'post' || - ($context['graphql_operation_name'] ?? null) === 'create') { - $data->setActive(true); - } - - $this->passwordEncoder->encodePassword($data); - } - - $result = $this->decorated->persist($data, $context); - - if ($data instanceof User && ( - ($context['collection_operation_name'] ?? null) === 'post' || - ($context['graphql_operation_name'] ?? null) === 'create') - ) { - $this->mailerService->sendWelcomeEmail($data); - } - - return $result; - } - - /** - * @param mixed $data - * @param mixed[] $context - */ - public function remove($data, array $context = []): void - { - $this->decorated->remove($data, $context); - } -} diff --git a/backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php b/backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php deleted file mode 100644 index 7f5c54d39..000000000 --- a/backend/src/Core/DataTransformer/ChangePasswordDataTransformer.php +++ /dev/null @@ -1,61 +0,0 @@ -validator->validate($object); - - Assert::isInstanceOf($object, ChangePasswordInput::class); - - $token = (string) $object->getToken(); - $user = $this->helper->validateTokenAndFetchUser($token); - - Assert::isInstanceOf($user, User::class); - - $user->setPlainPassword($object->getPassword()); - - $this->helper->removeResetRequest($token); - $this->passwordEncoder->encodePassword($user); - - return $user; - } - - /** - * @param object|mixed[] $data - * @param mixed[] $context - */ - public function supportsTransformation($data, string $to, array $context = []): bool - { - return User::class === $to && ChangePasswordInput::class === ($context['input']['class'] ?? null); - } -} diff --git a/backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php b/backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php deleted file mode 100644 index 3e5fb5d91..000000000 --- a/backend/src/Core/DataTransformer/ChangePasswordLoggedDataTransformer.php +++ /dev/null @@ -1,55 +0,0 @@ -validator->validate($object); - - Assert::isInstanceOf($object, ChangePasswordLoggedInput::class); - - $user = $this->security->getUser(); - - Assert::isInstanceOf($user, User::class); - - $user->setPlainPassword($object->getNewPassword()); - - return $user; - } - - /** - * @param object|mixed[] $data - * @param mixed[] $context - */ - public function supportsTransformation($data, string $to, array $context = []): bool - { - return User::class === $to && ChangePasswordLoggedInput::class === ($context['input']['class'] ?? null); - } -} diff --git a/backend/src/Core/Encryption/HalitePasswordEncryption.php b/backend/src/Core/Encryption/HalitePasswordEncryption.php deleted file mode 100644 index bf0a05e8a..000000000 --- a/backend/src/Core/Encryption/HalitePasswordEncryption.php +++ /dev/null @@ -1,50 +0,0 @@ -key)) - ); - } - - public function decrypt(?string $cipherPassword): ?string - { - if (null === $cipherPassword) { - return null; - } - - return Crypto::decrypt( - $cipherPassword, - KeyFactory::importEncryptionKey(new HiddenString($this->key)) - )->getString(); - } -} diff --git a/backend/src/Core/Encryption/PasswordEncryptionInterface.php b/backend/src/Core/Encryption/PasswordEncryptionInterface.php deleted file mode 100644 index 0f6883448..000000000 --- a/backend/src/Core/Encryption/PasswordEncryptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -getId(); - $stringUid = null !== $uid ? ' (' . $uid->toString() . ')' : ''; - - return ($this->getName() ?? '') . $stringUid; - } - - public function getId(): ?UuidInterface - { - return $this->id; - } - - public function setId(string $id): self - { - $this->id = Uuid::fromString($id); - - return $this; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(?string $name): self - { - $this->name = $name; - - return $this; - } -} diff --git a/backend/src/Core/Entity/Participant.php b/backend/src/Core/Entity/Participant.php deleted file mode 100644 index dcd1d962c..000000000 --- a/backend/src/Core/Entity/Participant.php +++ /dev/null @@ -1,211 +0,0 @@ -getUserName(); - } - - public function getId(): ?UuidInterface - { - return $this->id; - } - - public function setId(?UuidInterface $id): void - { - $this->id = $id; - } - - public function getUser(): ?User - { - return $this->user; - } - - public function setUser(?User $user): void - { - $this->user = $user; - } - - public function getGuest(): ?Guest - { - return $this->guest; - } - - public function setGuest(?Guest $guest): void - { - $this->guest = $guest; - } - - public function getFishbowl(): ?Fishbowl - { - return $this->fishbowl; - } - - public function setFishbowl(?Fishbowl $fishbowl): void - { - $this->fishbowl = $fishbowl; - } - - public function getLastPing(): ?\DateTimeInterface - { - return $this->lastPing; - } - - public function setLastPing(?\DateTimeInterface $lastPing): self - { - $this->lastPing = $lastPing; - - return $this; - } - - public function getUserName(): string - { - $user = $this->getUser(); - - if (null !== $user) { - return $user->getFullName(); - } - - $guest = $this->getGuest(); - - if (null !== $guest) { - $guestName = $guest->getName(); - MAssert::notNull($guestName); - - return $guestName; - } - - return ''; - } - - public function getPublicTwitterProfile(): ?string - { - $user = $this->getUser(); - - if (null !== $user) { - return $user->getPublicTwitterProfile(); - } - - return null; - } - - public function getPublicLinkedinAccount(): ?string - { - $user = $this->getUser(); - - if (null !== $user) { - return $user->getPublicLinkedinProfile(); - } - - return null; - } - - public function isModerator(Fishbowl $fishbowl): bool - { - $user = $this->getUser(); - - if (null !== $this->getUser()) { - return $fishbowl->getHost() === $user; - } - - return false; - } - - public function isCurrentUser(?UserInterface $currentUser): bool - { - if (null !== $this->getUser()) { - return $this->getUser() === $currentUser; - } - - return false; - } - - public function getGuestId(): ?string - { - $guest = $this->getGuest(); - - if (null !== $guest) { - $uid = $guest->getId(); - - if (null !== $uid) { - return $uid->toString(); - } - } - - return null; - } -} diff --git a/backend/src/Core/Entity/RefreshToken.php b/backend/src/Core/Entity/RefreshToken.php deleted file mode 100644 index 8d6df3d3c..000000000 --- a/backend/src/Core/Entity/RefreshToken.php +++ /dev/null @@ -1,25 +0,0 @@ -initialize($expiresAt, $selector, $hashedToken); - } - - public function getId(): ?UuidInterface - { - return $this->id; - } - - public function getUser(): User - { - return $this->user; - } -} diff --git a/backend/src/Core/Entity/SonataUserUser.php b/backend/src/Core/Entity/SonataUserUser.php deleted file mode 100644 index c4599cbd6..000000000 --- a/backend/src/Core/Entity/SonataUserUser.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * @ORM\OneToMany(targetEntity="App\Fishbowl\Entity\Fishbowl", mappedBy="host") - */ - private Collection $fishbowls; - - /** - * @Groups({"user:write"}) - * @Assert\NotBlank(groups={"user:create"}) - */ - private ?string $plainPassword = null; - - public function __construct() - { - $this->fishbowls = new ArrayCollection(); - } - - public function __toString(): string - { - return $this->getFullName() . ' (' . $this->getUserIdentifier() . ')'; - } - - public function getId(): ?UuidInterface - { - return $this->id; - } - - public function setId(string $id): self - { - $this->id = Uuid::fromString($id); - - return $this; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(string $name): self - { - $this->name = $name; - - return $this; - } - - public function getSurnames(): ?string - { - return $this->surnames; - } - - public function setSurnames(string $surnames): self - { - $this->surnames = $surnames; - - return $this; - } - - public function getFullName(): string - { - return $this->getName() . ' ' . $this->getSurnames(); - } - - public function getEmail(): ?string - { - return $this->email; - } - - public function setEmail(string $email): self - { - $this->email = $email; - - return $this; - } - - public function getUserIdentifier(): string - { - return (string) $this->email; - } - - public function getRoles(): array - { - $roles = $this->roles; - $roles[] = 'ROLE_USER'; - - return array_unique($roles); - } - - /** @param string[] $roles */ - public function setRoles(array $roles): self - { - $this->roles = $roles; - - return $this; - } - - public function getPassword(): string - { - return (string) $this->password; - } - - public function setPassword(string $password): self - { - $this->password = $password; - - return $this; - } - - public function getPrivacyPolicy(): bool - { - return $this->privacyPolicy; - } - - public function setPrivacyPolicy(bool $privacyPolicy): self - { - $this->privacyPolicy = $privacyPolicy; - - return $this; - } - - public function getAllowShareData(): bool - { - return $this->allowShareData; - } - - public function setAllowShareData(bool $allowShareData): self - { - $this->allowShareData = $allowShareData; - - return $this; - } - - public function getActive(): bool - { - return $this->active; - } - - public function setActive(bool $active): self - { - $this->active = $active; - - return $this; - } - - public function getLinkedinProfile(): ?string - { - return $this->linkedinProfile; - } - - public function setLinkedinProfile(?string $linkedinProfile = null): self - { - $this->linkedinProfile = $linkedinProfile; - - return $this; - } - - /** @Groups({"user:foreign"}) */ - public function getPublicLinkedinProfile(): ?string - { - if ($this->getAllowShareData()) { - return $this->linkedinProfile; - } - - return null; - } - - public function getTwitterProfile(): ?string - { - return $this->twitterProfile; - } - - public function setTwitterProfile(?string $twitterProfile = null): self - { - $this->twitterProfile = $twitterProfile; - - return $this; - } - - /** @Groups({"user:foreign"}) */ - public function getPublicTwitterProfile(): ?string - { - if ($this->getAllowShareData()) { - return $this->twitterProfile; - } - - return null; - } - - public function getPlainPassword(): string - { - return (string) $this->plainPassword; - } - - public function setPlainPassword(?string $plainPassword): self - { - $this->plainPassword = $plainPassword; - - return $this; - } - - public function getLocale(): ?string - { - return $this->locale; - } - - public function setLocale(string $locale): self - { - $this->locale = $locale; - - return $this; - } - - /** @return Collection */ - public function getFishbowls(): Collection - { - return $this->fishbowls; - } - - public function addFishbowl(Fishbowl $fishbowl): self - { - if (!$this->fishbowls->contains($fishbowl)) { - $this->fishbowls[] = $fishbowl; - $fishbowl->setHost($this); - } - - return $this; - } - - public function removeFishbowl(Fishbowl $fishbowl): self - { - if ($this->fishbowls->contains($fishbowl)) { - $this->fishbowls->removeElement($fishbowl); - - if ($fishbowl->getHost() === $this) { - $fishbowl->setHost(null); - } - } - - return $this; - } - - public function getCurrentFishbowl(): ?Fishbowl - { - foreach ($this->fishbowls as $fishbowl) { - if (!$fishbowl->isFinished() && $fishbowl->isHappeningNow()) { - return $fishbowl; - } - } - - return null; - } - - public function eraseCredentials(): void - { - $this->plainPassword = null; - } - - public function getSalt(): ?string - { - return null; - } -} diff --git a/backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php b/backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php deleted file mode 100644 index f2dfe6a13..000000000 --- a/backend/src/Core/EventSubscriber/JWTCreatedSubscriber.php +++ /dev/null @@ -1,55 +0,0 @@ - */ - public static function getSubscribedEvents(): array - { - return [ - Events::JWT_CREATED => 'onJWTCreated', - ]; - } - - public function onJWTCreated(JWTCreatedEvent $event): void - { - /** @var User */ - $user = $event->getUser(); - - $payload = $event->getData(); - - $jwtPayload = $this->tokenGenerator->generate($user); - - $event->setData(array_merge($jwtPayload->toArray(), $payload)); - - $headerPayload = $jwtPayload->getHeaderPayload(); - - if (null !== $headerPayload) { - $header = $event->getHeader(); - - $event->setHeader(array_merge($header, $headerPayload->toArray())); - } - } -} diff --git a/backend/src/Core/EventSubscriber/LocaleSubscriber.php b/backend/src/Core/EventSubscriber/LocaleSubscriber.php deleted file mode 100644 index 884038b55..000000000 --- a/backend/src/Core/EventSubscriber/LocaleSubscriber.php +++ /dev/null @@ -1,57 +0,0 @@ -|string> */ - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::REQUEST => [['onKernelRequest', 200]], - ]; - } - - public function onKernelRequest(RequestEvent $event): void - { - $request = $event->getRequest(); - - if (!$request->headers->has('Accept-Language')) { - return; - } - - $locales = $request->headers->get('Accept-Language'); - - if (null === $locales) { - return; - } - - $requestLocale = $request->getPreferredLanguage($this->locales); - - if (null === $requestLocale) { - return; - } - - $request->setLocale($requestLocale); - } -} diff --git a/backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php b/backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php deleted file mode 100644 index 8f3376b87..000000000 --- a/backend/src/Core/EventSubscriber/TranslateJWTAuthenticationFailureResponse.php +++ /dev/null @@ -1,44 +0,0 @@ - 'onAuthenticationFailureResponse', - ]; - } - - public function onAuthenticationFailureResponse(AuthenticationFailureEvent $event): void - { - $response = $event->getResponse(); - - Assert::isInstanceOf($response, JWTAuthenticationFailureResponse::class); - - $response->setMessage($this->translator->trans('login.failure')); - } -} diff --git a/backend/src/Core/Extension/FishbowlListExtension.php b/backend/src/Core/Extension/FishbowlListExtension.php deleted file mode 100644 index 67be09c8e..000000000 --- a/backend/src/Core/Extension/FishbowlListExtension.php +++ /dev/null @@ -1,52 +0,0 @@ -security->getUser()) { - return; - } - - Assert::isInstanceOf($user, User::class); - - $rootAlias = $queryBuilder->getRootAliases()[0]; - - $queryBuilder->andWhere(sprintf('%s.host = :host', $rootAlias)); - $queryBuilder->setParameter('host', $user->getId(), 'uuid'); - - $queryBuilder->andWhere(sprintf('%s.currentStatus != :finished', $rootAlias)); - $queryBuilder->setParameter('finished', Fishbowl::STATUS_FINISHED); - - $queryBuilder->addOrderBy(sprintf('%s.startDateTime', $rootAlias), 'ASC'); - } -} diff --git a/backend/src/Core/Factory/GuestFactory.php b/backend/src/Core/Factory/GuestFactory.php deleted file mode 100644 index 2c4fd6bc4..000000000 --- a/backend/src/Core/Factory/GuestFactory.php +++ /dev/null @@ -1,34 +0,0 @@ - */ -final class GuestFactory extends ModelFactory -{ - /** @return array */ - protected function getDefaults(): array - { - return [ - 'name' => self::faker()->firstName(), - ]; - } - - protected static function getClass(): string - { - return Guest::class; - } -} diff --git a/backend/src/Core/Factory/ParticipantFactory.php b/backend/src/Core/Factory/ParticipantFactory.php deleted file mode 100644 index 72db46ffa..000000000 --- a/backend/src/Core/Factory/ParticipantFactory.php +++ /dev/null @@ -1,34 +0,0 @@ - */ -final class ParticipantFactory extends ModelFactory -{ - /** @return array */ - protected function getDefaults(): array - { - return [ - 'lastPing' => self::faker()->dateTime(), - ]; - } - - protected static function getClass(): string - { - return Participant::class; - } -} diff --git a/backend/src/Core/Factory/SonataUserUserFactory.php b/backend/src/Core/Factory/SonataUserUserFactory.php deleted file mode 100644 index b3b6818f7..000000000 --- a/backend/src/Core/Factory/SonataUserUserFactory.php +++ /dev/null @@ -1,37 +0,0 @@ - */ -final class SonataUserUserFactory extends ModelFactory -{ - /** @return array */ - protected function getDefaults(): array - { - return [ - 'username' => self::faker()->unique()->userName(), - 'email' => self::faker()->unique()->email(), - 'password' => self::faker()->password(), - 'enabled' => self::faker()->boolean(), - ]; - } - - protected static function getClass(): string - { - return SonataUserUser::class; - } -} diff --git a/backend/src/Core/Factory/UserFactory.php b/backend/src/Core/Factory/UserFactory.php deleted file mode 100644 index 78ddd6230..000000000 --- a/backend/src/Core/Factory/UserFactory.php +++ /dev/null @@ -1,46 +0,0 @@ - */ -final class UserFactory extends ModelFactory -{ - /** @return array */ - protected function getDefaults(): array - { - return [ - 'name' => self::faker()->firstName(), - 'surnames' => self::faker()->lastName(), - 'email' => self::faker()->unique()->email(), - 'password' => self::faker()->password(), - 'plainPassword' => self::faker()->word(), - 'privacyPolicy' => self::faker()->boolean(), - 'allowShareData' => true, - 'active' => self::faker()->boolean(), - 'linkedinProfile' => 'https://www.linkedin.com/in/wearestooa', - 'twitterProfile' => 'https://www.twitter.com/wearestooa', - 'locale' => 'en', - 'createdAt' => self::faker()->dateTime(), - 'updatedAt' => self::faker()->dateTime(), - ]; - } - - protected static function getClass(): string - { - return User::class; - } -} diff --git a/backend/src/Core/JWT/CurrentUserFishbowl.php b/backend/src/Core/JWT/CurrentUserFishbowl.php deleted file mode 100644 index 2669de63f..000000000 --- a/backend/src/Core/JWT/CurrentUserFishbowl.php +++ /dev/null @@ -1,44 +0,0 @@ -currentUserRoom->getRoom($user); - - if (null !== $slug) { - return $slug; - } - - Assert::isInstanceOf($user, User::class); - - $currentFishbowl = $user->getCurrentFishbowl(); - - if (null !== $currentFishbowl) { - return (string) $currentFishbowl->getSlug(); - } - - return ''; - } -} diff --git a/backend/src/Core/JWT/CurrentUserRoom.php b/backend/src/Core/JWT/CurrentUserRoom.php deleted file mode 100644 index 9c79a1311..000000000 --- a/backend/src/Core/JWT/CurrentUserRoom.php +++ /dev/null @@ -1,46 +0,0 @@ -requestStack->getCurrentRequest(); - - if (null !== $currentRequest) { - $slug = $currentRequest->request->get('room'); - - if (null !== $slug && \is_string($slug) && $this->fishbowlService->canFishbowlStart($slug, $user)) { - return $slug; - } - } - - return null; - } -} diff --git a/backend/src/Core/JWT/HostValidator.php b/backend/src/Core/JWT/HostValidator.php deleted file mode 100644 index e0d3c7d46..000000000 --- a/backend/src/Core/JWT/HostValidator.php +++ /dev/null @@ -1,47 +0,0 @@ -currentUserRoom->getRoom($user); - - if (null === $slug) { - return false; - } - - Assert::isInstanceOf($user, User::class); - - $fishbowl = $this->fishbowlRepository->findBySlug($slug); - - if (null === $fishbowl) { - return false; - } - - return $fishbowl->getHost() === $user; - } -} diff --git a/backend/src/Core/JWT/Model/JWTToken.php b/backend/src/Core/JWT/Model/JWTToken.php deleted file mode 100644 index 9613973ae..000000000 --- a/backend/src/Core/JWT/Model/JWTToken.php +++ /dev/null @@ -1,68 +0,0 @@ -headerPayload; - } - - public function getNbf(): ?\DateTimeImmutable - { - return $this->nbf; - } - - /** @return array>|null> */ - public function toArray(): array - { - $arrayResponse = [ - RegisteredClaims::ISSUER => $this->iss, - RegisteredClaims::AUDIENCE => $this->aud, - RegisteredClaims::SUBJECT => $this->sub, - 'room' => $this->room, - 'context' => [ - 'user' => $this->user->toArray(), - ], - ]; - - if (null !== $this->nbf) { - $arrayResponse[RegisteredClaims::NOT_BEFORE] = $this->nbf; - } - - if (null !== $this->features) { - $arrayResponse['context']['features'] = $this->features->toArray(); - } - - return $arrayResponse; - } -} diff --git a/backend/src/Core/JWT/Model/Payload/FeaturesPayload.php b/backend/src/Core/JWT/Model/Payload/FeaturesPayload.php deleted file mode 100644 index bfef9cdf3..000000000 --- a/backend/src/Core/JWT/Model/Payload/FeaturesPayload.php +++ /dev/null @@ -1,38 +0,0 @@ - */ - public function toArray(): array - { - return [ - 'livestreaming' => $this->livestreaming, - 'outbound-call' => $this->outboundCall, - 'transcription' => $this->transcription, - 'sip-outbound-call' => $this->sipOutboundCall, - 'recording' => $this->recording, - ]; - } -} diff --git a/backend/src/Core/JWT/Model/Payload/HeaderPayload.php b/backend/src/Core/JWT/Model/Payload/HeaderPayload.php deleted file mode 100644 index 04bf4deaa..000000000 --- a/backend/src/Core/JWT/Model/Payload/HeaderPayload.php +++ /dev/null @@ -1,34 +0,0 @@ - */ - public function toArray(): array - { - return [ - 'alg' => $this->alg, - 'kid' => $this->kid, - 'typ' => $this->typ, - ]; - } -} diff --git a/backend/src/Core/JWT/Model/Payload/PayloadInterface.php b/backend/src/Core/JWT/Model/Payload/PayloadInterface.php deleted file mode 100644 index 7193ff153..000000000 --- a/backend/src/Core/JWT/Model/Payload/PayloadInterface.php +++ /dev/null @@ -1,22 +0,0 @@ -|null> */ - public function toArray(): array; -} diff --git a/backend/src/Core/JWT/Model/Payload/UserPayload.php b/backend/src/Core/JWT/Model/Payload/UserPayload.php deleted file mode 100644 index 43579b678..000000000 --- a/backend/src/Core/JWT/Model/Payload/UserPayload.php +++ /dev/null @@ -1,51 +0,0 @@ -name = $user->getFullName(); - $this->email = $user->getEmail(); - $this->twitter = $user->getPublicTwitterProfile(); - $this->linkedin = $user->getPublicLinkedinProfile(); - } - - /** @return array */ - public function toArray(): array - { - return [ - 'name' => $this->name, - 'email' => $this->email, - 'twitter' => $this->twitter, - 'linkedin' => $this->linkedin, - 'moderator' => $this->moderator, - 'id' => $this->id, - 'avatar' => $this->avatar, - ]; - } -} diff --git a/backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php b/backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php deleted file mode 100644 index 90eb7ce5b..000000000 --- a/backend/src/Core/JWT/TokenGenerator/JaasTokenGenerator.php +++ /dev/null @@ -1,42 +0,0 @@ -hostValidator->validateFromRequest($user), $user->getId(), ''); - - return new JWTToken('chat', 'jitsi', $this->appId, '*', $userPayload, - new \DateTimeImmutable('-10 seconds'), - new HeaderPayload($this->apiKey, 'RS256', 'JWT'), - new FeaturesPayload(false, false, false, false, false) - ); - } -} diff --git a/backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php b/backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php deleted file mode 100644 index f04f3c1ee..000000000 --- a/backend/src/Core/JWT/TokenGenerator/SelfHostedTokenGenerator.php +++ /dev/null @@ -1,36 +0,0 @@ -currentUserFishbowl->currentSlug($user), - $userPayload - ); - } -} diff --git a/backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php b/backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php deleted file mode 100644 index bd1d3a72b..000000000 --- a/backend/src/Core/JWT/TokenGenerator/TokenGeneratorInterface.php +++ /dev/null @@ -1,22 +0,0 @@ -token; - } - - public function setToken(?string $token): self - { - $this->token = $token; - - return $this; - } - - public function getPassword(): ?string - { - return $this->password; - } - - public function setPassword(?string $password): self - { - $this->password = $password; - - return $this; - } - - public function getPasswordConfirmation(): ?string - { - return $this->passwordConfirmation; - } - - public function setPasswordConfirmation(?string $passwordConfirmation): self - { - $this->passwordConfirmation = $passwordConfirmation; - - return $this; - } -} diff --git a/backend/src/Core/Model/ChangePasswordLoggedInput.php b/backend/src/Core/Model/ChangePasswordLoggedInput.php deleted file mode 100644 index a534d76a3..000000000 --- a/backend/src/Core/Model/ChangePasswordLoggedInput.php +++ /dev/null @@ -1,77 +0,0 @@ -password; - } - - public function setPassword(?string $password): self - { - $this->password = $password; - - return $this; - } - - public function getNewPassword(): ?string - { - return $this->newPassword; - } - - public function setNewPassword(?string $newPassword): self - { - $this->newPassword = $newPassword; - - return $this; - } - - public function getNewPasswordConfirmation(): ?string - { - return $this->newPasswordConfirmation; - } - - public function setNewPasswordConfirmation(?string $newPasswordConfirmation): self - { - $this->newPasswordConfirmation = $newPasswordConfirmation; - - return $this; - } -} diff --git a/backend/src/Core/Model/ResetPassword.php b/backend/src/Core/Model/ResetPassword.php deleted file mode 100644 index ae770ee1e..000000000 --- a/backend/src/Core/Model/ResetPassword.php +++ /dev/null @@ -1,95 +0,0 @@ -id; - } - - public function setId(UuidInterface $id): self - { - $this->id = $id; - - return $this; - } - - public function getEmail(): ?string - { - return $this->email; - } - - public function setEmail(string $email): self - { - $this->email = $email; - - return $this; - } - - public function getLocale(): ?string - { - return $this->locale; - } - - public function setLocale(string $locale): self - { - $this->locale = $locale; - - return $this; - } -} diff --git a/backend/src/Core/OpenApi/OpenApiFactory.php b/backend/src/Core/OpenApi/OpenApiFactory.php deleted file mode 100644 index 5675a130a..000000000 --- a/backend/src/Core/OpenApi/OpenApiFactory.php +++ /dev/null @@ -1,112 +0,0 @@ -decorated->__invoke($context); - $schemas = $openApi->getComponents()->getSchemas() ?? new \ArrayObject(); - - $schemas['Credentials'] = [ - 'type' => 'object', - 'properties' => [ - 'email' => [ - 'type' => 'string', - 'example' => 'api@stooa.com', - ], - 'password' => [ - 'type' => 'string', - 'example' => 'api', - ], - ], - ]; - - $schemas['Token'] = [ - 'type' => 'object', - 'properties' => [ - 'token' => [ - 'type' => 'string', - 'readOnly' => true, - ], - 'refresh_token' => [ - 'type' => 'string', - 'readOnly' => true, - ], - ], - ]; - - $schemas['RefreshToken'] = [ - 'type' => 'object', - 'properties' => [ - 'email' => [ - 'type' => 'string', - 'example' => 'api', - ], - 'refresh_token' => [ - 'type' => 'string', - 'example' => 'api', - ], - ], - ]; - - $loginOperation = (new Operation('postCredentialsItem')) - ->withTags(['Token']) - ->withSummary('Get JWT token to login.') - ->withRequestBody(new RequestBody('Create new JWT Token', new \ArrayObject([ - 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Credentials'])), - ]))) - ->withResponses([ - HttpFoundationResponse::HTTP_OK => new Response('Get JWT token', new \ArrayObject([ - 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Token'])), - ])), - ]); - - $refreshTokenOperation = (new Operation('postRefreshCredentialsItem')) - ->withTags(['Token']) - ->withSummary('Get JWT token.') - ->withRequestBody(new RequestBody('Create new JWT Token given a refresh token', new \ArrayObject([ - 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/RefreshToken'])), - ]))) - ->withResponses([ - HttpFoundationResponse::HTTP_OK => new Response('Get JWT token', new \ArrayObject([ - 'application/json' => new MediaType(new \ArrayObject(['$ref' => '#/components/schemas/Token'])), - ])), - ]); - - $openApi = $openApi->withInfo(new Info('Stooa', 'v1')); - - $openApi->getComponents()->withSchemas($schemas); - $openApi->getPaths()->addPath('/login', (new PathItem())->withPost($loginOperation)); - $openApi->getPaths()->addPath('/refresh-token', (new PathItem())->withPost($refreshTokenOperation)); - - return $openApi; - } -} diff --git a/backend/src/Core/Repository/GuestRepository.php b/backend/src/Core/Repository/GuestRepository.php deleted file mode 100644 index 4ed7e8fb2..000000000 --- a/backend/src/Core/Repository/GuestRepository.php +++ /dev/null @@ -1,27 +0,0 @@ - */ -class GuestRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Guest::class); - } -} diff --git a/backend/src/Core/Repository/ParticipantRepository.php b/backend/src/Core/Repository/ParticipantRepository.php deleted file mode 100644 index cc18e6d35..000000000 --- a/backend/src/Core/Repository/ParticipantRepository.php +++ /dev/null @@ -1,78 +0,0 @@ - */ -class ParticipantRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Participant::class); - } - - public function findUserInFishbowl(Fishbowl $fishbowl, User $user): ?Participant - { - $query = $this->createQueryBuilder('participant') - ->where('participant.fishbowl = :fishbowl') - ->andWhere('participant.user = :user') - ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') - ->setParameter('user', $user->getId(), 'uuid') - ->getQuery(); - - return $query->getOneOrNullResult(); - } - - public function findGuestInFishbowl(Fishbowl $fishbowl, Guest $guest): ?Participant - { - $query = $this->createQueryBuilder('participant') - ->where('participant.fishbowl = :fishbowl') - ->andWhere('participant.guest = :guest') - ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') - ->setParameter('guest', $guest->getId(), 'uuid') - ->getQuery(); - - return $query->getOneOrNullResult(); - } - - /** @return Participant[] */ - public function getParticipants(Fishbowl $fishbowl): array - { - $now = new \DateTimeImmutable(); - $twentySeconds = new \DateInterval('PT20S'); - - $query = $this->createQueryBuilder('participant') - ->where('participant.fishbowl = :fishbowl') - ->andWhere('participant.lastPing >= :twentySeconds') - ->setParameter('fishbowl', $fishbowl->getId(), 'uuid') - ->setParameter('twentySeconds', $now->sub($twentySeconds), Types::DATETIME_IMMUTABLE) - ->orderBy('participant.id', 'ASC') - ->getQuery(); - - return $query->getResult(); - } - - public function persist(Participant $participant): void - { - $this->_em->persist($participant); - $this->_em->flush(); - } -} diff --git a/backend/src/Core/Repository/ResetPasswordRequestRepository.php b/backend/src/Core/Repository/ResetPasswordRequestRepository.php deleted file mode 100644 index 01ea09fcf..000000000 --- a/backend/src/Core/Repository/ResetPasswordRequestRepository.php +++ /dev/null @@ -1,65 +0,0 @@ - */ -class ResetPasswordRequestRepository extends ServiceEntityRepository implements ResetPasswordRequestRepositoryInterface -{ - use ResetPasswordRequestRepositoryTrait { - getMostRecentNonExpiredRequestDate as getMostRecentNonExpiredRequestDate; - } - - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, ResetPasswordRequest::class); - } - - public function createResetPasswordRequest(object $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken): ResetPasswordRequestInterface - { - Assert::isInstanceOf($user, User::class); - - return new ResetPasswordRequest($user, $expiresAt, $selector, $hashedToken); - } - - public function getMostRecentNonExpiredRequestDate(object $user): ?\DateTimeInterface - { - Assert::isInstanceOf($user, User::class); - - /** @var ResetPasswordRequestInterface $resetPasswordRequest */ - $resetPasswordRequest = $this->createQueryBuilder('t') - ->where('t.user = :user') - ->setParameter('user', $user->getId(), 'uuid') - ->leftJoin('t.user', 'user') - ->orderBy('t.requestedAt', 'DESC') - ->setMaxResults(1) - ->getQuery() - ->getOneorNullResult() - ; - - if (null !== $resetPasswordRequest && !$resetPasswordRequest->isExpired()) { - return $resetPasswordRequest->getRequestedAt(); - } - - return null; - } -} diff --git a/backend/src/Core/Repository/UserRepository.php b/backend/src/Core/Repository/UserRepository.php deleted file mode 100644 index 1727806f8..000000000 --- a/backend/src/Core/Repository/UserRepository.php +++ /dev/null @@ -1,65 +0,0 @@ - */ -class UserRepository extends ServiceEntityRepository implements PasswordUpgraderInterface, UserLoaderInterface -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, User::class); - } - - public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void - { - if (!$user instanceof User) { - throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class)); - } - - $user->setPassword($newHashedPassword); - $this->_em->persist($user); - $this->_em->flush(); - } - - public function loadUserByIdentifier(string $identifier): ?User - { - $query = $this->createQueryBuilder('user') - ->where('user.email = :email') - ->andWhere('user.active = true') - ->setParameter('email', $identifier, Types::STRING) - ->getQuery(); - - return $query->getOneOrNullResult(); - } - - public function findUserById(?string $id): ?User - { - $query = $this->createQueryBuilder('user') - ->where('user.id = :id') - ->andWhere('user.active = true') - ->setParameter('id', $id, Types::STRING) - ->getQuery(); - - return $query->getOneOrNullResult(); - } -} diff --git a/backend/src/Core/Resolver/ResetPasswordResolver.php b/backend/src/Core/Resolver/ResetPasswordResolver.php deleted file mode 100644 index 7e1d7b9b9..000000000 --- a/backend/src/Core/Resolver/ResetPasswordResolver.php +++ /dev/null @@ -1,58 +0,0 @@ -userRepository->loadUserByIdentifier($email); - - $resetPassword = new ResetPassword(); - $resetPassword->setId(Uuid::uuid4()); - $resetPassword->setEmail($email); - $resetPassword->setLocale($locale); - - if (null !== $user) { - try { - $token = $this->helper->generateResetToken($user); - } catch (ResetPasswordExceptionInterface) { - return $resetPassword; - } - - $this->mailerService->sendResetPasswordEmail($user, $token, $resetPassword); - } - - return $resetPassword; - } -} diff --git a/backend/src/Core/Resolver/UserResolver.php b/backend/src/Core/Resolver/UserResolver.php deleted file mode 100644 index 8f47dd369..000000000 --- a/backend/src/Core/Resolver/UserResolver.php +++ /dev/null @@ -1,47 +0,0 @@ -security->getUser(); - - if (null !== $user) { - Assert::isInstanceOf($user, User::class); - - return $user; - } - - return null; - } -} diff --git a/backend/src/Core/Security/PasswordEncoderService.php b/backend/src/Core/Security/PasswordEncoderService.php deleted file mode 100644 index bca3e152d..000000000 --- a/backend/src/Core/Security/PasswordEncoderService.php +++ /dev/null @@ -1,36 +0,0 @@ -getPlainPassword()) { - return; - } - - $hashedPassword = $this->hasher->hashPassword($user, $user->getPlainPassword()); - - $user->setPassword($hashedPassword); - $user->eraseCredentials(); - } -} diff --git a/backend/src/Core/Service/MailerService.php b/backend/src/Core/Service/MailerService.php deleted file mode 100644 index 1b544794e..000000000 --- a/backend/src/Core/Service/MailerService.php +++ /dev/null @@ -1,120 +0,0 @@ -getLocale(); - - $email = (new TemplatedEmail()) - ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) - ->to((string) $user->getEmail()) - ->subject($this->translator->trans('emails.welcome_email.subject', [], null, $locale)) - ->htmlTemplate('emails/signup.html.twig') - ->context([ - 'name' => $user->getName(), - 'surnames' => $user->getSurnames(), - 'locale' => $locale, - 'appUrl' => $this->appUrl, - ]); - - $this->mailer->send($email); - } - - public function sendResetPasswordEmail(User $user, ResetPasswordToken $resetToken, ResetPassword $resetPassword): void - { - // User resets password in an specific locale, with this we make sure - // we send the password reset email in that locale - $locale = $resetPassword->getLocale(); - - $email = (new TemplatedEmail()) - ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) - ->to((string) $user->getEmail()) - ->subject($this->translator->trans('emails.reset_password_email.subject', - ['%name%' => $user->getName()], - null, - $locale - )) - ->htmlTemplate('emails/reset-password.html.twig') - ->context([ - 'name' => $user->getName(), - 'resetToken' => $resetToken->getToken(), - 'locale' => $locale, - 'appUrl' => $this->appUrl, - ]); - - $this->mailer->send($email); - } - - public function sendFishbowlCreatedEmail(Fishbowl $fishbowl): void - { - // Fishbowl has its own locale, despite the one set on the request. - $locale = $fishbowl->getLocale(); - $user = $fishbowl->getHost(); - $uid = $fishbowl->getId(); - - if (null !== $user) { - $email = (new TemplatedEmail()) - ->from(new Address($this->from, $this->translator->trans('emails.from', [], null, $locale))) - ->to((string) $user->getEmail()) - ->subject($this->translator->trans( - 'emails.fishbowl_created_email.subject', - ['%name%' => $user->getName()], - null, - $locale - )) - ->htmlTemplate('emails/fishbowl-created.html.twig') - ->context([ - 'name' => $user->getName(), - 'fishbowlId' => null !== $uid ? $uid->toString() : '', - 'fishbowlName' => $fishbowl->getName(), - 'fishbowlDescription' => $fishbowl->getDescription(), - 'fishbowlStartDate' => $fishbowl->getStartDateTimeFormatted(), - 'fishbowlStartTime' => $fishbowl->getStartDateTimeHourFormatted(), - 'fishbowlFinishTime' => $fishbowl->getFinishDateTimeHourFormatted(), - 'fishbowlDuration' => $fishbowl->getDurationFormatted(), - 'fishbowlSlug' => $fishbowl->getSlug(), - 'fishbowlPassword' => $this->privateFishbowlService->decryptPrivatePassword($fishbowl)->getPlainPassword(), - 'fishbowlIsPrivate' => $fishbowl->getIsPrivate(), - 'locale' => $locale, - 'appUrl' => $this->appUrl, - ]); - - $this->mailer->send($email); - } - } -} diff --git a/backend/src/Core/Validator/Constraints/SameUserPassword.php b/backend/src/Core/Validator/Constraints/SameUserPassword.php deleted file mode 100644 index 8faedc5b7..000000000 --- a/backend/src/Core/Validator/Constraints/SameUserPassword.php +++ /dev/null @@ -1,29 +0,0 @@ -security->getUser(); - $inputPassword = $value->getPassword(); - - if (null === $inputPassword || null === $actualUser) { - return; - } - - Assert::isInstanceOf($actualUser, User::class); - - $uid = $actualUser->getId(); - $user = null; - - if (null !== $uid) { - $user = $this->userRepository->findUserById($uid->toString()); - } - - Assert::notNull($user); - - if (!$this->passwordEncoder->isPasswordValid($user, $inputPassword)) { - $this->context->buildViolation($constraint->message)->atPath('password')->addViolation(); - } - } -} diff --git a/backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php b/backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php deleted file mode 100644 index 5287a77da..000000000 --- a/backend/src/Core/Validator/Constraints/ValidResetPasswordToken.php +++ /dev/null @@ -1,24 +0,0 @@ -helper->validateTokenAndFetchUser($value); - } catch (ResetPasswordExceptionInterface) { - $this->context->buildViolation($constraint->message)->addViolation(); - } - } -} diff --git a/backend/src/Fishbowl/Admin/FishbowlAdmin.php b/backend/src/Fishbowl/Admin/FishbowlAdmin.php deleted file mode 100644 index f98e4cd0f..000000000 --- a/backend/src/Fishbowl/Admin/FishbowlAdmin.php +++ /dev/null @@ -1,174 +0,0 @@ - */ -class FishbowlAdmin extends AbstractAdmin -{ - protected ?FishbowlService $fishbowlService = null; - - public function setFishbowlService(FishbowlService $fishbowlService): void - { - $this->fishbowlService = $fishbowlService; - } - - public function prePersist($object): void - { - if (null !== $this->fishbowlService) { - $object->setSlug($this->fishbowlService->generateRandomSlug($object)); - - $this->fishbowlService->generateDefaultTitle($object); - } - } - - public static function hostCallbackFunction(): callable - { - return static function (AdminInterface $admin, string $property, string $value): void { - $datagrid = $admin->getDatagrid(); - - $valueParts = explode(':', $value); - if (2 === \count($valueParts) && \in_array($valueParts[0], ['name', 'surnames'], true)) { - [$property, $value] = $valueParts; - } - - $datagrid->setValue($datagrid->getFilter($property)->getFormName(), null, $value); - }; - } - - /** @param mixed[] $sortValues */ - protected function configureDefaultSortValues(array &$sortValues): void - { - $sortValues['_sort_by'] = 'createdAt'; - $sortValues['_sort_order'] = 'DESC'; - } - - protected function configureDatagridFilters(DatagridMapper $filter): void - { - $filter - ->add('name') - ->add('host', ModelFilter::class, [ - 'field_type' => ModelAutocompleteType::class, - 'field_options' => [ - 'property' => 'email', - 'callback' => self::hostCallbackFunction(), - ], - ]) - ->add('currentStatus', null, [ - 'field_type' => ChoiceType::class, - 'field_options' => [ - 'choices' => Fishbowl::$statusChoices, - ], - ]) - ->add('isFishbowlNow') - ->add('hasIntroduction'); - } - - protected function configureListFields(ListMapper $list): void - { - $list - ->add('createdAt') - ->addIdentifier('name') - ->add('description') - ->add('host') - ->add('currentStatus', null, [ - 'template' => 'sonata/fishbowl_status.html.twig', - ]) - ->add('isFishbowlNow') - ->add('hasIntroduction') - ->add('startDateTimeTz', FieldDescriptionInterface::TYPE_DATETIME) - ->add('endDateTimeTz', FieldDescriptionInterface::TYPE_DATETIME) - ->add('duration', FieldDescriptionInterface::TYPE_TIME) - ->add('timezone') - ->add('locale') - ->add('slug'); - } - - protected function configureFormFields(FormMapper $form): void - { - $form - ->with('Fishbowl') - ->add('name') - ->add('description') - ->add('startDateTime', DateTimePickerType::class, [ - 'dp_use_seconds' => false, - 'dp_minute_stepping' => 15, - 'format' => 'dd/MM/yyyy HH:mm', - ]) - ->add('duration', DateTimePickerType::class, [ - 'dp_pick_date' => false, - 'dp_use_seconds' => false, - 'dp_minute_stepping' => 15, - 'format' => 'HH:mm', - ]) - ->add('timezone', TimezoneType::class, [ - 'intl' => true, - ]) - ->add('locale', LocaleType::class) - ->add('host', ModelAutocompleteType::class, [ - 'property' => 'email', - 'callback' => self::hostCallbackFunction(), - ]) - ->add('isFishbowlNow', BooleanType::class, [ - 'transform' => true, - ]) - ->add('hasIntroduction', BooleanType::class, [ - 'transform' => true, - ]) - ->end() - ->with('Disabled') - ->add('currentStatus', ChoiceType::class, [ - 'choices' => Fishbowl::$statusChoices, - 'disabled' => true, - 'required' => true, - ]) - ->add('introducedAt', DateTimePickerType::class, [ - 'disabled' => true, - 'dp_use_seconds' => false, - 'dp_minute_stepping' => 15, - 'format' => 'dd/MM/yyyy HH:mm', - ]) - ->add('runnedAt', DateTimePickerType::class, [ - 'disabled' => true, - 'dp_use_seconds' => false, - 'dp_minute_stepping' => 15, - 'format' => 'dd/MM/yyyy HH:mm', - ]) - ->add('finishedAt', DateTimePickerType::class, [ - 'disabled' => true, - 'dp_use_seconds' => false, - 'dp_minute_stepping' => 15, - 'format' => 'dd/MM/yyyy HH:mm', - ]) - ->add('slug', null, [ - 'disabled' => true, - ]) - ->end(); - } -} diff --git a/backend/src/Fishbowl/Controller/FishbowlController.php b/backend/src/Fishbowl/Controller/FishbowlController.php deleted file mode 100644 index 671e85f30..000000000 --- a/backend/src/Fishbowl/Controller/FishbowlController.php +++ /dev/null @@ -1,49 +0,0 @@ - $this->fishbowlService->ping($slug)]); - } - - public function status(string $slug): Response - { - return new JsonResponse(['status' => $this->fishbowlService->getFishbowlStatus($slug)]); - } - - public function participants(string $slug): Response - { - return new JsonResponse(['response' => $this->fishbowlService->getParticipants($slug)]); - } - - public function private(string $slug): Response - { - return new JsonResponse(['response' => $this->privateFishbowlService->isPasswordEqual($slug)]); - } -} diff --git a/backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php b/backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php deleted file mode 100644 index 7bc201726..000000000 --- a/backend/src/Fishbowl/DataPersister/FishbowlDataPersister.php +++ /dev/null @@ -1,65 +0,0 @@ -decorated->supports($data, $context); - } - - /** - * @param mixed $data - * @param mixed[] $context - * - * @return object|void - */ - public function persist($data, array $context = []) - { - $result = $this->decorated->persist($data, $context); - - if ($data instanceof Fishbowl && ( - ($context['collection_operation_name'] ?? null) === 'post' || - ($context['graphql_operation_name'] ?? null) === 'create') - ) { - $this->mailerService->sendFishbowlCreatedEmail($data); - } - - return $result; - } - - /** - * @param mixed $data - * @param mixed[] $context - */ - public function remove($data, array $context = []): void - { - $this->decorated->remove($data, $context); - } -} diff --git a/backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php b/backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php deleted file mode 100644 index 97ebcadff..000000000 --- a/backend/src/Fishbowl/DataProvider/FishbowlDataProvider.php +++ /dev/null @@ -1,53 +0,0 @@ - $context */ - public function supports(string $resourceClass, string $operationName = null, array $context = []): bool - { - return Fishbowl::class === $resourceClass; - } - - /** - * @param array $context - * - * @throws ResourceClassNotSupportedException - * - * @return iterable - */ - public function getCollection(string $resourceClass, string $operationName = null, array $context = []): iterable - { - /** @var Fishbowl[] $fishbowls */ - $fishbowls = $this->collectionDataProvider->getCollection($resourceClass, $operationName); - - foreach ($fishbowls as $fishbowl) { - $this->privateFishbowlService->decryptPrivatePassword($fishbowl); - } - - return $fishbowls; - } -} diff --git a/backend/src/Fishbowl/Entity/Fishbowl.php b/backend/src/Fishbowl/Entity/Fishbowl.php deleted file mode 100644 index b67bd2825..000000000 --- a/backend/src/Fishbowl/Entity/Fishbowl.php +++ /dev/null @@ -1,670 +0,0 @@ - - * - * @phpstan-var array $statusChoices - */ - public static array $statusChoices = [ - 'Not Started' => self::STATUS_NOT_STARTED, - 'Introduction' => self::STATUS_INTRODUCTION, - 'Running' => self::STATUS_RUNNING, - 'Finished' => self::STATUS_FINISHED, - ]; - - /** - * @Groups({"fishbowl:read"}) - * @ORM\Id - * @ORM\Column(type="uuid", unique=true) - * @ORM\GeneratedValue(strategy="CUSTOM") - * @ORM\CustomIdGenerator(class=UuidGenerator::class) - */ - private ?UuidInterface $id = null; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @Assert\Length(max=255) - * @ORM\Column(type="string") - */ - private ?string $name = null; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @ORM\Column(type="text", nullable=true) - */ - private ?string $description = null; - - /** - * @Groups({"fishbowl:read"}) - * @Assert\NotBlank - * @Assert\Length(max=255) - * @ORM\Column(type="string", unique=true) - */ - private ?string $slug = null; - - /** - * @Groups({"fishbowl:write", "fishbowl:read"}) - * @Assert\NotNull - * @Assert\Type("\DateTimeInterface") - * @ORM\Column(type="datetime") - */ - private ?\DateTimeInterface $startDateTime = null; - - /** - * @Groups({"fishbowl:write", "fishbowl:read"}) - * @Assert\NotNull - * @Assert\Length(max=255) - * @Assert\Timezone - * @ORM\Column(type="string") - */ - private ?string $timezone = null; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @Assert\NotNull - * @Assert\Length(max=255) - * @Assert\Locale(canonicalize=true) - * @ORM\Column(type="string") - */ - private ?string $locale = null; - - /** - * @Groups({"fishbowl:write", "fishbowl:read"}) - * @Assert\NotNull - * @Assert\Type("\DateTimeInterface") - * @ApiProperty(attributes={ - * "openapi_context"={"format"="string"} - * }) - * @ORM\Column(type="time") - */ - private ?\DateTimeInterface $duration = null; - - /** - * @Groups({"fishbowl:read"}) - * @Assert\NotNull - * @ORM\ManyToOne(targetEntity="App\Core\Entity\User", inversedBy="fishbowls") - */ - private ?User $host = null; - - /** - * @Groups({"fishbowl:read"}) - * @Assert\Length(max=255) - * @Assert\Choice({self::STATUS_NOT_STARTED, self::STATUS_INTRODUCTION, self::STATUS_RUNNING, self::STATUS_FINISHED}) - * @ORM\Column(type="string", options={"default": self::STATUS_NOT_STARTED}) - */ - private string $currentStatus = self::STATUS_NOT_STARTED; - - /** - * @Assert\Type("\DateTimeInterface") - * @ORM\Column(type="datetime", nullable=true) - */ - private ?\DateTimeInterface $introducedAt = null; - - /** - * @Assert\Type("\DateTimeInterface") - * @ORM\Column(type="datetime", nullable=true) - */ - private ?\DateTimeInterface $runnedAt = null; - - /** - * @Assert\Type("\DateTimeInterface") - * @ORM\Column(type="datetime", nullable=true) - */ - private ?\DateTimeInterface $finishedAt = null; - - /** - * @Assert\Type("\DateTimeInterface") - * @ORM\Column(type="datetime", nullable=true) - */ - private ?\DateTimeInterface $finishDateTime = null; - - /** - * @var Collection - * - * @ORM\OneToMany(targetEntity="App\Core\Entity\Participant", mappedBy="fishbowl", cascade={"all"}) - */ - private Collection $participants; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @ORM\Column(type="boolean") - */ - private bool $isFishbowlNow = false; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @ORM\Column(type="boolean") - */ - private bool $hasIntroduction = false; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @ORM\Column(type="boolean") - */ - private bool $isPrivate = false; - - /** @ORM\Column(type="text", nullable=true) */ - private ?string $password = null; - - /** - * @Groups({"fishbowl:read", "fishbowl:write"}) - * @Assert\Length(min=8, max=255) - * @Assert\NotBlank(groups={"user:create"}) - */ - private ?string $plainPassword = null; - - public function __construct() - { - $this->participants = new ArrayCollection(); - } - - public function __toString(): string - { - $uid = $this->getId(); - $stringUid = null !== $uid ? ' (' . $uid->toString() . ')' : ''; - - return ($this->getName() ?? '') . $stringUid; - } - - public function getId(): ?UuidInterface - { - return $this->id; - } - - public function setId(string $id): self - { - $this->id = Uuid::fromString($id); - - return $this; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(string $name): self - { - $this->name = $name; - - return $this; - } - - public function getSlug(): ?string - { - return $this->slug; - } - - public function setSlug(string $slug): self - { - $this->slug = $slug; - - return $this; - } - - public function getRoomName(): string - { - return (string) $this->getName(); - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function setDescription(?string $description = null): self - { - $this->description = $description; - - return $this; - } - - public function getStartDateTime(): ?\DateTimeInterface - { - return $this->startDateTime; - } - - public function setStartDateTime(\DateTimeInterface $startDateTime): self - { - $this->startDateTime = $startDateTime; - - return $this; - } - - public function getTimezone(): ?string - { - return $this->timezone; - } - - public function setTimezone(string $timezone): self - { - $this->timezone = $timezone; - - return $this; - } - - public function getLocale(): ?string - { - return $this->locale; - } - - public function setLocale(string $locale): self - { - $this->locale = $locale; - - return $this; - } - - /** - * This is needed to add the timezone information to the `startDateTime` property. - * - * @Groups({"fishbowl:read"}) - */ - public function getStartDateTimeTz(): \DateTimeImmutable - { - MAssert::notNull($this->startDateTime); - MAssert::notNull($this->timezone); - - return new \DateTimeImmutable( - $this->startDateTime->format('Y-m-d H:i:s'), - new \DateTimeZone($this->timezone) - ); - } - - /** - * This is needed to calculate the end time with the `timezone` information. - * - * @Groups({"fishbowl:read"}) - */ - public function getEndDateTimeTz(): \DateTimeImmutable - { - MAssert::notNull($this->duration); - - return $this->getStartDateTimeTz()->add( - new \DateInterval($this->duration->format('\P\TG\Hi\M')) - ); - } - - public function getFinishDateTime(): ?\DateTimeInterface - { - return $this->finishDateTime; - } - - public function setFinishDateTime(\DateTimeInterface $finishDateTime): self - { - $this->finishDateTime = $finishDateTime; - - return $this; - } - - public function calculateFinishTime(): void - { - MAssert::notNull($this->startDateTime); - MAssert::notNull($this->duration); - - $dateTime = new \DateTimeImmutable($this->startDateTime->format('Y-m-d H:i:s')); - - $dateTime = $dateTime->add( - new \DateInterval($this->duration->format('\P\TG\Hi\M')) - ); - - $this->setFinishDateTime($dateTime); - } - - public function getDuration(): ?\DateTimeInterface - { - return $this->duration; - } - - public function setDuration(\DateTimeInterface $duration): self - { - $this->duration = $duration; - - return $this; - } - - public function getCurrentStatus(): string - { - return $this->currentStatus; - } - - public function setCurrentStatus(string $status): self - { - $this->currentStatus = $status; - - return $this; - } - - /** - * This is needed to avoid the default normalizer for \DateTime object, - * instead we just want to output the time part of the `duration` property. - * - * @Groups({"fishbowl:read"}) - */ - public function getDurationFormatted(): string - { - MAssert::notNull($this->duration); - - return $this->duration->format('H:i'); - } - - public function getStartDateTimeFormatted(): string - { - MAssert::notNull($this->startDateTime); - - return $this->startDateTime->format('F d, Y'); - } - - public function getStartDateTimeHourFormatted(): string - { - MAssert::notNull($this->startDateTime); - - return $this->startDateTime->format('H:i'); - } - - public function getFinishDateTimeHourFormatted(): string - { - MAssert::notNull($this->finishDateTime); - - return $this->finishDateTime->format('H:i'); - } - - public function isHappeningNow(): bool - { - $now = new \DateTimeImmutable(); - $oneHour = new \DateInterval('PT1H'); - $tenMinutes = new \DateInterval('PT10M'); - - return $now >= $this->getStartDateTimeTz()->sub($oneHour) && - $now <= $this->getEndDateTimeTz()->add($tenMinutes); - } - - public function shouldHaveEnd(int $hoursAgo = 24): bool - { - $now = new \DateTimeImmutable(); - $hoursInterval = new \DateInterval('PT' . (string) $hoursAgo . 'H'); - - return $now > $this->getEndDateTimeTz()->add($hoursInterval); - } - - public function getHost(): ?User - { - return $this->host; - } - - public function setHost(?User $host): self - { - $this->host = $host; - - return $this; - } - - public function getIntroducedAt(): ?\DateTimeInterface - { - return $this->introducedAt; - } - - public function setIntroducedAt(\DateTimeInterface $introducedAt): self - { - $this->introducedAt = $introducedAt; - - return $this; - } - - public function getRunnedAt(): ?\DateTimeInterface - { - return $this->runnedAt; - } - - public function setRunnedAt(\DateTimeInterface $runnedAt): self - { - $this->runnedAt = $runnedAt; - - return $this; - } - - public function getFinishedAt(): ?\DateTimeInterface - { - return $this->finishedAt; - } - - public function setFinishedAt(\DateTimeInterface $finishedAt): self - { - $this->finishedAt = $finishedAt; - - return $this; - } - - /** @return Collection */ - public function getParticipants(): Collection - { - return $this->participants; - } - - public function addParticipant(Participant $participant): self - { - if (!$this->participants->contains($participant)) { - $this->$participant[] = $participant; - $participant->setFishbowl($this); - } - - return $this; - } - - public function removeParticipant(Participant $participant): self - { - if ($this->participants->contains($participant)) { - $this->participants->removeElement($participant); - } - - return $this; - } - - public function getIsFishbowlNow(): bool - { - return $this->isFishbowlNow; - } - - public function setIsFishbowlNow(bool $isFishbowlNow): self - { - $this->isFishbowlNow = $isFishbowlNow; - - return $this; - } - - public function getHasIntroduction(): bool - { - return $this->hasIntroduction; - } - - public function setHasIntroduction(bool $hasIntroduction): self - { - $this->hasIntroduction = $hasIntroduction; - - return $this; - } - - public function isFinished(): bool - { - return self::STATUS_FINISHED === $this->getCurrentStatus(); - } - - public function getHostName(): ?string - { - if (null === $this->getHost()) { - return ''; - } - - $host = $this->getHost(); - - MAssert::isInstanceOf($host, User::class); - - return $host->getName() ?? ''; - } - - public function getPassword(): ?string - { - return $this->password; - } - - public function setPassword(?string $password): self - { - $this->password = $password; - - return $this; - } - - public function getPlainPassword(): ?string - { - return $this->plainPassword; - } - - public function setPlainPassword(?string $plainPassword): self - { - $this->plainPassword = $plainPassword; - - return $this; - } - - public function getIsPrivate(): bool - { - return $this->isPrivate; - } - - public function setIsPrivate(bool $isPrivate): self - { - $this->isPrivate = $isPrivate; - - return $this; - } - - public function privateFishbowlHasPassword(): bool - { - return true === $this->getIsPrivate() && (null === $this->getPlainPassword() || '' === $this->getPlainPassword()); - } - - public function publicFishbowlHasPassword(): bool - { - return false === $this->getIsPrivate() && null !== $this->getPlainPassword(); - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php deleted file mode 100644 index e9ea87554..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlDoctrineSubscriber.php +++ /dev/null @@ -1,53 +0,0 @@ - */ - public function getSubscribedEvents(): array - { - return [ - Events::prePersist, - Events::preUpdate, - ]; - } - - public function preUpdate(LifecycleEventArgs $args): void - { - $fishbowl = $args->getObject(); - - if (!$fishbowl instanceof Fishbowl) { - return; - } - - $fishbowl->calculateFinishTime(); - } - - public function prePersist(LifecycleEventArgs $args): void - { - $fishbowl = $args->getObject(); - - if (!$fishbowl instanceof Fishbowl) { - return; - } - - $fishbowl->calculateFinishTime(); - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php deleted file mode 100644 index dd2cfedad..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlIntroduceAndNoIntroRunSubscriber.php +++ /dev/null @@ -1,45 +0,0 @@ -getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $transition = $event->getTransition(); - - if ((Fishbowl::TRANSITION_INTRODUCE === $transition->getName() && !$fishbowl->getHasIntroduction()) || - (Fishbowl::TRANSITION_NO_INTRO_RUN === $transition->getName() && $fishbowl->getHasIntroduction()) - ) { - $event->setBlocked(true); - } - } - - public static function getSubscribedEvents(): array - { - return [ - 'workflow.fishbowl.guard.' . Fishbowl::TRANSITION_INTRODUCE => ['guardFishbowl'], - 'workflow.fishbowl.guard.' . Fishbowl::TRANSITION_NO_INTRO_RUN => ['guardFishbowl'], - ]; - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php deleted file mode 100644 index 8dc07507a..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlPasswordDoctrineSubscriber.php +++ /dev/null @@ -1,65 +0,0 @@ - */ - public function getSubscribedEvents(): array - { - return [ - Events::prePersist, - Events::preUpdate, - ]; - } - - public function preUpdate(LifecycleEventArgs $args): void - { - $fishbowl = $args->getObject(); - - if (!$fishbowl instanceof Fishbowl) { - return; - } - - $this->encryptPassword($fishbowl); - } - - public function prePersist(LifecycleEventArgs $args): void - { - $fishbowl = $args->getObject(); - - if (!$fishbowl instanceof Fishbowl) { - return; - } - - $this->encryptPassword($fishbowl); - } - - private function encryptPassword(Fishbowl $fishbowl): void - { - if ($fishbowl->getIsPrivate() && null !== $fishbowl->getPlainPassword()) { - $fishbowl->setPassword($this->halitePasswordEncryption->encrypt($fishbowl->getPlainPassword())); - } - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php deleted file mode 100644 index 1896f462a..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlSubscriber.php +++ /dev/null @@ -1,61 +0,0 @@ - [['setCurrentUser', EventPriorities::PRE_VALIDATE]], - ]; - } - - public function setCurrentUser(ViewEvent $event): void - { - $object = $event->getControllerResult(); - - if ($object instanceof Fishbowl && null === $object->getId()) { - $user = $this->security->getUser(); - - if (null !== $user) { - Assert::isInstanceOf($user, User::class); - - $object->setHost($user); - } - - $object->setSlug($this->service->generateRandomSlug($object)); - - $object = $this->service->generateDefaultTitle($object); - - $event->setControllerResult($object); - } - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php deleted file mode 100644 index db3f32a22..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlTransitionsSubscriber.php +++ /dev/null @@ -1,81 +0,0 @@ -getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $fishbowl->setIntroducedAt(new \DateTimeImmutable()); - - $this->repository->persist($fishbowl); - } - - public function onNoIntroductionRun(Event $event): void - { - $fishbowl = $event->getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $fishbowl->setRunnedAt(new \DateTimeImmutable()); - - $this->repository->persist($fishbowl); - } - - public function onRun(Event $event): void - { - $fishbowl = $event->getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $fishbowl->setRunnedAt(new \DateTimeImmutable()); - - $this->repository->persist($fishbowl); - } - - public function onFinish(Event $event): void - { - $fishbowl = $event->getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $fishbowl->setFinishedAt(new \DateTimeImmutable()); - - $this->repository->persist($fishbowl); - } - - public static function getSubscribedEvents(): iterable - { - return [ - 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_INTRODUCE => 'onIntroduction', - 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_NO_INTRO_RUN => 'onNoIntroductionRun', - 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_RUN => 'onRun', - 'workflow.fishbowl.transition.' . Fishbowl::TRANSITION_FINISH => 'onFinish', - ]; - } -} diff --git a/backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php b/backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php deleted file mode 100644 index 62629e868..000000000 --- a/backend/src/Fishbowl/EventSubscriber/FishbowlWorkflowSubscriber.php +++ /dev/null @@ -1,47 +0,0 @@ -getSubject(); - - Assert::isInstanceOf($fishbowl, Fishbowl::class); - - $user = $this->security->getUser(); - - if (null !== $user && $fishbowl->getHost() !== $user) { - $event->setBlocked(true); - } - } - - public static function getSubscribedEvents(): array - { - return [ - 'workflow.fishbowl.guard' => ['guardFishbowl'], - ]; - } -} diff --git a/backend/src/Fishbowl/Factory/FishbowlFactory.php b/backend/src/Fishbowl/Factory/FishbowlFactory.php deleted file mode 100644 index b18c553c2..000000000 --- a/backend/src/Fishbowl/Factory/FishbowlFactory.php +++ /dev/null @@ -1,43 +0,0 @@ - */ -final class FishbowlFactory extends ModelFactory -{ - /** @return array */ - protected function getDefaults(): array - { - return [ - 'name' => self::faker()->words(3, true), - 'description' => self::faker()->sentence(), - 'startDateTime' => self::faker()->dateTime(), - 'timezone' => self::faker()->timezone(), - 'locale' => 'en', - 'duration' => self::faker()->dateTime(), - 'currentStatus' => self::faker()->randomElement(Fishbowl::$statusChoices), - 'slug' => self::faker()->slug(), - 'hasIntroduction' => false, - 'isPrivate' => false, - ]; - } - - protected static function getClass(): string - { - return Fishbowl::class; - } -} diff --git a/backend/src/Fishbowl/Repository/FishbowlRepository.php b/backend/src/Fishbowl/Repository/FishbowlRepository.php deleted file mode 100644 index b75d5f40c..000000000 --- a/backend/src/Fishbowl/Repository/FishbowlRepository.php +++ /dev/null @@ -1,44 +0,0 @@ - */ -class FishbowlRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, Fishbowl::class); - } - - public function findBySlug(string $slug): ?Fishbowl - { - $query = $this->createQueryBuilder('fishbowl') - ->where('fishbowl.slug = :slug') - ->setParameter('slug', $slug, Types::STRING) - ->getQuery(); - - return $query->getOneOrNullResult(); - } - - public function persist(Fishbowl $fishbowl): void - { - $this->_em->persist($fishbowl); - $this->_em->flush(); - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php b/backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php deleted file mode 100644 index 1d82232b2..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlCreatorResolver.php +++ /dev/null @@ -1,62 +0,0 @@ -security->getUser(); - - if (null === $item) { - $fishbowl = $this->repository->findBySlug($context['args']['slug']); - - if (null !== $fishbowl && $user === $fishbowl->getHost()) { - return $this->privateFishbowlService->decryptPrivatePassword($fishbowl); - } - - return null; - } - - Assert::isInstanceOf($item, Fishbowl::class); - - return $item; - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php deleted file mode 100644 index 17e754e86..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlFinishMutationResolver.php +++ /dev/null @@ -1,50 +0,0 @@ -repository->findBySlug($context['args']['input']['slug']); - - if (null === $fishbowl) { - return null; - } - - if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_FINISH)) { - return null; - } - - $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_FINISH); - - return $fishbowl; - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php deleted file mode 100644 index ae346bfea..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlIntroduceMutationResolver.php +++ /dev/null @@ -1,50 +0,0 @@ -repository->findBySlug($context['args']['input']['slug']); - - if (null === $fishbowl) { - return null; - } - - if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_INTRODUCE)) { - return null; - } - - $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_INTRODUCE); - - return $fishbowl; - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php deleted file mode 100644 index fcf30bc4d..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlNoIntroRunMutationResolver.php +++ /dev/null @@ -1,50 +0,0 @@ -repository->findBySlug($context['args']['input']['slug']); - - if (null === $fishbowl) { - return null; - } - - if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_NO_INTRO_RUN)) { - return null; - } - - $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_NO_INTRO_RUN); - - return $fishbowl; - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlResolver.php b/backend/src/Fishbowl/Resolver/FishbowlResolver.php deleted file mode 100644 index ba5aa22ea..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlResolver.php +++ /dev/null @@ -1,52 +0,0 @@ -repository->findBySlug($context['args']['slug']); - - if (null !== $fishbowl) { - return $this->privateFishbowlService->decryptPrivatePassword($fishbowl); - } - } - - Assert::isInstanceOf($item, Fishbowl::class); - - return $item; - } -} diff --git a/backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php b/backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php deleted file mode 100644 index 96276e09d..000000000 --- a/backend/src/Fishbowl/Resolver/FishbowlRunMutationResolver.php +++ /dev/null @@ -1,50 +0,0 @@ -repository->findBySlug($context['args']['input']['slug']); - - if (null === $fishbowl) { - return null; - } - - if (!$this->fishbowlStateMachine->can($fishbowl, FISHBOWL::TRANSITION_RUN)) { - return null; - } - - $this->fishbowlStateMachine->apply($fishbowl, FISHBOWL::TRANSITION_RUN); - - return $fishbowl; - } -} diff --git a/backend/src/Fishbowl/Service/FishbowlService.php b/backend/src/Fishbowl/Service/FishbowlService.php deleted file mode 100644 index 4fa4b1025..000000000 --- a/backend/src/Fishbowl/Service/FishbowlService.php +++ /dev/null @@ -1,230 +0,0 @@ -fishbowlRepository->findBySlug($slug); - - if (null !== $fishbowl && $fishbowl->getHost() === $host && !$fishbowl->isFinished()) { - return true; - } - - return false; - } - - public function generateRandomSlug(Fishbowl $fishbowl): string - { - $hashids = new Hashids('', 10); - - return $hashids->encode(random_int(1, 1_000_000_000)); - } - - public function generateDefaultTitle(Fishbowl $fishbowl): Fishbowl - { - $fishbowlName = $fishbowl->getName(); - - if (!empty($fishbowlName) && !ctype_space($fishbowlName)) { - return $fishbowl; - } - - return $fishbowl->setName( - $this->translator->trans('fishbowl.default_title', ['%name%' => $fishbowl->getHostName()], null, $fishbowl->getLocale()) - ); - } - - public function getFishbowlStatus(string $slug): ?string - { - $fishbowl = $this->fishbowlRepository->findBySlug($slug); - - // Controls if an unfinished fishbowl is being access, if it should have end - // (24 hours passed since closing date), we consider it finish, BUT we do not persist - // this status, since we want to know how much Fishbowls are unfinished - if (null !== $fishbowl && !$fishbowl->isFinished() && $fishbowl->shouldHaveEnd()) { - $fishbowl->setCurrentStatus(Fishbowl::STATUS_FINISHED); - } - - return (null !== $fishbowl) ? strtoupper($fishbowl->getCurrentStatus()) : null; - } - - /** @return RawParticipant[] */ - public function getParticipants(string $slug): array - { - $fishbowl = $this->fishbowlRepository->findBySlug($slug); - $currentUser = $this->security->getUser(); - - if (null === $fishbowl) { - return []; - } - - return $this->buildParticipants( - $this->participantRepository->getParticipants($fishbowl), - $fishbowl, - $currentUser - ); - } - - public function ping(string $slug): bool - { - $request = $this->requestStack->getCurrentRequest(); - - if (null === $request) { - return false; - } - - $guest = $this->getGuest($request); - $user = $this->security->getUser(); - - if (null === $user && null === $guest) { - return false; - } - - $fishbowl = $this->fishbowlRepository->findBySlug($slug); - - if (null === $fishbowl) { - return false; - } - - $participant = null; - $created = false; - - if (null !== $guest) { - $participant = $this->participantRepository->findGuestInFishbowl($fishbowl, $guest); - - if (null === $participant) { - $participant = $this->createParticipantFromGuest($fishbowl, $guest); - $created = true; - } - } else { - Assert::isInstanceOf($user, User::class); - - $participant = $this->participantRepository->findUserInFishbowl($fishbowl, $user); - - if (null === $participant) { - $participant = $this->createParticipantFromUser($fishbowl, $user); - $created = true; - } - } - - $participant->setLastPing(new \DateTimeImmutable()); - - $this->participantRepository->persist($participant); - - if ($created) { - $this->fishbowlRepository->persist($fishbowl); - } - - return true; - } - - private function getGuest(Request $request): ?Guest - { - $guestId = $request->request->get('guestId'); - - if (null !== $guestId) { - return $this->guestRepository->find($guestId); - } - - return null; - } - - private function createParticipantFromUser(Fishbowl $fishbowl, User $user): Participant - { - $participant = $this->createParticipant($fishbowl); - $participant->setUser($user); - - return $participant; - } - - private function createParticipantFromGuest(Fishbowl $fishbowl, Guest $guest): Participant - { - $participant = $this->createParticipant($fishbowl); - $participant->setGuest($guest); - - return $participant; - } - - private function createParticipant(Fishbowl $fishbowl): Participant - { - $participant = new Participant(); - $participant->setFishbowl($fishbowl); - - $fishbowl->addParticipant($participant); - - return $participant; - } - - /** - * @param Participant[] $participants - * - * @return RawParticipant[] - */ - private function buildParticipants(array $participants, Fishbowl $fishbowl, ?UserInterface $currentUser): array - { - return array_map(fn (Participant $participant) => [ - 'id' => $participant->getId(), - 'lastPing' => $participant->getLastPing(), - 'name' => $participant->getUserName(), - 'twitter' => $participant->getPublicTwitterProfile(), - 'linkedin' => $participant->getPublicLinkedinAccount(), - 'isModerator' => $participant->isModerator($fishbowl), - 'isCurrentUser' => $participant->isCurrentUser($currentUser), - 'guestId' => $participant->getGuestId(), - 'joined' => false, - 'isMuted' => false, - ], $participants); - } -} diff --git a/backend/src/Fishbowl/Service/PrivateFishbowlService.php b/backend/src/Fishbowl/Service/PrivateFishbowlService.php deleted file mode 100644 index a1e4a7cde..000000000 --- a/backend/src/Fishbowl/Service/PrivateFishbowlService.php +++ /dev/null @@ -1,67 +0,0 @@ -requestStack->getCurrentRequest(); - - if (null === $currentRequest) { - return false; - } - - $password = $currentRequest->request->get('password'); - - if (null === $password) { - return false; - } - - $fishbowl = $this->fishbowlRepository->findBySlug($slug); - - if (null === $fishbowl) { - return false; - } - - return $fishbowl->getIsPrivate() && $password === $this->halitePasswordEncryption->decrypt($fishbowl->getPassword()); - } - - public function decryptPrivatePassword(Fishbowl $fishbowl): Fishbowl - { - if (false === $fishbowl->getIsPrivate()) { - return $fishbowl; - } - - if ($this->security->getUser() === $fishbowl->getHost()) { - $fishbowl->setPlainPassword($this->halitePasswordEncryption->decrypt($fishbowl->getPassword())); - } - - return $fishbowl; - } -} diff --git a/backend/src/Fishbowl/Stage/FishbowlValidateStage.php b/backend/src/Fishbowl/Stage/FishbowlValidateStage.php deleted file mode 100644 index a2f9255c0..000000000 --- a/backend/src/Fishbowl/Stage/FishbowlValidateStage.php +++ /dev/null @@ -1,51 +0,0 @@ -getId()) { - $user = $this->security->getUser(); - - if (null !== $user) { - Assert::isInstanceOf($user, User::class); - - $object->setHost($user); - } - - $object->setSlug($this->service->generateRandomSlug($object)); - - $object = $this->service->generateDefaultTitle($object); - } - - ($this->decorated)($object, $resourceClass, $operationName, $context); - } -} diff --git a/backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php b/backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php deleted file mode 100644 index f5a9e3be7..000000000 --- a/backend/src/Fishbowl/Validator/Constraints/FutureFishbowl.php +++ /dev/null @@ -1,29 +0,0 @@ -isFromThePast($value)) { - $this->context->buildViolation($constraint->message)->atPath('startDateTime')->addViolation(); - } - } - - private function isFromThePast(Fishbowl $fishbowl): bool - { - return $fishbowl->getEndDateTimeTz() < new \DateTimeImmutable(); - } -} diff --git a/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php b/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php deleted file mode 100644 index c76b19b61..000000000 --- a/backend/src/Fishbowl/Validator/Constraints/PrivateFishbowl.php +++ /dev/null @@ -1,30 +0,0 @@ -privateFishbowlHasPassword()) { - $this->context->buildViolation($constraint->message)->atPath('password')->addViolation(); - } - - if ($value->publicFishbowlHasPassword()) { - $this->context->buildViolation($constraint->publicMessage)->atPath('isPrivate')->addViolation(); - } - } -} From 0707dd6e876a0e90d03786225248d54317203b88 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 25 Oct 2022 16:14:47 +0200 Subject: [PATCH 12/52] Update dependency sonata-project/admin-bundle to v4.20.0 (#672) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 65e6fa36e..09df286b3 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -19,7 +19,7 @@ "ramsey/uuid": "4.5.1", "ramsey/uuid-doctrine": "1.8.1", "rector/rector": "0.14.6", - "sonata-project/admin-bundle": "4.19.0", + "sonata-project/admin-bundle": "4.20.0", "sonata-project/doctrine-extensions": "2.0.1", "sonata-project/doctrine-orm-admin-bundle": "4.8.0", "sonata-project/exporter": "3.0.0", diff --git a/backend/composer.lock b/backend/composer.lock index a6956ab3c..c01e5d686 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9cf3e62ac9943c9bb61788999d54a4e6", + "content-hash": "7357338145501cc7fdd93b1de87161b8", "packages": [ { "name": "api-platform/core", @@ -3966,16 +3966,16 @@ }, { "name": "sonata-project/admin-bundle", - "version": "4.19.0", + "version": "4.20.0", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataAdminBundle.git", - "reference": "4e957ebb6afbc784d84c65c8ee33215b8913b9b5" + "reference": "1b919ccc08e3e924dbd4857756bf238f2909b593" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/4e957ebb6afbc784d84c65c8ee33215b8913b9b5", - "reference": "4e957ebb6afbc784d84c65c8ee33215b8913b9b5", + "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/1b919ccc08e3e924dbd4857756bf238f2909b593", + "reference": "1b919ccc08e3e924dbd4857756bf238f2909b593", "shasum": "" }, "require": { @@ -4012,6 +4012,7 @@ "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", "symfony/security-core": "^4.4.24 || ^5.4 || ^6.0", "symfony/security-csrf": "^4.4 || ^5.4 || ^6.0", + "symfony/serializer": "^4.4 || ^5.4 || ^6.0", "symfony/string": "^5.4 || ^6.0", "symfony/translation": "^4.4 || ^5.4 || ^6.0", "symfony/translation-contracts": "^1.1.10 || ^2.3 || ^3.0", @@ -4041,12 +4042,10 @@ "symfony/filesystem": "^4.4 || ^5.4 || ^6.0", "symfony/maker-bundle": "^1.25", "symfony/phpunit-bridge": "^6.1", - "symfony/serializer": "^4.4 || ^5.4 || ^6.0", "symfony/yaml": "^4.4 || ^5.4 || ^6.0", "vimeo/psalm": "^4.9.2" }, "suggest": { - "symfony/serializer": "To render errors coming from form validation on ajax calls", "twig/extra-bundle": "Auto configures the Twig Intl extension" }, "type": "symfony-bundle", @@ -4082,7 +4081,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.19.0" + "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.20.0" }, "funding": [ { @@ -4102,7 +4101,7 @@ "type": "github" } ], - "time": "2022-09-27T21:22:38+00:00" + "time": "2022-10-20T08:28:33+00:00" }, { "name": "sonata-project/block-bundle", From 17faabcf06da60d9a521340c54f93189a167fb0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 11:10:28 +0200 Subject: [PATCH 13/52] Update Node.js to 18.12 (#651) * Update Node.js to v18.10 * Update Node.js to 18.12 * Update base to node 18.12 * Update actions Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jose --- .github/workflows/frontend-build.yaml | 2 +- .github/workflows/frontend-lint.yaml | 2 +- .github/workflows/frontend-qa.yaml | 2 +- .github/workflows/frontend-test.yaml | 4 ++-- frontend/.nvmrc | 2 +- frontend/Dockerfile | 2 +- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/frontend-build.yaml b/.github/workflows/frontend-build.yaml index 2e1ffc357..00b8d9ef1 100644 --- a/.github/workflows/frontend-build.yaml +++ b/.github/workflows/frontend-build.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.9'] + node: ['18.12'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-lint.yaml b/.github/workflows/frontend-lint.yaml index 676ca9031..e8f5c20b4 100644 --- a/.github/workflows/frontend-lint.yaml +++ b/.github/workflows/frontend-lint.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.9'] + node: ['18.12'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-qa.yaml b/.github/workflows/frontend-qa.yaml index 31a2125d6..4c706789c 100644 --- a/.github/workflows/frontend-qa.yaml +++ b/.github/workflows/frontend-qa.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.9'] + node: ['18.12'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-test.yaml b/.github/workflows/frontend-test.yaml index b16e7c828..a9606ecb6 100644 --- a/.github/workflows/frontend-test.yaml +++ b/.github/workflows/frontend-test.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.9'] + node: ['18.12'] steps: - name: Checkout the repository to Github workspace @@ -61,7 +61,7 @@ jobs: strategy: matrix: - node: ['18.9'] + node: ['18.12'] steps: - name: Checkout the repository to Github workspace diff --git a/frontend/.nvmrc b/frontend/.nvmrc index 52d7f7f30..29ef05d4d 100644 --- a/frontend/.nvmrc +++ b/frontend/.nvmrc @@ -1 +1 @@ -18.9 +18.12 diff --git a/frontend/Dockerfile b/frontend/Dockerfile index af2c27f38..c72fa5025 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -6,7 +6,7 @@ # file that was distributed with this source code. # BASE -FROM node:18.9 as base +FROM node:18.12 as base ARG UID=1000 ARG GID=1000 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7be40e413..4b8f486e7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "license": "MPL-2.0", "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "16.11.64", + "@types/node": "18.11.5", "@types/react": "17.0.50", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", @@ -3685,9 +3685,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "node_modules/@types/node": { - "version": "16.11.64", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", - "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==" + "version": "18.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", + "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -18637,9 +18637,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "@types/node": { - "version": "16.11.64", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.64.tgz", - "integrity": "sha512-z5hPTlVFzNwtJ2LNozTpJcD1Cu44c4LNuzaq1mwxmiHWQh2ULdR6Vjwo1UGldzRpzL0yUEdZddnfqGW2G70z6Q==" + "version": "18.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", + "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" }, "@types/parse-json": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index a740109e9..dc4c8098d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "16.11.64", + "@types/node": "18.11.5", "@types/react": "17.0.50", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", From d9d734a1b6212ca715d3bc1163a5ac2f45c55364 Mon Sep 17 00:00:00 2001 From: eddsaura Date: Wed, 26 Oct 2022 11:34:16 +0200 Subject: [PATCH 14/52] Downgrade (#678) --- .github/workflows/frontend-build.yaml | 2 +- .github/workflows/frontend-lint.yaml | 2 +- .github/workflows/frontend-qa.yaml | 2 +- .github/workflows/frontend-test.yaml | 4 ++-- frontend/.nvmrc | 2 +- frontend/Dockerfile | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/frontend-build.yaml b/.github/workflows/frontend-build.yaml index 00b8d9ef1..c79b50a71 100644 --- a/.github/workflows/frontend-build.yaml +++ b/.github/workflows/frontend-build.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.12'] + node: ['18.11'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-lint.yaml b/.github/workflows/frontend-lint.yaml index e8f5c20b4..d475779d3 100644 --- a/.github/workflows/frontend-lint.yaml +++ b/.github/workflows/frontend-lint.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.12'] + node: ['18.11'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-qa.yaml b/.github/workflows/frontend-qa.yaml index 4c706789c..3917ac612 100644 --- a/.github/workflows/frontend-qa.yaml +++ b/.github/workflows/frontend-qa.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.12'] + node: ['18.11'] steps: - name: Checkout the repository to Github workspace diff --git a/.github/workflows/frontend-test.yaml b/.github/workflows/frontend-test.yaml index a9606ecb6..d2dcec67b 100644 --- a/.github/workflows/frontend-test.yaml +++ b/.github/workflows/frontend-test.yaml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - node: ['18.12'] + node: ['18.11'] steps: - name: Checkout the repository to Github workspace @@ -61,7 +61,7 @@ jobs: strategy: matrix: - node: ['18.12'] + node: ['18.11'] steps: - name: Checkout the repository to Github workspace diff --git a/frontend/.nvmrc b/frontend/.nvmrc index 29ef05d4d..f7bed8746 100644 --- a/frontend/.nvmrc +++ b/frontend/.nvmrc @@ -1 +1 @@ -18.12 +18.11 diff --git a/frontend/Dockerfile b/frontend/Dockerfile index c72fa5025..c53e6d06a 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -6,7 +6,7 @@ # file that was distributed with this source code. # BASE -FROM node:18.12 as base +FROM node:18.11 as base ARG UID=1000 ARG GID=1000 From 36d08a4af284fc5a7f1ccb82026199cb5fcd2ec8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 09:35:38 +0000 Subject: [PATCH 15/52] Update dependency @types/react to v17.0.51 --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4b8f486e7..15f7966ac 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,7 +9,7 @@ "dependencies": { "@apollo/client": "3.6.10", "@types/node": "18.11.5", - "@types/react": "17.0.50", + "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", "axios": "0.27.2", @@ -3713,9 +3713,9 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "node_modules/@types/react": { - "version": "17.0.50", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz", - "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==", + "version": "17.0.51", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.51.tgz", + "integrity": "sha512-YMddzAE+nSH04BiTJ5GydTxk0/3hckqyuOclg0s6zQYj/XzfRVNzHZAFwZb5SCSavkzTYUtcq/gwjLnvt2Y4cg==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -18665,9 +18665,9 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "@types/react": { - "version": "17.0.50", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.50.tgz", - "integrity": "sha512-ZCBHzpDb5skMnc1zFXAXnL3l1FAdi+xZvwxK+PkglMmBrwjpp9nKaWuEvrGnSifCJmBFGxZOOFuwC6KH/s0NuA==", + "version": "17.0.51", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.51.tgz", + "integrity": "sha512-YMddzAE+nSH04BiTJ5GydTxk0/3hckqyuOclg0s6zQYj/XzfRVNzHZAFwZb5SCSavkzTYUtcq/gwjLnvt2Y4cg==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", diff --git a/frontend/package.json b/frontend/package.json index dc4c8098d..57e22426e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,7 +27,7 @@ "dependencies": { "@apollo/client": "3.6.10", "@types/node": "18.11.5", - "@types/react": "17.0.50", + "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", "axios": "0.27.2", From 72516cfab3fc809a46d233421996fa78b2c88c50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 13:32:55 +0000 Subject: [PATCH 16/52] Update dependency @types/node to v18.11.6 --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 15f7966ac..9fd0014b7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "license": "MPL-2.0", "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.5", + "@types/node": "18.11.6", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", @@ -3685,9 +3685,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "node_modules/@types/node": { - "version": "18.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", - "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" + "version": "18.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", + "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -18637,9 +18637,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "@types/node": { - "version": "18.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", - "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" + "version": "18.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", + "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" }, "@types/parse-json": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 57e22426e..1abbc9342 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.5", + "@types/node": "18.11.6", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", From ec6df8cde66d80fbae3e9cff00eeefe6336783a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 17:59:42 +0000 Subject: [PATCH 17/52] Update dependency psalm/plugin-symfony to v3.1.10 --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 09df286b3..3351b355b 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -66,7 +66,7 @@ "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.25", "psalm/plugin-phpunit": "0.17.0", - "psalm/plugin-symfony": "3.1.9", + "psalm/plugin-symfony": "3.1.10", "runroom-packages/testing": "0.16.0", "symfony/browser-kit": "6.1.3", "symfony/debug-bundle": "6.1.3", diff --git a/backend/composer.lock b/backend/composer.lock index c01e5d686..a305d4261 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7357338145501cc7fdd93b1de87161b8", + "content-hash": "abfb5aa47ef0f48d1f8250d97d28571f", "packages": [ { "name": "api-platform/core", @@ -13225,16 +13225,16 @@ }, { "name": "psalm/plugin-symfony", - "version": "v3.1.9", + "version": "v3.1.10", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-symfony.git", - "reference": "b9511a3c4dd67131d2ae55f6d12b6c28ce56a561" + "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/b9511a3c4dd67131d2ae55f6d12b6c28ce56a561", - "reference": "b9511a3c4dd67131d2ae55f6d12b6c28ce56a561", + "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/5dca17839a6d48766ac760b8aa6d1f6d12759b28", + "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28", "shasum": "" }, "require": { @@ -13284,9 +13284,9 @@ "description": "Psalm Plugin for Symfony", "support": { "issues": "https://github.com/psalm/psalm-plugin-symfony/issues", - "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v3.1.9" + "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v3.1.10" }, - "time": "2022-09-12T13:01:42+00:00" + "time": "2022-10-22T13:09:05+00:00" }, { "name": "runroom-packages/testing", From 6263d8df69507ef32dec5f3ca232c0f0654790b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:38:10 +0000 Subject: [PATCH 18/52] Update phpstan --- backend/composer.json | 6 +++--- backend/composer.lock | 42 +++++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 3351b355b..6de655519 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,9 +59,9 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.12.0", - "phpstan/phpstan": "1.8.10", - "phpstan/phpstan-doctrine": "1.3.18", - "phpstan/phpstan-phpunit": "1.1.1", + "phpstan/phpstan": "1.8.11", + "phpstan/phpstan-doctrine": "1.3.21", + "phpstan/phpstan-phpunit": "1.1.3", "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.25", diff --git a/backend/composer.lock b/backend/composer.lock index a305d4261..8a0528155 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "abfb5aa47ef0f48d1f8250d97d28571f", + "content-hash": "e4a40d8baf00810b18708e41b82c0b42", "packages": [ { "name": "api-platform/core", @@ -3351,16 +3351,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.10", + "version": "1.8.11", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "0c4459dc42c568b818b3f25186589f3acddc1823" + "reference": "46e223dd68a620da18855c23046ddb00940b4014" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0c4459dc42c568b818b3f25186589f3acddc1823", - "reference": "0c4459dc42c568b818b3f25186589f3acddc1823", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014", + "reference": "46e223dd68a620da18855c23046ddb00940b4014", "shasum": "" }, "require": { @@ -3390,7 +3390,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.10" + "source": "https://github.com/phpstan/phpstan/tree/1.8.11" }, "funding": [ { @@ -3406,7 +3406,7 @@ "type": "tidelift" } ], - "time": "2022-10-17T14:23:35+00:00" + "time": "2022-10-24T15:45:13+00:00" }, { "name": "psr/cache", @@ -12503,21 +12503,21 @@ }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.18", + "version": "1.3.21", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "b30c243c786428b4b72a8ef48e465e2ae20a6061" + "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/b30c243c786428b4b72a8ef48e465e2ae20a6061", - "reference": "b30c243c786428b4b72a8ef48e465e2ae20a6061", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/3243a3876ad465ed905332f4e6878bfe1ecbea69", + "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.6" + "phpstan/phpstan": "^1.8.11" }, "conflict": { "doctrine/collections": "<1.0", @@ -12566,27 +12566,27 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.18" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.21" }, - "time": "2022-10-17T14:03:44+00:00" + "time": "2022-10-26T08:50:00+00:00" }, { "name": "phpstan/phpstan-phpunit", - "version": "1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "4a3c437c09075736285d1cabb5c75bf27ed0bc84" + "reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/4a3c437c09075736285d1cabb5c75bf27ed0bc84", - "reference": "4a3c437c09075736285d1cabb5c75bf27ed0bc84", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6b93db7fae6d6f3e81a5b4297f93af6fe4146785", + "reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.5.0" + "phpstan/phpstan": "^1.8.0" }, "conflict": { "phpunit/phpunit": "<7.0" @@ -12618,9 +12618,9 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.1.1" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.1.3" }, - "time": "2022-04-20T15:24:25+00:00" + "time": "2022-10-24T11:38:17+00:00" }, { "name": "phpstan/phpstan-symfony", From b8ceefe4df0037471b5c8a098a543fb70c48d862 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Oct 2022 00:03:24 +0000 Subject: [PATCH 19/52] Update dependency @types/node to v18.11.7 --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9fd0014b7..6b065c849 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "license": "MPL-2.0", "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.6", + "@types/node": "18.11.7", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", @@ -3685,9 +3685,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "node_modules/@types/node": { - "version": "18.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", - "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -18637,9 +18637,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "@types/node": { - "version": "18.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.6.tgz", - "integrity": "sha512-j3CEDa2vd96K0AXF8Wur7UucACvnjkk8hYyQAHhUNciabZLDl9nfAEVUSwmh245OOZV15bRA3Y590Gi5jUcDJg==" + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" }, "@types/parse-json": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 1abbc9342..0b4bc8eab 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.6", + "@types/node": "18.11.7", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", From 0587c7417b32d0e84a5131c44811ce3c6c114de2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Oct 2022 10:43:31 +0200 Subject: [PATCH 20/52] Update dependency phpstan/phpstan-phpunit to v1.2.1 (#686) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 6de655519..7a7c8f330 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -61,7 +61,7 @@ "friendsofphp/php-cs-fixer": "3.12.0", "phpstan/phpstan": "1.8.11", "phpstan/phpstan-doctrine": "1.3.21", - "phpstan/phpstan-phpunit": "1.1.3", + "phpstan/phpstan-phpunit": "1.2.1", "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.25", diff --git a/backend/composer.lock b/backend/composer.lock index 8a0528155..794201cc7 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e4a40d8baf00810b18708e41b82c0b42", + "content-hash": "a1f4a5a0bce95381c674ad5980bada88", "packages": [ { "name": "api-platform/core", @@ -12572,21 +12572,21 @@ }, { "name": "phpstan/phpstan-phpunit", - "version": "1.1.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785" + "reference": "09b5c9ab38d4d601bcff04b4c9240832b86f5dda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6b93db7fae6d6f3e81a5b4297f93af6fe4146785", - "reference": "6b93db7fae6d6f3e81a5b4297f93af6fe4146785", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/09b5c9ab38d4d601bcff04b4c9240832b86f5dda", + "reference": "09b5c9ab38d4d601bcff04b4c9240832b86f5dda", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.8.11" }, "conflict": { "phpunit/phpunit": "<7.0" @@ -12618,9 +12618,9 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.2.1" }, - "time": "2022-10-24T11:38:17+00:00" + "time": "2022-10-26T19:38:49+00:00" }, { "name": "phpstan/phpstan-symfony", From 271ebe45eabc8f07632fd1d2b23b7a938e8c7f1a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 08:53:44 +0100 Subject: [PATCH 21/52] Update dependency phpstan/phpstan-phpunit to v1.2.2 (#687) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 7a7c8f330..57f7ee943 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -61,7 +61,7 @@ "friendsofphp/php-cs-fixer": "3.12.0", "phpstan/phpstan": "1.8.11", "phpstan/phpstan-doctrine": "1.3.21", - "phpstan/phpstan-phpunit": "1.2.1", + "phpstan/phpstan-phpunit": "1.2.2", "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.25", diff --git a/backend/composer.lock b/backend/composer.lock index 794201cc7..6a8276720 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a1f4a5a0bce95381c674ad5980bada88", + "content-hash": "d871533dffd1dfa256f09a02903dde82", "packages": [ { "name": "api-platform/core", @@ -12572,16 +12572,16 @@ }, { "name": "phpstan/phpstan-phpunit", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "09b5c9ab38d4d601bcff04b4c9240832b86f5dda" + "reference": "dea1f87344c6964c607d9076dee42d891f3923f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/09b5c9ab38d4d601bcff04b4c9240832b86f5dda", - "reference": "09b5c9ab38d4d601bcff04b4c9240832b86f5dda", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/dea1f87344c6964c607d9076dee42d891f3923f0", + "reference": "dea1f87344c6964c607d9076dee42d891f3923f0", "shasum": "" }, "require": { @@ -12618,9 +12618,9 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.2.1" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.2.2" }, - "time": "2022-10-26T19:38:49+00:00" + "time": "2022-10-28T10:23:07+00:00" }, { "name": "phpstan/phpstan-symfony", From 2193c7513bb026db9695f8516c3910765fd44769 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 09:04:48 +0100 Subject: [PATCH 22/52] Update dependency phpunit/phpunit to v9.5.26 (#689) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 57f7ee943..c8c5180be 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -64,7 +64,7 @@ "phpstan/phpstan-phpunit": "1.2.2", "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", - "phpunit/phpunit": "9.5.25", + "phpunit/phpunit": "9.5.26", "psalm/plugin-phpunit": "0.17.0", "psalm/plugin-symfony": "3.1.10", "runroom-packages/testing": "0.16.0", diff --git a/backend/composer.lock b/backend/composer.lock index 6a8276720..decc5f1a6 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d871533dffd1dfa256f09a02903dde82", + "content-hash": "2a7f7ea689171094e9b681e1374cf2b4", "packages": [ { "name": "api-platform/core", @@ -12745,16 +12745,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.17", + "version": "9.2.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8" + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8", - "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a", + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a", "shasum": "" }, "require": { @@ -12810,7 +12810,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18" }, "funding": [ { @@ -12818,7 +12818,7 @@ "type": "github" } ], - "time": "2022-08-30T12:24:04+00:00" + "time": "2022-10-27T13:35:33+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13063,16 +13063,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.25", + "version": "9.5.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d" + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", - "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2", + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2", "shasum": "" }, "require": { @@ -13145,7 +13145,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26" }, "funding": [ { @@ -13161,7 +13161,7 @@ "type": "tidelift" } ], - "time": "2022-09-25T03:44:45+00:00" + "time": "2022-10-28T06:00:21+00:00" }, { "name": "psalm/plugin-phpunit", From d6d77f6c679a597007f67afe43ef71ff15dfbea5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 09:51:01 +0100 Subject: [PATCH 23/52] Update dependency psalm/plugin-symfony to v4 (#690) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index c8c5180be..c3968a106 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -66,7 +66,7 @@ "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.26", "psalm/plugin-phpunit": "0.17.0", - "psalm/plugin-symfony": "3.1.10", + "psalm/plugin-symfony": "4.0.0", "runroom-packages/testing": "0.16.0", "symfony/browser-kit": "6.1.3", "symfony/debug-bundle": "6.1.3", diff --git a/backend/composer.lock b/backend/composer.lock index decc5f1a6..193a4c7a7 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2a7f7ea689171094e9b681e1374cf2b4", + "content-hash": "e481f13796453049127106a0b3204ed4", "packages": [ { "name": "api-platform/core", @@ -13225,21 +13225,21 @@ }, { "name": "psalm/plugin-symfony", - "version": "v3.1.10", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-symfony.git", - "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28" + "reference": "40589bcc366b46a80754f874e83d430089a8cbfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/5dca17839a6d48766ac760b8aa6d1f6d12759b28", - "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28", + "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/40589bcc366b46a80754f874e83d430089a8cbfe", + "reference": "40589bcc366b46a80754f874e83d430089a8cbfe", "shasum": "" }, "require": { "ext-simplexml": "*", - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "symfony/framework-bundle": "^4.0 || ^5.0 || ^6.0", "vimeo/psalm": "^4.12" }, @@ -13255,7 +13255,7 @@ "symfony/serializer": "^4.0 || ^5.0 || ^6.0", "symfony/validator": "*", "twig/twig": "^2.10 || ^3.0", - "weirdan/codeception-psalm-module": "^0.13.1" + "weirdan/codeception-psalm-module": "dev-master" }, "suggest": { "weirdan/doctrine-psalm-plugin": "If Doctrine is used, it is recommended install this plugin" @@ -13284,9 +13284,9 @@ "description": "Psalm Plugin for Symfony", "support": { "issues": "https://github.com/psalm/psalm-plugin-symfony/issues", - "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v3.1.10" + "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v4.0.0" }, - "time": "2022-10-22T13:09:05+00:00" + "time": "2022-10-29T15:24:33+00:00" }, { "name": "runroom-packages/testing", From 12872482620ec89b67835544a7ba917fc5d8b79a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 08:52:48 +0000 Subject: [PATCH 24/52] Update symfony packages to v6.1.7 --- backend/composer.json | 14 ++-- backend/composer.lock | 161 +++++++++++++++++++++--------------------- 2 files changed, 87 insertions(+), 88 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index c3968a106..10325135e 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -29,24 +29,24 @@ "symfony/amazon-mailer": "6.1.0", "symfony/asset": "6.1.5", "symfony/config": "6.1.3", - "symfony/console": "6.1.6", + "symfony/console": "6.1.7", "symfony/doctrine-messenger": "6.1.4", "symfony/dotenv": "6.1.0", "symfony/expression-language": "6.1.6", "symfony/finder": "6.1.3", "symfony/flex": "2.2.3", - "symfony/framework-bundle": "6.1.6", - "symfony/http-client": "6.1.6", - "symfony/intl": "6.1.6", - "symfony/mailer": "6.1.5", + "symfony/framework-bundle": "6.1.7", + "symfony/http-client": "6.1.7", + "symfony/intl": "6.1.7", + "symfony/mailer": "6.1.7", "symfony/messenger": "6.1.6", "symfony/monolog-bundle": "3.8.0", "symfony/runtime": "6.1.3", "symfony/security-bundle": "6.1.3", - "symfony/string": "6.1.6", + "symfony/string": "6.1.7", "symfony/translation": "6.1.6", "symfony/twig-bundle": "6.1.1", - "symfony/validator": "6.1.6", + "symfony/validator": "6.1.7", "symfony/workflow": "6.1.3", "symfony/yaml": "6.1.6", "symfonycasts/reset-password-bundle": "1.16.0", diff --git a/backend/composer.lock b/backend/composer.lock index 193a4c7a7..3c6acb040 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e481f13796453049127106a0b3204ed4", + "content-hash": "39a849c96cdd3f79d16ab29f113cf5b9", "packages": [ { "name": "api-platform/core", @@ -5194,16 +5194,16 @@ }, { "name": "symfony/cache", - "version": "v6.1.5", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "9ae74e40fde37aba127ad5db65c5193f41f86f95" + "reference": "ee5d5b88162684a1377706f9c25125e97685ee61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/9ae74e40fde37aba127ad5db65c5193f41f86f95", - "reference": "9ae74e40fde37aba127ad5db65c5193f41f86f95", + "url": "https://api.github.com/repos/symfony/cache/zipball/ee5d5b88162684a1377706f9c25125e97685ee61", + "reference": "ee5d5b88162684a1377706f9c25125e97685ee61", "shasum": "" }, "require": { @@ -5270,7 +5270,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.1.5" + "source": "https://github.com/symfony/cache/tree/v6.1.7" }, "funding": [ { @@ -5286,7 +5286,7 @@ "type": "tidelift" } ], - "time": "2022-09-08T09:34:40+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/cache-contracts", @@ -5446,16 +5446,16 @@ }, { "name": "symfony/console", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "7fa3b9cf17363468795e539231a5c91b02b608fc" + "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/7fa3b9cf17363468795e539231a5c91b02b608fc", - "reference": "7fa3b9cf17363468795e539231a5c91b02b608fc", + "url": "https://api.github.com/repos/symfony/console/zipball/a1282bd0c096e0bdb8800b104177e2ce404d8815", + "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815", "shasum": "" }, "require": { @@ -5522,7 +5522,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.6" + "source": "https://github.com/symfony/console/tree/v6.1.7" }, "funding": [ { @@ -5538,7 +5538,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-26T21:42:49+00:00" }, { "name": "symfony/dependency-injection", @@ -5956,16 +5956,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "49f718e41f1b6f0fd5730895ca5b1c37defd828d" + "reference": "699a26ce5ec656c198bf6e26398b0f0818c7e504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/49f718e41f1b6f0fd5730895ca5b1c37defd828d", - "reference": "49f718e41f1b6f0fd5730895ca5b1c37defd828d", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/699a26ce5ec656c198bf6e26398b0f0818c7e504", + "reference": "699a26ce5ec656c198bf6e26398b0f0818c7e504", "shasum": "" }, "require": { @@ -6007,7 +6007,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.1.6" + "source": "https://github.com/symfony/error-handler/tree/v6.1.7" }, "funding": [ { @@ -6023,7 +6023,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/event-dispatcher", @@ -6546,16 +6546,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "b79e5866a8293de00c8436836c2038ec31916ee7" + "reference": "d402e86ce94bb3eb1ca3d6bb0393285c791e2b14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b79e5866a8293de00c8436836c2038ec31916ee7", - "reference": "b79e5866a8293de00c8436836c2038ec31916ee7", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d402e86ce94bb3eb1ca3d6bb0393285c791e2b14", + "reference": "d402e86ce94bb3eb1ca3d6bb0393285c791e2b14", "shasum": "" }, "require": { @@ -6677,7 +6677,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.1.6" + "source": "https://github.com/symfony/framework-bundle/tree/v6.1.7" }, "funding": [ { @@ -6693,20 +6693,20 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/http-client", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "c8c887f4813370550147afd27d9eb8a8523e53b2" + "reference": "f515d066728774efb34347a87580621416ca8968" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/c8c887f4813370550147afd27d9eb8a8523e53b2", - "reference": "c8c887f4813370550147afd27d9eb8a8523e53b2", + "url": "https://api.github.com/repos/symfony/http-client/zipball/f515d066728774efb34347a87580621416ca8968", + "reference": "f515d066728774efb34347a87580621416ca8968", "shasum": "" }, "require": { @@ -6761,7 +6761,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v6.1.6" + "source": "https://github.com/symfony/http-client/tree/v6.1.7" }, "funding": [ { @@ -6777,7 +6777,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T05:10:31+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/http-client-contracts", @@ -6862,16 +6862,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "3ae8e9c57155fc48930493a629da293b32efbde0" + "reference": "792a1856d2b95273f0e1c3435785f1d01a60ecc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3ae8e9c57155fc48930493a629da293b32efbde0", - "reference": "3ae8e9c57155fc48930493a629da293b32efbde0", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/792a1856d2b95273f0e1c3435785f1d01a60ecc6", + "reference": "792a1856d2b95273f0e1c3435785f1d01a60ecc6", "shasum": "" }, "require": { @@ -6917,7 +6917,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.1.6" + "source": "https://github.com/symfony/http-foundation/tree/v6.1.7" }, "funding": [ { @@ -6933,20 +6933,20 @@ "type": "tidelift" } ], - "time": "2022-10-02T08:30:52+00:00" + "time": "2022-10-12T09:44:59+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "102f99bf81799e93f61b9a73b2f38b309c587a94" + "reference": "8fc1ffe753948c47a103a809cdd6a4a8458b3254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/102f99bf81799e93f61b9a73b2f38b309c587a94", - "reference": "102f99bf81799e93f61b9a73b2f38b309c587a94", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8fc1ffe753948c47a103a809cdd6a4a8458b3254", + "reference": "8fc1ffe753948c47a103a809cdd6a4a8458b3254", "shasum": "" }, "require": { @@ -7027,7 +7027,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.1.6" + "source": "https://github.com/symfony/http-kernel/tree/v6.1.7" }, "funding": [ { @@ -7043,20 +7043,20 @@ "type": "tidelift" } ], - "time": "2022-10-12T07:48:47+00:00" + "time": "2022-10-28T18:06:36+00:00" }, { "name": "symfony/intl", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "9ab546d9054b34feb2cb728349f6b8e8f18d4c43" + "reference": "8025e5b651512b21d3e768321d45a2e5e32e8c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/9ab546d9054b34feb2cb728349f6b8e8f18d4c43", - "reference": "9ab546d9054b34feb2cb728349f6b8e8f18d4c43", + "url": "https://api.github.com/repos/symfony/intl/zipball/8025e5b651512b21d3e768321d45a2e5e32e8c66", + "reference": "8025e5b651512b21d3e768321d45a2e5e32e8c66", "shasum": "" }, "require": { @@ -7107,7 +7107,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.1.6" + "source": "https://github.com/symfony/intl/tree/v6.1.7" }, "funding": [ { @@ -7123,20 +7123,20 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-23T10:33:34+00:00" }, { "name": "symfony/mailer", - "version": "v6.1.5", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e1b32deb9efc48def0c76b876860ad36f2123e89" + "reference": "7e19813c0b43387c55665780c4caea505cc48391" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e1b32deb9efc48def0c76b876860ad36f2123e89", - "reference": "e1b32deb9efc48def0c76b876860ad36f2123e89", + "url": "https://api.github.com/repos/symfony/mailer/zipball/7e19813c0b43387c55665780c4caea505cc48391", + "reference": "7e19813c0b43387c55665780c4caea505cc48391", "shasum": "" }, "require": { @@ -7181,7 +7181,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.1.5" + "source": "https://github.com/symfony/mailer/tree/v6.1.7" }, "funding": [ { @@ -7197,7 +7197,7 @@ "type": "tidelift" } ], - "time": "2022-08-29T06:58:39+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/messenger", @@ -7287,16 +7287,16 @@ }, { "name": "symfony/mime", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3" + "reference": "f440f066d57691088d998d6e437ce98771144618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5ae192b9a39730435cfec025a499f79d05ac68a3", - "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3", + "url": "https://api.github.com/repos/symfony/mime/zipball/f440f066d57691088d998d6e437ce98771144618", + "reference": "f440f066d57691088d998d6e437ce98771144618", "shasum": "" }, "require": { @@ -7308,8 +7308,7 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" + "symfony/mailer": "<5.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", @@ -7317,7 +7316,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" + "symfony/serializer": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -7349,7 +7348,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.6" + "source": "https://github.com/symfony/mime/tree/v6.1.7" }, "funding": [ { @@ -7365,7 +7364,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-19T08:10:53+00:00" }, { "name": "symfony/monolog-bridge", @@ -8424,16 +8423,16 @@ }, { "name": "symfony/routing", - "version": "v6.1.5", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c" + "reference": "95effeb9d6e2cec861cee06bf5bbf82d09aea7f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c", - "reference": "f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c", + "url": "https://api.github.com/repos/symfony/routing/zipball/95effeb9d6e2cec861cee06bf5bbf82d09aea7f5", + "reference": "95effeb9d6e2cec861cee06bf5bbf82d09aea7f5", "shasum": "" }, "require": { @@ -8492,7 +8491,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.1.5" + "source": "https://github.com/symfony/routing/tree/v6.1.7" }, "funding": [ { @@ -8508,7 +8507,7 @@ "type": "tidelift" } ], - "time": "2022-09-09T09:26:14+00:00" + "time": "2022-10-18T13:12:43+00:00" }, { "name": "symfony/runtime", @@ -9263,16 +9262,16 @@ }, { "name": "symfony/string", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7e7e0ff180d4c5a6636eaad57b65092014b61864" + "reference": "823f143370880efcbdfa2dbca946b3358c4707e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7e7e0ff180d4c5a6636eaad57b65092014b61864", - "reference": "7e7e0ff180d4c5a6636eaad57b65092014b61864", + "url": "https://api.github.com/repos/symfony/string/zipball/823f143370880efcbdfa2dbca946b3358c4707e5", + "reference": "823f143370880efcbdfa2dbca946b3358c4707e5", "shasum": "" }, "require": { @@ -9328,7 +9327,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.6" + "source": "https://github.com/symfony/string/tree/v6.1.7" }, "funding": [ { @@ -9733,16 +9732,16 @@ }, { "name": "symfony/validator", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "e5589882403e1e19774d7c5ffb65d9c6466d216c" + "reference": "0cc147f2e4a0d78221db85545751cd8764bbc156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/e5589882403e1e19774d7c5ffb65d9c6466d216c", - "reference": "e5589882403e1e19774d7c5ffb65d9c6466d216c", + "url": "https://api.github.com/repos/symfony/validator/zipball/0cc147f2e4a0d78221db85545751cd8764bbc156", + "reference": "0cc147f2e4a0d78221db85545751cd8764bbc156", "shasum": "" }, "require": { @@ -9821,7 +9820,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.1.6" + "source": "https://github.com/symfony/validator/tree/v6.1.7" }, "funding": [ { @@ -9837,7 +9836,7 @@ "type": "tidelift" } ], - "time": "2022-10-02T08:30:52+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/var-dumper", From 2988b9560ba5bdf6b4906038d3237a47c0bf234e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 08:45:26 +0100 Subject: [PATCH 25/52] Update dependency friendsofphp/php-cs-fixer to v3.13.0 (#692) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 10325135e..121be7fb5 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -58,7 +58,7 @@ "doctrine/data-fixtures": "1.5.3", "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", - "friendsofphp/php-cs-fixer": "3.12.0", + "friendsofphp/php-cs-fixer": "3.13.0", "phpstan/phpstan": "1.8.11", "phpstan/phpstan-doctrine": "1.3.21", "phpstan/phpstan-phpunit": "1.2.2", diff --git a/backend/composer.lock b/backend/composer.lock index 3c6acb040..a4667b72b 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "39a849c96cdd3f79d16ab29f113cf5b9", + "content-hash": "64ea633f3d1a6ff141f3d261232141b6", "packages": [ { "name": "api-platform/core", @@ -11719,16 +11719,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.12.0", + "version": "v3.13.0", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "eae11d945e2885d86e1c080eec1bb30a2aa27998" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/eae11d945e2885d86e1c080eec1bb30a2aa27998", - "reference": "eae11d945e2885d86e1c080eec1bb30a2aa27998", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a6232229a8309e8811dc751c28b91cb34b2943e1", + "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1", "shasum": "" }, "require": { @@ -11752,7 +11752,7 @@ }, "require-dev": { "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", + "keradus/cli-executor": "^2.0", "mikey179/vfsstream": "^1.6.10", "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", @@ -11795,8 +11795,8 @@ ], "description": "A tool to automatically fix PHP code style", "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.12.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.0" }, "funding": [ { @@ -11804,7 +11804,7 @@ "type": "github" } ], - "time": "2022-10-12T14:20:51+00:00" + "time": "2022-10-31T19:28:50+00:00" }, { "name": "justinrainbow/json-schema", From 03c0532badd14b85b9b7d7638c9cff95f41a2d3c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 08:55:43 +0100 Subject: [PATCH 26/52] Update dependency psalm/plugin-phpunit to v0.18.0 (#693) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 121be7fb5..9d67ee57a 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -65,7 +65,7 @@ "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.26", - "psalm/plugin-phpunit": "0.17.0", + "psalm/plugin-phpunit": "0.18.0", "psalm/plugin-symfony": "4.0.0", "runroom-packages/testing": "0.16.0", "symfony/browser-kit": "6.1.3", diff --git a/backend/composer.lock b/backend/composer.lock index a4667b72b..578b898fb 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "64ea633f3d1a6ff141f3d261232141b6", + "content-hash": "8529462dad35d0c0921c947acb51c4af", "packages": [ { "name": "api-platform/core", @@ -13164,16 +13164,16 @@ }, { "name": "psalm/plugin-phpunit", - "version": "0.17.0", + "version": "0.18.0", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d" + "reference": "e61073617d3efd4d9dee3b830f754f5283306aff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/45951541beef07e93e3ad197daf01da88e85c31d", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e61073617d3efd4d9dee3b830f754f5283306aff", + "reference": "e61073617d3efd4d9dee3b830f754f5283306aff", "shasum": "" }, "require": { @@ -13181,7 +13181,7 @@ "composer/semver": "^1.4 || ^2.0 || ^3.0", "ext-simplexml": "*", "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.5" + "vimeo/psalm": "dev-master || dev-4.x || ^4.5 || ^5@beta" }, "conflict": { "phpunit/phpunit": "<7.5" @@ -13218,9 +13218,9 @@ "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.17.0" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.0" }, - "time": "2022-06-14T17:05:57+00:00" + "time": "2022-11-01T18:44:31+00:00" }, { "name": "psalm/plugin-symfony", From 5460f5eba7d5c131a686b581fd98f8bad2075926 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 09:05:58 +0100 Subject: [PATCH 27/52] Update dependency doctrine/doctrine-bundle to v2.7.1 (#694) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 72 +++++++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 9d67ee57a..fce690277 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -7,7 +7,7 @@ "php": "^8.1", "api-platform/core": "2.7.2", "doctrine/annotations": "1.13.3", - "doctrine/doctrine-bundle": "2.7.0", + "doctrine/doctrine-bundle": "2.7.1", "doctrine/doctrine-migrations-bundle": "3.2.2", "doctrine/orm": "2.13.3", "gedmo/doctrine-extensions": "3.9.0", diff --git a/backend/composer.lock b/backend/composer.lock index 578b898fb..f2e6597a7 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8529462dad35d0c0921c947acb51c4af", + "content-hash": "2b1a24b31c8e9b5a6c4496b2eef217d1", "packages": [ { "name": "api-platform/core", @@ -887,37 +887,37 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6" + "reference": "a2dcad48741c9d12fd6040398cf075025030096e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d2088fc50494e4e7441fecca54732245a613eeb6", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a2dcad48741c9d12fd6040398cf075025030096e", + "reference": "a2dcad48741c9d12fd6040398cf075025030096e", "shasum": "" }, "require": { "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2|^3", + "doctrine/dbal": "^2.13.1 || ^3.3.2", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/config": "^4.4.3 || ^5.4 || ^6.0", + "symfony/console": "^4.4 || ^5.4 || ^6.0", + "symfony/dependency-injection": "^4.4.18 || ^5.4 || ^6.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^4.4.22 || ^5.4 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.10|>=3.0", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/orm": "<2.11 || >=3.0", + "twig/twig": "<1.34 || >=2.0,<2.4" }, "require-dev": { "doctrine/coding-standard": "^9.0", @@ -926,16 +926,16 @@ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", "psalm/plugin-phpunit": "^0.16.1", "psalm/plugin-symfony": "^3", - "psr/log": "^1.1.4|^2.0|^3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1", + "symfony/property-info": "^4.4 || ^5.4 || ^6.0", + "symfony/proxy-manager-bridge": "^4.4 || ^5.4 || ^6.0", + "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.0", + "symfony/validator": "^4.4 || ^5.4 || ^6.0", + "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.7" }, "suggest": { @@ -981,7 +981,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.1" }, "funding": [ { @@ -997,7 +997,7 @@ "type": "tidelift" } ], - "time": "2022-06-10T10:55:26+00:00" + "time": "2022-10-23T09:47:06+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -5696,20 +5696,20 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "5db7ac51c40d03d576b2696a6b55975e53a3dfd5" + "reference": "4b6b99d059333b9fec2d0abbe61ea38573319480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/5db7ac51c40d03d576b2696a6b55975e53a3dfd5", - "reference": "5db7ac51c40d03d576b2696a6b55975e53a3dfd5", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/4b6b99d059333b9fec2d0abbe61ea38573319480", + "reference": "4b6b99d059333b9fec2d0abbe61ea38573319480", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", + "doctrine/event-manager": "^1|^2", "doctrine/persistence": "^2|^3", "php": ">=8.1", "symfony/deprecation-contracts": "^2.1|^3", @@ -5791,7 +5791,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.1.6" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.1.7" }, "funding": [ { @@ -5807,7 +5807,7 @@ "type": "tidelift" } ], - "time": "2022-10-10T09:34:31+00:00" + "time": "2022-10-15T06:26:03+00:00" }, { "name": "symfony/doctrine-messenger", From 5160220564eb1fe71324ac7861a7db71dd9602b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Nov 2022 10:50:39 +0100 Subject: [PATCH 28/52] Update dependency @typescript-eslint/eslint-plugin to v5.42.0 (#695) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 260 +++++++++++++++++++------------------ frontend/package.json | 2 +- 2 files changed, 138 insertions(+), 124 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6b065c849..957fe8ae6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -53,7 +53,7 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.42.0", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", @@ -3746,9 +3746,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/@types/semver": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, "node_modules/@types/sinonjs__fake-timers": { @@ -3825,16 +3825,17 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", + "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/type-utils": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" @@ -3857,13 +3858,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3874,9 +3875,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3887,12 +3888,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -3963,13 +3964,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", + "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3990,9 +3991,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4003,13 +4004,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4030,12 +4031,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4157,16 +4158,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", + "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -4183,13 +4184,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4200,9 +4201,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4213,13 +4214,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4240,12 +4241,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -12166,6 +12167,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -18698,9 +18705,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "@types/semver": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", - "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", "dev": true }, "@types/sinonjs__fake-timers": { @@ -18777,44 +18784,45 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", - "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", + "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/type-utils": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/type-utils": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" } }, "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -18852,31 +18860,31 @@ } }, "@typescript-eslint/type-utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", - "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", + "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.40.1", - "@typescript-eslint/utils": "5.40.1", + "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/utils": "5.42.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -18885,12 +18893,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -18966,45 +18974,45 @@ } }, "@typescript-eslint/utils": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", - "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", + "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.40.1", - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/scope-manager": "5.42.0", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", - "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", + "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1" + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0" } }, "@typescript-eslint/types": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", - "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", + "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", - "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", + "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", - "@typescript-eslint/visitor-keys": "5.40.1", + "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/visitor-keys": "5.42.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -19013,12 +19021,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.40.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", - "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", + "version": "5.42.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", + "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/types": "5.42.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -25225,6 +25233,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 0b4bc8eab..0eac6275a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,7 +71,7 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.40.1", + "@typescript-eslint/eslint-plugin": "5.42.0", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", From 587245602397198bc9cb7b054887231a8446e380 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Nov 2022 09:41:10 +0100 Subject: [PATCH 29/52] Update dependency psalm/plugin-phpunit to v0.18.1 (#697) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index fce690277..cac9dc402 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -65,7 +65,7 @@ "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.26", - "psalm/plugin-phpunit": "0.18.0", + "psalm/plugin-phpunit": "0.18.1", "psalm/plugin-symfony": "4.0.0", "runroom-packages/testing": "0.16.0", "symfony/browser-kit": "6.1.3", diff --git a/backend/composer.lock b/backend/composer.lock index f2e6597a7..605dc6487 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2b1a24b31c8e9b5a6c4496b2eef217d1", + "content-hash": "cfcf3732123cd97b483c6f578a083577", "packages": [ { "name": "api-platform/core", @@ -13164,16 +13164,16 @@ }, { "name": "psalm/plugin-phpunit", - "version": "0.18.0", + "version": "0.18.1", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "e61073617d3efd4d9dee3b830f754f5283306aff" + "reference": "6d932594bb56cd8c8dad81df2b242ada86b7a892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e61073617d3efd4d9dee3b830f754f5283306aff", - "reference": "e61073617d3efd4d9dee3b830f754f5283306aff", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/6d932594bb56cd8c8dad81df2b242ada86b7a892", + "reference": "6d932594bb56cd8c8dad81df2b242ada86b7a892", "shasum": "" }, "require": { @@ -13218,9 +13218,9 @@ "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.0" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.1" }, - "time": "2022-11-01T18:44:31+00:00" + "time": "2022-11-02T17:50:18+00:00" }, { "name": "psalm/plugin-symfony", From cb46cf0272c58ff6367f3ed0c5beb2163cab862d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 13:08:43 +0100 Subject: [PATCH 30/52] Update dependency psalm/plugin-phpunit to v0.18.3 (#699) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index cac9dc402..abdb0e820 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -65,7 +65,7 @@ "phpstan/phpstan-symfony": "1.2.14", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.26", - "psalm/plugin-phpunit": "0.18.1", + "psalm/plugin-phpunit": "0.18.3", "psalm/plugin-symfony": "4.0.0", "runroom-packages/testing": "0.16.0", "symfony/browser-kit": "6.1.3", diff --git a/backend/composer.lock b/backend/composer.lock index 605dc6487..70edd154c 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cfcf3732123cd97b483c6f578a083577", + "content-hash": "4b43e1ab0c0c24f87b00c581e5e6e22a", "packages": [ { "name": "api-platform/core", @@ -13164,16 +13164,16 @@ }, { "name": "psalm/plugin-phpunit", - "version": "0.18.1", + "version": "0.18.3", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "6d932594bb56cd8c8dad81df2b242ada86b7a892" + "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/6d932594bb56cd8c8dad81df2b242ada86b7a892", - "reference": "6d932594bb56cd8c8dad81df2b242ada86b7a892", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/057c1cdf7546c1e427f6fd83b635d0cc18c252bf", + "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf", "shasum": "" }, "require": { @@ -13218,9 +13218,9 @@ "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.1" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.3" }, - "time": "2022-11-02T17:50:18+00:00" + "time": "2022-11-03T18:17:28+00:00" }, { "name": "psalm/plugin-symfony", From e97d3ba6568adb5d6b7032d7d6a5961952d9e3e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 13:31:40 +0100 Subject: [PATCH 31/52] Update dependency phpstan/phpstan to v1.9.0 (#698) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index abdb0e820..59d62fc96 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,7 +59,7 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.13.0", - "phpstan/phpstan": "1.8.11", + "phpstan/phpstan": "1.9.0", "phpstan/phpstan-doctrine": "1.3.21", "phpstan/phpstan-phpunit": "1.2.2", "phpstan/phpstan-symfony": "1.2.14", diff --git a/backend/composer.lock b/backend/composer.lock index 70edd154c..f989a7f06 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4b43e1ab0c0c24f87b00c581e5e6e22a", + "content-hash": "ee0234061df5312293bef1bc3b2b03e3", "packages": [ { "name": "api-platform/core", @@ -3351,16 +3351,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.11", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "46e223dd68a620da18855c23046ddb00940b4014" + "reference": "e08de53a5eec983de78a787a88e72518cf8fe43a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014", - "reference": "46e223dd68a620da18855c23046ddb00940b4014", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e08de53a5eec983de78a787a88e72518cf8fe43a", + "reference": "e08de53a5eec983de78a787a88e72518cf8fe43a", "shasum": "" }, "require": { @@ -3390,7 +3390,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.11" + "source": "https://github.com/phpstan/phpstan/tree/1.9.0" }, "funding": [ { @@ -3406,7 +3406,7 @@ "type": "tidelift" } ], - "time": "2022-10-24T15:45:13+00:00" + "time": "2022-11-03T07:26:48+00:00" }, { "name": "psr/cache", From 5db9ecebf096f945cefa25a2b8508c66faaa48f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 12:33:26 +0000 Subject: [PATCH 32/52] Update dependency rector/rector to v0.14.7 --- backend/composer.json | 2 +- backend/composer.lock | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 59d62fc96..70765ebac 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -18,7 +18,7 @@ "paragonie/halite": "5.1.0", "ramsey/uuid": "4.5.1", "ramsey/uuid-doctrine": "1.8.1", - "rector/rector": "0.14.6", + "rector/rector": "0.14.7", "sonata-project/admin-bundle": "4.20.0", "sonata-project/doctrine-extensions": "2.0.1", "sonata-project/doctrine-orm-admin-bundle": "4.8.0", diff --git a/backend/composer.lock b/backend/composer.lock index f989a7f06..4141de7c3 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ee0234061df5312293bef1bc3b2b03e3", + "content-hash": "23e5ce555358f31f0a366909252b2d19", "packages": [ { "name": "api-platform/core", @@ -3908,26 +3908,25 @@ }, { "name": "rector/rector", - "version": "0.14.6", + "version": "0.14.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "e61574288661334155de6e5f0f45497285abad5d" + "reference": "3553aaba0e820083fc6d7f0dc78d8d789226a398" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/e61574288661334155de6e5f0f45497285abad5d", - "reference": "e61574288661334155de6e5f0f45497285abad5d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/3553aaba0e820083fc6d7f0dc78d8d789226a398", + "reference": "3553aaba0e820083fc6d7f0dc78d8d789226a398", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.8.7" + "phpstan/phpstan": "^1.9.0" }, "conflict": { "rector/rector-doctrine": "*", "rector/rector-downgrade-php": "*", - "rector/rector-laravel": "*", "rector/rector-php-parser": "*", "rector/rector-phpoffice": "*", "rector/rector-phpunit": "*", @@ -3954,7 +3953,7 @@ "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.14.6" + "source": "https://github.com/rectorphp/rector/tree/0.14.7" }, "funding": [ { @@ -3962,7 +3961,7 @@ "type": "github" } ], - "time": "2022-10-15T22:58:22+00:00" + "time": "2022-11-04T08:48:40+00:00" }, { "name": "sonata-project/admin-bundle", From 76dc8b0b2da8d69b9d355272c905db29b34bd34d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Nov 2022 15:53:12 +0000 Subject: [PATCH 33/52] Update phpstan --- backend/composer.json | 6 +++--- backend/composer.lock | 40 ++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 70765ebac..79906e599 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,10 +59,10 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.13.0", - "phpstan/phpstan": "1.9.0", - "phpstan/phpstan-doctrine": "1.3.21", + "phpstan/phpstan": "1.9.1", + "phpstan/phpstan-doctrine": "1.3.22", "phpstan/phpstan-phpunit": "1.2.2", - "phpstan/phpstan-symfony": "1.2.14", + "phpstan/phpstan-symfony": "1.2.16", "phpstan/phpstan-webmozart-assert": "1.2.1", "phpunit/phpunit": "9.5.26", "psalm/plugin-phpunit": "0.18.3", diff --git a/backend/composer.lock b/backend/composer.lock index 4141de7c3..612371947 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "23e5ce555358f31f0a366909252b2d19", + "content-hash": "84480fce6e833ed42f78dfced410affb", "packages": [ { "name": "api-platform/core", @@ -3351,16 +3351,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e08de53a5eec983de78a787a88e72518cf8fe43a" + "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e08de53a5eec983de78a787a88e72518cf8fe43a", - "reference": "e08de53a5eec983de78a787a88e72518cf8fe43a", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", + "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", "shasum": "" }, "require": { @@ -3390,7 +3390,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.0" + "source": "https://github.com/phpstan/phpstan/tree/1.9.1" }, "funding": [ { @@ -3406,7 +3406,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T07:26:48+00:00" + "time": "2022-11-04T13:35:59+00:00" }, { "name": "psr/cache", @@ -12501,16 +12501,16 @@ }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.21", + "version": "1.3.22", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69" + "reference": "5080276a271a4ef71fbe33f4fb68f181dffeb03d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/3243a3876ad465ed905332f4e6878bfe1ecbea69", - "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5080276a271a4ef71fbe33f4fb68f181dffeb03d", + "reference": "5080276a271a4ef71fbe33f4fb68f181dffeb03d", "shasum": "" }, "require": { @@ -12564,9 +12564,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.21" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.22" }, - "time": "2022-10-26T08:50:00+00:00" + "time": "2022-11-03T15:13:13+00:00" }, { "name": "phpstan/phpstan-phpunit", @@ -12622,22 +12622,22 @@ }, { "name": "phpstan/phpstan-symfony", - "version": "1.2.14", + "version": "1.2.16", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "f7dd737329504115adaa987697a759a66dd2ee8a" + "reference": "d6ea16206b1b645ded5b43736d8ef5ae1168eb55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f7dd737329504115adaa987697a759a66dd2ee8a", - "reference": "f7dd737329504115adaa987697a759a66dd2ee8a", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/d6ea16206b1b645ded5b43736d8ef5ae1168eb55", + "reference": "d6ea16206b1b645ded5b43736d8ef5ae1168eb55", "shasum": "" }, "require": { "ext-simplexml": "*", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.2" + "phpstan/phpstan": "^1.9.1" }, "conflict": { "symfony/framework-bundle": "<3.0" @@ -12687,9 +12687,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.14" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.16" }, - "time": "2022-10-05T11:19:29+00:00" + "time": "2022-11-04T13:16:15+00:00" }, { "name": "phpstan/phpstan-webmozart-assert", From bebd8583e8c37ddd5f54a5f59af06fb6e2fd069b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 15:22:22 +0100 Subject: [PATCH 34/52] Update dependency ramsey/uuid to v4.6.0 (#705) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 79906e599..2ec4b0052 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -16,7 +16,7 @@ "lexik/jwt-authentication-bundle": "2.16.0", "nelmio/cors-bundle": "2.2.0", "paragonie/halite": "5.1.0", - "ramsey/uuid": "4.5.1", + "ramsey/uuid": "4.6.0", "ramsey/uuid-doctrine": "1.8.1", "rector/rector": "0.14.7", "sonata-project/admin-bundle": "4.20.0", diff --git a/backend/composer.lock b/backend/composer.lock index 612371947..4beffb7d2 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "84480fce6e833ed42f78dfced410affb", + "content-hash": "3794d0155d4be57eeddc8513fd75a33c", "packages": [ { "name": "api-platform/core", @@ -3747,21 +3747,20 @@ }, { "name": "ramsey/uuid", - "version": "4.5.1", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d" + "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/a161a26d917604dc6d3aa25100fddf2556e9f35d", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/ad63bc700e7d021039e30ce464eba384c4a1d40f", + "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f", "shasum": "" }, "require": { "brick/math": "^0.8.8 || ^0.9 || ^0.10", - "ext-ctype": "*", "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.0" @@ -3793,7 +3792,6 @@ }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -3825,7 +3823,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.5.1" + "source": "https://github.com/ramsey/uuid/tree/4.6.0" }, "funding": [ { @@ -3837,7 +3835,7 @@ "type": "tidelift" } ], - "time": "2022-09-16T03:22:46+00:00" + "time": "2022-11-05T23:03:38+00:00" }, { "name": "ramsey/uuid-doctrine", From 9245e16d595dde094c5451c2e846954e4f9921e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 15:24:31 +0100 Subject: [PATCH 35/52] Update eslint (#704) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 264 ++++++++++++++++++------------------- frontend/package.json | 4 +- 2 files changed, 134 insertions(+), 134 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 957fe8ae6..872a04ae1 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -53,13 +53,13 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.42.0", + "@typescript-eslint/eslint-plugin": "5.42.1", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", "eslint": "8.26.0", - "eslint-config-next": "12.3.1", + "eslint-config-next": "12.3.2", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", "eslint-plugin-header": "3.1.1", @@ -2831,9 +2831,9 @@ "integrity": "sha512-THKlM+l5a2JUKEC3/X+qZ74gACapD/OQ1dz9p2hi504FB3vdgUgh2lswkWvjLZssxBdHW0FJiWoUYf8z19vxuw==" }, "node_modules/@next/eslint-plugin-next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz", - "integrity": "sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.2.tgz", + "integrity": "sha512-Jx0BIS9STamGSbA+vgTxPAi1mRcq4DoH/5kPMs0PFLFi542mmIKUUtYWB61bI+G6KPMTqejYmO3zi+SF6tzGYg==", "dev": true, "dependencies": { "glob": "7.1.7" @@ -3825,14 +3825,14 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", - "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/type-utils": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -3858,13 +3858,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", - "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3875,9 +3875,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3888,12 +3888,12 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -3964,13 +3964,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", - "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3991,9 +3991,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4004,13 +4004,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", - "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4031,12 +4031,12 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4158,16 +4158,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", - "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -4184,13 +4184,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", - "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4201,9 +4201,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4214,13 +4214,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", - "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -4241,12 +4241,12 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -7529,12 +7529,12 @@ } }, "node_modules/eslint-config-next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.1.tgz", - "integrity": "sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.2.tgz", + "integrity": "sha512-ir8t3wRNexUMSKsMNh7J1EWwiBAr2dd015UAiCFvQ/01MRBPmFof1C6PFh/RqlupwamSZlv6j8gfaV1RxHuRoQ==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "12.3.1", + "@next/eslint-plugin-next": "12.3.2", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.21.0", "eslint-import-resolver-node": "^0.3.6", @@ -18080,9 +18080,9 @@ "integrity": "sha512-THKlM+l5a2JUKEC3/X+qZ74gACapD/OQ1dz9p2hi504FB3vdgUgh2lswkWvjLZssxBdHW0FJiWoUYf8z19vxuw==" }, "@next/eslint-plugin-next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz", - "integrity": "sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.2.tgz", + "integrity": "sha512-Jx0BIS9STamGSbA+vgTxPAi1mRcq4DoH/5kPMs0PFLFi542mmIKUUtYWB61bI+G6KPMTqejYmO3zi+SF6tzGYg==", "dev": true, "requires": { "glob": "7.1.7" @@ -18784,14 +18784,14 @@ "integrity": "sha512-Ynb/CjHhE/Xp/4bhHmQC4U1Ox+I2OpfRYF3dnNgQqn1cHa6LK3H1wJMNPT02tSVZA6FYuXE2ITORfbnb6zBCSA==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz", - "integrity": "sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz", + "integrity": "sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/type-utils": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/type-utils": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -18801,28 +18801,28 @@ }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", - "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" } }, "@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -18860,31 +18860,31 @@ } }, "@typescript-eslint/type-utils": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz", - "integrity": "sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz", + "integrity": "sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.42.0", - "@typescript-eslint/utils": "5.42.0", + "@typescript-eslint/typescript-estree": "5.42.1", + "@typescript-eslint/utils": "5.42.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, "dependencies": { "@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", - "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -18893,12 +18893,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -18974,45 +18974,45 @@ } }, "@typescript-eslint/utils": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.0.tgz", - "integrity": "sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.42.1.tgz", + "integrity": "sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.42.0", - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/typescript-estree": "5.42.0", + "@typescript-eslint/scope-manager": "5.42.1", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/typescript-estree": "5.42.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz", - "integrity": "sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz", + "integrity": "sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0" + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1" } }, "@typescript-eslint/types": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.0.tgz", - "integrity": "sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.42.1.tgz", + "integrity": "sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz", - "integrity": "sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz", + "integrity": "sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", - "@typescript-eslint/visitor-keys": "5.42.0", + "@typescript-eslint/types": "5.42.1", + "@typescript-eslint/visitor-keys": "5.42.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -19021,12 +19021,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz", - "integrity": "sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==", + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz", + "integrity": "sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.42.0", + "@typescript-eslint/types": "5.42.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -21815,12 +21815,12 @@ } }, "eslint-config-next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.1.tgz", - "integrity": "sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.2.tgz", + "integrity": "sha512-ir8t3wRNexUMSKsMNh7J1EWwiBAr2dd015UAiCFvQ/01MRBPmFof1C6PFh/RqlupwamSZlv6j8gfaV1RxHuRoQ==", "dev": true, "requires": { - "@next/eslint-plugin-next": "12.3.1", + "@next/eslint-plugin-next": "12.3.2", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.21.0", "eslint-import-resolver-node": "^0.3.6", diff --git a/frontend/package.json b/frontend/package.json index 0eac6275a..4b59261f1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,13 +71,13 @@ "@types/jest": "27.4.1", "@types/js-cookie": "3.0.2", "@types/react-slick": "0.23.10", - "@typescript-eslint/eslint-plugin": "5.42.0", + "@typescript-eslint/eslint-plugin": "5.42.1", "babel-plugin-istanbul": "6.1.1", "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", "eslint": "8.26.0", - "eslint-config-next": "12.3.1", + "eslint-config-next": "12.3.2", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", "eslint-plugin-header": "3.1.1", From 15acd4d739f1e839e1925b1b893ccbea7c2a3483 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 15:38:49 +0100 Subject: [PATCH 36/52] Update dependency ramsey/uuid-doctrine to v1.8.2 (#703) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 2ec4b0052..6fd8449cb 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -17,7 +17,7 @@ "nelmio/cors-bundle": "2.2.0", "paragonie/halite": "5.1.0", "ramsey/uuid": "4.6.0", - "ramsey/uuid-doctrine": "1.8.1", + "ramsey/uuid-doctrine": "1.8.2", "rector/rector": "0.14.7", "sonata-project/admin-bundle": "4.20.0", "sonata-project/doctrine-extensions": "2.0.1", diff --git a/backend/composer.lock b/backend/composer.lock index 4beffb7d2..340c6dca4 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3794d0155d4be57eeddc8513fd75a33c", + "content-hash": "582e83ca76ff71f5a120a937312295fe", "packages": [ { "name": "api-platform/core", @@ -3839,16 +3839,16 @@ }, { "name": "ramsey/uuid-doctrine", - "version": "1.8.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid-doctrine.git", - "reference": "1a6f235ba3faf1cd9ba18daf5b54d8dc9d3bc7d0" + "reference": "6867db3f39b9088dd8909b2523c1d2bfe274e541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/1a6f235ba3faf1cd9ba18daf5b54d8dc9d3bc7d0", - "reference": "1a6f235ba3faf1cd9ba18daf5b54d8dc9d3bc7d0", + "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/6867db3f39b9088dd8909b2523c1d2bfe274e541", + "reference": "6867db3f39b9088dd8909b2523c1d2bfe274e541", "shasum": "" }, "require": { @@ -3890,7 +3890,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid-doctrine/issues", - "source": "https://github.com/ramsey/uuid-doctrine/tree/1.8.1" + "source": "https://github.com/ramsey/uuid-doctrine/tree/1.8.2" }, "funding": [ { @@ -3902,7 +3902,7 @@ "type": "tidelift" } ], - "time": "2022-01-15T23:54:44+00:00" + "time": "2022-11-03T19:30:26+00:00" }, { "name": "rector/rector", From ee792d83974cebfd9f1bab4bbee62a8a39009e6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 15:52:05 +0100 Subject: [PATCH 37/52] Update dependency phpstan/phpstan-webmozart-assert to v1.2.2 (#702) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 6fd8449cb..4c7ff1994 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -63,7 +63,7 @@ "phpstan/phpstan-doctrine": "1.3.22", "phpstan/phpstan-phpunit": "1.2.2", "phpstan/phpstan-symfony": "1.2.16", - "phpstan/phpstan-webmozart-assert": "1.2.1", + "phpstan/phpstan-webmozart-assert": "1.2.2", "phpunit/phpunit": "9.5.26", "psalm/plugin-phpunit": "0.18.3", "psalm/plugin-symfony": "4.0.0", diff --git a/backend/composer.lock b/backend/composer.lock index 340c6dca4..198207566 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "582e83ca76ff71f5a120a937312295fe", + "content-hash": "75b95a827bce4ea37fadf8829323a80f", "packages": [ { "name": "api-platform/core", @@ -12691,21 +12691,21 @@ }, { "name": "phpstan/phpstan-webmozart-assert", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-webmozart-assert.git", - "reference": "c8cd4045592525b3f330950a0c7aaaeb08c60dc5" + "reference": "01259f5c85d175cbd380d91789ed80602c870ce9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-webmozart-assert/zipball/c8cd4045592525b3f330950a0c7aaaeb08c60dc5", - "reference": "c8cd4045592525b3f330950a0c7aaaeb08c60dc5", + "url": "https://api.github.com/repos/phpstan/phpstan-webmozart-assert/zipball/01259f5c85d175cbd380d91789ed80602c870ce9", + "reference": "01259f5c85d175cbd380d91789ed80602c870ce9", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.9.0" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -12735,9 +12735,9 @@ "description": "PHPStan webmozart/assert extension", "support": { "issues": "https://github.com/phpstan/phpstan-webmozart-assert/issues", - "source": "https://github.com/phpstan/phpstan-webmozart-assert/tree/1.2.1" + "source": "https://github.com/phpstan/phpstan-webmozart-assert/tree/1.2.2" }, - "time": "2022-09-21T13:17:14+00:00" + "time": "2022-11-03T15:12:25+00:00" }, { "name": "phpunit/php-code-coverage", From d9e703a4603b5451e8deb8edb81e37e30b91c167 Mon Sep 17 00:00:00 2001 From: Saura Date: Tue, 8 Nov 2022 18:21:59 +0100 Subject: [PATCH 38/52] run audit fix (#708) --- frontend/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 872a04ae1..f51886f13 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11726,9 +11726,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -24867,9 +24867,9 @@ "peer": true }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", From bf4334ee1284778a3a9864d5c39a600216db3eeb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Nov 2022 18:32:24 +0000 Subject: [PATCH 39/52] Update dependency api-platform/core to v2.7.3 --- backend/composer.json | 2 +- backend/composer.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 4c7ff1994..c793161c0 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -5,7 +5,7 @@ "type": "project", "require": { "php": "^8.1", - "api-platform/core": "2.7.2", + "api-platform/core": "2.7.3", "doctrine/annotations": "1.13.3", "doctrine/doctrine-bundle": "2.7.1", "doctrine/doctrine-migrations-bundle": "3.2.2", diff --git a/backend/composer.lock b/backend/composer.lock index 198207566..3d0ba9115 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "75b95a827bce4ea37fadf8829323a80f", + "content-hash": "c465f3a151e92511dd716876d1e482c7", "packages": [ { "name": "api-platform/core", - "version": "v2.7.2", + "version": "v2.7.3", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "80c3f3c38b9ac234bde0cbc2b77d6628326bdefc" + "reference": "d81ef53acb085aaf88c7a3b42150de3ed654f1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/80c3f3c38b9ac234bde0cbc2b77d6628326bdefc", - "reference": "80c3f3c38b9ac234bde0cbc2b77d6628326bdefc", + "url": "https://api.github.com/repos/api-platform/core/zipball/d81ef53acb085aaf88c7a3b42150de3ed654f1e3", + "reference": "d81ef53acb085aaf88c7a3b42150de3ed654f1e3", "shasum": "" }, "require": { @@ -165,7 +165,7 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v2.7.2" + "source": "https://github.com/api-platform/core/tree/v2.7.3" }, "funding": [ { @@ -173,7 +173,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T09:12:23+00:00" + "time": "2022-11-04T19:04:19+00:00" }, { "name": "async-aws/core", @@ -8252,16 +8252,16 @@ }, { "name": "symfony/property-access", - "version": "v6.1.3", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "25108ee9b62d6ef0815007d9c7cf6a7ba40bb7c5" + "reference": "cf034c0d8d25ed285bb8f6c2528ce6fac98563eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/25108ee9b62d6ef0815007d9c7cf6a7ba40bb7c5", - "reference": "25108ee9b62d6ef0815007d9c7cf6a7ba40bb7c5", + "url": "https://api.github.com/repos/symfony/property-access/zipball/cf034c0d8d25ed285bb8f6c2528ce6fac98563eb", + "reference": "cf034c0d8d25ed285bb8f6c2528ce6fac98563eb", "shasum": "" }, "require": { @@ -8311,7 +8311,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.1.3" + "source": "https://github.com/symfony/property-access/tree/v6.1.7" }, "funding": [ { @@ -8327,20 +8327,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/property-info", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f28d0db9d2687f81d68d0dc6b2e42817647f5d64" + "reference": "b5a46ec66a4b77d4bd39d58c22710be888e55b68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f28d0db9d2687f81d68d0dc6b2e42817647f5d64", - "reference": "f28d0db9d2687f81d68d0dc6b2e42817647f5d64", + "url": "https://api.github.com/repos/symfony/property-info/zipball/b5a46ec66a4b77d4bd39d58c22710be888e55b68", + "reference": "b5a46ec66a4b77d4bd39d58c22710be888e55b68", "shasum": "" }, "require": { @@ -8400,7 +8400,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.1.6" + "source": "https://github.com/symfony/property-info/tree/v6.1.7" }, "funding": [ { @@ -8416,7 +8416,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2022-10-28T16:23:08+00:00" }, { "name": "symfony/routing", From 8b2731e2e5806932025e71371557d90c5bb8bcfb Mon Sep 17 00:00:00 2001 From: Saura Date: Wed, 9 Nov 2022 11:27:20 +0100 Subject: [PATCH 40/52] Feature/decouple modals (#691) * Moved modals * Add correct imports to test --- .../src/components/App/Fishbowl/index.tsx | 14 ++-- .../components/App/ModalOnBoarding/index.tsx | 6 +- .../App/OnBoarding/OnBoardingSlider.tsx | 4 +- .../src/components/App/OnBoarding/index.tsx | 5 +- .../components/App/OnBoardingTour/index.tsx | 9 +-- .../src/components/App/Participants/index.tsx | 5 +- .../src/components/App/PreFishbowl/index.tsx | 5 +- frontend/src/contexts/AuthContext.tsx | 2 +- frontend/src/contexts/ModalsContext.tsx | 80 +++++++++++++++++++ frontend/src/contexts/StooaManager.tsx | 43 +--------- frontend/src/layouts/App/index.tsx | 11 ++- .../src/types/{ => contexts}/auth-context.ts | 0 frontend/src/types/contexts/modals-context.ts | 24 ++++++ .../src/types/{ => contexts}/stooa-context.ts | 13 +-- .../App/OnBoardingTour/OnBoardingTour.test.js | 13 ++- .../App/PreFishbowl/PreFishbowl.test.js | 7 +- 16 files changed, 157 insertions(+), 84 deletions(-) create mode 100644 frontend/src/contexts/ModalsContext.tsx rename frontend/src/types/{ => contexts}/auth-context.ts (100%) create mode 100644 frontend/src/types/contexts/modals-context.ts rename frontend/src/types/{ => contexts}/stooa-context.ts (58%) diff --git a/frontend/src/components/App/Fishbowl/index.tsx b/frontend/src/components/App/Fishbowl/index.tsx index 9a18c28fc..5bf4a94a8 100644 --- a/frontend/src/components/App/Fishbowl/index.tsx +++ b/frontend/src/components/App/Fishbowl/index.tsx @@ -32,6 +32,7 @@ import { isTimeLessThanNMinutes } from '@/lib/helpers'; import ModalConfirmLeaving from '../ModalConfirmLeaving'; import { useWindowSize } from '@/hooks/useWIndowSize'; import { BREAKPOINTS } from '@/ui/settings'; +import { useModals } from '@/contexts/ModalsContext'; const Header = dynamic(import('../Header'), { loading: () =>
}); const Footer = dynamic(import('../Footer'), { loading: () =>
}); @@ -39,15 +40,10 @@ const Seats = dynamic(import('../Seats'), { loading: () =>
}); const Fishbowl: FC = () => { const [play] = useSound(`${process.env.NEXT_PUBLIC_APP_DOMAIN}/sounds/ding.mp3`); - const { - data, - isModerator, - participantToKick, - setParticipantToKick, - showOnBoardingModal, - showConfirmCloseTabModal, - setShowConfirmCloseTabModal - } = useStooa(); + const { data, isModerator, participantToKick, setParticipantToKick } = useStooa(); + + const { showOnBoardingModal, showConfirmCloseTabModal, setShowConfirmCloseTabModal } = + useModals(); const { width } = useWindowSize(); diff --git a/frontend/src/components/App/ModalOnBoarding/index.tsx b/frontend/src/components/App/ModalOnBoarding/index.tsx index d459dfa61..8f0d28a0c 100644 --- a/frontend/src/components/App/ModalOnBoarding/index.tsx +++ b/frontend/src/components/App/ModalOnBoarding/index.tsx @@ -13,11 +13,13 @@ import Cross from '@/ui/svg/cross.svg'; import OnboardingModal from '@/components/App/ModalOnBoarding/styles'; import OnBoardingSlider from '@/components/App/OnBoarding/OnBoardingSlider'; import { useStooa } from '@/contexts/StooaManager'; +import { useModals } from '@/contexts/ModalsContext'; import { setOnBoardingCookie } from '@/lib/auth'; const ModalOnboarding = () => { - const { toggleOnBoarding, isModerator, onBoardingTooltipSeen, setActiveOnBoardingTooltip } = - useStooa(); + const { isModerator } = useStooa(); + + const { toggleOnBoarding, setActiveOnBoardingTooltip, onBoardingTooltipSeen } = useModals(); const skipOnBoarding = () => { toggleOnBoarding('skip'); diff --git a/frontend/src/components/App/OnBoarding/OnBoardingSlider.tsx b/frontend/src/components/App/OnBoarding/OnBoardingSlider.tsx index d77c029d6..73c8d975d 100644 --- a/frontend/src/components/App/OnBoarding/OnBoardingSlider.tsx +++ b/frontend/src/components/App/OnBoarding/OnBoardingSlider.tsx @@ -22,6 +22,7 @@ import useTranslation from 'next-translate/useTranslation'; import onBoardingDataWithIntroduction from '@/components/App/OnBoarding/dataWithIntroduction.json'; import onBoardingDataWithoutIntroduction from '@/components/App/OnBoarding/dataWithoutIntroduction.json'; +import { useModals } from '@/contexts/ModalsContext'; interface Arrow { currentSlide?: number; @@ -55,7 +56,8 @@ const OnBoardingSlider = ({ skipOnBoarding }: { skipOnBoarding: () => void }) => const sliderRef = useRef(null); // const [onBoardingData, setOnBoardingData] = useState([]); const { t } = useTranslation('on-boarding'); - const { data: fishbowlData, showOnBoardingModal, isModerator } = useStooa(); + const { data: fishbowlData, isModerator } = useStooa(); + const { showOnBoardingModal } = useModals(); let onBoardingData; if (fishbowlData.hasIntroduction) { diff --git a/frontend/src/components/App/OnBoarding/index.tsx b/frontend/src/components/App/OnBoarding/index.tsx index 9365171af..7d096ccc5 100644 --- a/frontend/src/components/App/OnBoarding/index.tsx +++ b/frontend/src/components/App/OnBoarding/index.tsx @@ -14,16 +14,17 @@ import Cross from '@/ui/svg/cross.svg'; import QuestionMark from '@/ui/svg/questionmark.svg'; import OnboardingWrapper, { Icon, Tooltip } from '@/components/App/OnBoarding/styles'; import { useStooa } from '@/contexts/StooaManager'; +import { useModals } from '@/contexts/ModalsContext'; const OnBoarding = () => { + const { isModerator } = useStooa(); const { - isModerator, activeOnBoardingTooltip, setActiveOnBoardingTooltip, toggleOnBoarding, setOnBoardingTooltipSeen, setShowOnBoardingTour - } = useStooa(); + } = useModals(); const { t } = useTranslation('on-boarding'); const handleClick = (): void => { diff --git a/frontend/src/components/App/OnBoardingTour/index.tsx b/frontend/src/components/App/OnBoardingTour/index.tsx index 767f9c949..615718b5f 100644 --- a/frontend/src/components/App/OnBoardingTour/index.tsx +++ b/frontend/src/components/App/OnBoardingTour/index.tsx @@ -19,6 +19,7 @@ import StepTooltip from '@/components/App/OnBoardingTour/StepTooltip'; import useTranslation from 'next-translate/useTranslation'; import { pushEventDataLayer } from '@/lib/analytics'; import { StepsProps } from 'intro.js-react'; +import { useModals } from '@/contexts/ModalsContext'; const Steps = dynamic(() => import('intro.js-react').then(mod => mod.Steps), { ssr: false @@ -32,16 +33,14 @@ type step = { }; const OnBoardingTour = () => { + const { isModerator, data, conferenceReady, conferenceStatus } = useStooa(); + const { - isModerator, - data, - conferenceReady, - conferenceStatus, showOnBoardingTour, setShowOnBoardingTour, setActiveOnBoardingTooltip, onBoardingTooltipSeen - } = useStooa(); + } = useModals(); const { t } = useTranslation('on-boarding-tour'); diff --git a/frontend/src/components/App/Participants/index.tsx b/frontend/src/components/App/Participants/index.tsx index 2d1822e5a..207c4d011 100644 --- a/frontend/src/components/App/Participants/index.tsx +++ b/frontend/src/components/App/Participants/index.tsx @@ -27,6 +27,7 @@ import { ParticipantsDrawer, ParticipantsToggle, Icon } from '@/components/App/P import ButtonCopyUrl from '@/components/Common/ButtonCopyUrl'; import { useStooa } from '@/contexts/StooaManager'; import { getApiParticipantList } from '@/repository/ApiParticipantRepository'; +import { useModals } from '@/contexts/ModalsContext'; const initialParticipant: Participant = { id: '', @@ -63,7 +64,9 @@ const Participants: React.FC = ({ initialized, fid, toggleParticipants, o ]); const [roomParticipants, setRoomParticipants] = useState([initialParticipant]); - const { data, showOnBoardingTour, getPassword } = useStooa(); + const { data, getPassword } = useStooa(); + + const { showOnBoardingTour } = useModals(); const pingParticipant = () => { ping(lang, fid); diff --git a/frontend/src/components/App/PreFishbowl/index.tsx b/frontend/src/components/App/PreFishbowl/index.tsx index cded3373a..75ef4b25b 100644 --- a/frontend/src/components/App/PreFishbowl/index.tsx +++ b/frontend/src/components/App/PreFishbowl/index.tsx @@ -31,12 +31,13 @@ import Yellow from '@/ui/svg/blobs/yellow.svg'; import Image from 'next/image'; import { useEffect } from 'react'; import { pushEventDataLayer } from '@/lib/analytics'; +import { useModals } from '@/contexts/ModalsContext'; const PreFishbowl = () => { const router = useRouter(); const { fid } = router.query; - const { data, isModerator, conferenceStatus, timeStatus, toggleOnBoarding, getPassword } = - useStooa(); + const { data, isModerator, conferenceStatus, timeStatus, getPassword } = useStooa(); + const { toggleOnBoarding } = useModals(); const { t, lang } = useTranslation('fishbowl'); diff --git a/frontend/src/contexts/AuthContext.tsx b/frontend/src/contexts/AuthContext.tsx index e9b1e5d72..1df6aee48 100644 --- a/frontend/src/contexts/AuthContext.tsx +++ b/frontend/src/contexts/AuthContext.tsx @@ -36,7 +36,7 @@ import { setToken } from '@/lib/auth'; -import { Auth, StatusPayload } from '@/types/auth-context'; +import { Auth, StatusPayload } from '@/types/contexts/auth-context'; import userRepository from '@/jitsi/User'; import api from '@/lib/api'; import { AuthToken } from '@/lib/auth/authToken'; diff --git a/frontend/src/contexts/ModalsContext.tsx b/frontend/src/contexts/ModalsContext.tsx new file mode 100644 index 000000000..8ae9a4ff3 --- /dev/null +++ b/frontend/src/contexts/ModalsContext.tsx @@ -0,0 +1,80 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { useCallback, useEffect, useState } from 'react'; + +import { pushEventDataLayer } from '@/lib/analytics'; +import { getOnBoardingCookie } from '@/lib/auth'; +import { ModalsContextValues } from '@/types/contexts/modals-context'; +import { useStateValue } from './AppContext'; +import createGenericContext from './createGenericContext'; +import { IConferenceStatus } from '@/jitsi/Status'; + +const [useModals, ModalsContextProvider] = createGenericContext(); + +const ModalsProvider = ({ + isModerator, + children +}: { + isModerator: boolean; + children: JSX.Element; +}) => { + const [{ conferenceStatus }] = useStateValue(); + + const [showOnBoardingModal, setShowOnBoardingModal] = useState(false); + const [showConfirmCloseTabModal, setShowConfirmCloseTabModal] = useState(false); + const [activeOnBoardingTooltip, setActiveOnBoardingTooltip] = useState(false); + const [onBoardingTooltipSeen, setOnBoardingTooltipSeen] = useState(false); + const [showOnBoardingTour, setShowOnBoardingTour] = useState(false); + + const toggleOnBoarding = (location: string) => { + pushEventDataLayer({ + action: showOnBoardingModal ? 'OnBoarding close' : 'OnBoarding open', + category: location, + label: window.location.href + }); + + setShowOnBoardingModal(!showOnBoardingModal); + }; + + const shouldShowOnboardingModal = useCallback(() => { + const cookie = getOnBoardingCookie(isModerator); + + if (!cookie && conferenceStatus === IConferenceStatus.NOT_STARTED && isModerator) { + setShowOnBoardingModal(true); + setOnBoardingTooltipSeen(false); + } + }, [conferenceStatus, isModerator]); + + useEffect(() => { + shouldShowOnboardingModal(); + }, []); + + return ( + + {children} + + ); +}; + +export { useModals, ModalsProvider }; diff --git a/frontend/src/contexts/StooaManager.tsx b/frontend/src/contexts/StooaManager.tsx index 89684a84a..c9002cd00 100644 --- a/frontend/src/contexts/StooaManager.tsx +++ b/frontend/src/contexts/StooaManager.tsx @@ -45,10 +45,8 @@ import seatsRepository from '@/jitsi/Seats'; import { toast } from 'react-toastify'; import { REASON_CONDUCT_VIOLATION, REASON_NO_PARTICIPATING } from '@/lib/Reasons'; -import { StooaContextValues } from '@/types/stooa-context'; +import { StooaContextValues } from '@/types/contexts/stooa-context'; import { Participant } from '@/types/participant'; -import { pushEventDataLayer } from '@/lib/analytics'; -import { getOnBoardingCookie } from '@/lib/auth'; import createGenericContext from '@/contexts/createGenericContext'; import Conference from '@/jitsi/Conference'; import { Fishbowl } from '@/types/api-platform'; @@ -73,11 +71,6 @@ const StooaProvider = ({ const [tenMinuteToastSent, seTenMinuteToastSent] = useState(false); const [lastMinuteToastSent, setLastMinuteToastSent] = useState(false); const [participantToKick, setParticipantToKick] = useState(); - const [showOnBoardingModal, setShowOnBoardingModal] = useState(false); - const [showConfirmCloseTabModal, setShowConfirmCloseTabModal] = useState(false); - const [activeOnBoardingTooltip, setActiveOnBoardingTooltip] = useState(false); - const [onBoardingTooltipSeen, setOnBoardingTooltipSeen] = useState(false); - const [showOnBoardingTour, setShowOnBoardingTour] = useState(false); const [fishbowlPassword, setFishbowlPassword] = useState(); const { t, lang } = useTranslation('app'); @@ -256,25 +249,6 @@ const StooaProvider = ({ const onIntroduction = conferenceStatus === IConferenceStatus.INTRODUCTION && !isModerator; - const toggleOnBoarding = (location: string) => { - pushEventDataLayer({ - action: showOnBoardingModal ? 'OnBoarding close' : 'OnBoarding open', - category: location, - label: window.location.href - }); - - setShowOnBoardingModal(!showOnBoardingModal); - }; - - const shouldShowOnboardingModal = () => { - const cookie = getOnBoardingCookie(isModerator); - - if (!cookie && conferenceStatus === IConferenceStatus.NOT_STARTED && isModerator) { - setShowOnBoardingModal(true); - setOnBoardingTooltipSeen(false); - } - }; - useEffect(() => { if ( !prejoin && @@ -337,10 +311,6 @@ const StooaProvider = ({ timeUpInterval.current = window.setInterval(checkIsTimeUp, 1000); }, [tenMinuteToastSent, lastMinuteToastSent]); // eslint-disable-line react-hooks/exhaustive-deps - useEffect(() => { - shouldShowOnboardingModal(); - }, []); - return ( = ({ return ( - - - {children} - + + + + {children} + + ); diff --git a/frontend/src/types/auth-context.ts b/frontend/src/types/contexts/auth-context.ts similarity index 100% rename from frontend/src/types/auth-context.ts rename to frontend/src/types/contexts/auth-context.ts diff --git a/frontend/src/types/contexts/modals-context.ts b/frontend/src/types/contexts/modals-context.ts new file mode 100644 index 000000000..c3bf5ffaa --- /dev/null +++ b/frontend/src/types/contexts/modals-context.ts @@ -0,0 +1,24 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import { Dispatch, SetStateAction } from 'react'; + +export interface ModalsContextValues { + showOnBoardingModal: boolean; + setShowOnBoardingModal: Dispatch>; + toggleOnBoarding: (location: string) => void; + activeOnBoardingTooltip: boolean; + setActiveOnBoardingTooltip: Dispatch>; + onBoardingTooltipSeen: boolean; + setOnBoardingTooltipSeen: Dispatch>; + showConfirmCloseTabModal: boolean; + setShowConfirmCloseTabModal: Dispatch>; + showOnBoardingTour: boolean; + setShowOnBoardingTour: Dispatch>; +} diff --git a/frontend/src/types/stooa-context.ts b/frontend/src/types/contexts/stooa-context.ts similarity index 58% rename from frontend/src/types/stooa-context.ts rename to frontend/src/types/contexts/stooa-context.ts index e8c4cd8a0..335e9f735 100644 --- a/frontend/src/types/stooa-context.ts +++ b/frontend/src/types/contexts/stooa-context.ts @@ -10,7 +10,7 @@ import { IConferenceStatus, ITimeStatus } from '@/jitsi/Status'; import { Dispatch, SetStateAction } from 'react'; import { Participant } from '@/types/participant'; -import { Fishbowl } from './api-platform'; +import { Fishbowl } from '../api-platform'; export interface StooaContextValues { conferenceReady: boolean; @@ -21,17 +21,6 @@ export interface StooaContextValues { timeStatus: ITimeStatus; participantToKick: Participant | undefined; setParticipantToKick: Dispatch>; - showOnBoardingModal: boolean; - setShowOnBoardingModal: Dispatch>; - toggleOnBoarding: (location: string) => void; - activeOnBoardingTooltip: boolean; - setActiveOnBoardingTooltip: Dispatch>; - onBoardingTooltipSeen: boolean; - setOnBoardingTooltipSeen: Dispatch>; - showConfirmCloseTabModal: boolean; - setShowConfirmCloseTabModal: Dispatch>; - showOnBoardingTour: boolean; - setShowOnBoardingTour: Dispatch>; getPassword: () => string; setFishbowlPassword: Dispatch>; } diff --git a/frontend/tests/unit/components/App/OnBoardingTour/OnBoardingTour.test.js b/frontend/tests/unit/components/App/OnBoardingTour/OnBoardingTour.test.js index 8231c3ff3..7fe6a7cb7 100644 --- a/frontend/tests/unit/components/App/OnBoardingTour/OnBoardingTour.test.js +++ b/frontend/tests/unit/components/App/OnBoardingTour/OnBoardingTour.test.js @@ -11,10 +11,12 @@ import OnBoardingTour from '@/components/App/OnBoardingTour'; import { render, waitFor } from '@testing-library/react'; import { makeCurrentFishbowl } from '../../../factories/fishbowl'; import { useStooa } from '@/contexts/StooaManager'; +import { useModals } from '@/contexts/ModalsContext'; import { IConferenceStatus } from '@/lib/jitsi-modules/Status'; import OnBoardingTourCookie from '@/lib/OnBoardingTourCookie'; jest.mock('@/contexts/StooaManager'); +jest.mock('@/contexts/ModalsContext'); jest.mock('@/lib/OnBoardingTourCookie'); beforeEach(() => { @@ -22,11 +24,15 @@ beforeEach(() => { isModerator: false, data: makeCurrentFishbowl(), conferenceReady: true, - conferenceStatus: IConferenceStatus.RUNNING, + conferenceStatus: IConferenceStatus.RUNNING + }); + + useModals.mockReturnValue({ showOnBoardingTour: true, setShowOnBoardingTour: () => true, setActiveOnBoardingTooltip: () => false }); + OnBoardingTourCookie.setOnBoardingCookie.mockReturnValue(true); }); @@ -45,7 +51,10 @@ describe('On boarding tour component', () => { isModerator: true, data: makeCurrentFishbowl(), conferenceReady: true, - conferenceStatus: IConferenceStatus.RUNNING, + conferenceStatus: IConferenceStatus.RUNNING + }); + + useModals.mockReturnValue({ showOnBoardingTour: false, setShowOnBoardingTour: () => false, setActiveOnBoardingTooltip: () => false diff --git a/frontend/tests/unit/components/App/PreFishbowl/PreFishbowl.test.js b/frontend/tests/unit/components/App/PreFishbowl/PreFishbowl.test.js index 9c2d1ce07..3d7d6c404 100644 --- a/frontend/tests/unit/components/App/PreFishbowl/PreFishbowl.test.js +++ b/frontend/tests/unit/components/App/PreFishbowl/PreFishbowl.test.js @@ -10,12 +10,14 @@ import { fireEvent, render } from '@testing-library/react'; import PreFishbowl from '@/components/App/PreFishbowl'; import { useStooa } from '@/contexts/StooaManager'; +import { useModals } from '@/contexts/ModalsContext'; import { IConferenceStatus, ITimeStatus } from '@/lib/jitsi-modules/Status'; import { makeCurrentFishbowl } from '../../../factories/fishbowl'; import { pushEventDataLayer } from '@/lib/analytics'; jest.mock('@/lib/analytics'); jest.mock('@/contexts/StooaManager'); +jest.mock('@/contexts/ModalsContext'); jest.mock('@/components/App/PreFishbowl/PreFishbowlParticipants', () => () => ( )); @@ -39,11 +41,14 @@ beforeEach(() => { useStooa.mockReturnValue({ isModerator: false, data: currentFishbowl, - toggleOnBoarding: jest.fn(), timeStatus: ITimeStatus.DEFAULT, conferenceStatus: IConferenceStatus.NOT_STARTED, getPassword: jest.fn() }); + + useModals.mockReturnValue({ + toggleOnBoarding: jest.fn() + }); }); describe('Pre Fishbowl component', () => { From 4d3e94e9a02da78ce0baa1476665e981b10de627 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Nov 2022 11:31:33 +0100 Subject: [PATCH 41/52] Update dependency vimeo/psalm to v4.30.0 (#707) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index c793161c0..2dc0cd9fb 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -75,7 +75,7 @@ "symfony/stopwatch": "6.1.5", "symfony/var-dumper": "6.1.6", "symfony/web-profiler-bundle": "6.1.6", - "vimeo/psalm": "4.29.0", + "vimeo/psalm": "4.30.0", "weirdan/doctrine-psalm-plugin": "2.5.0", "zenstruck/foundry": "1.22.1" }, diff --git a/backend/composer.lock b/backend/composer.lock index 3d0ba9115..d906d1c89 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c465f3a151e92511dd716876d1e482c7", + "content-hash": "4314febf9ed23fab74cd12fda9f4395f", "packages": [ { "name": "api-platform/core", @@ -10860,16 +10860,16 @@ }, { "name": "composer/pcre", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "url": "https://api.github.com/repos/composer/pcre/zipball/4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", + "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", "shasum": "" }, "require": { @@ -10911,7 +10911,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" + "source": "https://github.com/composer/pcre/tree/3.0.2" }, "funding": [ { @@ -10927,7 +10927,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T20:21:48+00:00" + "time": "2022-11-03T20:24:16+00:00" }, { "name": "composer/semver", @@ -14905,16 +14905,16 @@ }, { "name": "vimeo/psalm", - "version": "4.29.0", + "version": "4.30.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3" + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69", + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69", "shasum": "" }, "require": { @@ -15007,9 +15007,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.29.0" + "source": "https://github.com/vimeo/psalm/tree/4.30.0" }, - "time": "2022-10-11T17:09:17+00:00" + "time": "2022-11-06T20:37:08+00:00" }, { "name": "webmozart/path-util", From 64875bb6fa5e7d282b6f43d907ff495899bf85fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Nov 2022 10:33:32 +0000 Subject: [PATCH 42/52] Update dependency @types/node to v18.11.9 --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f51886f13..528bf31b5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "license": "MPL-2.0", "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.7", + "@types/node": "18.11.9", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", @@ -3685,9 +3685,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "node_modules/@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -18644,9 +18644,9 @@ "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" }, "@types/node": { - "version": "18.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", - "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==" + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" }, "@types/parse-json": { "version": "4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 4b59261f1..a7faf79ad 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@apollo/client": "3.6.10", - "@types/node": "18.11.7", + "@types/node": "18.11.9", "@types/react": "17.0.51", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", From dd58ee59f7339d841ec1ff1c9eba468ff89576de Mon Sep 17 00:00:00 2001 From: Saura Date: Wed, 9 Nov 2022 15:24:39 +0100 Subject: [PATCH 43/52] Feature/decouple user (#680) * Moving components * Moving user * wip * Fix test import * Update test imports * Fix modals import --- frontend/src/components/App/FishbowlPreJoin/connection.ts | 2 +- frontend/src/components/App/ModalOnBoarding/index.tsx | 2 +- frontend/src/components/App/ModalShareLink/index.tsx | 2 +- .../src/components/App/Participants/ParticipantCard.tsx | 2 +- frontend/src/components/App/Participants/index.tsx | 2 +- .../components/App/PreFishbowl/PreFishbowlParticipants.tsx | 2 +- frontend/src/contexts/AuthContext.tsx | 4 ++-- frontend/src/contexts/ModalsContext.tsx | 2 +- frontend/src/lib/apollo-client.js | 2 +- frontend/src/lib/jitsi-modules/Conference.js | 2 +- frontend/src/pages/edit-profile.tsx | 2 +- frontend/src/pages/fishbowl/list.tsx | 2 +- frontend/src/pages/log-in.tsx | 2 +- frontend/src/pages/recover-password.tsx | 2 +- frontend/src/pages/register.tsx | 2 +- frontend/src/pages/reset-password/[token].tsx | 2 +- frontend/src/repository/ApiParticipantRepository.ts | 2 +- .../{components/App => user}/FishbowlList/FishbowlCard.tsx | 2 +- .../src/{components/App => user}/FishbowlList/index.tsx | 6 +++--- .../src/{components/App => user}/FishbowlList/styles.ts | 0 frontend/src/{lib => user}/auth/authToken.ts | 0 frontend/src/{lib => user}/auth/index.ts | 2 +- .../src/{components/Web/Forms => user/forms}/log-in.tsx | 0 .../src/{components/Web/Forms => user/forms}/profile.tsx | 2 +- .../Web/Forms => user/forms}/recover-password.tsx | 0 .../src/{components/Web/Forms => user/forms}/register.tsx | 0 .../{components/Web/Forms => user/forms}/reset-password.tsx | 0 .../App/PreFishbowl/PreFishbowlParticipants.test.js | 4 ++-- frontend/tests/unit/components/Web/FishbowlCard.test.js | 2 +- 29 files changed, 27 insertions(+), 27 deletions(-) rename frontend/src/{components/App => user}/FishbowlList/FishbowlCard.tsx (97%) rename frontend/src/{components/App => user}/FishbowlList/index.tsx (98%) rename frontend/src/{components/App => user}/FishbowlList/styles.ts (100%) rename frontend/src/{lib => user}/auth/authToken.ts (100%) rename frontend/src/{lib => user}/auth/index.ts (98%) rename frontend/src/{components/Web/Forms => user/forms}/log-in.tsx (100%) rename frontend/src/{components/Web/Forms => user/forms}/profile.tsx (99%) rename frontend/src/{components/Web/Forms => user/forms}/recover-password.tsx (100%) rename frontend/src/{components/Web/Forms => user/forms}/register.tsx (100%) rename frontend/src/{components/Web/Forms => user/forms}/reset-password.tsx (100%) diff --git a/frontend/src/components/App/FishbowlPreJoin/connection.ts b/frontend/src/components/App/FishbowlPreJoin/connection.ts index 29b591ad0..6e9720cc4 100644 --- a/frontend/src/components/App/FishbowlPreJoin/connection.ts +++ b/frontend/src/components/App/FishbowlPreJoin/connection.ts @@ -8,7 +8,7 @@ */ import api from '@/lib/api'; -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; export const connectWithPassword = async ( password: string, diff --git a/frontend/src/components/App/ModalOnBoarding/index.tsx b/frontend/src/components/App/ModalOnBoarding/index.tsx index 8f0d28a0c..98eaca73c 100644 --- a/frontend/src/components/App/ModalOnBoarding/index.tsx +++ b/frontend/src/components/App/ModalOnBoarding/index.tsx @@ -13,8 +13,8 @@ import Cross from '@/ui/svg/cross.svg'; import OnboardingModal from '@/components/App/ModalOnBoarding/styles'; import OnBoardingSlider from '@/components/App/OnBoarding/OnBoardingSlider'; import { useStooa } from '@/contexts/StooaManager'; +import { setOnBoardingCookie } from '@/user/auth'; import { useModals } from '@/contexts/ModalsContext'; -import { setOnBoardingCookie } from '@/lib/auth'; const ModalOnboarding = () => { const { isModerator } = useStooa(); diff --git a/frontend/src/components/App/ModalShareLink/index.tsx b/frontend/src/components/App/ModalShareLink/index.tsx index f2a0dfab6..fffa2a10b 100644 --- a/frontend/src/components/App/ModalShareLink/index.tsx +++ b/frontend/src/components/App/ModalShareLink/index.tsx @@ -16,7 +16,7 @@ import Modal from '@/ui/Modal'; import Cross from '@/ui/svg/cross.svg'; import ButtonCopyUrl from '@/components/Common/ButtonCopyUrl'; import { useStooa } from '@/contexts/StooaManager'; -import { getOnBoardingCookie, isFishbowlShareLinkCookie, setShareLinkCookie } from '@/lib/auth'; +import { getOnBoardingCookie, isFishbowlShareLinkCookie, setShareLinkCookie } from '@/user/auth'; const ModalShareLink: React.FC = () => { const { t } = useTranslation('fishbowl'); diff --git a/frontend/src/components/App/Participants/ParticipantCard.tsx b/frontend/src/components/App/Participants/ParticipantCard.tsx index 329a0ea5a..72fd2b971 100644 --- a/frontend/src/components/App/Participants/ParticipantCard.tsx +++ b/frontend/src/components/App/Participants/ParticipantCard.tsx @@ -10,7 +10,7 @@ import React from 'react'; import Link from 'next/link'; -import { isCurrentGuest } from '@/lib/auth'; +import { isCurrentGuest } from '@/user/auth'; import { pushEventDataLayer } from '@/lib/analytics'; import Linkedin from '@/ui/svg/share-linkedin.svg'; diff --git a/frontend/src/components/App/Participants/index.tsx b/frontend/src/components/App/Participants/index.tsx index 207c4d011..f139dd394 100644 --- a/frontend/src/components/App/Participants/index.tsx +++ b/frontend/src/components/App/Participants/index.tsx @@ -12,7 +12,7 @@ import useTranslation from 'next-translate/useTranslation'; import { Participant } from '@/types/participant'; import { pushEventDataLayer } from '@/lib/analytics'; -import { ping } from '@/lib/auth'; +import { ping } from '@/user/auth'; import { getParticipantList } from '@/lib/jitsi'; import ParticipantCard from '@/components/App/Participants/ParticipantCard'; diff --git a/frontend/src/components/App/PreFishbowl/PreFishbowlParticipants.tsx b/frontend/src/components/App/PreFishbowl/PreFishbowlParticipants.tsx index 5d407027d..24ee062f7 100644 --- a/frontend/src/components/App/PreFishbowl/PreFishbowlParticipants.tsx +++ b/frontend/src/components/App/PreFishbowl/PreFishbowlParticipants.tsx @@ -13,7 +13,7 @@ import { Participant } from '@/types/participant'; import useTranslation from 'next-translate/useTranslation'; import ParticipantCard from '@/components/App/Participants/ParticipantCard'; import People from '@/ui/svg/people.svg'; -import { ping } from '@/lib/auth'; +import { ping } from '@/user/auth'; import { useRouter } from 'next/router'; import { StyledParticipantListWrapper, diff --git a/frontend/src/contexts/AuthContext.tsx b/frontend/src/contexts/AuthContext.tsx index 1df6aee48..8c82e9b60 100644 --- a/frontend/src/contexts/AuthContext.tsx +++ b/frontend/src/contexts/AuthContext.tsx @@ -34,12 +34,12 @@ import { getAuthToken, setRefreshToken, setToken -} from '@/lib/auth'; +} from '@/user/auth'; import { Auth, StatusPayload } from '@/types/contexts/auth-context'; import userRepository from '@/jitsi/User'; import api from '@/lib/api'; -import { AuthToken } from '@/lib/auth/authToken'; +import { AuthToken } from '@/user/auth/authToken'; import Layout from '@/layouts/Clean'; import LoadingIcon from '@/components/Common/LoadingIcon'; import { User } from '@/types/user'; diff --git a/frontend/src/contexts/ModalsContext.tsx b/frontend/src/contexts/ModalsContext.tsx index 8ae9a4ff3..a377d8aa7 100644 --- a/frontend/src/contexts/ModalsContext.tsx +++ b/frontend/src/contexts/ModalsContext.tsx @@ -10,7 +10,7 @@ import { useCallback, useEffect, useState } from 'react'; import { pushEventDataLayer } from '@/lib/analytics'; -import { getOnBoardingCookie } from '@/lib/auth'; +import { getOnBoardingCookie } from '@/user/auth'; import { ModalsContextValues } from '@/types/contexts/modals-context'; import { useStateValue } from './AppContext'; import createGenericContext from './createGenericContext'; diff --git a/frontend/src/lib/apollo-client.js b/frontend/src/lib/apollo-client.js index cf67b81aa..73359053a 100644 --- a/frontend/src/lib/apollo-client.js +++ b/frontend/src/lib/apollo-client.js @@ -9,7 +9,7 @@ import { ApolloClient, ApolloProvider, createHttpLink, InMemoryCache } from '@apollo/client'; import { setContext } from '@apollo/client/link/context'; -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; import LocaleCookie from '@/lib/LocaleCookie'; const httpLink = createHttpLink({ diff --git a/frontend/src/lib/jitsi-modules/Conference.js b/frontend/src/lib/jitsi-modules/Conference.js index d2685a6e4..8f5fe57fe 100644 --- a/frontend/src/lib/jitsi-modules/Conference.js +++ b/frontend/src/lib/jitsi-modules/Conference.js @@ -7,7 +7,7 @@ * file that was distributed with this source code. */ -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; import { getBackendSafeRoomName, dispatchEvent } from '@/lib/helpers'; import { CONFERENCE_IS_LOCKABLE, diff --git a/frontend/src/pages/edit-profile.tsx b/frontend/src/pages/edit-profile.tsx index 01cfd8678..8902b89fa 100644 --- a/frontend/src/pages/edit-profile.tsx +++ b/frontend/src/pages/edit-profile.tsx @@ -13,7 +13,7 @@ import useTranslation from 'next-translate/useTranslation'; import { GET_SELF_USER } from '@/lib/gql/User'; -const ProfileForm = dynamic(import('@/components/Web/Forms/profile'), { loading: () =>
}); +const ProfileForm = dynamic(import('@/user/forms/profile'), { loading: () =>
}); const Layout = dynamic(import('@/layouts/Default'), { loading: () =>
}); const Loader = dynamic(import('@/components/Web/Loader'), { loading: () =>
}); const Error = dynamic(import('@/components/Common/Error'), { loading: () =>
}); diff --git a/frontend/src/pages/fishbowl/list.tsx b/frontend/src/pages/fishbowl/list.tsx index 4e0ef9507..7612207f4 100644 --- a/frontend/src/pages/fishbowl/list.tsx +++ b/frontend/src/pages/fishbowl/list.tsx @@ -7,7 +7,7 @@ * file that was distributed with this source code. */ -import FishbowlList from '@/components/App/FishbowlList'; +import FishbowlList from '@/user/FishbowlList'; import dynamic from 'next/dynamic'; import { useRouter } from 'next/router'; import { ToastContainer } from 'react-toastify'; diff --git a/frontend/src/pages/log-in.tsx b/frontend/src/pages/log-in.tsx index 94b41e2ad..a0bf75ca8 100644 --- a/frontend/src/pages/log-in.tsx +++ b/frontend/src/pages/log-in.tsx @@ -11,7 +11,7 @@ import useTranslation from 'next-translate/useTranslation'; import { useAuth } from '@/contexts/AuthContext'; import Layout from '@/layouts/Default'; -import LogInForm from '@/components/Web/Forms/log-in'; +import LogInForm from '@/user/forms/log-in'; const SignIn = () => { const { t } = useTranslation('login'); diff --git a/frontend/src/pages/recover-password.tsx b/frontend/src/pages/recover-password.tsx index c8f8dd91f..2f5c12440 100644 --- a/frontend/src/pages/recover-password.tsx +++ b/frontend/src/pages/recover-password.tsx @@ -10,7 +10,7 @@ import useTranslation from 'next-translate/useTranslation'; import { useAuth } from '@/contexts/AuthContext'; -import RecoverPasswordForm from '@/components/Web/Forms/recover-password'; +import RecoverPasswordForm from '@/user/forms/recover-password'; import Layout from '@/layouts/Default'; import Description from '@/components/Common/Description'; diff --git a/frontend/src/pages/register.tsx b/frontend/src/pages/register.tsx index 4a3375b98..cdd13ca0f 100644 --- a/frontend/src/pages/register.tsx +++ b/frontend/src/pages/register.tsx @@ -11,7 +11,7 @@ import useTranslation from 'next-translate/useTranslation'; import { useAuth } from '@/contexts/AuthContext'; import Layout from '@/layouts/Default'; -import RegisterForm from '@/components/Web/Forms/register'; +import RegisterForm from '@/user/forms/register'; const Register = () => { const { t } = useTranslation('register'); diff --git a/frontend/src/pages/reset-password/[token].tsx b/frontend/src/pages/reset-password/[token].tsx index 6bb8970c1..e15394978 100644 --- a/frontend/src/pages/reset-password/[token].tsx +++ b/frontend/src/pages/reset-password/[token].tsx @@ -11,7 +11,7 @@ import { useRouter } from 'next/router'; import useTranslation from 'next-translate/useTranslation'; import { useAuth } from '@/contexts/AuthContext'; -import ResetPasswordForm from '@/components/Web/Forms/reset-password'; +import ResetPasswordForm from '@/user/forms/reset-password'; import Layout from '@/layouts/Default'; const ChangePassword = () => { diff --git a/frontend/src/repository/ApiParticipantRepository.ts b/frontend/src/repository/ApiParticipantRepository.ts index e41ce3804..2fa6abfb8 100644 --- a/frontend/src/repository/ApiParticipantRepository.ts +++ b/frontend/src/repository/ApiParticipantRepository.ts @@ -9,7 +9,7 @@ import api from '@/lib/api'; import LocaleCookie from '@/lib/LocaleCookie'; -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; import { Participant } from '@/types/participant'; const getApiParticipantList = async (lang: string, slug: string): Promise => { diff --git a/frontend/src/components/App/FishbowlList/FishbowlCard.tsx b/frontend/src/user/FishbowlList/FishbowlCard.tsx similarity index 97% rename from frontend/src/components/App/FishbowlList/FishbowlCard.tsx rename to frontend/src/user/FishbowlList/FishbowlCard.tsx index a5e6d4884..2b74e3ed6 100644 --- a/frontend/src/components/App/FishbowlList/FishbowlCard.tsx +++ b/frontend/src/user/FishbowlList/FishbowlCard.tsx @@ -18,7 +18,7 @@ import ButtonCopyUrl from '@/components/Common/ButtonCopyUrl'; import RedirectLink from '@/components/Web/RedirectLink'; import { Fishbowl } from '@/types/api-platform'; -import { CardStyled, CardTitle } from '@/components/App/FishbowlList/styles'; +import { CardStyled, CardTitle } from '@/user/FishbowlList/styles'; import { convertIntoClassName } from '@/lib/helpers'; import Button from '@/components/Common/Button'; import Icon from '@/components/Common/Fields/Icon'; diff --git a/frontend/src/components/App/FishbowlList/index.tsx b/frontend/src/user/FishbowlList/index.tsx similarity index 98% rename from frontend/src/components/App/FishbowlList/index.tsx rename to frontend/src/user/FishbowlList/index.tsx index 8a048078f..ad79465c4 100644 --- a/frontend/src/components/App/FishbowlList/index.tsx +++ b/frontend/src/user/FishbowlList/index.tsx @@ -24,7 +24,7 @@ import { pushEventDataLayer } from '@/lib/analytics'; import RedirectLink from '@/components/Web/RedirectLink'; import LoadingIcon from '@/components/Common/LoadingIcon'; -import FishbowlCard from '@/components/App/FishbowlList/FishbowlCard'; +import FishbowlCard from '@/user/FishbowlList/FishbowlCard'; import { EmptyFishbowlList, FishbowlListWrapper, @@ -34,11 +34,11 @@ import { EditFormWrapper, DetailPlaceholder, MobileBackButton -} from '@/components/App/FishbowlList/styles'; +} from '@/user/FishbowlList/styles'; import FishbowlForm from '@/components/Web/Forms/FishbowlForm'; import Button from '@/components/Common/Button'; -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; import api from '@/lib/api'; import { getIsoDateTimeWithActualTimeZone, isTimeLessThanNMinutes } from '@/lib/helpers'; import { useWindowSize } from '@/hooks/useWIndowSize'; diff --git a/frontend/src/components/App/FishbowlList/styles.ts b/frontend/src/user/FishbowlList/styles.ts similarity index 100% rename from frontend/src/components/App/FishbowlList/styles.ts rename to frontend/src/user/FishbowlList/styles.ts diff --git a/frontend/src/lib/auth/authToken.ts b/frontend/src/user/auth/authToken.ts similarity index 100% rename from frontend/src/lib/auth/authToken.ts rename to frontend/src/user/auth/authToken.ts diff --git a/frontend/src/lib/auth/index.ts b/frontend/src/user/auth/index.ts similarity index 98% rename from frontend/src/lib/auth/index.ts rename to frontend/src/user/auth/index.ts index 8ad038522..8b627d3a1 100644 --- a/frontend/src/lib/auth/index.ts +++ b/frontend/src/user/auth/index.ts @@ -10,7 +10,7 @@ import cookie from 'js-cookie'; import api from '@/lib/api'; -import { AuthToken } from '@/lib/auth/authToken'; +import { AuthToken } from '@/user/auth/authToken'; import userRepository from '@/jitsi/User'; import LocaleCookie from '@/lib/LocaleCookie'; diff --git a/frontend/src/components/Web/Forms/log-in.tsx b/frontend/src/user/forms/log-in.tsx similarity index 100% rename from frontend/src/components/Web/Forms/log-in.tsx rename to frontend/src/user/forms/log-in.tsx diff --git a/frontend/src/components/Web/Forms/profile.tsx b/frontend/src/user/forms/profile.tsx similarity index 99% rename from frontend/src/components/Web/Forms/profile.tsx rename to frontend/src/user/forms/profile.tsx index abf40c456..10cc29a8f 100644 --- a/frontend/src/components/Web/Forms/profile.tsx +++ b/frontend/src/user/forms/profile.tsx @@ -23,7 +23,7 @@ import * as Yup from 'yup'; import { ROUTE_HOME } from '@/app.config'; import { useAuth } from '@/contexts/AuthContext'; import FormikForm from '@/ui/Form'; -import { getAuthToken } from '@/lib/auth'; +import { getAuthToken } from '@/user/auth'; import { UPDATE_USER } from '@/lib/gql/User'; import Input from '@/components/Common/Fields/Input'; import SubmitBtn from '@/components/Web/SubmitBtn'; diff --git a/frontend/src/components/Web/Forms/recover-password.tsx b/frontend/src/user/forms/recover-password.tsx similarity index 100% rename from frontend/src/components/Web/Forms/recover-password.tsx rename to frontend/src/user/forms/recover-password.tsx diff --git a/frontend/src/components/Web/Forms/register.tsx b/frontend/src/user/forms/register.tsx similarity index 100% rename from frontend/src/components/Web/Forms/register.tsx rename to frontend/src/user/forms/register.tsx diff --git a/frontend/src/components/Web/Forms/reset-password.tsx b/frontend/src/user/forms/reset-password.tsx similarity index 100% rename from frontend/src/components/Web/Forms/reset-password.tsx rename to frontend/src/user/forms/reset-password.tsx diff --git a/frontend/tests/unit/components/App/PreFishbowl/PreFishbowlParticipants.test.js b/frontend/tests/unit/components/App/PreFishbowl/PreFishbowlParticipants.test.js index d6dbdac68..d5be88e61 100644 --- a/frontend/tests/unit/components/App/PreFishbowl/PreFishbowlParticipants.test.js +++ b/frontend/tests/unit/components/App/PreFishbowl/PreFishbowlParticipants.test.js @@ -11,10 +11,10 @@ import { render, waitFor } from '@testing-library/react'; import PreFishbowlParticipants from '@/components/App/PreFishbowl/PreFishbowlParticipants'; import { useStateValue } from '@/contexts/AppContext'; import { getApiParticipantList } from '@/repository/ApiParticipantRepository'; -import { ping } from '@/lib/auth'; +import { ping } from '@/user/auth'; import { makeParticipant } from '../../../factories/participant'; -jest.mock('@/lib/auth'); +jest.mock('@/user/auth'); jest.mock('@/contexts/AppContext'); jest.mock('@/repository/ApiParticipantRepository'); jest.mock('@/components/App/ParticipantPlaceholder', () => () => ( diff --git a/frontend/tests/unit/components/Web/FishbowlCard.test.js b/frontend/tests/unit/components/Web/FishbowlCard.test.js index 9414b1058..5e9c7ac40 100644 --- a/frontend/tests/unit/components/Web/FishbowlCard.test.js +++ b/frontend/tests/unit/components/Web/FishbowlCard.test.js @@ -8,7 +8,7 @@ */ import { render, screen } from '@testing-library/react'; -import FishbowlCard from '@/components/App/FishbowlList/FishbowlCard'; +import FishbowlCard from '@/user/FishbowlList/FishbowlCard'; const TWENTY_MINUTES_IN_MS = 20 * 60 * 1000; const HOUR_IN_MS = 1000 * 60 * 60; From a6800182991c860284bca195f1a166af3d87ee48 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 09:33:42 +0100 Subject: [PATCH 44/52] Update dependency eslint to v8.27.0 (#710) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 528bf31b5..6939ca60b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -58,7 +58,7 @@ "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.26.0", + "eslint": "8.27.0", "eslint-config-next": "12.3.2", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", @@ -7473,9 +7473,9 @@ } }, "node_modules/eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.3", @@ -21674,9 +21674,9 @@ } }, "eslint": { - "version": "8.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", - "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.3", diff --git a/frontend/package.json b/frontend/package.json index a7faf79ad..0d7e1584e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -76,7 +76,7 @@ "babel-plugin-transform-dynamic-import": "2.1.0", "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", - "eslint": "8.26.0", + "eslint": "8.27.0", "eslint-config-next": "12.3.2", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", From 2a7c988893f5c903cb7b78d84a22c5e0e4385488 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 08:35:13 +0000 Subject: [PATCH 45/52] Update dependency @types/react to v17.0.52 --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6939ca60b..77d14b017 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,7 +9,7 @@ "dependencies": { "@apollo/client": "3.6.10", "@types/node": "18.11.9", - "@types/react": "17.0.51", + "@types/react": "17.0.52", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", "axios": "0.27.2", @@ -3713,9 +3713,9 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "node_modules/@types/react": { - "version": "17.0.51", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.51.tgz", - "integrity": "sha512-YMddzAE+nSH04BiTJ5GydTxk0/3hckqyuOclg0s6zQYj/XzfRVNzHZAFwZb5SCSavkzTYUtcq/gwjLnvt2Y4cg==", + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -18672,9 +18672,9 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "@types/react": { - "version": "17.0.51", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.51.tgz", - "integrity": "sha512-YMddzAE+nSH04BiTJ5GydTxk0/3hckqyuOclg0s6zQYj/XzfRVNzHZAFwZb5SCSavkzTYUtcq/gwjLnvt2Y4cg==", + "version": "17.0.52", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", + "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", diff --git a/frontend/package.json b/frontend/package.json index 0d7e1584e..78994e194 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,7 +27,7 @@ "dependencies": { "@apollo/client": "3.6.10", "@types/node": "18.11.9", - "@types/react": "17.0.51", + "@types/react": "17.0.52", "@types/styled-components": "5.1.26", "@types/yup": "0.29.14", "axios": "0.27.2", From dcb0d84f5a886799b3e3d1a010a84ad8cfec3be0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 13:02:02 +0100 Subject: [PATCH 46/52] Update dependency eslint-config-next to v12.3.3 (#714) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package-lock.json | 30 +++++++++++++++--------------- frontend/package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 77d14b017..174424339 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -59,7 +59,7 @@ "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", "eslint": "8.27.0", - "eslint-config-next": "12.3.2", + "eslint-config-next": "12.3.3", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", "eslint-plugin-header": "3.1.1", @@ -2831,9 +2831,9 @@ "integrity": "sha512-THKlM+l5a2JUKEC3/X+qZ74gACapD/OQ1dz9p2hi504FB3vdgUgh2lswkWvjLZssxBdHW0FJiWoUYf8z19vxuw==" }, "node_modules/@next/eslint-plugin-next": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.2.tgz", - "integrity": "sha512-Jx0BIS9STamGSbA+vgTxPAi1mRcq4DoH/5kPMs0PFLFi542mmIKUUtYWB61bI+G6KPMTqejYmO3zi+SF6tzGYg==", + "version": "12.3.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.3.tgz", + "integrity": "sha512-s1mPMhhmwc+B97lQ2xzLLEdn3TR6ietc8Z1zLhAEd5Vujqx+Ks7E8Qr8V93I/qTs21WY66zvs1SXKYLvOHbQVw==", "dev": true, "dependencies": { "glob": "7.1.7" @@ -7529,12 +7529,12 @@ } }, "node_modules/eslint-config-next": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.2.tgz", - "integrity": "sha512-ir8t3wRNexUMSKsMNh7J1EWwiBAr2dd015UAiCFvQ/01MRBPmFof1C6PFh/RqlupwamSZlv6j8gfaV1RxHuRoQ==", + "version": "12.3.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.3.tgz", + "integrity": "sha512-ZqovaLqMlWQh9yVbqJ2gvOLk6acAZX4vRkORFsiI5lv9oJDDBbDDeTPG2KmpZ3K+l/wJ+xo6bm4FN90j94snhw==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "12.3.2", + "@next/eslint-plugin-next": "12.3.3", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.21.0", "eslint-import-resolver-node": "^0.3.6", @@ -18080,9 +18080,9 @@ "integrity": "sha512-THKlM+l5a2JUKEC3/X+qZ74gACapD/OQ1dz9p2hi504FB3vdgUgh2lswkWvjLZssxBdHW0FJiWoUYf8z19vxuw==" }, "@next/eslint-plugin-next": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.2.tgz", - "integrity": "sha512-Jx0BIS9STamGSbA+vgTxPAi1mRcq4DoH/5kPMs0PFLFi542mmIKUUtYWB61bI+G6KPMTqejYmO3zi+SF6tzGYg==", + "version": "12.3.3", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.3.tgz", + "integrity": "sha512-s1mPMhhmwc+B97lQ2xzLLEdn3TR6ietc8Z1zLhAEd5Vujqx+Ks7E8Qr8V93I/qTs21WY66zvs1SXKYLvOHbQVw==", "dev": true, "requires": { "glob": "7.1.7" @@ -21815,12 +21815,12 @@ } }, "eslint-config-next": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.2.tgz", - "integrity": "sha512-ir8t3wRNexUMSKsMNh7J1EWwiBAr2dd015UAiCFvQ/01MRBPmFof1C6PFh/RqlupwamSZlv6j8gfaV1RxHuRoQ==", + "version": "12.3.3", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.3.tgz", + "integrity": "sha512-ZqovaLqMlWQh9yVbqJ2gvOLk6acAZX4vRkORFsiI5lv9oJDDBbDDeTPG2KmpZ3K+l/wJ+xo6bm4FN90j94snhw==", "dev": true, "requires": { - "@next/eslint-plugin-next": "12.3.2", + "@next/eslint-plugin-next": "12.3.3", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.21.0", "eslint-import-resolver-node": "^0.3.6", diff --git a/frontend/package.json b/frontend/package.json index 78994e194..162cbccf6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -77,7 +77,7 @@ "cypress": "9.7.0", "cypress-cucumber-preprocessor": "4.3.1", "eslint": "8.27.0", - "eslint-config-next": "12.3.2", + "eslint-config-next": "12.3.3", "eslint-config-prettier": "8.5.0", "eslint-import-resolver-alias": "1.1.2", "eslint-plugin-header": "3.1.1", From 168aa10ffbd1eaf0704421332af553a27dbac17a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Nov 2022 13:15:06 +0100 Subject: [PATCH 47/52] Update dependency phpstan/phpstan to v1.9.2 (#715) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 2dc0cd9fb..554407fc7 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -59,7 +59,7 @@ "doctrine/doctrine-fixtures-bundle": "3.4.2", "ergebnis/composer-normalize": "2.28.3", "friendsofphp/php-cs-fixer": "3.13.0", - "phpstan/phpstan": "1.9.1", + "phpstan/phpstan": "1.9.2", "phpstan/phpstan-doctrine": "1.3.22", "phpstan/phpstan-phpunit": "1.2.2", "phpstan/phpstan-symfony": "1.2.16", diff --git a/backend/composer.lock b/backend/composer.lock index d906d1c89..a2cf3b8a5 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4314febf9ed23fab74cd12fda9f4395f", + "content-hash": "82e66a25c7e9336a82c71d437521f142", "packages": [ { "name": "api-platform/core", @@ -3351,16 +3351,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f" + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", - "reference": "a59c8b5bfd4a236f27efc8b5ce72c313c2b54b5f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", "shasum": "" }, "require": { @@ -3390,7 +3390,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.1" + "source": "https://github.com/phpstan/phpstan/tree/1.9.2" }, "funding": [ { @@ -3406,7 +3406,7 @@ "type": "tidelift" } ], - "time": "2022-11-04T13:35:59+00:00" + "time": "2022-11-10T09:56:11+00:00" }, { "name": "psr/cache", From 654e11629fff2c54e86f19f69393b3850f110dcf Mon Sep 17 00:00:00 2001 From: Aitor Errasti Date: Thu, 10 Nov 2022 13:53:33 +0100 Subject: [PATCH 48/52] Remove old unfinished fishbowls (#713) * Remove old unfinished fishbowls * fix * fix tests * Fix * phpcsfixer * fix --- .../src/Extension/FishbowlListExtension.php | 5 ++++- .../tests/Functional/FishbowlListFunctionalTest.php | 11 ++++------- .../Fishbowl/tests/Unit/FishbowlListExtensionTest.php | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) rename backend/packages/{Core => Fishbowl}/src/Extension/FishbowlListExtension.php (87%) diff --git a/backend/packages/Core/src/Extension/FishbowlListExtension.php b/backend/packages/Fishbowl/src/Extension/FishbowlListExtension.php similarity index 87% rename from backend/packages/Core/src/Extension/FishbowlListExtension.php rename to backend/packages/Fishbowl/src/Extension/FishbowlListExtension.php index 67be09c8e..e1e6dfea2 100644 --- a/backend/packages/Core/src/Extension/FishbowlListExtension.php +++ b/backend/packages/Fishbowl/src/Extension/FishbowlListExtension.php @@ -11,7 +11,7 @@ * file that was distributed with this source code. */ -namespace App\Core\Extension; +namespace App\Fishbowl\Extension; use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryCollectionExtensionInterface; use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface; @@ -47,6 +47,9 @@ public function applyToCollection( $queryBuilder->andWhere(sprintf('%s.currentStatus != :finished', $rootAlias)); $queryBuilder->setParameter('finished', Fishbowl::STATUS_FINISHED); + $queryBuilder->andWhere(sprintf('%s.startDateTime > :fiveHoursAgo', $rootAlias)); + $queryBuilder->setParameter('fiveHoursAgo', (new \DateTimeImmutable())->modify('-5 hour')); + $queryBuilder->addOrderBy(sprintf('%s.startDateTime', $rootAlias), 'ASC'); } } diff --git a/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php b/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php index 01bf047ca..2ab6d8160 100644 --- a/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php +++ b/backend/packages/Fishbowl/tests/Functional/FishbowlListFunctionalTest.php @@ -135,10 +135,8 @@ public function itGetsFishbowlsFilteredByBeforeDate(): void '@context' => '/contexts/Fishbowl', '@id' => '/fishbowls', '@type' => 'hydra:Collection', - 'hydra:totalItems' => 1, + 'hydra:totalItems' => 0, ]); - - $this->assertSame($fishbowl->getName(), $response->toArray()['hydra:member'][0]['name']); } /** @test */ @@ -178,12 +176,11 @@ public function itGetsFishbowlsOrderedCorrectly(): void '@context' => '/contexts/Fishbowl', '@id' => '/fishbowls', '@type' => 'hydra:Collection', - 'hydra:totalItems' => 3, + 'hydra:totalItems' => 2, ]); - $this->assertSame($first->getName(), $response->toArray()['hydra:member'][0]['name']); - $this->assertSame($second->getName(), $response->toArray()['hydra:member'][1]['name']); - $this->assertSame($third->getName(), $response->toArray()['hydra:member'][2]['name']); + $this->assertSame($second->getName(), $response->toArray()['hydra:member'][0]['name']); + $this->assertSame($third->getName(), $response->toArray()['hydra:member'][1]['name']); } private function logIn(User $user): string diff --git a/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php b/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php index d23d66fbb..9e4fbaca3 100644 --- a/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php +++ b/backend/packages/Fishbowl/tests/Unit/FishbowlListExtensionTest.php @@ -15,8 +15,8 @@ use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGenerator; use App\Core\Entity\User; -use App\Core\Extension\FishbowlListExtension; use App\Fishbowl\Entity\Fishbowl; +use App\Fishbowl\Extension\FishbowlListExtension; use Doctrine\ORM\EntityManager; use Doctrine\ORM\QueryBuilder; use PHPUnit\Framework\MockObject\Stub; @@ -79,7 +79,7 @@ public function itReturnsFishbowlQuery(): void $this->assertSame($queryBuilder->getRootAliases(), ['fishbowl']); - $responseQuery = 'SELECT id FROM fishbowl fishbowl WHERE fishbowl.host = :host AND fishbowl.currentStatus != :finished ORDER BY fishbowl.startDateTime ASC'; + $responseQuery = 'SELECT id FROM fishbowl fishbowl WHERE fishbowl.host = :host AND fishbowl.currentStatus != :finished AND fishbowl.startDateTime > :fiveHoursAgo ORDER BY fishbowl.startDateTime ASC'; $this->assertSame($queryBuilder->getDQL(), $responseQuery); } From 705249373e74fd8d0de1b4e2025bac0e666fd270 Mon Sep 17 00:00:00 2001 From: Saura Date: Fri, 11 Nov 2022 12:19:58 +0100 Subject: [PATCH 49/52] Add robots dynamically by env variable (#711) * Add robots dynamically by command variable * Update frontend/src/pages/api/robots.ts * Add environment value * try * Remove quotes from environment variable Co-authored-by: Aitor Errasti --- frontend/.env | 1 + frontend/next.config.js | 11 ++++++++++- frontend/src/pages/api/robots.ts | 16 ++++++++++++++++ frontend/src/pages/edit-profile.tsx | 1 - 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 frontend/src/pages/api/robots.ts diff --git a/frontend/.env b/frontend/.env index 6d912164d..45297e853 100644 --- a/frontend/.env +++ b/frontend/.env @@ -16,3 +16,4 @@ NEXT_PUBLIC_XMPP_GUEST_DOMAIN=guest.meet.jitsi NEXT_PUBLIC_XMPP_MUC_DOMAIN=muc.meet.jitsi NEXT_PUBLIC_XMPP_AUTH_DOMAIN=auth.meet.jitsi NEXT_PUBLIC_JITSI_ROOM_PREFIX= +NEXT_PUBLIC_ENVIRONMENT=dev diff --git a/frontend/next.config.js b/frontend/next.config.js index f27e28a94..7123fb2b9 100644 --- a/frontend/next.config.js +++ b/frontend/next.config.js @@ -7,10 +7,11 @@ * file that was distributed with this source code. */ +// eslint-disable-next-line @typescript-eslint/no-var-requires const nextTranslate = require('next-translate'); module.exports = nextTranslate({ - webpack: (config, { isServer, webpack }) => { + webpack: config => { config.module.rules.push({ test: /\.svg$/, use: ['@svgr/webpack'] @@ -24,5 +25,13 @@ module.exports = nextTranslate({ ] }); return config; + }, + async rewrites() { + return [ + { + source: '/robots.txt', + destination: '/api/robots' + } + ]; } }); diff --git a/frontend/src/pages/api/robots.ts b/frontend/src/pages/api/robots.ts new file mode 100644 index 000000000..d982dc969 --- /dev/null +++ b/frontend/src/pages/api/robots.ts @@ -0,0 +1,16 @@ +/*! + * This file is part of the Stooa codebase. + * + * (c) 2020 - present Runroom SL + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +export default function handler(req, res) { + if (process.env.NEXT_PUBLIC_ENVIRONMENT === 'prod') { + res.send('User-agent: *\nAllow: /'); + } else { + res.send('User-agent: *\nDisallow: /'); + } +} diff --git a/frontend/src/pages/edit-profile.tsx b/frontend/src/pages/edit-profile.tsx index 8902b89fa..7f75356c5 100644 --- a/frontend/src/pages/edit-profile.tsx +++ b/frontend/src/pages/edit-profile.tsx @@ -20,7 +20,6 @@ const Error = dynamic(import('@/components/Common/Error'), { loading: () =>
{ const { t } = useTranslation('edit-profile'); - const { loading, error, data, refetch } = useQuery(GET_SELF_USER); if (loading) return ; From abb293e13001ccfaee72754364b567783d6e942d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 11 Nov 2022 12:59:23 +0100 Subject: [PATCH 50/52] Update dependency zenstruck/foundry to v1.23.0 (#718) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 49 +++++++++++++++++++++---------------------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 554407fc7..975698066 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -77,7 +77,7 @@ "symfony/web-profiler-bundle": "6.1.6", "vimeo/psalm": "4.30.0", "weirdan/doctrine-psalm-plugin": "2.5.0", - "zenstruck/foundry": "1.22.1" + "zenstruck/foundry": "1.23.0" }, "replace": { "paragonie/random_compat": "2.*", diff --git a/backend/composer.lock b/backend/composer.lock index a2cf3b8a5..6069fef05 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "82e66a25c7e9336a82c71d437521f142", + "content-hash": "9608d4ce6b211f0611f1ae36c06fab65", "packages": [ { "name": "api-platform/core", @@ -8090,16 +8090,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -8108,7 +8108,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8153,7 +8153,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -8169,20 +8169,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -8191,7 +8191,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8232,7 +8232,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -8248,7 +8248,7 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/property-access", @@ -15257,16 +15257,16 @@ }, { "name": "zenstruck/foundry", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/zenstruck/foundry.git", - "reference": "8d41ca8f6e2e1e7f790028c258071f300773ac71" + "reference": "a3f3cdb397c70237ca743192aaeb4a4407f7e1d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zenstruck/foundry/zipball/8d41ca8f6e2e1e7f790028c258071f300773ac71", - "reference": "8d41ca8f6e2e1e7f790028c258071f300773ac71", + "url": "https://api.github.com/repos/zenstruck/foundry/zipball/a3f3cdb397c70237ca743192aaeb4a4407f7e1d3", + "reference": "a3f3cdb397c70237ca743192aaeb4a4407f7e1d3", "shasum": "" }, "require": { @@ -15292,11 +15292,10 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "bamarni-bin": { - "target-directory": "bin/tools" + "target-directory": "bin/tools", + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -15329,7 +15328,7 @@ ], "support": { "issues": "https://github.com/zenstruck/foundry/issues", - "source": "https://github.com/zenstruck/foundry/tree/v1.22.1" + "source": "https://github.com/zenstruck/foundry/tree/v1.23.0" }, "funding": [ { @@ -15337,7 +15336,7 @@ "type": "github" } ], - "time": "2022-09-28T16:59:36+00:00" + "time": "2022-11-10T18:43:03+00:00" } ], "aliases": [], From 0479a08c3b0ef151236b6043e7af63b14598edb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Nov 2022 09:15:35 +0100 Subject: [PATCH 51/52] Update dependency sonata-project/admin-bundle to v4.21.0 (#717) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- backend/composer.json | 2 +- backend/composer.lock | 126 +++++++++++++++++++++--------------------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index 975698066..3b68a572e 100644 --- a/backend/composer.json +++ b/backend/composer.json @@ -19,7 +19,7 @@ "ramsey/uuid": "4.6.0", "ramsey/uuid-doctrine": "1.8.2", "rector/rector": "0.14.7", - "sonata-project/admin-bundle": "4.20.0", + "sonata-project/admin-bundle": "4.21.0", "sonata-project/doctrine-extensions": "2.0.1", "sonata-project/doctrine-orm-admin-bundle": "4.8.0", "sonata-project/exporter": "3.0.0", diff --git a/backend/composer.lock b/backend/composer.lock index 6069fef05..2861288d1 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9608d4ce6b211f0611f1ae36c06fab65", + "content-hash": "1d5972f92a0fe08f0796acfaf64ca36d", "packages": [ { "name": "api-platform/core", @@ -3963,20 +3963,20 @@ }, { "name": "sonata-project/admin-bundle", - "version": "4.20.0", + "version": "4.21.0", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataAdminBundle.git", - "reference": "1b919ccc08e3e924dbd4857756bf238f2909b593" + "reference": "08b3907ca1776cb111b00be8be28d3ad75ec0aa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/1b919ccc08e3e924dbd4857756bf238f2909b593", - "reference": "1b919ccc08e3e924dbd4857756bf238f2909b593", + "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/08b3907ca1776cb111b00be8be28d3ad75ec0aa4", + "reference": "08b3907ca1776cb111b00be8be28d3ad75ec0aa4", "shasum": "" }, "require": { - "doctrine/collections": "^1.6", + "doctrine/collections": "^1.6 || ^2.0", "doctrine/common": "^3.0", "doctrine/inflector": "^2.0", "ext-json": "*", @@ -4030,8 +4030,8 @@ "phpstan/phpstan-strict-rules": "^1.0", "phpstan/phpstan-symfony": "^1.0", "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.17", - "psalm/plugin-symfony": "^3.0", + "psalm/plugin-phpunit": "^0.18", + "psalm/plugin-symfony": "^4.0", "psr/event-dispatcher": "^1.0", "rector/rector": "^0.14", "symfony/browser-kit": "^4.4 || ^5.4 || ^6.0", @@ -4078,7 +4078,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.20.0" + "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.21.0" }, "funding": [ { @@ -4098,24 +4098,24 @@ "type": "github" } ], - "time": "2022-10-20T08:28:33+00:00" + "time": "2022-11-11T08:53:17+00:00" }, { "name": "sonata-project/block-bundle", - "version": "4.18.0", + "version": "4.19.0", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataBlockBundle.git", - "reference": "79a2c6558fad47d1f2e4c58f6a8732b32bc582be" + "reference": "5aef2a4362e5e08031fd97e188b039f2ea3e991b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataBlockBundle/zipball/79a2c6558fad47d1f2e4c58f6a8732b32bc582be", - "reference": "79a2c6558fad47d1f2e4c58f6a8732b32bc582be", + "url": "https://api.github.com/repos/sonata-project/SonataBlockBundle/zipball/5aef2a4362e5e08031fd97e188b039f2ea3e991b", + "reference": "5aef2a4362e5e08031fd97e188b039f2ea3e991b", "shasum": "" }, "require": { - "doctrine/collections": "^1.6", + "doctrine/collections": "^1.6 || ^2.0", "doctrine/common": "^2.7.1 || ^3.0", "php": "^7.4 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", @@ -4201,7 +4201,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataBlockBundle/issues", - "source": "https://github.com/sonata-project/SonataBlockBundle/tree/4.18.0" + "source": "https://github.com/sonata-project/SonataBlockBundle/tree/4.19.0" }, "funding": [ { @@ -4221,7 +4221,7 @@ "type": "github" } ], - "time": "2022-09-28T08:40:29+00:00" + "time": "2022-10-25T08:24:56+00:00" }, { "name": "sonata-project/cache", @@ -6441,16 +6441,16 @@ }, { "name": "symfony/form", - "version": "v6.1.5", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "176a358d54c70ec70708c7cbb4e8ac93cc138e6c" + "reference": "6f5d13bb996dea03bbb5e43e1bbd90cbfdca1a83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/176a358d54c70ec70708c7cbb4e8ac93cc138e6c", - "reference": "176a358d54c70ec70708c7cbb4e8ac93cc138e6c", + "url": "https://api.github.com/repos/symfony/form/zipball/6f5d13bb996dea03bbb5e43e1bbd90cbfdca1a83", + "reference": "6f5d13bb996dea03bbb5e43e1bbd90cbfdca1a83", "shasum": "" }, "require": { @@ -6523,7 +6523,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.1.5" + "source": "https://github.com/symfony/form/tree/v6.1.7" }, "funding": [ { @@ -6539,7 +6539,7 @@ "type": "tidelift" } ], - "time": "2022-09-09T09:34:27+00:00" + "time": "2022-10-23T10:33:34+00:00" }, { "name": "symfony/framework-bundle", @@ -7749,16 +7749,16 @@ }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48" + "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e407643d610e5f2c8a4b14189150f68934bf5e48", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c", + "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c", "shasum": "" }, "require": { @@ -7770,7 +7770,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7816,7 +7816,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0" }, "funding": [ { @@ -7832,20 +7832,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -7859,7 +7859,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7903,7 +7903,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -7919,20 +7919,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -7944,7 +7944,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7987,7 +7987,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -8003,20 +8003,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -8031,7 +8031,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8070,7 +8070,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -8086,7 +8086,7 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", @@ -8766,16 +8766,16 @@ }, { "name": "symfony/security-core", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "e42fb611d1a36e6e1e34f8cd715cea108a39cad5" + "reference": "c84ff026d6fa3cf9cb54cca762f14b6a449fa557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/e42fb611d1a36e6e1e34f8cd715cea108a39cad5", - "reference": "e42fb611d1a36e6e1e34f8cd715cea108a39cad5", + "url": "https://api.github.com/repos/symfony/security-core/zipball/c84ff026d6fa3cf9cb54cca762f14b6a449fa557", + "reference": "c84ff026d6fa3cf9cb54cca762f14b6a449fa557", "shasum": "" }, "require": { @@ -8837,7 +8837,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.1.6" + "source": "https://github.com/symfony/security-core/tree/v6.1.7" }, "funding": [ { @@ -8853,7 +8853,7 @@ "type": "tidelift" } ], - "time": "2022-10-02T08:30:52+00:00" + "time": "2022-10-23T10:33:34+00:00" }, { "name": "symfony/security-csrf", @@ -9521,16 +9521,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.1.6", + "version": "v6.1.7", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "368e9bac2dbaed85d943745b521077f8101b599d" + "reference": "10f4ccba086ca81bbac9ee5e065d9f99565b3983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/368e9bac2dbaed85d943745b521077f8101b599d", - "reference": "368e9bac2dbaed85d943745b521077f8101b599d", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/10f4ccba086ca81bbac9ee5e065d9f99565b3983", + "reference": "10f4ccba086ca81bbac9ee5e065d9f99565b3983", "shasum": "" }, "require": { @@ -9623,7 +9623,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.1.6" + "source": "https://github.com/symfony/twig-bridge/tree/v6.1.7" }, "funding": [ { @@ -9639,7 +9639,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T05:10:31+00:00" + "time": "2022-10-19T08:10:53+00:00" }, { "name": "symfony/twig-bundle", From 9815ab7525ea72ca249b3c245e9fa6d01bea5533 Mon Sep 17 00:00:00 2001 From: Saura Date: Mon, 14 Nov 2022 11:31:29 +0100 Subject: [PATCH 52/52] Release 1.2.2 (#720) * Add updated changelog 1.2.2 * Update commit limmit * updated without commits --- CHANGELOG.md | 335 ++++++++-------------------------------------- package-lock.json | 4 +- package.json | 4 +- 3 files changed, 61 insertions(+), 282 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dc7760fb..1cb5e9d45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,63 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [1.2.1](https://github.com/Stooa/Stooa/compare/1.2.0...1.2.1) +## [1.2.2](https://github.com/Stooa/Stooa/compare/1.2.1...1.2.2) + +### Frontend refactors +- Decouple user [`#680`](https://github.com/Stooa/Stooa/pull/680) +- Move landing [`#675`](https://github.com/Stooa/Stooa/pull/675) +- Decouple modals [`#691`](https://github.com/Stooa/Stooa/pull/691) + + +### Backend refactors +- Remove folders [`#676`](https://github.com/Stooa/Stooa/pull/676) +- Split backend in bundles [`#673`](https://github.com/Stooa/Stooa/pull/673) +- Split backend code [`#671`](https://github.com/Stooa/Stooa/pull/671) + +### Merged + +- Update dependency sonata-project/admin-bundle to v4.21.0 [`#717`](https://github.com/Stooa/Stooa/pull/717) +- Update dependency zenstruck/foundry to v1.23.0 [`#718`](https://github.com/Stooa/Stooa/pull/718) +- Add robots dynamically by env variable [`#711`](https://github.com/Stooa/Stooa/pull/711) +- Remove old unfinished fishbowls [`#713`](https://github.com/Stooa/Stooa/pull/713) +- Update dependency phpstan/phpstan to v1.9.2 [`#715`](https://github.com/Stooa/Stooa/pull/715) +- Update dependency eslint-config-next to v12.3.3 [`#714`](https://github.com/Stooa/Stooa/pull/714) +- Update dependency eslint to v8.27.0 [`#710`](https://github.com/Stooa/Stooa/pull/710) +- Feature/decouple user [`#680`](https://github.com/Stooa/Stooa/pull/680) +- Update dependency vimeo/psalm to v4.30.0 [`#707`](https://github.com/Stooa/Stooa/pull/707) +- Feature/decouple modals [`#691`](https://github.com/Stooa/Stooa/pull/691) +- run audit fix [`#708`](https://github.com/Stooa/Stooa/pull/708) +- Update dependency phpstan/phpstan-webmozart-assert to v1.2.2 [`#702`](https://github.com/Stooa/Stooa/pull/702) +- Update dependency ramsey/uuid-doctrine to v1.8.2 [`#703`](https://github.com/Stooa/Stooa/pull/703) +- Update eslint [`#704`](https://github.com/Stooa/Stooa/pull/704) +- Update dependency ramsey/uuid to v4.6.0 [`#705`](https://github.com/Stooa/Stooa/pull/705) +- Update dependency phpstan/phpstan to v1.9.0 [`#698`](https://github.com/Stooa/Stooa/pull/698) +- Update dependency psalm/plugin-phpunit to v0.18.3 [`#699`](https://github.com/Stooa/Stooa/pull/699) +- Update dependency psalm/plugin-phpunit to v0.18.1 [`#697`](https://github.com/Stooa/Stooa/pull/697) +- Update dependency @typescript-eslint/eslint-plugin to v5.42.0 [`#695`](https://github.com/Stooa/Stooa/pull/695) +- Update dependency doctrine/doctrine-bundle to v2.7.1 [`#694`](https://github.com/Stooa/Stooa/pull/694) +- Update dependency psalm/plugin-phpunit to v0.18.0 [`#693`](https://github.com/Stooa/Stooa/pull/693) +- Update dependency friendsofphp/php-cs-fixer to v3.13.0 [`#692`](https://github.com/Stooa/Stooa/pull/692) +- Update dependency psalm/plugin-symfony to v4 [`#690`](https://github.com/Stooa/Stooa/pull/690) +- Update dependency phpunit/phpunit to v9.5.26 [`#689`](https://github.com/Stooa/Stooa/pull/689) +- Update dependency phpstan/phpstan-phpunit to v1.2.2 [`#687`](https://github.com/Stooa/Stooa/pull/687) +- Update dependency phpstan/phpstan-phpunit to v1.2.1 [`#686`](https://github.com/Stooa/Stooa/pull/686) +- Downgrade [`#678`](https://github.com/Stooa/Stooa/pull/678) +- Update Node.js to 18.12 [`#651`](https://github.com/Stooa/Stooa/pull/651) +- Update dependency sonata-project/admin-bundle to v4.20.0 [`#672`](https://github.com/Stooa/Stooa/pull/672) +- Remove folders [`#676`](https://github.com/Stooa/Stooa/pull/676) +- Split backend in bundles [`#673`](https://github.com/Stooa/Stooa/pull/673) +- Move landing [`#675`](https://github.com/Stooa/Stooa/pull/675) +- Update dependency eslint to v8.26.0 [`#674`](https://github.com/Stooa/Stooa/pull/674) +- Split backend code [`#671`](https://github.com/Stooa/Stooa/pull/671) +- Update eslint [`#670`](https://github.com/Stooa/Stooa/pull/670) +- Update dependency @faker-js/faker to v7.6.0 [`#669`](https://github.com/Stooa/Stooa/pull/669) +- Update phpstan [`#667`](https://github.com/Stooa/Stooa/pull/667) +- Update dependency rector/rector to v0.14.6 [`#666`](https://github.com/Stooa/Stooa/pull/666) +- Update dependency phpstan/phpstan to v1.8.9 [`#665`](https://github.com/Stooa/Stooa/pull/665) +- Release 1.2.1 [`#664`](https://github.com/Stooa/Stooa/pull/664) + +## [1.2.1](https://github.com/Stooa/Stooa/compare/1.2.0...1.2.1) - 2022-10-13 ### Merged @@ -58,20 +114,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Translations update from Hosted Weblate [`#581`](https://github.com/Stooa/Stooa/pull/581) - Remove before unload to confirm to test better options [`#606`](https://github.com/Stooa/Stooa/pull/606) -### Commits - -- Update dependency next to v12.2.6 [`617a6af`](https://github.com/Stooa/Stooa/commit/617a6af15d84065d7951f4e16db6fde0b487f64e) -- Update dependency @apollo/client to v3.6.10 [`df981ce`](https://github.com/Stooa/Stooa/commit/df981ced56806b19628240fc9e0e1f8ed7504eae) -- Update dependency styled-components to v5.3.6 [`fcffee3`](https://github.com/Stooa/Stooa/commit/fcffee3f1d9d915c64dbd05500abbe1763ceef74) -- Update dependency rector/rector to v0.14.3 [`69367c3`](https://github.com/Stooa/Stooa/commit/69367c3655b4efb7705066ca02bccdc2054df8c8) -- Update dependency phpstan/phpstan to v1.8.7 [`a69a8bd`](https://github.com/Stooa/Stooa/commit/a69a8bd7654ff014bea21c63355dfc2a77694227) -- Update dependency gsap to v3.11.3 [`ba00e01`](https://github.com/Stooa/Stooa/commit/ba00e015b235d521dd47fa7509d2f23397050a0e) -- Update dependency @types/node to v16.11.64 [`d8f58be`](https://github.com/Stooa/Stooa/commit/d8f58be69edffc53168b8751f46279247dcfb26f) -- Update dependency gsap to v3.11.2 [`05e78ba`](https://github.com/Stooa/Stooa/commit/05e78ba22c1d3e45efe759e06ee6a2fbd8e5c31e) -- Update dependency @types/node to v16.11.62 [`e608393`](https://github.com/Stooa/Stooa/commit/e608393d32f3f514d56e5b4bfc0e359db724b9b3) -- Update dependency phpstan/phpstan to v1.8.6 [`fc1ef0b`](https://github.com/Stooa/Stooa/commit/fc1ef0b61aa276ec5f0125d36587e87e0fad5c78) -- Update dependency webonyx/graphql-php to v14.11.8 [`2f9c7ed`](https://github.com/Stooa/Stooa/commit/2f9c7edad5eede4ef56e60903e804f3ad720a76a) - ## [1.2.0](https://github.com/Stooa/Stooa/compare/1.1.0...1.2.0) - 2022-09-22 ### Merged @@ -92,21 +134,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Update dependency framer-motion to v6.5.1 [`#411`](https://github.com/Stooa/Stooa/pull/411) - Fix next in french [`#572`](https://github.com/Stooa/Stooa/pull/572) -### Commits - -- Update jest monorepo to v28.1.3 [`a2ce93a`](https://github.com/Stooa/Stooa/commit/a2ce93abd1cca048c4b244cf1ef5b33481588e3b) -- Update dependency zenstruck/foundry to v1.21.1 [`23fe0fd`](https://github.com/Stooa/Stooa/commit/23fe0fdfb427630f96980e4122aae06731c340ed) -- Update dependency @testing-library/jest-dom to v5.16.5 [`c1e7a15`](https://github.com/Stooa/Stooa/commit/c1e7a1520d8f260e9970aab32dfb0255b7a27128) -- Update dependency eslint-config-next to v12.2.5 [`d542913`](https://github.com/Stooa/Stooa/commit/d542913c56f48006394d04618362d270e1389f6a) -- Update dependency eslint-config-next to v12.2.4 [`d4871ae`](https://github.com/Stooa/Stooa/commit/d4871ae5356338875025af7e884ba1c98223a2cb) -- Update dependency rector/rector to v0.13.10 [`5c2b300`](https://github.com/Stooa/Stooa/commit/5c2b3002132d640c8c5333677ecb59b6733ffd96) -- Update dependency twig/twig to v3.4.2 [`f8c9bfb`](https://github.com/Stooa/Stooa/commit/f8c9bfb45fade8a71f7bfff2dade8865c79e5433) -- Update dependency @types/react to v17.0.50 [`9f219ab`](https://github.com/Stooa/Stooa/commit/9f219abfcd6285d717901d623ee26234ce14c5d8) -- Update dependency psalm/plugin-symfony to v3.1.9 [`44dd93d`](https://github.com/Stooa/Stooa/commit/44dd93dcd3a6fdf036b5da8eef73b23d66a00952) -- Update dependency @types/react to v17.0.49 [`9366a23`](https://github.com/Stooa/Stooa/commit/9366a2396fe42edf3b8576361aaace3315943aa5) -- Update dependency @types/styled-components to v5.1.26 [`f62b1d4`](https://github.com/Stooa/Stooa/commit/f62b1d4179f08c11d150503e7b7ccdf013b76fa4) -- Update dependency @types/react to v17.0.48 [`2e3ece3`](https://github.com/Stooa/Stooa/commit/2e3ece36d1b0535cd95daca7c23df1949eead1cb) - ## [1.1.0](https://github.com/Stooa/Stooa/compare/1.0.1...1.1.0) - 2022-08-05 ### Merged @@ -153,14 +180,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Update dependency next-translate to v1.4.0 [`#491`](https://github.com/Stooa/Stooa/pull/491) - Update dependency react-datepicker to v4.8.0 [`#492`](https://github.com/Stooa/Stooa/pull/492) -### Commits - -- Update jest monorepo to v28.1.2 [`53fbac5`](https://github.com/Stooa/Stooa/commit/53fbac53839d47e5879d348f00540d1c3747f9e2) -- Update dependency eslint-config-next to v12.1.6 [`9de45ec`](https://github.com/Stooa/Stooa/commit/9de45ec3c3fc8aea90f5d86855a9c502b98a3be1) -- Update dependency lottie-web to v5.9.6 [`d495e22`](https://github.com/Stooa/Stooa/commit/d495e22f652a580fc8efec09532a537519a1b38d) -- Update dependency @types/yup to v0.29.14 [`1813dc0`](https://github.com/Stooa/Stooa/commit/1813dc08811daa09536c31bad70d1fd61ae98452) -- Update dependency @types/react to v17.0.47 [`2c1cfbc`](https://github.com/Stooa/Stooa/commit/2c1cfbcb471dbbf1685e917b539b33e804d57876) - ## [1.0.1](https://github.com/Stooa/Stooa/compare/1.0.0...1.0.1) - 2022-06-30 ### Merged @@ -181,11 +200,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Add new package.json in root folder to generate CHANGELOG [`#489`](https://github.com/Stooa/Stooa/pull/489) - Move changelog to root folder [`#488`](https://github.com/Stooa/Stooa/pull/488) -### Commits - -- Update dependency sonata-project/form-extensions to v1.16.1 [`e93fd42`](https://github.com/Stooa/Stooa/commit/e93fd4248a3c28ceb3ee1e51e76d93fafb42cbaf) -- Update dependency phpunit/phpunit to v9.5.21 [`73d1a8d`](https://github.com/Stooa/Stooa/commit/73d1a8d5d9b87157e075d7fdece813a503343630) - ## 1.0.0 - 2022-06-20 ### Merged @@ -385,238 +399,3 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Add cla config [`#10`](https://github.com/Stooa/Stooa/pull/10) - Add README file [`#5`](https://github.com/Stooa/Stooa/pull/5) - New and fixed templates [`#3`](https://github.com/Stooa/Stooa/pull/3) - -### Commits - -- Update transient dependencies [`89f1f21`](https://github.com/Stooa/Stooa/commit/89f1f21c1880307ad4c4818cdeb0d8dc1d3e2a64) -- Update dependency jest to v27.5.0 [`2f93b73`](https://github.com/Stooa/Stooa/commit/2f93b73f26db38493230af5acf57ce706dd726ce) -- Update dependency jest to v27.5.1 [`70b5db5`](https://github.com/Stooa/Stooa/commit/70b5db59e336d96384b32cef326a8cc24ab93964) -- Update required dependencies [`485c934`](https://github.com/Stooa/Stooa/commit/485c9346a376391ed75aba85fce6e712418454aa) -- Update symfony packages [`2bcbf00`](https://github.com/Stooa/Stooa/commit/2bcbf0088ac8ecc4437f517af5049bd12af7cf24) -- Add action, tun prettier [`0096a17`](https://github.com/Stooa/Stooa/commit/0096a17b1f91852c14bedd68b863f7f7e479fa0c) -- Update dependency next to v12.0.9 [`9cc0d75`](https://github.com/Stooa/Stooa/commit/9cc0d75b2577bb8dd040399d89db55b19e7812c4) -- Fix translations file indentation [`974bd44`](https://github.com/Stooa/Stooa/commit/974bd440458dccdce35a750b6dc956c0067c7824) -- Update symfony packages [`070ead9`](https://github.com/Stooa/Stooa/commit/070ead99378037e5e08d26262c7dad2d99be68ae) -- Add action and dcolicense [`51af4f3`](https://github.com/Stooa/Stooa/commit/51af4f31d4dd9840d17db52f0e4a2c61e7105e63) -- Update doctrine [`cc159fa`](https://github.com/Stooa/Stooa/commit/cc159fa78c9995145006a2a3e6d93ca0ae66b125) -- Update psalm, move to level 3 and fix errors [`68dc192`](https://github.com/Stooa/Stooa/commit/68dc19260191b4fd0074f14f05b3c0587cc3cc6f) -- Update dev dependencies [`2c33ee5`](https://github.com/Stooa/Stooa/commit/2c33ee52a0b5d8f57ba52c3ba476478e8ebde68a) -- Only the host can change the workflow of a fishbowl [`65ee742`](https://github.com/Stooa/Stooa/commit/65ee7428009c8e4ba768006ef52c639ea5731756) -- Initial commit [`53deba7`](https://github.com/Stooa/Stooa/commit/53deba70c45e17efba050a2cb001213af6902d4f) -- Allow to load fixtures with the RESET_DATABASE env var [`50d351a`](https://github.com/Stooa/Stooa/commit/50d351a70f677341cf1f2459fd8d46e871311af3) -- Update dependency sonata-project/doctrine-orm-admin-bundle to v3.35.3 [`0d7623a`](https://github.com/Stooa/Stooa/commit/0d7623a2a21d2b6749b7ddffdccef4780ac0a070) -- Update dependency @typescript-eslint/eslint-plugin to v5.10.2 [`0abdc90`](https://github.com/Stooa/Stooa/commit/0abdc900fc97abd1db4cb6d5e8dc8a873bbc765b) -- Update dependency next to v12.1.4 [`df53be3`](https://github.com/Stooa/Stooa/commit/df53be3bc3d02075662deb9cfcf5262ade03c0ae) -- Fix Open Api Spec [`df63b99`](https://github.com/Stooa/Stooa/commit/df63b992cfde24786c351fbf2816d260de559814) -- Update composer.lock [`516252b`](https://github.com/Stooa/Stooa/commit/516252ba74cd7319dd58fa217bc8a142e482f460) -- Update symfony packages [`03e1a84`](https://github.com/Stooa/Stooa/commit/03e1a84ab6901b2ba29ede4ba8b47f7b48aaef3c) -- Refactor workflow functional tests [`23a78ef`](https://github.com/Stooa/Stooa/commit/23a78ef85648bb1394cf89549f1f6f75a9f39a2a) -- Improve phpstan configuration [`2007dc9`](https://github.com/Stooa/Stooa/commit/2007dc904a847691a676935b60e394b682cd6a79) -- Update dependency react-datepicker to v4 [`bb4a473`](https://github.com/Stooa/Stooa/commit/bb4a4735cd3c13889e162be7df46229525e3e4bb) -- Adapt translations to be more in sync with weblate formats [`88ceac8`](https://github.com/Stooa/Stooa/commit/88ceac83479f3d4f67bd4a6b40a09e671200cf86) -- Update dependency next to v12.1.5 [`7a491b0`](https://github.com/Stooa/Stooa/commit/7a491b05a462ac661e178449dc5a4fa1b3528289) -- Update dependency eslint-config-next to v12.1.4 [`3f47f6d`](https://github.com/Stooa/Stooa/commit/3f47f6dff3379e20c9e5d8daba0a74d218095f4e) -- Update dependency next to v12.0.10 [`01cff08`](https://github.com/Stooa/Stooa/commit/01cff08d3b5828e1234ae0ff2cc2303b0ae41160) -- remove foundry [`17940a4`](https://github.com/Stooa/Stooa/commit/17940a48f92dd362c01b43d35c49cf5e6da65936) -- Update dependency ergebnis/composer-normalize to v2.23.0 [`f3e9758`](https://github.com/Stooa/Stooa/commit/f3e9758c7ab915e4d02eaffde206ed1dd8e23cdd) -- Update dependency api-platform/core to v2.6.8 [`a1ad069`](https://github.com/Stooa/Stooa/commit/a1ad06963532342f6743f803734f4b5bbe4635f0) -- Add code of conduct markdown [`d6fd3b3`](https://github.com/Stooa/Stooa/commit/d6fd3b35b55971336e890762cee8b94513a7c8a9) -- Add Jitsi Nginx [`2891f41`](https://github.com/Stooa/Stooa/commit/2891f411771eb8f7ebdac8b78e32e78fa1270a8c) -- Update dependency phpunit/phpunit to v9.5.20 [`ea17c72`](https://github.com/Stooa/Stooa/commit/ea17c725e4022eebe3666a607ce10b01f11674d3) -- Update symfony packages [`76c60f6`](https://github.com/Stooa/Stooa/commit/76c60f6d5cac8bba5923660c6ad53489973c1295) -- Finished home tests [`db0d1b7`](https://github.com/Stooa/Stooa/commit/db0d1b7de74a5d1f1e3bf0d97d7aa7f48b55409b) -- Upgrade Jitsi to 6726-2 [`7924bdb`](https://github.com/Stooa/Stooa/commit/7924bdbfae4fe3da2dd352082c43937c6dd1fd50) -- Update dependency @apollo/client to v3.5.8 [`627ef5a`](https://github.com/Stooa/Stooa/commit/627ef5a3571ccaa800bc6295e84807a088aeeda2) -- Update doctrine [`d0ff10a`](https://github.com/Stooa/Stooa/commit/d0ff10a4950189495fe862c6401dc62560050105) -- Delete mail input [`2030c39`](https://github.com/Stooa/Stooa/commit/2030c39300e9ef717595035aaf25bd5a5721862d) -- Update dependency phpunit/phpunit to v9.5.13 [`16d9cd4`](https://github.com/Stooa/Stooa/commit/16d9cd4b38bee0d96e58b2c5cf82f6daac093099) -- Add .env file [`2fe0913`](https://github.com/Stooa/Stooa/commit/2fe0913330eaac6a8378de5f0c9a705d1013c0ad) -- Update dependency @svgr/webpack to v6.2.1 [`dcaccf8`](https://github.com/Stooa/Stooa/commit/dcaccf81d0091beb63827bd2cc03a472f05f18ed) -- Update dependency @apollo/client to v3.3.21 [`42ca99b`](https://github.com/Stooa/Stooa/commit/42ca99b3ae2e6f03202950da6399b094974abba3) -- Update dependency doctrine/doctrine-fixtures-bundle to v3.4.2 [`f315215`](https://github.com/Stooa/Stooa/commit/f3152155be04ab2838529b1a1f1fa382ad5f2f1e) -- Add github issue template [`3b3d884`](https://github.com/Stooa/Stooa/commit/3b3d8847d9bd7abe0e86aa05460e0761617292b9) -- Update dependency gesdinet/jwt-refresh-token-bundle to v1 [`29a31a0`](https://github.com/Stooa/Stooa/commit/29a31a0c138ab18431ace22dc08a0b2f191e0506) -- Update dependency @types/react to v17.0.38 [`b3d96fc`](https://github.com/Stooa/Stooa/commit/b3d96fca536e8fbb9a2a1f748012ff18bed364be) -- Move prettify to frontend-lint [`a426002`](https://github.com/Stooa/Stooa/commit/a426002fb469ac534467863164fd4aec347e32c0) -- Add more tests for the home [`cc84b37`](https://github.com/Stooa/Stooa/commit/cc84b378b692f476dd5529128662fe317b02d221) -- Add typescript compiler build [`5e2c230`](https://github.com/Stooa/Stooa/commit/5e2c230bf4b971e51b26e7b23940f0af836332f6) -- fix functional test [`c058766`](https://github.com/Stooa/Stooa/commit/c058766bfd03faca46b3bcfa0f9e7072dd7be36e) -- Update dependency cypress to v9.4.1 [`64b1385`](https://github.com/Stooa/Stooa/commit/64b13851e565a0ddc7c20d3b833ea177cd2ad4ef) -- Update dependency ergebnis/composer-normalize to v2.23.1 [`8a5e2a9`](https://github.com/Stooa/Stooa/commit/8a5e2a9b5fe7794d7b4fe2b11f48d6594365fd65) -- Fix composer normalize [`b90a666`](https://github.com/Stooa/Stooa/commit/b90a666874ccc54ec3243405e2d5d8ec3a204fe4) -- Update dependency @testing-library/jest-dom to v5.16.1 [`dee5f6d`](https://github.com/Stooa/Stooa/commit/dee5f6d14fa559262304a9c8cb319a4a61b2d9f2) -- Update dependency cypress to v9.5.4 [`61dc136`](https://github.com/Stooa/Stooa/commit/61dc13608d8ec5f8999de5db561acafcdf70ee13) -- Update dependency @testing-library/react to v12.1.4 [`c50260a`](https://github.com/Stooa/Stooa/commit/c50260ab3af4beb0f963ea23eb59aa12af0af612) -- Update jest monorepo [`cb19ce0`](https://github.com/Stooa/Stooa/commit/cb19ce0e3559ff0d284da632fb6805328811cf56) -- Update jest monorepo [`4948ec7`](https://github.com/Stooa/Stooa/commit/4948ec76e0673ad30f5243a17b07fc47d66c520c) -- Update dependency styled-components to v5.3.5 [`c3c6cda`](https://github.com/Stooa/Stooa/commit/c3c6cda4e889ac7ec29545c56911e9434cbe396d) -- Update dependency zenstruck/foundry to v1.16.0 [`773ed52`](https://github.com/Stooa/Stooa/commit/773ed52218afdbdf8da5882033a2ff6ebe537dcb) -- Update dependency swr to v1 [`429a712`](https://github.com/Stooa/Stooa/commit/429a712c31a64a4f7368d7c7283148628b3c3548) -- Revert "Hotfix - Authentication check (#328)" [`c7d5aa0`](https://github.com/Stooa/Stooa/commit/c7d5aa0e518a6a228d6db7d0cd2a2cea97ac6f72) -- Update dependency twig/twig to v2.14.10 [`3e083e2`](https://github.com/Stooa/Stooa/commit/3e083e26b1365d6ae56f7b835172682909595c8d) -- Update dependency yup to v0.32.11 [`0632906`](https://github.com/Stooa/Stooa/commit/06329068a25b80b4bc5e12940d2e9a17e6fc0ddc) -- Update dependency eslint-config-next to v12.1.5 [`d6800dc`](https://github.com/Stooa/Stooa/commit/d6800dc9ef4cab829ad10faf1e4a8e6dca22cd33) -- Update dependency vimeo/psalm to v4.20.0 [`8be0596`](https://github.com/Stooa/Stooa/commit/8be05961931f9d0353131ed0a0d4960ae1663e6e) -- Update dependency doctrine/doctrine-migrations-bundle to v3.2.2 [`fadbaba`](https://github.com/Stooa/Stooa/commit/fadbaba473cba89e2cf850774e8f4dc809c07511) -- Update dependency eslint-config-next to v12.0.10 [`1a3e35a`](https://github.com/Stooa/Stooa/commit/1a3e35a6e908815a23384ac3877771154f1d48b4) -- Update dependency runroom-packages/testing to v0.15.3 [`1dcece0`](https://github.com/Stooa/Stooa/commit/1dcece0e59be17945f9e2bf14a831e5691c5544f) -- Update dependency eslint-config-next to v12.0.9 [`45379a1`](https://github.com/Stooa/Stooa/commit/45379a1b975a9fd4a9c4aea27e48875c3dfc0e55) -- Use docker compose v2 and reconfigure Xdebug [`5105588`](https://github.com/Stooa/Stooa/commit/5105588abe12d687be2bafcfcec4514da0b06d52) -- Update dependency symfonycasts/reset-password-bundle to v1.11.0 [`7e7319f`](https://github.com/Stooa/Stooa/commit/7e7319f7235fd114cdc170c64a46c9c6c972b57b) -- Update dependency framer-motion to v6.2.10 [`ce9f518`](https://github.com/Stooa/Stooa/commit/ce9f5185db280f4e50e17c0de4339448ff439fe0) -- install runroom's npm-scripts [`de126fe`](https://github.com/Stooa/Stooa/commit/de126fee103cfe6488d2dd45ff9e1d525080ad49) -- Update dependency babel-plugin-styled-components to v2.0.6 [`a20ac3f`](https://github.com/Stooa/Stooa/commit/a20ac3f20bcdfdc2517b3cf70519a618d3a8d568) -- Update dependency twig/twig to v3 [`89d9078`](https://github.com/Stooa/Stooa/commit/89d9078a5563fa6402b6fa3bb96945497b785544) -- Execute workflows also on pushes on main branch [`45b8ed6`](https://github.com/Stooa/Stooa/commit/45b8ed69a74a0abb9ea8472ce39917ff67f3cb11) -- Update dependency doctrine/data-fixtures to v1.5.3 [`6ea13ce`](https://github.com/Stooa/Stooa/commit/6ea13cea8d4d62eb1ca19f2aba2b174e49e963a5) -- Update dependency @testing-library/react to v12.1.5 [`56c7717`](https://github.com/Stooa/Stooa/commit/56c77179746a29f429ce26d18636bf092f4c0132) -- Update dependency babel-plugin-styled-components to v2 [`0f66eaf`](https://github.com/Stooa/Stooa/commit/0f66eaf5a1a456638f708de0ddd84eeb72662975) -- Update dependency babel-plugin-styled-components to v1.13.3 [`c09c5ae`](https://github.com/Stooa/Stooa/commit/c09c5ae886d76ae2662cf644ef6239615ddbbbc9) -- Update dependency formik to v2.2.9 [`662d998`](https://github.com/Stooa/Stooa/commit/662d998f4c9a497cad320f885b188bc90154e76f) -- Create Pull request template [`ac3d2f7`](https://github.com/Stooa/Stooa/commit/ac3d2f7c9481e1394c3c458437bab8ea91163022) -- Update dependency lexik/jwt-authentication-bundle to v2.14.4 [`acdbc34`](https://github.com/Stooa/Stooa/commit/acdbc34f9266a40469e75f31e04096cd9141523e) -- Improve readme [`d3956cb`](https://github.com/Stooa/Stooa/commit/d3956cb683e150d5a6b1698074686ee71edc83fe) -- Update cla.yml [`09774a4`](https://github.com/Stooa/Stooa/commit/09774a4390c7b81d4ff6ce84e0756f6f69aba262) -- Add Codecov [`182f010`](https://github.com/Stooa/Stooa/commit/182f0100d8a0679d12891b5976453086be161bd8) -- Update dependency @types/jest to v27.4.1 [`33f4eb2`](https://github.com/Stooa/Stooa/commit/33f4eb2f46089cf0c6800fcc88472e979faea062) -- Update dependency @apollo/client to v3.5.10 [`3ea874d`](https://github.com/Stooa/Stooa/commit/3ea874d25be71bc170852693511413a321110fd5) -- Update dependency doctrine/orm to v2.11.1 [`89b8b60`](https://github.com/Stooa/Stooa/commit/89b8b608eece90ce0388d6f9cc6c4de85cce59e8) -- Update dependency ramsey/uuid-doctrine to v1.8.1 [`81222f2`](https://github.com/Stooa/Stooa/commit/81222f21a971322ba12c909bcf94c57f36095b8d) -- Update dependency nelmio/cors-bundle to v2.2.0 [`374c6d3`](https://github.com/Stooa/Stooa/commit/374c6d3d58baaac251e905606272cdacc612d18b) -- Update dependency webonyx/graphql-php to v14.11.5 [`eb8ac76`](https://github.com/Stooa/Stooa/commit/eb8ac76770fbd5e40a23c69d24c88a45f8810af9) -- Update dependency axios to v0.25.0 [`ac4d5e3`](https://github.com/Stooa/Stooa/commit/ac4d5e39b0eb4bd6d66cc894eedfd895d84a641f) -- Fix error when closing a fishbowl [`8963743`](https://github.com/Stooa/Stooa/commit/8963743f928e30bb764557b782d79897815a66e5) -- Update dependency runroom-packages/testing to v0.15.6 [`7cad2d7`](https://github.com/Stooa/Stooa/commit/7cad2d767b9aca8fa4cc1d240e57eafacbee1b4f) -- Update dependency graphql to v16 [`9ed550b`](https://github.com/Stooa/Stooa/commit/9ed550ba94131c2d4725f2cea5f9633cea90bcb1) -- Apply php-cs-fixer [`4689d5d`](https://github.com/Stooa/Stooa/commit/4689d5d4d9a17f8b8df4970e843bf2d06dd7909c) -- Update dependency phpstan/phpstan-webmozart-assert to v1.0.8 [`3fe32af`](https://github.com/Stooa/Stooa/commit/3fe32aff2a2b41852988337e85f58eae283b3c58) -- Delete version from templates [`cd3d96f`](https://github.com/Stooa/Stooa/commit/cd3d96fef3a6ccbf5991c6680457db8d68c18a1f) -- Update dependency psalm/plugin-symfony to v3.1.3 [`8649b5f`](https://github.com/Stooa/Stooa/commit/8649b5f4eb32361710ee09446035a48487a85d98) -- fix phpstan error [`b4e9a6f`](https://github.com/Stooa/Stooa/commit/b4e9a6f52f97e44729c960c1c0c844fe6a2627cf) -- Fix hot reload trying to refresh full page [`0006848`](https://github.com/Stooa/Stooa/commit/0006848561f2f62ae4c599832a96cc0611f26418) -- Fix socials alignment [`6c13237`](https://github.com/Stooa/Stooa/commit/6c13237e5445c2c1b12eb3f08c8c1711579017fd) -- Fix psalm [`09e5442`](https://github.com/Stooa/Stooa/commit/09e5442e20ebe76b743cd4feda51fdd702085b7e) -- Update dependency phpstan/phpstan to v1.6.5 [`c3f42b6`](https://github.com/Stooa/Stooa/commit/c3f42b6404314f62b0b30d97c67d3a7df524f0aa) -- Update dependency symfony/flex to v1.18.7 [`6e69c80`](https://github.com/Stooa/Stooa/commit/6e69c80267309609575b60140103c5963173efe6) -- Update dependency rector/rector to v0.12.23 [`0e9f6f5`](https://github.com/Stooa/Stooa/commit/0e9f6f5b770ef0b3f32389ce5777e92bfe653468) -- Update actions/checkout action to v3 [`573bbb0`](https://github.com/Stooa/Stooa/commit/573bbb060f660173aa78ec21478497f6a26016d9) -- Update dependency @types/node to v16.11.33 [`ad8506e`](https://github.com/Stooa/Stooa/commit/ad8506e9f36e763599bab675b97b2504105e3179) -- Update dependency phpstan/phpstan to v1.6.3 [`6f15cf5`](https://github.com/Stooa/Stooa/commit/6f15cf5138909b6c88f3d2694ff02e5ea9f359b9) -- Update dependency runroom-packages/testing to v0.15.7 [`9529b01`](https://github.com/Stooa/Stooa/commit/9529b018645b1b30cb98d393b274d154101f7bc4) -- Update dependency @types/node to v16.11.32 [`c4f0023`](https://github.com/Stooa/Stooa/commit/c4f0023b498aa85246ccd6ed9b15d70e7a8e4f7a) -- Update dependency @types/node to v16.11.31 [`634edec`](https://github.com/Stooa/Stooa/commit/634edec81c61c033b3d4d717c88236c609f439a8) -- Update dependency @types/node to v16.11.29 [`4d9a06c`](https://github.com/Stooa/Stooa/commit/4d9a06cf81544d9daf39bfe61cac90b14ae276ab) -- Update dependency webonyx/graphql-php to v14.11.6 [`62dcc34`](https://github.com/Stooa/Stooa/commit/62dcc3482b44cd6c00f74b8d6b2ad46992bd23ed) -- Update dependency babel-plugin-styled-components to v2.0.7 [`7e70166`](https://github.com/Stooa/Stooa/commit/7e701661e503e74b70329a96b4f56351f6ab9896) -- Update dependency @types/styled-components to v5.1.25 [`1c9a519`](https://github.com/Stooa/Stooa/commit/1c9a5199063e0364aec7727b0fb18ddb06c671bd) -- Update dependency @types/react to v17.0.44 [`41a51c3`](https://github.com/Stooa/Stooa/commit/41a51c322c47e2dc0394507b85582cbeff8d51a6) -- Update dependency @types/node to v16.11.27 [`8bef0bc`](https://github.com/Stooa/Stooa/commit/8bef0bcf0a1aa97c790fad5bb47ec578ee4c703b) -- Update dependency framer-motion to v6.2.9 [`cb616fd`](https://github.com/Stooa/Stooa/commit/cb616fdee109089c7c89d794558cf247bf69f333) -- Update dependency twig/twig to v3.3.10 [`2f8c484`](https://github.com/Stooa/Stooa/commit/2f8c484574367e4db169057642ec5ec16b18dc83) -- Update dependency @testing-library/jest-dom to v5.16.4 [`c1504a0`](https://github.com/Stooa/Stooa/commit/c1504a0633315d78d4cf08b944ad344901151d40) -- Update dependency swr to v1.2.2 [`aa85119`](https://github.com/Stooa/Stooa/commit/aa85119e3e2d3f0bf346d54fc7b5c5b270e983aa) -- Update dependency twig/twig to v3.3.9 [`88f5307`](https://github.com/Stooa/Stooa/commit/88f5307f490f1fad97096134aa732493f4960507) -- Update dependency next-translate to v1.3.5 [`d347f91`](https://github.com/Stooa/Stooa/commit/d347f91768831cb227ed2c758d73d427fab91ddb) -- Update dependency framer-motion to v6.2.8 [`62533c1`](https://github.com/Stooa/Stooa/commit/62533c1ac59a2b18345ce71b0e0fbd2d3f61031a) -- Update dependency @types/styled-components to v5.1.24 [`2d26f22`](https://github.com/Stooa/Stooa/commit/2d26f227d21b42066434ab10713b0818f37bf643) -- Update dependency @types/react to v17.0.43 [`1ca6882`](https://github.com/Stooa/Stooa/commit/1ca6882c7b993b770bc514447756dcf9ed4b3348) -- Update dependency @types/node to v16.11.26 [`0405cee`](https://github.com/Stooa/Stooa/commit/0405ceeea4e420870b6e1bc629b09ead2a403b77) -- Update dependency @testing-library/jest-dom to v5.16.3 [`9df88ad`](https://github.com/Stooa/Stooa/commit/9df88ad3be9e32525e8adb8121f539201dc06783) -- Update dependency @types/node to v16.11.24 [`8abf17d`](https://github.com/Stooa/Stooa/commit/8abf17d0b9a59098c00a16c8560c32cfb2d725f4) -- Update dependency phpstan/phpstan-doctrine to v1.2.10 [`0aea5c7`](https://github.com/Stooa/Stooa/commit/0aea5c732cc9cb8b9d4dbcfde127250e2de742d0) -- Update dependency phpstan/phpstan-doctrine to v1.2.9 [`e652906`](https://github.com/Stooa/Stooa/commit/e652906b91955554fb735326a040362d4edaf81b) -- Update dependency @types/styled-components to v5.1.22 [`181f513`](https://github.com/Stooa/Stooa/commit/181f51339eb81eb88cfed4ce2e9479ba962724a5) -- Update dependency twig/twig to v3.3.8 [`08b513f`](https://github.com/Stooa/Stooa/commit/08b513ff7f13ac6a28addefc0df351b447318540) -- Update dependency phpstan/phpstan-symfony to v1.1.4 [`70fcaa4`](https://github.com/Stooa/Stooa/commit/70fcaa47972cf15710150c1a262cb6305a4388c9) -- Update dependency @types/react to v17.0.39 [`e569566`](https://github.com/Stooa/Stooa/commit/e5695666189ec3cc775c53a3655025750897424d) -- Update dependency @testing-library/jest-dom to v5.16.2 [`a32fd51`](https://github.com/Stooa/Stooa/commit/a32fd51828455317120f4b9f93455905962bf1aa) -- Update dependency swr to v1.2.1 [`3a3e071`](https://github.com/Stooa/Stooa/commit/3a3e0717e7bcd1f677f71f7497854103d2f9ae45) -- Update dependency phpstan/phpstan to v1.4.5 [`cdd8b1c`](https://github.com/Stooa/Stooa/commit/cdd8b1c3d32fbf32eeeeeaf4bd440fe396a010b5) -- Update dependency phpstan/phpstan-webmozart-assert to v1.0.9 [`3094321`](https://github.com/Stooa/Stooa/commit/309432195660aa5be9e8ff1738243619163c7b25) -- Update dependency react-toastify to v8.1.1 [`d792afb`](https://github.com/Stooa/Stooa/commit/d792afb64e0da6f0bf4dd3aa454477eb2747245c) -- Update dependency phpstan/phpstan-symfony to v1.1.3 [`1b777e2`](https://github.com/Stooa/Stooa/commit/1b777e207d8d1bdcb6afb4e49ef3ecb0b9ce5912) -- Update dependency @types/node to v16.11.22 [`628a723`](https://github.com/Stooa/Stooa/commit/628a7237fcfc0332526bdd5a8ed1f458eab9ac3c) -- Update dependency phpstan/phpstan to v1.4.4 [`6820d7e`](https://github.com/Stooa/Stooa/commit/6820d7e360c62fcb54aff0c03acef9e646b8623d) -- Update dependency weirdan/doctrine-psalm-plugin to v2.2.0 [`87f217a`](https://github.com/Stooa/Stooa/commit/87f217a85a1b7cf9ae1f7d1dc6fba55a173b32bc) -- Update dependency eslint to v8.8.0 [`6d2af12`](https://github.com/Stooa/Stooa/commit/6d2af12e8dffa3d1ebdd2972aaea2e6bf75ddce7) -- Update dependency phpstan/phpstan to v1.4.3 [`a7d6509`](https://github.com/Stooa/Stooa/commit/a7d6509549be28259d8da39402a0c1a122f22cde) -- Update dependency countries-and-timezones to v3 [`d7da55c`](https://github.com/Stooa/Stooa/commit/d7da55c7865659b473650b75a10507f31719926f) -- Update dependency use-sound to v4 [`dad4e64`](https://github.com/Stooa/Stooa/commit/dad4e641a08f234be936018c865baecaea596510) -- Update dependency next-translate to v1.3.3 [`08de762`](https://github.com/Stooa/Stooa/commit/08de7629909f719584ca33ac34d3865206d3f096) -- Update dependency gsap to v3.9.1 [`7c035b5`](https://github.com/Stooa/Stooa/commit/7c035b5bf1a19d0bdcb13baacd01acf9ef00b136) -- Update dependency lottie-web to v5.8.1 [`4faf357`](https://github.com/Stooa/Stooa/commit/4faf35720e0268f828e144e2b2cc2ea69350d840) -- Update dependency phpstan/phpstan-doctrine to v1.2.8 [`1ab5fe5`](https://github.com/Stooa/Stooa/commit/1ab5fe51cc9fe14223f58b5ea46e41138d34be29) -- Update dependency typescript to v4.5.5 [`6b15cf2`](https://github.com/Stooa/Stooa/commit/6b15cf2376458efb18a3f6c2e2e90bb4175ac479) -- Update dependency @types/node to v16 [`d5b915f`](https://github.com/Stooa/Stooa/commit/d5b915f643adaa442066b78a00575bff19853c50) -- Update dependency prettier to v2.5.1 [`e69c1f7`](https://github.com/Stooa/Stooa/commit/e69c1f776044b9411be2b52ec2ebbc63a8160084) -- Update dependency vimeo/psalm to v4.19.0 [`7d030c6`](https://github.com/Stooa/Stooa/commit/7d030c6054608133f04e1c086dce9dabc2d810c8) -- Update dependency graphql to v15.8.0 [`e832080`](https://github.com/Stooa/Stooa/commit/e832080b554956ea46f2b57787b2ab078bca788c) -- Update dependency countries-and-timezones to v2.5.0 [`0d419eb`](https://github.com/Stooa/Stooa/commit/0d419eb2adf0913588b415117003a7837419fdb3) -- Update dependency swr to v0.5.7 [`276c056`](https://github.com/Stooa/Stooa/commit/276c05649e98f6812f505b4b61534fe2f2c211f7) -- Update dependency styled-components to v5.3.3 [`71f558a`](https://github.com/Stooa/Stooa/commit/71f558a2f1514e770f45325c189d90e693b8d402) -- Update dependency lottie-web to v5.7.14 [`e674b0d`](https://github.com/Stooa/Stooa/commit/e674b0d0be0c5f90f215f634d00a710c660fba87) -- Update dependency graphql to v15.5.3 [`8a425af`](https://github.com/Stooa/Stooa/commit/8a425af229721efcbb07a9d85eee0088597668ca) -- Update dependency babel-plugin-styled-components to v1.12.1 [`83950ff`](https://github.com/Stooa/Stooa/commit/83950ff23fef44fa938c6c426089a878dc2fe79c) -- Update dependency @types/styled-components to v5.1.21 [`56fbade`](https://github.com/Stooa/Stooa/commit/56fbadeac5878cac80dd4c2ab3f235ef8584e076) -- Update dependency @types/yup to v0.29.13 [`1aecfb6`](https://github.com/Stooa/Stooa/commit/1aecfb6827294f594f5ae7164f4edf1d440796b8) -- Stop camera when leaving the seats [`7a25760`](https://github.com/Stooa/Stooa/commit/7a257605c2c11d1c6323d6335676057e4c7b86e2) -- Allow to execute Next.js outside Docker [`a557d8e`](https://github.com/Stooa/Stooa/commit/a557d8e1d7c40aedfff35dd8284c02743f47f07d) -- Rename fixtures file [`5cf3780`](https://github.com/Stooa/Stooa/commit/5cf37801044b1336966df3790ce4befce6ba2145) -- Update nginx Docker tag to v1.21 [`7a1f735`](https://github.com/Stooa/Stooa/commit/7a1f735cf564d6fd5e68aa9816e3860063648726) -- Fix composer normalize [`60db64a`](https://github.com/Stooa/Stooa/commit/60db64ab79dda99fce098ede38cff695d9cf46c8) -- Explain limitations to our deployment process [`cba8152`](https://github.com/Stooa/Stooa/commit/cba81528b9ad503604e735a54f344c3f181ebf7d) -- Add contributing markdown [`cd5cd28`](https://github.com/Stooa/Stooa/commit/cd5cd28abaa48f212bb1a794dab33fb51f313808) -- Update actions/setup-node action to v3 [`29c26c6`](https://github.com/Stooa/Stooa/commit/29c26c6c60972a0f86e9eda1dde31e19e5b933f5) -- Fix guard [`4422536`](https://github.com/Stooa/Stooa/commit/4422536fb1de3f46ec4d02a65bbfb8ff24709785) -- Use APP_ENV=dev to load fixtures [`6306b65`](https://github.com/Stooa/Stooa/commit/6306b65b396488c68ec06d6d605c7d1a48851c84) -- Dump autoload when installing dev dependencies [`9716c1a`](https://github.com/Stooa/Stooa/commit/9716c1a140650c027f6eb0555aa6032041328ea0) -- Move jest tests inside tests folder [`6258ed5`](https://github.com/Stooa/Stooa/commit/6258ed506363a0d92bec722f4e3cd600b1abe2f7) -- Change to DCO [`cbe7d7e`](https://github.com/Stooa/Stooa/commit/cbe7d7e2bfafc84e5a0f89d08a6f4c51e42b330f) -- Update codecov/codecov-action action to v3 [`6b40254`](https://github.com/Stooa/Stooa/commit/6b402549a6c6b5c4cb4742dcd63eaa1d3eaa1452) -- Fix psalm [`bb0b2ee`](https://github.com/Stooa/Stooa/commit/bb0b2eebdee0eddafb266c47661775e7f9a4bc7e) -- Add spaces in emojis [`dfb8b39`](https://github.com/Stooa/Stooa/commit/dfb8b396f1a8e44d7740065f95bc3b855a10f2c0) -- Allow stooa-dev without DCO [`10ddef7`](https://github.com/Stooa/Stooa/commit/10ddef72884ca73c7d645531eb297d8373b38e22) -- Change texts to DCO [`db4ea86`](https://github.com/Stooa/Stooa/commit/db4ea86cda6b1742b06d9c17efbd133bd9cfcd23) -- Add configure development environment to readme [`d53a9c7`](https://github.com/Stooa/Stooa/commit/d53a9c7382e68cfa03ed01fdb99bcd09f34ad4b1) -- Fix format [`6b7217f`](https://github.com/Stooa/Stooa/commit/6b7217fb4e46b9bf3bf7088e5bfe60b9fb1b12ab) -- Add container lint [`234b13d`](https://github.com/Stooa/Stooa/commit/234b13d08c5d97a48fda33bb4647ab979be6b756) -- fix array return in test [`91c4960`](https://github.com/Stooa/Stooa/commit/91c49607ce8a5d8d9628198a1c7cb2128838300e) -- Update doctrine [`215421c`](https://github.com/Stooa/Stooa/commit/215421c8ba70220fb90b687994051c362c96956c) -- Avoid failing E2E on fork runs [`974739b`](https://github.com/Stooa/Stooa/commit/974739b2ee19b9fdf9d826463960de06e5fe07df) -- Fix warning on import color.json [`03e4a45`](https://github.com/Stooa/Stooa/commit/03e4a4589059d7beac25bfcb49273079dd288a3f) -- Use fixtures on local environment too [`eafbb16`](https://github.com/Stooa/Stooa/commit/eafbb169210eb440338448d862f975775c3c65fe) -- Regenerate cache after reset database [`b81a3ef`](https://github.com/Stooa/Stooa/commit/b81a3ef1f20e473a521a98f765dddf3511ed4646) -- Change readme [`ecd31aa`](https://github.com/Stooa/Stooa/commit/ecd31aae385ecc17bcacb0a8dc0ebf3c86a82777) -- Add js to prettier and update action [`9d36171`](https://github.com/Stooa/Stooa/commit/9d36171a8a3be5cf48aa92aa7ee228ef08e11b5f) -- Fix path to document [`fb0354c`](https://github.com/Stooa/Stooa/commit/fb0354c349d319bf159e37cdf94a6cf0cc61e3b9) -- Change name to renovate[bot] [`59cbf4e`](https://github.com/Stooa/Stooa/commit/59cbf4eae527ad73a64bd5ef0c12a1f361db0a7a) -- Update Fishbowl.php [`f1e40e5`](https://github.com/Stooa/Stooa/commit/f1e40e58705964edbc74341ba6f6fba4de946f74) -- Update gedmo too [`3fcb302`](https://github.com/Stooa/Stooa/commit/3fcb30223a740e31e0502e1bb8a3c227cb2b06ab) -- Dipose track if video is not found [`749fbc4`](https://github.com/Stooa/Stooa/commit/749fbc4bfae4ff9020e1d77cdb51d224e645bc3e) -- Fix Renovate Bot name [`985e802`](https://github.com/Stooa/Stooa/commit/985e802a5d8b051957be8a072e41d078214cb155) -- Renovate Bot should not sign DCO [`a2d4106`](https://github.com/Stooa/Stooa/commit/a2d4106aab84ad98edb78e1b031811322367ccc2) -- Remove HSTS on localhost [`d23c4a9`](https://github.com/Stooa/Stooa/commit/d23c4a99566faf918f860ba6554b33c459d5afb7) -- auth variable might be null [`e47c2ce`](https://github.com/Stooa/Stooa/commit/e47c2ce3090fe9c1d9c05e92f9037661f4886e08) -- Add comma [`b697884`](https://github.com/Stooa/Stooa/commit/b6978849a46ffe56cd285931fe1fe83fb9b7f11f) -- Change copy [`81a5e64`](https://github.com/Stooa/Stooa/commit/81a5e643e7a81ae854b858470e8e4deee3122c1f) -- Fix stooa link [`7ecc7e7`](https://github.com/Stooa/Stooa/commit/7ecc7e776e189b734601b15ca11a7cf5cf25f262) -- delete slash [`91df21e`](https://github.com/Stooa/Stooa/commit/91df21ec634c0ef7cec84769d97e7c1c99e7526d) -- Change link [`0a0cd3a`](https://github.com/Stooa/Stooa/commit/0a0cd3af4b757590ff7ec0361e4bfa5fdaad9b55) -- Add link to home [`056cb66`](https://github.com/Stooa/Stooa/commit/056cb66903dbc24cb89c3da9e4950028e8f65f6f) -- Guest access to fishbowl [`4060709`](https://github.com/Stooa/Stooa/commit/40607092444ccd4f9f7650eb510d536df24a8809) -- Update translation files [`6e752e2`](https://github.com/Stooa/Stooa/commit/6e752e2fc22d39a391781c8851f313a053eaf9fa) -- Fix phpstan [`5c4e873`](https://github.com/Stooa/Stooa/commit/5c4e8734956c8444c3456a82210eb316c5c4d1e4) -- Fix backend test workflow [`0a9dbbe`](https://github.com/Stooa/Stooa/commit/0a9dbbe3de60aa6649218db0b5eae64217d6c707) -- Enable shepherd for Psalm [`cef2982`](https://github.com/Stooa/Stooa/commit/cef29829310510ec16a16832e717f979ace90981) -- Fix readme text [`af9cf9f`](https://github.com/Stooa/Stooa/commit/af9cf9f17c158feee48f603016b7302dc02fcba0) -- Update .github/workflows/frontend-lint.yaml [`9450f7f`](https://github.com/Stooa/Stooa/commit/9450f7f0d2dace22c756489698d04aa02344c5b7) -- Add js to yaml [`a46696e`](https://github.com/Stooa/Stooa/commit/a46696ea92ea35033d6041edaff773e81dd5dfc6) -- Updated yarnlock [`21dbe96`](https://github.com/Stooa/Stooa/commit/21dbe969eca59a4efdeb7ab82eff990f3aedf12a) -- Delete caret of npm-scripts package [`62b80ed`](https://github.com/Stooa/Stooa/commit/62b80ed4efbae9f2304ab49914804ebaa298dd5a) -- Add weblate to DCO [`d256c01`](https://github.com/Stooa/Stooa/commit/d256c01546a847908481acba50acf58333ff62df) -- Change action title [`85dd8a6`](https://github.com/Stooa/Stooa/commit/85dd8a60e593ad3d91456ca8b27670a1ac4b79e8) -- Fix alignment [`f5dd182`](https://github.com/Stooa/Stooa/commit/f5dd1821ffd44a4f5d8f1a130144b0cf19a7f770) -- Delete jsx [`a5f4a90`](https://github.com/Stooa/Stooa/commit/a5f4a90698222f6f61d06cc1c7a9f8b227dcd9c6) -- Rename dco workflow to .yaml [`4905fbb`](https://github.com/Stooa/Stooa/commit/4905fbba3da6a82b5ec33adfa671dfe3d8935504) -- Change format [`2278ada`](https://github.com/Stooa/Stooa/commit/2278ada42db6d17cd1c0a9bd767393f6d0edd1fa) -- Fix name in template [`375a4d2`](https://github.com/Stooa/Stooa/commit/375a4d2afbbdd817a2fc4f7ec2578422e5c8526d) diff --git a/package-lock.json b/package-lock.json index aff9ac58a..34e04f627 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "Stooa", - "version": "1.2.0", + "version": "1.2.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.2.0", + "version": "1.2.2", "devDependencies": { "auto-changelog": "2.4.0" } diff --git a/package.json b/package.json index 3bf46c2c9..a85d95e1d 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "title": "Stooa", - "version": "1.2.1", + "version": "1.2.2", "devDependencies": { "auto-changelog": "2.4.0" }, "auto-changelog": { "template": "keepachangelog", "unreleased": false, - "commitLimit": false + "commitLimit": 0 } }