mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Merge master into translations branch
This commit is contained in:
commit
e340be512c
@ -1,4 +1,4 @@
|
||||
## v2.23.0 - 2024-07-23
|
||||
## v2.23.0 - 2024-07-23 & 2024-07-19
|
||||
### Feature
|
||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
||||
* Add job bundle (module emploi)
|
||||
@ -6,6 +6,25 @@
|
||||
|
||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
||||
|
||||
* ([#123](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/123)) Add a button to duplicate calendar ranges from a week to another one
|
||||
* [admin] filter users by active / inactive in the admin user's list
|
||||
* ([#273](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/273)) Add the possibility to mark all notifications as read
|
||||
|
||||
|
||||
* Handle duplicate reference id in the import of reference addresses
|
||||
* Do not update the "createdAt" column when importing postal code which does not change
|
||||
* Display filename on file upload within the UI interface
|
||||
### Fixed
|
||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
||||
* Resolved type hinting error in activity list export
|
||||
* ([#271](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/271)) Take into account the acp closing date in the acp works date filter
|
||||
|
||||
### Traduction française des principaux changements
|
||||
- Ajout d'un bouton pour dupliquer les périodes de disponibilités d'une semaine à une autre;
|
||||
- dans l'interface d'administration, filtre sur les utilisateurs actifs. Par défaut, seul les utilisateurs
|
||||
actifs sont affichés;
|
||||
- Nouveau bouton pour indiquer toutes les notifications comme lues;
|
||||
- Améliorations sur l'import des adresses et des codes postaux;
|
||||
- Affiche le nom du fichier déposé quand on téléverse un fichier depuis le poste de travail local;
|
||||
- Agrandit l'icône du type de fichier dans l'interface de dépôt de fichier;
|
||||
- correction: tient compte de la date de fermeture du parcours dans les filtres sur les actions d'accompagnement.
|
||||
|
3
.changes/v2.24.0.md
Normal file
3
.changes/v2.24.0.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v2.24.0 - 2024-09-11
|
||||
### Feature
|
||||
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.
|
5
.changes/v3.0.0.md
Normal file
5
.changes/v3.0.0.md
Normal file
@ -0,0 +1,5 @@
|
||||
## v3.0.0 - 2024-08-26
|
||||
### Fixed
|
||||
* Fix delete action for accompanying periods in draft state
|
||||
* Fix connection to azure when making an calendar event in chill
|
||||
* CollectionType js fixes for remove button and adding multiple entries
|
3
.changes/v3.1.0.md
Normal file
3
.changes/v3.1.0.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v3.1.0 - 2024-08-30
|
||||
### Feature
|
||||
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.
|
6
.changes/v3.1.1.md
Normal file
6
.changes/v3.1.1.md
Normal file
@ -0,0 +1,6 @@
|
||||
## v3.1.1 - 2024-10-01
|
||||
### Fixed
|
||||
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
|
||||
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
|
||||
|
||||
* Fixed typing of custom field long choice and custom field group
|
3
.changes/v3.2.0.md
Normal file
3
.changes/v3.2.0.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v3.2.0 - 2024-10-30
|
||||
### Feature
|
||||
* Introduce a gender entity
|
4
.changes/v3.2.1.md
Normal file
4
.changes/v3.2.1.md
Normal file
@ -0,0 +1,4 @@
|
||||
## v3.2.1 - 2024-10-31
|
||||
### Fixed
|
||||
* Add the possibility of unknown to the gender entity
|
||||
* Fix the fusion of person doubles by excluding accompanyingPeriod work entities to be deleted. They are moved instead.
|
3
.changes/v3.2.2.md
Normal file
3
.changes/v3.2.2.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v3.2.2 - 2024-10-31
|
||||
### Fixed
|
||||
* Fix gender translation for unknown
|
4
.changes/v3.2.3.md
Normal file
4
.changes/v3.2.3.md
Normal file
@ -0,0 +1,4 @@
|
||||
## v3.2.3 - 2024-11-05
|
||||
### Fixed
|
||||
* ([#315](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/315)) Fix display of accompanying period work referrers. Only current referrers should be displayed.
|
||||
Fix color of Chill footer
|
3
.changes/v3.2.4.md
Normal file
3
.changes/v3.2.4.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v3.2.4 - 2024-11-06
|
||||
### Fixed
|
||||
* Fix compilation of chill assets
|
13
.changes/v3.3.0.md
Normal file
13
.changes/v3.3.0.md
Normal file
@ -0,0 +1,13 @@
|
||||
## v3.3.0 - 2024-11-20
|
||||
### Feature
|
||||
* Electronic signature
|
||||
|
||||
Implementation of the electronic signature for documents within chill.
|
||||
* ([#286](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/286)) The behavoir of the voters for stored objects is adjusted so as to limit edit and delete possibilities to users related to the activity, social action or workflow entity.
|
||||
* ([#288](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/288)) Metadata form added for person signatures
|
||||
* Add a signature step in workflow, which allow to apply an electronic signature on documents
|
||||
* Keep an history of each version of a stored object.
|
||||
* Add a "send external" step in workflow, which allow to send stored objects and other elements to remote people, by sending them a public url
|
||||
### Fixed
|
||||
* Adjust household list export to include households even if their address is NULL
|
||||
* Remove validation of date string on deathDate
|
4
.changes/v3.4.0.md
Normal file
4
.changes/v3.4.0.md
Normal file
@ -0,0 +1,4 @@
|
||||
## v3.4.0 - 2024-11-20
|
||||
### Feature
|
||||
* ([#314](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/314)) Admin: improve document type admin form with a select field for related class.
|
||||
Admin: Allow administrator to assign multiple group centers in one go to a user.
|
3
.changes/v3.4.1.md
Normal file
3
.changes/v3.4.1.md
Normal file
@ -0,0 +1,3 @@
|
||||
## v3.4.1 - 2024-11-22
|
||||
### Fixed
|
||||
* Set the workflow's title to notification content and subject
|
94
.env
94
.env
@ -11,19 +11,13 @@
|
||||
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
|
||||
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
||||
|
||||
## Locale
|
||||
LOCALE=fr
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
# this should be set in docker-compose.yml file
|
||||
APP_ENV=prod
|
||||
APP_SECRET=ChangeItf2b58287ef7f9976409d3f6c72529e99ChangeIt
|
||||
TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
|
||||
TRUSTED_HOSTS='^(localhost|example\.com|nginx)$'
|
||||
APP_SECRET=!ChangeMeInAppEnv!
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
## Wopi server for editing documents online
|
||||
WOPI_SERVER=http://collabora:9980
|
||||
EDITOR_SERVER=http://collabora:9980
|
||||
|
||||
# must be manually set in .env.local
|
||||
# ADMIN_PASSWORD=
|
||||
@ -32,52 +26,14 @@ WOPI_SERVER=http://collabora:9980
|
||||
# MAILER_DSN=null://null
|
||||
###< symfony/mailer ###
|
||||
|
||||
## Notifications
|
||||
NOTIFICATION_HOST=localhost:8001
|
||||
NOTIFICATION_FROM_EMAIL=admin@chill.social
|
||||
NOTIFICATION_FROM_NAME="Chill <admin@chill.social>"
|
||||
|
||||
## Pgadmin credential
|
||||
PGADMIN_DEFAULT_EMAIL=
|
||||
PGADMIN_DEFAULT_PASSWORD=
|
||||
|
||||
## OVH OpenStack Storage Container
|
||||
ASYNC_UPLOAD_TEMP_URL_KEY=
|
||||
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
|
||||
ASYNC_UPLOAD_TEMP_URL_CONTAINER=
|
||||
|
||||
## Redis Cache
|
||||
REDIS_HOST=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||
|
||||
## Twilio
|
||||
TWILIO_SID=~
|
||||
TWILIO_SECRET=~
|
||||
DEFAULT_CARRIER_CODE=BE
|
||||
|
||||
ADD_ADDRESS_DEFAULT_COUNTRY=BE
|
||||
|
||||
ADD_ADDRESS_MAP_CENTER_X=50.8443
|
||||
ADD_ADDRESS_MAP_CENTER_Y=4.3523
|
||||
ADD_ADDRESS_MAP_CENTER_Z=15
|
||||
|
||||
SHORT_MESSAGE_DSN=null://null
|
||||
|
||||
## DOCKER IMAGES REGISTRY
|
||||
#IMAGE_PHP=
|
||||
#IMAGE_NGINX=
|
||||
|
||||
## DOCKER IMAGES TAG
|
||||
#VERSION=test
|
||||
#VERSION=prod
|
||||
|
||||
###> symfony/messenger ###
|
||||
# Choose one of the transports below
|
||||
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
|
||||
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
|
||||
MESSENGER_TRANSPORT_DSN=sync://
|
||||
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
||||
# MESSENGER_TRANSPORT_DSN=sync://
|
||||
# MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
||||
MESSENGER_TRANSPORT_DSN=${RABBITMQ_URL}/%2f
|
||||
###< symfony/messenger ###
|
||||
|
||||
###> doctrine/doctrine-bundle ###
|
||||
@ -92,3 +48,43 @@ JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
|
||||
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
|
||||
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
||||
###< lexik/jwt-authentication-bundle ###
|
||||
|
||||
###> chill-project/chill-bundles ###
|
||||
# Generate a password using `symfony console security:hash-password --empty-salt <password> 'Symfony\Component\Security\Core\User\User'` and paste it into .env.local file
|
||||
# ADMIN_PASSWORD=
|
||||
# Add a configuration for sending SMS (before calendar appointments, aka "Rendez-vous"). See https://symfony.com/doc/current/notifier.html#sms-channel
|
||||
# Configuration for using ovh custom notifier
|
||||
# SHORT_MESSAGE_DSN="ovh://user:password@ovh-eu?consumer_key=123456&sender=%2B32475123456&service_name=sms-xx123456-1"
|
||||
SHORT_MESSAGE_DSN=null://null
|
||||
# Default locale for the project
|
||||
LOCALE=fr
|
||||
# Those keys are required to configure the access to store documents
|
||||
ASYNC_UPLOAD_TEMP_URL_KEY=
|
||||
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
|
||||
ASYNC_UPLOAD_TEMP_URL_CONTAINER=
|
||||
# Twilio configuration, to check for the existence of phonenumber in a directory (may be deprecated in a near future)
|
||||
TWILIO_SID=
|
||||
TWILIO_SECRET=
|
||||
# Default carrier code will replace all leading zero by an international code. Set here the country as two letters
|
||||
DEFAULT_CARRIER_CODE=FR
|
||||
# Configuration for the notification emails
|
||||
NOTIFICATION_FROM_EMAIL=chill@instance.com
|
||||
NOTIFICATION_FROM_NAME=Chill
|
||||
# Will set the default host when sending email from command or services (see https://symfony.com/doc/5.x/routing.html#generating-urls-in-commands)
|
||||
NOTIFICATION_HOST=my.chill.social
|
||||
# Variables for relatorio host, which generates documents
|
||||
RELATORIO_HOST=
|
||||
RELATORIO_PORT=
|
||||
# Address for your collabora server
|
||||
#EDITOR_SERVER=https://code.example.com
|
||||
EDITOR_SERVER=https://collabora.champs-libres.be
|
||||
# center address widget when empty
|
||||
ADD_ADDRESS_DEFAULT_COUNTRY=BE
|
||||
ADD_ADDRESS_MAP_CENTER_X=50.8443
|
||||
ADD_ADDRESS_MAP_CENTER_Y=4.3523
|
||||
ADD_ADDRESS_MAP_CENTER_Z=15
|
||||
## Redis Cache & redis database
|
||||
REDIS_HOST=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||
###< chill-project/chill-bundles ###
|
||||
|
16
.env.test
16
.env.test
@ -4,15 +4,8 @@
|
||||
KERNEL_CLASS='App\Kernel'
|
||||
APP_SECRET='$ecretf0rt3st'
|
||||
|
||||
TRUSTED_HOSTS=
|
||||
|
||||
ADMIN_PASSWORD=password
|
||||
|
||||
LOCALE=fr
|
||||
REDIS_URL=redis
|
||||
REDIS_PORT=6379
|
||||
REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}
|
||||
|
||||
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
|
||||
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
|
||||
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
||||
@ -22,22 +15,25 @@ TWILIO_SECRET=~
|
||||
DEFAULT_CARRIER_CODE=BE
|
||||
|
||||
ADD_ADDRESS_DEFAULT_COUNTRY=BE
|
||||
|
||||
ADD_ADDRESS_MAP_CENTER_X=50.8443
|
||||
ADD_ADDRESS_MAP_CENTER_Y=4.3523
|
||||
ADD_ADDRESS_MAP_CENTER_Z=15
|
||||
|
||||
SHORT_MESSAGE_DSN=null://null
|
||||
MESSENGER_TRANSPORT_DSN=sync://
|
||||
###< symfony/messenger ###
|
||||
|
||||
###> doctrine/doctrine-bundle ###
|
||||
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
||||
#
|
||||
DATABASE_URL="postgresql://postgres:postgres@db:5432/test?serverVersion=14&charset=utf8"
|
||||
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5454/test?serverVersion=14&charset=utf8"
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
||||
ASYNC_UPLOAD_TEMP_URL_KEY=
|
||||
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
|
||||
ASYNC_UPLOAD_TEMP_URL_CONTAINER=
|
||||
|
||||
MAILER_DSN=null://null
|
||||
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PORT=6363
|
||||
|
29
.gitignore
vendored
29
.gitignore
vendored
@ -3,10 +3,18 @@ composer
|
||||
composer.phar
|
||||
composer.lock
|
||||
docs/build/
|
||||
node_modules/*
|
||||
.php_cs.cache
|
||||
.cache/*
|
||||
|
||||
docker/db/data
|
||||
docker/rabbitmq/data
|
||||
|
||||
# in this development bundle, we want to ignore directories related to a real app
|
||||
assets/*
|
||||
migrations/*
|
||||
templates/*
|
||||
translations/*
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
/.env.local
|
||||
/.env.local.php
|
||||
@ -15,7 +23,6 @@ node_modules/*
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
/bin/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
###> phpunit/phpunit ###
|
||||
@ -27,4 +34,20 @@ node_modules/*
|
||||
/.idea/
|
||||
/.psalm/
|
||||
|
||||
node_modules/*
|
||||
###> phpstan/phpstan ###
|
||||
phpstan.neon
|
||||
###< phpstan/phpstan ###
|
||||
|
||||
###> lexik/jwt-authentication-bundle ###
|
||||
/config/jwt/*.pem
|
||||
###< lexik/jwt-authentication-bundle ###
|
||||
|
||||
###> symfony/phpunit-bridge ###
|
||||
###< symfony/phpunit-bridge ###
|
||||
|
||||
###> symfony/webpack-encore-bundle ###
|
||||
/node_modules/
|
||||
/public/build/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
###< symfony/webpack-encore-bundle ###
|
||||
|
@ -9,7 +9,7 @@ cache:
|
||||
# Bring in any services we need http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service
|
||||
# See http://docs.gitlab.com/ee/ci/services/README.html for examples.
|
||||
services:
|
||||
- name: postgis/postgis:14-3.3-alpine
|
||||
- name: postgis/postgis:17-3.5-alpine
|
||||
alias: db
|
||||
command:
|
||||
- postgres
|
||||
@ -26,7 +26,7 @@ variables:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
# configure database access
|
||||
DATABASE_URL: postgresql://postgres:postgres@db:5432/postgres?serverVersion=14&charset=utf8
|
||||
DATABASE_URL: postgresql://postgres:postgres@db:5432/postgres?serverVersion=17&charset=utf8
|
||||
# fetch the chill-app using git submodules
|
||||
# GIT_SUBMODULE_STRATEGY: recursive
|
||||
REDIS_HOST: redis
|
||||
@ -56,7 +56,6 @@ build:
|
||||
artifacts:
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- bin
|
||||
- vendor/
|
||||
|
||||
code_style:
|
||||
@ -70,63 +69,56 @@ code_style:
|
||||
artifacts:
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- bin
|
||||
- vendor/
|
||||
|
||||
phpstan_tests:
|
||||
stage: Tests
|
||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
||||
variables:
|
||||
COMPOSER_MEMORY_LIMIT: 3G
|
||||
before_script:
|
||||
- bin/console cache:clear --env=dev
|
||||
script:
|
||||
- bin/phpstan analyze --memory-limit=2G
|
||||
- composer exec phpstan -- analyze --memory-limit=3G
|
||||
cache:
|
||||
paths:
|
||||
- .cache/
|
||||
artifacts:
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- bin
|
||||
- vendor/
|
||||
|
||||
rector_tests:
|
||||
stage: Tests
|
||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
||||
before_script:
|
||||
- bin/console cache:clear --env=dev
|
||||
script:
|
||||
- tests/console cache:clear
|
||||
- bin/rector process --dry-run
|
||||
- composer exec rector -- process --dry-run
|
||||
cache:
|
||||
paths:
|
||||
- .cache/
|
||||
artifacts:
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- bin
|
||||
- vendor/
|
||||
|
||||
# psalm_tests:
|
||||
# stage: Tests
|
||||
# image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
||||
# script:
|
||||
# - bin/psalm
|
||||
# allow_failure: true
|
||||
# artifacts:
|
||||
# expire_in: 30 min
|
||||
# paths:
|
||||
# - bin
|
||||
# - tests/app/vendor/
|
||||
|
||||
unit_tests:
|
||||
stage: Tests
|
||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
||||
variables:
|
||||
COMPOSER_MEMORY_LIMIT: 3G
|
||||
before_script:
|
||||
- php bin/console doctrine:database:create -n --env=test
|
||||
- php bin/console doctrine:migrations:migrate -n --env=test
|
||||
- php bin/console chill:db:sync-views --env=test
|
||||
- php bin/console cache:clear --env=test
|
||||
- php bin/console doctrine:fixtures:load -n --env=test
|
||||
script:
|
||||
- php tests/console doctrine:migrations:migrate -n --env=test
|
||||
- php tests/console chill:db:sync-views --env=test
|
||||
- php -d memory_limit=2G tests/console cache:clear --env=test
|
||||
- php -d memory_limit=3G tests/console doctrine:fixtures:load -n --env=test
|
||||
- php -d memory_limit=4G bin/phpunit --colors=never --exclude-group dbIntensive
|
||||
- composer exec phpunit -- --colors=never --exclude-group dbIntensive,openstack-integration
|
||||
artifacts:
|
||||
expire_in: 1 day
|
||||
paths:
|
||||
- bin
|
||||
- vendor/
|
||||
|
||||
release:
|
||||
@ -138,4 +130,4 @@ release:
|
||||
- echo "running release_job"
|
||||
release:
|
||||
tag_name: '$CI_COMMIT_TAG'
|
||||
description: "./.changes/v$CI_COMMIT_TAG.md"
|
||||
description: "./.changes/$CI_COMMIT_TAG.md"
|
||||
|
@ -120,6 +120,6 @@ $rules = array_merge(
|
||||
$untilFullSwitchToPhp8,
|
||||
);
|
||||
|
||||
$rules['header_comment']['header'] = trim(file_get_contents(__DIR__.'/resource/header.txt'));
|
||||
$rules['header_comment']['header'] = trim(file_get_contents(__DIR__.'/resources/header.txt'));
|
||||
|
||||
return $config->setRules($rules);
|
||||
|
2
.symfony.local.yaml
Normal file
2
.symfony.local.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
workers:
|
||||
docker_compose: ~
|
87
CHANGELOG.md
87
CHANGELOG.md
@ -6,7 +6,73 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||
|
||||
|
||||
## v2.23.0 - 2024-07-23
|
||||
## v3.4.1 - 2024-11-22
|
||||
### Fixed
|
||||
* Set the workflow's title to notification content and subject
|
||||
|
||||
## v3.4.0 - 2024-11-20
|
||||
### Feature
|
||||
* ([#314](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/314)) Admin: improve document type admin form with a select field for related class.
|
||||
Admin: Allow administrator to assign multiple group centers in one go to a user.
|
||||
|
||||
## v3.3.0 - 2024-11-20
|
||||
### Feature
|
||||
* Electronic signature
|
||||
|
||||
Implementation of the electronic signature for documents within chill.
|
||||
* ([#286](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/286)) The behavoir of the voters for stored objects is adjusted so as to limit edit and delete possibilities to users related to the activity, social action or workflow entity.
|
||||
* ([#288](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/288)) Metadata form added for person signatures
|
||||
* Add a signature step in workflow, which allow to apply an electronic signature on documents
|
||||
* Keep an history of each version of a stored object.
|
||||
* Add a "send external" step in workflow, which allow to send stored objects and other elements to remote people, by sending them a public url
|
||||
### Fixed
|
||||
* Adjust household list export to include households even if their address is NULL
|
||||
* Remove validation of date string on deathDate
|
||||
|
||||
## v3.2.4 - 2024-11-06
|
||||
### Fixed
|
||||
* Fix compilation of chill assets
|
||||
|
||||
## v3.2.3 - 2024-11-05
|
||||
### Fixed
|
||||
* ([#315](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/315)) Fix display of accompanying period work referrers. Only current referrers should be displayed.
|
||||
Fix color of Chill footer
|
||||
|
||||
## v3.2.2 - 2024-10-31
|
||||
### Fixed
|
||||
* Fix gender translation for unknown
|
||||
|
||||
## v3.2.1 - 2024-10-31
|
||||
### Fixed
|
||||
* Add the possibility of unknown to the gender entity
|
||||
* Fix the fusion of person doubles by excluding accompanyingPeriod work entities to be deleted. They are moved instead.
|
||||
|
||||
## v3.2.0 - 2024-10-30
|
||||
### Feature
|
||||
* Introduce a gender entity
|
||||
|
||||
## v3.1.1 - 2024-10-01
|
||||
### Fixed
|
||||
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
|
||||
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
|
||||
|
||||
* Fixed typing of custom field long choice and custom field group
|
||||
|
||||
## v3.1.0 - 2024-08-30
|
||||
### Feature
|
||||
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.
|
||||
|
||||
## v3.0.0 - 2024-08-26
|
||||
### Fixed
|
||||
* Fix delete action for accompanying periods in draft state
|
||||
* Fix connection to azure when making an calendar event in chill
|
||||
* CollectionType js fixes for remove button and adding multiple entries
|
||||
|
||||
## v2.24.0 - 2024-09-11
|
||||
### Feature
|
||||
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.
|
||||
|
||||
## v2.23.0 - 2024-07-23 & 2024-07-19
|
||||
### Feature
|
||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
||||
* Add job bundle (module emploi)
|
||||
@ -14,9 +80,28 @@ and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||
|
||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
||||
|
||||
* ([#123](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/123)) Add a button to duplicate calendar ranges from a week to another one
|
||||
* [admin] filter users by active / inactive in the admin user's list
|
||||
* ([#273](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/273)) Add the possibility to mark all notifications as read
|
||||
|
||||
|
||||
* Handle duplicate reference id in the import of reference addresses
|
||||
* Do not update the "createdAt" column when importing postal code which does not change
|
||||
* Display filename on file upload within the UI interface
|
||||
### Fixed
|
||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
||||
* Resolved type hinting error in activity list export
|
||||
* ([#271](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/271)) Take into account the acp closing date in the acp works date filter
|
||||
|
||||
### Traduction française des principaux changements
|
||||
- Ajout d'un bouton pour dupliquer les périodes de disponibilités d'une semaine à une autre;
|
||||
- dans l'interface d'administration, filtre sur les utilisateurs actifs. Par défaut, seul les utilisateurs
|
||||
actifs sont affichés;
|
||||
- Nouveau bouton pour indiquer toutes les notifications comme lues;
|
||||
- Améliorations sur l'import des adresses et des codes postaux;
|
||||
- Affiche le nom du fichier déposé quand on téléverse un fichier depuis le poste de travail local;
|
||||
- Agrandit l'icône du type de fichier dans l'interface de dépôt de fichier;
|
||||
- correction: tient compte de la date de fermeture du parcours dans les filtres sur les actions d'accompagnement.
|
||||
|
||||
## v2.22.2 - 2024-07-03
|
||||
### Fixed
|
||||
|
16
README.md
16
README.md
@ -1,9 +1,15 @@
|
||||
# Chill framework
|
||||
# Main Chill Bundles and Chill framework
|
||||
|
||||
Documentation of the Chill software.
|
||||
Chill is a software for social workers. It allows them to keep track of the social work they do.
|
||||
|
||||
The online documentation can be found at http://docs.chill.social
|
||||
See our website for more information https://www.chill.social
|
||||
|
||||
See the [`docs`][1] directory for more.
|
||||
## Installation
|
||||
|
||||
[1]: docs/README.md
|
||||
Chill-bundles is a set of bundles that should be used within a Symfony application.
|
||||
|
||||
A symfony application will help you to customize all the configuration options, change the behaviour of some parts of the usual-way that chill works, … without to have to fork this repository !
|
||||
|
||||
See [the instructions in the docs](./docs/source/installation/index.rst).
|
||||
|
||||
Those instructions are also built [online](https://docs.chill.social).
|
||||
|
@ -4,6 +4,10 @@
|
||||
use App\Kernel;
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||
|
||||
if (!is_dir(dirname(__DIR__).'/vendor')) {
|
||||
throw new LogicException('Dependencies are missing. Try running "composer install".');
|
||||
}
|
||||
|
||||
if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
|
||||
throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".');
|
||||
}
|
34
compose.override.yaml
Normal file
34
compose.override.yaml
Normal file
@ -0,0 +1,34 @@
|
||||
services:
|
||||
###> doctrine/doctrine-bundle ###
|
||||
database:
|
||||
ports:
|
||||
- "127.0.0.1:5454:5432"
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
||||
###> symfony/mailer ###
|
||||
mailer:
|
||||
image: axllent/mailpit
|
||||
ports:
|
||||
- "1025"
|
||||
- "8025"
|
||||
environment:
|
||||
MP_SMTP_AUTH_ACCEPT_ANY: 1
|
||||
MP_SMTP_AUTH_ALLOW_INSECURE: 1
|
||||
###< symfony/mailer ###
|
||||
|
||||
|
||||
redis:
|
||||
ports:
|
||||
- 127.0.0.1:6363:6379
|
||||
relatorio:
|
||||
ports:
|
||||
- 8888
|
||||
|
||||
rabbitmq:
|
||||
ports:
|
||||
- 127.0.0.1:5689:5672
|
||||
- 127.0.0.1:15689:15672
|
||||
# required to make data persistent
|
||||
hostname: my-rabbit
|
||||
volumes:
|
||||
- ./docker/rabbitmq/data:/var/lib/rabbitmq
|
56
compose.yaml
Normal file
56
compose.yaml
Normal file
@ -0,0 +1,56 @@
|
||||
services:
|
||||
###> doctrine/doctrine-bundle ###
|
||||
database:
|
||||
image: postgis/postgis:${POSTGRES_VERSION:-16}-3.4-alpine
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-app}
|
||||
# You should definitely change the password in production
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-app}
|
||||
volumes:
|
||||
# - database_data:/var/lib/postgresql/data:rw
|
||||
# You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data!
|
||||
- ./docker/db/data:/var/lib/postgresql/data:rw
|
||||
###< doctrine/doctrine-bundle ###
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
relatorio:
|
||||
image: registry.gitlab.com/champs-libres/public/relatorio-tornado/app:latest
|
||||
|
||||
sign-worker:
|
||||
image: h3m6q87t.gra7.container-registry.ovh.net/sign-pdf-worker/worker:latest
|
||||
environment:
|
||||
AMQP_URL: amqp://guest:guest@rabbitmq:5672/%2f/to_python_sign
|
||||
LOG_LEVEL: INFO
|
||||
PKCS12_PATH: /etc/sign-pdf/dummy.p12
|
||||
TIMESTAMP_URL: http://freetsa.org/tsr
|
||||
QUEUE_IN: to_python_sign
|
||||
EXCHANGE_OUT: signed_docs
|
||||
OUT_ROUTING_KEY: signed_doc
|
||||
TSA_CERT_CHAIN: /etc/sign-pdf/tsa/tsa-chain.pem
|
||||
TSA_CONFIG_PATH: /etc/sign-pdf/rootca.conf
|
||||
TSA_KEY_PASSWORD: "5678"
|
||||
volumes:
|
||||
- "./resources/dev-certificate/dummy.p12:/etc/sign-pdf/dummy.p12:ro"
|
||||
- "./resources/dev-certificate/rootca.conf:/etc/sign-pdf/rootca.conf:ro"
|
||||
- "./resources/dev-certificate/tsa:/etc/sign-pdf/tsa:ro"
|
||||
- "./resources/dev-certificate/tsa_serial:/var/lib/tsa/tsa_serial:rw"
|
||||
links:
|
||||
- rabbitmq
|
||||
depends_on:
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
|
||||
rabbitmq:
|
||||
image: rabbitmq:3-management-alpine
|
||||
healthcheck:
|
||||
test: rabbitmq-diagnostics -q ping
|
||||
interval: 30s
|
||||
timeout: 30s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
###> doctrine/doctrine-bundle ###
|
||||
database_data:
|
||||
###< doctrine/doctrine-bundle ###
|
@ -31,6 +31,7 @@
|
||||
"phpoffice/phpspreadsheet": "^1.16",
|
||||
"ramsey/uuid-doctrine": "^1.7",
|
||||
"sensio/framework-extra-bundle": "^5.5",
|
||||
"smalot/pdfparser": "^2.10",
|
||||
"spomky-labs/base64url": "^2.0",
|
||||
"symfony/asset": "^5.4",
|
||||
"symfony/browser-kit": "^5.4",
|
||||
@ -42,6 +43,7 @@
|
||||
"symfony/dom-crawler": "^5.4",
|
||||
"symfony/error-handler": "^5.4",
|
||||
"symfony/event-dispatcher": "^5.4",
|
||||
"symfony/event-dispatcher-contracts": "^2.4",
|
||||
"symfony/expression-language": "^5.4",
|
||||
"symfony/filesystem": "^5.4",
|
||||
"symfony/finder": "^5.4",
|
||||
@ -97,11 +99,13 @@
|
||||
"rector/rector": "^1.1.0",
|
||||
"symfony/debug-bundle": "^5.4",
|
||||
"symfony/dotenv": "^5.4",
|
||||
"symfony/flex": "^2.4",
|
||||
"symfony/maker-bundle": "^1.20",
|
||||
"symfony/phpunit-bridge": "^7.1",
|
||||
"symfony/runtime": "^5.4",
|
||||
"symfony/stopwatch": "^5.4",
|
||||
"symfony/var-dumper": "^5.4"
|
||||
"symfony/var-dumper": "^5.4",
|
||||
"symfony/web-profiler-bundle": "^5.4"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/symfony": "*"
|
||||
@ -129,7 +133,7 @@
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"App\\": "tests/",
|
||||
"App\\": "src/app",
|
||||
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
||||
"Chill\\WopiBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
||||
"Chill\\Utils\\Rector\\Tests\\": "utils/rector/tests"
|
||||
@ -143,16 +147,22 @@
|
||||
"phpro/grumphp": true,
|
||||
"phpstan/extension-installer": true,
|
||||
"roave/you-are-using-it-wrong": true,
|
||||
"symfony/runtime": true
|
||||
"symfony/runtime": true,
|
||||
"symfony/flex": true
|
||||
},
|
||||
"bin-dir": "bin",
|
||||
"optimize-autoloader": true,
|
||||
"sort-packages": true
|
||||
},
|
||||
"scripts": {
|
||||
"auto-scripts": {
|
||||
"cache:clear": "symfony-cmd"
|
||||
"cache:clear": "symfony-cmd",
|
||||
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
||||
},
|
||||
"php-cs-fixer": "php-cs-fixer fix --config=./.php-cs-fixer.dist.php --show-progress=none"
|
||||
},
|
||||
"extra": {
|
||||
"symfony": {
|
||||
"docker": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/*
|
||||
* Chill is a software for social workers
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
return [
|
||||
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||
loophp\PsrHttpMessageBridgeBundle\PsrHttpMessageBridgeBundle::class => ['all' => true],
|
||||
ChampsLibres\WopiBundle\WopiBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
|
||||
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
|
||||
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
|
||||
Knp\Bundle\TimeBundle\KnpTimeBundle::class => ['all' => true],
|
||||
KnpU\OAuth2ClientBundle\KnpUOAuth2ClientBundle::class => ['all' => true],
|
||||
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
||||
Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true],
|
||||
Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['dev' => true, 'test' => true],
|
||||
Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true],
|
||||
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
|
||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
|
||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
||||
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
|
||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
|
||||
Chill\ActivityBundle\ChillActivityBundle::class => ['all' => true],
|
||||
Chill\AsideActivityBundle\ChillAsideActivityBundle::class => ['all' => true],
|
||||
Chill\CalendarBundle\ChillCalendarBundle::class => ['all' => true],
|
||||
@ -23,24 +34,6 @@ return [
|
||||
Chill\TaskBundle\ChillTaskBundle::class => ['all' => true],
|
||||
Chill\ThirdPartyBundle\ChillThirdPartyBundle::class => ['all' => true],
|
||||
Chill\BudgetBundle\ChillBudgetBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
|
||||
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
|
||||
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
|
||||
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
|
||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
|
||||
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
||||
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
|
||||
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
||||
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||
//Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
|
||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
|
||||
Knp\Bundle\TimeBundle\KnpTimeBundle::class => ['all' => true],
|
||||
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
|
||||
loophp\PsrHttpMessageBridgeBundle\PsrHttpMessageBridgeBundle::class => ['all' => true],
|
||||
\Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true],
|
||||
ChampsLibres\WopiBundle\WopiBundle::class => ['all' => true],
|
||||
Chill\WopiBundle\ChillWopiBundle::class => ['all' => true],
|
||||
\Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true],
|
||||
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
|
||||
];
|
@ -17,17 +17,3 @@ framework:
|
||||
# Namespaced pools use the above "app" backend by default
|
||||
#pools:
|
||||
#my.dedicated.cache: null
|
||||
|
||||
default_redis_provider: '%env(resolve:REDIS_URL)%'
|
||||
|
||||
pools:
|
||||
cache.user_data:
|
||||
adapter: cache.adapter.redis
|
||||
public: true
|
||||
default_lifetime: 300 # 5 minutes
|
||||
|
||||
# will be used in chill_main.tag_aware_cache service
|
||||
cache.tags:
|
||||
adapter: cache.adapter.redis
|
||||
public: false
|
||||
default_lifetime: 300
|
14
config/packages/cache_chill.yaml
Normal file
14
config/packages/cache_chill.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
framework:
|
||||
cache:
|
||||
default_redis_provider: '%env(resolve:REDIS_URL)%'
|
||||
pools:
|
||||
cache.user_data:
|
||||
adapter: cache.adapter.redis
|
||||
public: true
|
||||
default_lifetime: 300 # 5 minutes
|
||||
|
||||
# will be used in chill_main.tag_aware_cache service
|
||||
cache.tags:
|
||||
adapter: cache.adapter.redis
|
||||
public: false
|
||||
default_lifetime: 300
|
121
config/packages/chill.yaml
Normal file
121
config/packages/chill.yaml
Normal file
@ -0,0 +1,121 @@
|
||||
chill_main:
|
||||
available_languages: [ '%env(resolve:LOCALE)%', 'en' ]
|
||||
available_countries: ['BE', 'FR']
|
||||
notifications:
|
||||
from_email: '%env(resolve:NOTIFICATION_FROM_EMAIL)%'
|
||||
from_name: '%env(resolve:NOTIFICATION_FROM_NAME)%'
|
||||
host: '%env(resolve:NOTIFICATION_HOST)%'
|
||||
redis:
|
||||
host: '%env(resolve:REDIS_HOST)%'
|
||||
port: '%env(resolve:REDIS_PORT)%'
|
||||
phone_helper:
|
||||
twilio_sid: '%env(resolve:TWILIO_SID)%'
|
||||
twilio_secret: '%env(resolve:TWILIO_SECRET)%'
|
||||
default_carrier_code: '%env(resolve:DEFAULT_CARRIER_CODE)%'
|
||||
short_messages:
|
||||
dsn: '%env(string:SHORT_MESSAGE_DSN)%'
|
||||
acl:
|
||||
form_show_scopes: true
|
||||
form_show_centers: true
|
||||
access_global_history: false
|
||||
access_user_change_password: true
|
||||
access_permissions_group_list: true
|
||||
add_address:
|
||||
default_country: '%env(string:ADD_ADDRESS_DEFAULT_COUNTRY)%'
|
||||
map_center:
|
||||
x: '%env(float:ADD_ADDRESS_MAP_CENTER_X)%'
|
||||
y: '%env(float:ADD_ADDRESS_MAP_CENTER_Y)%'
|
||||
z: '%env(float:ADD_ADDRESS_MAP_CENTER_Z)%'
|
||||
|
||||
when@test:
|
||||
chill_main:
|
||||
available_languages:
|
||||
- 'fr'
|
||||
- 'en'
|
||||
|
||||
chill_custom_fields:
|
||||
show_empty_values_in_views: false
|
||||
|
||||
chill_person:
|
||||
create_person_allowed: false
|
||||
create_parcours_allowed: false
|
||||
allow_multiple_simultaneous_accompanying_periods: true
|
||||
accompanying_periods_fields:
|
||||
user: visible
|
||||
# createdBy, step, origin, intensity, scopes, requestor, anonymous, emergency, confidential : visible(default) | hidden
|
||||
person_fields:
|
||||
acceptEmail: hidden
|
||||
alt_names:
|
||||
- key: jeune_fille
|
||||
labels:
|
||||
lang: fr
|
||||
label: Nom de naissance
|
||||
marital_status: visible
|
||||
civility: visible
|
||||
deathdate: visible
|
||||
validation:
|
||||
center_required: true
|
||||
|
||||
chill_activity:
|
||||
form:
|
||||
time_duration:
|
||||
-
|
||||
label: '5 minutes'
|
||||
seconds: 300
|
||||
-
|
||||
label: '10 minutes'
|
||||
seconds: 600
|
||||
-
|
||||
label: '15 minutes'
|
||||
seconds: 900
|
||||
-
|
||||
label: '20 minutes'
|
||||
seconds: 1200
|
||||
-
|
||||
label: '25 minutes'
|
||||
seconds: 1500
|
||||
-
|
||||
label: '30 minutes'
|
||||
seconds: 1800
|
||||
-
|
||||
label: '45 minutes'
|
||||
seconds: 2700
|
||||
-
|
||||
label: '1 hour'
|
||||
seconds: 3600
|
||||
-
|
||||
label: '1 hour 15'
|
||||
seconds: 4500
|
||||
-
|
||||
label: '1 hour 30'
|
||||
seconds: 5400
|
||||
-
|
||||
label: '1 hour 45'
|
||||
seconds: 6300
|
||||
-
|
||||
label: '2 hours'
|
||||
seconds: 7200
|
||||
-
|
||||
label: '2 hours 15'
|
||||
seconds: 8100
|
||||
-
|
||||
label: '2 hours 30'
|
||||
seconds: 9000
|
||||
-
|
||||
label: '2 hours 45'
|
||||
seconds: 9900
|
||||
-
|
||||
label: '3 hours'
|
||||
seconds: 10800
|
||||
-
|
||||
label: '3 hours 30'
|
||||
seconds: 12600
|
||||
-
|
||||
label: '4 hours'
|
||||
seconds: 14400
|
||||
-
|
||||
label: '4 hours 30'
|
||||
seconds: 16200
|
||||
-
|
||||
label: '5 hours'
|
||||
seconds: 18000
|
85
config/packages/chill_budget.yaml
Normal file
85
config/packages/chill_budget.yaml
Normal file
@ -0,0 +1,85 @@
|
||||
chill_budget:
|
||||
resources:
|
||||
- { key: fixed_contract, labels: [{ lang: fr, label: "Salarié en CDI" }]}
|
||||
- { key: temporary_contract, labels: [{ lang: fr, label: "Salarié en CDD"}]}
|
||||
- { key: interim, labels: [{ lang: fr, label: "Salarié en intérim"}]}
|
||||
- { key: other_revenues, labels: [{ lang: fr, label: "Revenus non salariés, commerçant, artisan,..."}]}
|
||||
- { key: agricultural_activity, labels: [{ lang: fr, label: "Exploitant agricole"}]}
|
||||
- { key: chomage_ass, labels: [{ lang: fr, label: "Allocations chômage ASS"}]}
|
||||
- { key: chomage_are, labels: [{ lang: fr, label: "Allocations chômage ARE"}]}
|
||||
- { key: remuneration_stage, labels: [{ lang: fr, label: "Rémunération de stage, d’apprentissage,..."}]}
|
||||
- { key: daily_allowences, labels: [{ lang: fr, label: "Indemnités journalières"}]}
|
||||
- { key: others, labels: [{ lang: fr, label: "Autres"}]}
|
||||
- { key: pension, labels: [{ lang: fr, label: "Pension de retraite"}]}
|
||||
- { key: invalidity, labels: [{ lang: fr, label: "Pension d'invalidité"}]}
|
||||
- { key: reversion, labels: [{ lang: fr, label: "Pension de réversion"}]}
|
||||
- { key: widowhood, labels: [{ lang: fr, label: "Pension de veuvage"}]}
|
||||
- { key: military, labels: [{ lang: fr, label: "Pension militaire"}]}
|
||||
- { key: food, labels: [{ lang: fr, label: "Pension alimentaire"}]}
|
||||
- { key: compensation, labels: [{ lang: fr, label: "Pension de prestation compensatoire"}]}
|
||||
- { key: allocation_handicap_adult, labels: [{ lang: fr, label: "Allocation aux adultes handicapés"}]}
|
||||
- { key: rsa, labels: [{ lang: fr, label: "RSA"}]}
|
||||
- { key: annuity_accident, labels: [{ lang: fr, label: "Rente accident"}]}
|
||||
- { key: premium_al_pl, labels: [{ lang: fr, label: "Prime d’activité AL/APL au bénéficiaire"}]}
|
||||
- { key: premium_thirdparty, labels: [{ lang: fr, label: "Prime d’activité versé au tiers"}]}
|
||||
- { key: other_income, labels: [{ lang: fr, label: "Autres ressources (ARS, ...)"}]}
|
||||
- { key: allocation_family, labels: [{ lang: fr, label: "Allocations familiales"}]}
|
||||
- { key: allocation_basic, labels: [{ lang: fr, label: "Allocation de base"}]}
|
||||
- { key: free_choice_saving, labels: [{ lang: fr, label: "Complément de libre choix du mode de garde"}]}
|
||||
- { key: shared_benefits_child, labels: [{ lang: fr, label: "Prestation partagée éducation de l’enfant"}]}
|
||||
- { key: complimentary_family, labels: [{ lang: fr, label: "Complément familial"}]}
|
||||
- { key: allocation_family_support, labels: [{ lang: fr, label: "Allocation de soutien familial"}]}
|
||||
- { key: allocation_education_child_handicap, labels: [{ lang: fr, label: "Allocation d’éducation de l’enfant handicapé"}]}
|
||||
|
||||
charges:
|
||||
- { key: rent, labels: [{ lang: fr, label: "Loyer" }]}
|
||||
- { key: home_ownership, labels: [{ lang: fr, label: "Accession à la propriété" }]}
|
||||
- { key: costs_accomodation, labels: [{ lang: fr, label: "Frais d’hébergement" }]}
|
||||
- { key: home_insurance, labels: [{ lang: fr, label: "Assurance habitation" }]}
|
||||
- { key: taxes, labels: [{ lang: fr, label: "Impôts (taxe habitation, taxe foncière, ordures ménagères, redevances incitatives)" }]}
|
||||
- { key: impots, labels: [{lang: fr, label: "Impôts"}]}
|
||||
- { key: electricity, labels: [{ lang: fr, label: "Electricité" }]}
|
||||
- { key: gas, labels: [{ lang: fr, label: "Gaz en bouteille" }]}
|
||||
- { key: heating, labels: [{ lang: fr, label: "Autre moyen de chauffage" }]}
|
||||
- { key: water, labels: [{ lang: fr, label: "Eau" }]}
|
||||
- { key: school_fees, labels: [ { lang: fr, label: "Frais de scolarité"}]}
|
||||
- { key: alimony, labels: [ { lang: fr, label: "Pension alimentaire à reverser"}]}
|
||||
- { key: child_care, labels: [ { lang: fr, label: "Frais de garde (en totalité)"}]}
|
||||
- { key: telecom, labels: [ { lang: fr, label: "Frais de communication fixe"}]}
|
||||
- { key: mobilephone, labels: [ { lang: fr, label: "Frais de communication mobile"}]}
|
||||
- { key: internet, labels: [ { lang: fr, label: "Frais de communication internet"}]}
|
||||
- { key: insurance, labels: [{ lang: fr, label: "Assurances"}]}
|
||||
- { key: debt_commission, labels: [{ lang: fr, label: "Saisine de la commission surendettement"}]}
|
||||
- { key: recovery_plan, labels: [{ lang: fr, label: "Plan de redressement"}]}
|
||||
- { key: rpr, labels: [{ lang: fr, label: "PRP"}]}
|
||||
- { key: moratoire, labels: [{lang: fr, label: "Moratoire"}]}
|
||||
- { key: mutuelle, labels: [{lang: fr, label: "Mutuelle"}]}
|
||||
- { key: transport, labels: [{lang: fr, label: "Frais de transport"}]}
|
||||
- { key: decouvbank, labels: [{lang: fr, label: "Découvert bancaire utilisé"}]}
|
||||
- { key: procsaisie, labels: [{lang: fr, label: "Procédure de saisie"}]}
|
||||
- { key: indus, labels: [{lang: fr, label: "Indus"}]}
|
||||
- { key: apurement, labels: [{lang: fr, label: "Plan d'apurement"}]}
|
||||
- { key: debt_rent, labels: [{lang: fr, label: "Dette de loyer (hors APL)"}]}
|
||||
- { key: debt_property, labels: [{lang: fr, label: "Dette d'accession à la propriété"}]}
|
||||
- { key: debt_lodging, labels: [{lang: fr, label: "Dette de frais d’hébergement"}]}
|
||||
- { key: debt_electricity, labels: [{lang: fr, label: "Dette d'électricité"}]}
|
||||
- { key: debt_water, labels: [{lang: fr, label: "Dette d'eau"}]}
|
||||
- { key: debt_heating, labels: [{lang: fr, label: "Dette d'autre moyen de chauffage"}]}
|
||||
- { key: debt_gas, labels: [{lang: fr, label: "Dette de gaz en bouteille"}]}
|
||||
- { key: debt_house_insurance, labels: [{lang: fr, label: "Dette d'assurance habitation"}]}
|
||||
- { key: debt_housing_taxes, labels: [{lang: fr, label: "Dette d'impôts liées au logement"}]}
|
||||
- { key: debt_taxes, labels: [{lang: fr, label: "Dette d'impôts autres"}]}
|
||||
- { key: debt_school, labels: [{lang: fr, label: "Dette de frais de scolarité (cantine, transport, frais de scolarité, frais de garde)"}]}
|
||||
- { key: debt_alimentation, labels: [{lang: fr, label: "Dette de pension alimentaire à reverser"}]}
|
||||
- { key: debt_childcare, labels: [{lang: fr, label: "Dette de frais de garde (en totalité)"}]}
|
||||
- { key: debt_phone, labels: [{lang: fr, label: "Dette de communication fixe"}]}
|
||||
- { key: debt_mobile, labels: [{lang: fr, label: "Dette de communication portable"}]}
|
||||
- { key: debt_internet, labels: [{lang: fr, label: "Dette de communication internet"}]}
|
||||
- { key: debt_car_insurance, labels: [{lang: fr, label: "Dette d'assurance auto"}]}
|
||||
- { key: debt_mutual, labels: [{lang: fr, label: "Dette de mutuelle"}]}
|
||||
- { key: debt_transport, labels: [{lang: fr, label: "Dette de frais de transport"}]}
|
||||
- { key: debt_bank, labels: [{lang: fr, label: "Dette de découvert bancaire utilisé"}]}
|
||||
- { key: debt_garbage, labels: [{lang: fr, label: "Dette de taxe d’ordures ménagère"}]}
|
||||
- { key: debt_other, labels: [{lang: fr, label: "Dette autre"}]}
|
||||
- { key: autre, labels: [{lang: fr, label: "Autre"}]}
|
||||
|
3
config/packages/chill_calendar.yaml
Normal file
3
config/packages/chill_calendar.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
chill_calendar:
|
||||
remote_calendars_sync:
|
||||
enabled: false
|
5
config/packages/chill_doc_generator.yaml
Normal file
5
config/packages/chill_doc_generator.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
chill_doc_generator:
|
||||
driver:
|
||||
type: relatorio
|
||||
relatorio:
|
||||
url: 'http://%env(RELATORIO_HOST)%:%env(RELATORIO_PORT)%/'
|
5
config/packages/debug.yaml
Normal file
5
config/packages/debug.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
when@dev:
|
||||
debug:
|
||||
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
|
||||
# See the "server:dump" command to start a new server.
|
||||
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
|
38
config/packages/doctrine.yaml
Normal file
38
config/packages/doctrine.yaml
Normal file
@ -0,0 +1,38 @@
|
||||
doctrine:
|
||||
dbal:
|
||||
url: '%env(resolve:DATABASE_URL)%'
|
||||
|
||||
# IMPORTANT: You MUST configure your server version,
|
||||
# either here or in the DATABASE_URL env var (see .env file)
|
||||
#server_version: '16'
|
||||
use_savepoints: true
|
||||
orm:
|
||||
auto_generate_proxy_classes: true
|
||||
naming_strategy: doctrine.orm.naming_strategy.default
|
||||
auto_mapping: true
|
||||
|
||||
when@test:
|
||||
doctrine:
|
||||
dbal:
|
||||
# "TEST_TOKEN" is typically set by ParaTest
|
||||
dbname_suffix: '_test%env(default::TEST_TOKEN)%'
|
||||
|
||||
when@prod:
|
||||
doctrine:
|
||||
orm:
|
||||
auto_generate_proxy_classes: false
|
||||
proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
|
||||
query_cache_driver:
|
||||
type: pool
|
||||
pool: doctrine.system_cache_pool
|
||||
result_cache_driver:
|
||||
type: pool
|
||||
pool: doctrine.result_cache_pool
|
||||
|
||||
framework:
|
||||
cache:
|
||||
pools:
|
||||
doctrine.result_cache_pool:
|
||||
adapter: cache.app
|
||||
doctrine.system_cache_pool:
|
||||
adapter: cache.system
|
2
config/packages/doctrine_migrations.yaml
Normal file
2
config/packages/doctrine_migrations.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
doctrine_migrations:
|
||||
enable_profiler: false
|
@ -7,24 +7,15 @@ doctrine_migrations:
|
||||
'Chill\Migrations\CustomFields': '@ChillCustomFieldsBundle/migrations'
|
||||
'Chill\Migrations\Event': '@ChillEventBundle/migrations'
|
||||
'Chill\Migrations\Person': '@ChillPersonBundle/migrations'
|
||||
'Chill\Migrations\Report': '@ChillReportBundle/migrations'
|
||||
'Chill\Migrations\Task': '@ChillTaskBundle/migrations'
|
||||
'Chill\Migrations\ThirdParty': '@ChillThirdPartyBundle/migrations'
|
||||
'Chill\Migrations\AsideActivity': '@ChillAsideActivityBundle/migrations'
|
||||
'Chill\Migrations\DocGenerator': '@ChillDocGeneratorBundle/migrations'
|
||||
'Chill\Migrations\AsideActivity': '@ChillAsideActivityBundle/migrations'
|
||||
'Chill\Migrations\Calendar': '@ChillCalendarBundle/migrations'
|
||||
'Chill\Migrations\Budget': '@ChillBudgetBundle/migrations'
|
||||
|
||||
'Chill\Migrations\Report': '@ChillReportBundle/migrations'
|
||||
all_or_nothing:
|
||||
true
|
||||
|
||||
services:
|
||||
'Doctrine\Migrations\Version\Comparator': 'Chill\MainBundle\Doctrine\Migrations\VersionComparator'
|
||||
|
||||
storage:
|
||||
table_storage:
|
||||
table_name: 'migration_versions'
|
||||
version_column_name: 'version'
|
||||
version_column_length: 1024
|
||||
executed_at_column_name: 'executed_at'
|
||||
execution_time_column_name: 'execution_time'
|
@ -1,16 +1,6 @@
|
||||
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
||||
framework:
|
||||
secret: '%env(APP_SECRET)%'
|
||||
|
||||
http_client:
|
||||
default_options:
|
||||
verify_peer: false
|
||||
verify_host: false
|
||||
|
||||
trusted_hosts:
|
||||
- '^(localhost|127.0.0.1|web)$'
|
||||
- '%env(resolve:TRUSTED_HOSTS)%'
|
||||
|
||||
#csrf_protection: true
|
||||
http_method_override: false
|
||||
|
||||
@ -27,12 +17,6 @@ framework:
|
||||
php_errors:
|
||||
log: true
|
||||
|
||||
#error_controller: App\Controller\ErrorController::show
|
||||
|
||||
## sf4 check: ou à déplacer dans un chill.yaml
|
||||
assets:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
||||
|
||||
when@test:
|
||||
framework:
|
||||
test: true
|
@ -1,3 +1,8 @@
|
||||
framework:
|
||||
assets:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
||||
|
||||
when@test:
|
||||
framework:
|
||||
assets:
|
||||
json_manifest_path: null
|
3
config/packages/knpu_oauth2_client.yaml
Normal file
3
config/packages/knpu_oauth2_client.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
knpu_oauth2_client:
|
||||
clients:
|
||||
# configure your clients as described here: https://github.com/knpuniversity/oauth2-client-bundle#configuration
|
4
config/packages/lexik_jwt_authentication.yaml
Normal file
4
config/packages/lexik_jwt_authentication.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
lexik_jwt_authentication:
|
||||
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
|
||||
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
|
||||
pass_phrase: '%env(JWT_PASSPHRASE)%'
|
9
config/packages/lexik_jwt_authentication_chill.yaml
Normal file
9
config/packages/lexik_jwt_authentication_chill.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
lexik_jwt_authentication:
|
||||
# required for wopi - recommended duration
|
||||
token_ttl: 36000
|
||||
|
||||
# required for wopi - token in parameter access_token
|
||||
token_extractors:
|
||||
query_parameter:
|
||||
enabled: true
|
||||
name: access_token
|
3
config/packages/mailer.yaml
Normal file
3
config/packages/mailer.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
framework:
|
||||
mailer:
|
||||
dsn: '%env(MAILER_DSN)%'
|
4
config/packages/mailer_chill.yaml
Normal file
4
config/packages/mailer_chill.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
framework:
|
||||
mailer:
|
||||
envelope:
|
||||
sender: '%env(NOTIFICATION_FROM_EMAIL)%'
|
75
config/packages/messenger.yaml
Normal file
75
config/packages/messenger.yaml
Normal file
@ -0,0 +1,75 @@
|
||||
framework:
|
||||
messenger:
|
||||
# reset services after consuming messages
|
||||
reset_on_message: true
|
||||
|
||||
# Uncomment this (and the failed transport below) to send failed messages to this transport for later handling.
|
||||
failure_transport: failed
|
||||
|
||||
transports:
|
||||
# those transports are added by chill-bundles recipes
|
||||
sync: sync://
|
||||
async:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%/async'
|
||||
options:
|
||||
exchange:
|
||||
name: async
|
||||
type: fanout
|
||||
queues:
|
||||
async: ~
|
||||
auto_setup: true
|
||||
|
||||
priority: '%env(MESSENGER_TRANSPORT_DSN)%/priority'
|
||||
# end of transports added by chill-bundles recipes
|
||||
# https://symfony.com/doc/current/messenger.html#transport-configuration
|
||||
failed: 'doctrine://default?queue_name=failed'
|
||||
to_sign_worker:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%/to_python_sign'
|
||||
serializer: Chill\DocStoreBundle\Service\Signature\Driver\BaseSigner\RequestPdfSignMessageSerializer
|
||||
options:
|
||||
exchange:
|
||||
name: to_python_sign
|
||||
type: direct
|
||||
queues:
|
||||
to_python_sign: ~
|
||||
signed_docs:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%/signed_docs'
|
||||
serializer: Chill\DocStoreBundle\Service\Signature\Driver\BaseSigner\PdfSignedMessageSerializer
|
||||
options:
|
||||
exchange:
|
||||
name: signed_docs
|
||||
type: direct
|
||||
queues:
|
||||
signed_docs:
|
||||
binding_keys: [signed_doc]
|
||||
|
||||
auto_setup: false
|
||||
|
||||
routing:
|
||||
# routes added by chill-bundles recipes
|
||||
'Chill\CalendarBundle\Messenger\Message\CalendarRangeMessage': async
|
||||
'Chill\CalendarBundle\Messenger\Message\CalendarRangeRemovedMessage': async
|
||||
'Chill\CalendarBundle\Messenger\Message\CalendarRemovedMessage': async
|
||||
'Chill\CalendarBundle\Messenger\Message\CalendarMessage': async
|
||||
'Chill\CalendarBundle\Messenger\Message\InviteUpdateMessage': async
|
||||
'Chill\CalendarBundle\Messenger\Message\MSGraphChangeNotificationMessage': async
|
||||
'Chill\MainBundle\Service\ShortMessage\ShortMessage': async
|
||||
'Chill\DocGeneratorBundle\Service\Messenger\RequestGenerationMessage': priority
|
||||
'Chill\PersonBundle\AccompanyingPeriod\Lifecycle\AccompanyingPeriodStepChangeRequestMessage': async
|
||||
'Chill\DocStoreBundle\Service\Signature\Driver\BaseSigner\RequestPdfSignMessage': to_sign_worker
|
||||
'Chill\DocStoreBundle\Service\StoredObjectCleaner\RemoveOldVersionMessage': async
|
||||
'Chill\MainBundle\Workflow\Messenger\PostSignatureStateChangeMessage': priority
|
||||
'Chill\MainBundle\Workflow\Messenger\PostPublicViewMessage': async
|
||||
'Chill\MainBundle\Service\Workflow\CancelStaleWorkflowMessage': async
|
||||
# end of routes added by chill-bundles recipes
|
||||
# Route your messages to the transports
|
||||
# 'App\Message\YourMessage': async
|
||||
# 'Symfony\Component\Mailer\Messenger\SendEmailMessage': async
|
||||
|
||||
when@test:
|
||||
framework:
|
||||
messenger:
|
||||
transports:
|
||||
async: 'in-memory://'
|
||||
priority: 'in-memory://'
|
||||
signed_docs: 'in-memory://'
|
13
config/packages/misd_phone_number.yaml
Normal file
13
config/packages/misd_phone_number.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
# To persist libphonenumber\PhoneNumber objects, add the Misd\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType mapping to your application's config.
|
||||
# This requires: doctrine/doctrine-bundle
|
||||
#doctrine:
|
||||
# dbal:
|
||||
# types:
|
||||
# phone_number: Misd\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType
|
||||
|
||||
#misd_phone_number:
|
||||
# twig: false
|
||||
# form: false
|
||||
# serializer: false
|
||||
# validator:
|
||||
# default_region: GB
|
62
config/packages/monolog.yaml
Normal file
62
config/packages/monolog.yaml
Normal file
@ -0,0 +1,62 @@
|
||||
monolog:
|
||||
channels:
|
||||
- deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists
|
||||
|
||||
when@dev:
|
||||
monolog:
|
||||
handlers:
|
||||
main:
|
||||
type: stream
|
||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||
level: debug
|
||||
channels: ["!event"]
|
||||
# uncomment to get logging in your browser
|
||||
# you may have to allow bigger header sizes in your Web server configuration
|
||||
#firephp:
|
||||
# type: firephp
|
||||
# level: info
|
||||
#chromephp:
|
||||
# type: chromephp
|
||||
# level: info
|
||||
console:
|
||||
type: console
|
||||
process_psr_3_messages: false
|
||||
channels: ["!event", "!doctrine", "!console"]
|
||||
|
||||
when@test:
|
||||
monolog:
|
||||
handlers:
|
||||
main:
|
||||
type: fingers_crossed
|
||||
action_level: error
|
||||
handler: nested
|
||||
excluded_http_codes: [404, 405]
|
||||
channels: ["!event"]
|
||||
nested:
|
||||
type: stream
|
||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||
level: debug
|
||||
|
||||
when@prod:
|
||||
monolog:
|
||||
handlers:
|
||||
main:
|
||||
type: fingers_crossed
|
||||
action_level: error
|
||||
handler: nested
|
||||
excluded_http_codes: [404, 405]
|
||||
buffer_size: 50 # How many messages should be saved? Prevent memory leaks
|
||||
nested:
|
||||
type: stream
|
||||
path: php://stderr
|
||||
level: debug
|
||||
formatter: monolog.formatter.json
|
||||
console:
|
||||
type: console
|
||||
process_psr_3_messages: false
|
||||
channels: ["!event", "!doctrine"]
|
||||
deprecation:
|
||||
type: stream
|
||||
channels: [deprecation]
|
||||
path: php://stderr
|
||||
formatter: monolog.formatter.json
|
12
config/packages/nelmio_alice.yaml
Normal file
12
config/packages/nelmio_alice.yaml
Normal file
@ -0,0 +1,12 @@
|
||||
when@dev: &dev
|
||||
nelmio_alice:
|
||||
functions_blacklist:
|
||||
- 'current'
|
||||
- 'shuffle'
|
||||
- 'date'
|
||||
- 'time'
|
||||
- 'file'
|
||||
- 'md5'
|
||||
- 'sha1'
|
||||
|
||||
when@test: *dev
|
@ -7,15 +7,5 @@ services:
|
||||
Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||
Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||
|
||||
# Register nyholm/psr7 services for autowiring with HTTPlug factories
|
||||
Http\Message\MessageFactory: '@nyholm.psr7.httplug_factory'
|
||||
Http\Message\RequestFactory: '@nyholm.psr7.httplug_factory'
|
||||
Http\Message\ResponseFactory: '@nyholm.psr7.httplug_factory'
|
||||
Http\Message\StreamFactory: '@nyholm.psr7.httplug_factory'
|
||||
Http\Message\UriFactory: '@nyholm.psr7.httplug_factory'
|
||||
|
||||
nyholm.psr7.psr17_factory:
|
||||
class: Nyholm\Psr7\Factory\Psr17Factory
|
||||
|
||||
nyholm.psr7.httplug_factory:
|
||||
class: Nyholm\Psr7\Factory\HttplugFactory
|
@ -5,3 +5,8 @@ framework:
|
||||
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
|
||||
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||
#default_uri: http://localhost
|
||||
|
||||
when@prod:
|
||||
framework:
|
||||
router:
|
||||
strict_requirements: null
|
8
config/packages/routing_chill.yaml
Normal file
8
config/packages/routing_chill.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
parameters:
|
||||
composed_uri: 'https://%env(resolve:NOTIFICATION_HOST)%'
|
||||
|
||||
framework:
|
||||
router:
|
||||
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
|
||||
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||
default_uri: '%composed_uri%'
|
@ -1,68 +1,68 @@
|
||||
security:
|
||||
|
||||
access_decision_manager:
|
||||
strategy: unanimous
|
||||
allow_if_all_abstain: false
|
||||
|
||||
enable_authenticator_manager: true
|
||||
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
|
||||
password_hashers:
|
||||
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
|
||||
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
|
||||
providers:
|
||||
|
||||
chain_provider:
|
||||
chain :
|
||||
providers: [in_memory, users]
|
||||
in_memory:
|
||||
# providers added by chill-bundles recipes\n
|
||||
# those providers are required to make chill working
|
||||
chill_chain_provider:
|
||||
chain:
|
||||
providers: [chill_in_memory, chill_users]
|
||||
chill_in_memory:
|
||||
memory:
|
||||
users:
|
||||
admin: { password: '%env(resolve:ADMIN_PASSWORD)%', roles: ['ROLE_ADMIN', 'ROLE_ALLOWED_TO_SWITCH', 'ROLE_USER'] }
|
||||
users:
|
||||
chill_users:
|
||||
id: chill.main.user_provider
|
||||
|
||||
encoders:
|
||||
Chill\MainBundle\Entity\User:
|
||||
algorithm: bcrypt
|
||||
Symfony\Component\Security\Core\User\User: plaintext
|
||||
|
||||
# end of providers added by chill-bundles recipes\n
|
||||
# all other providers might be removed, unless you have specific needs\n
|
||||
firewalls:
|
||||
|
||||
dev:
|
||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
||||
security: false
|
||||
|
||||
# those lines are added by chill-bundles recipe, and are requires to make chill-bundles working
|
||||
# this firewall is in use for wopi endpoint, which requires
|
||||
wopi:
|
||||
pattern: ^/wopi
|
||||
provider: chain_provider
|
||||
provider: chill_chain_provider
|
||||
stateless: true
|
||||
guard:
|
||||
authenticators:
|
||||
- lexik_jwt_authentication.jwt_token_authenticator
|
||||
|
||||
main:
|
||||
# remove during upgrade from symfony 4 to symfony 5 TODO check this
|
||||
#anonymous: ~
|
||||
provider: chain_provider
|
||||
dav:
|
||||
pattern: ^/dav
|
||||
provider: chill_chain_provider
|
||||
stateless: true
|
||||
guard:
|
||||
authenticators:
|
||||
- Chill\DocStoreBundle\Security\Guard\JWTOnDavUrlAuthenticator
|
||||
# this firewall is the main firewall for chill. It should be the last one in the stack,
|
||||
# unless you have specific needs
|
||||
chill_main:
|
||||
provider: chill_chain_provider
|
||||
entry_point: form_login
|
||||
form_login:
|
||||
csrf_parameter: _csrf_token
|
||||
csrf_token_id: authenticate
|
||||
#csrf_provider: security.csrf.token_manager
|
||||
# remove during upgrade from symfony 4 to symfony 5 TODO check this
|
||||
# logout_on_user_change: true
|
||||
logout:
|
||||
path: /logout
|
||||
|
||||
# uncomment to enable impersonate mode in Chill
|
||||
# https://symfony.com/doc/current/security/impersonating_user.html
|
||||
switch_user: true
|
||||
|
||||
# end of lines added by chill-bundles recipe
|
||||
# activate different ways to authenticate
|
||||
# https://symfony.com/doc/current/security.html#firewalls-authentication
|
||||
# https://symfony.com/doc/current/security.html#the-firewall
|
||||
|
||||
# https://symfony.com/doc/current/security/impersonating_user.html
|
||||
# switch_user: true
|
||||
|
||||
# Easy way to control access for large sections of your site
|
||||
# Note: Only the *first* access control that matches will be used
|
||||
access_control:
|
||||
# those lines are added by chill-bundles recipes, and are requires to make chill-bundles working
|
||||
- { path: ^/(login|logout), roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||
- { path: ^/wopi, roles: IS_AUTHENTICATED_FULLY }
|
||||
@ -75,6 +75,7 @@ security:
|
||||
- { path: ^/([a-z]+/)?admin, roles: ROLE_ADMIN }
|
||||
# other pages, only for regular user (no admin)
|
||||
- { path: ^/, roles: ROLE_USER }
|
||||
# this is the end of line added by chill-project/chill-bundles recipes
|
||||
|
||||
when@test:
|
||||
security:
|
9
config/packages/security_chill.yaml
Normal file
9
config/packages/security_chill.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
security:
|
||||
access_decision_manager:
|
||||
strategy: unanimous
|
||||
allow_if_all_abstain: false
|
||||
|
||||
when@test:
|
||||
security:
|
||||
role_hierarchy:
|
||||
CHILL_MASTER_ROLE: [ CHILL_INHERITED_ROLE_1 ]
|
7
config/packages/translation.yaml
Normal file
7
config/packages/translation.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
framework:
|
||||
default_locale: en
|
||||
translator:
|
||||
default_path: '%kernel.project_dir%/translations'
|
||||
fallbacks:
|
||||
- en
|
||||
providers:
|
4
config/packages/translation_chill.yaml
Normal file
4
config/packages/translation_chill.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
framework:
|
||||
default_locale: '%env(resolve:LOCALE)%'
|
||||
translator:
|
||||
fallbacks: [ '%env(resolve:LOCALE)%' ]
|
6
config/packages/twig.yaml
Normal file
6
config/packages/twig.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
twig:
|
||||
default_path: '%kernel.project_dir%/templates'
|
||||
|
||||
when@test:
|
||||
twig:
|
||||
strict_variables: true
|
@ -1,9 +1,4 @@
|
||||
twig:
|
||||
default_path: '%kernel.project_dir%/templates'
|
||||
debug: '%kernel.debug%'
|
||||
strict_variables: '%kernel.debug%'
|
||||
exception_controller: null
|
||||
|
||||
## In Symfony 5, bootstrap_5 theme is supported. But not yet in sf4 !!
|
||||
# see sf5 https://symfony.com/doc/current/form/form_themes.html
|
||||
# see sf4 https://symfony.com/doc/4.4/form/form_themes.html
|
||||
@ -14,4 +9,8 @@ twig:
|
||||
# and adapt it lightly.
|
||||
#
|
||||
form_themes: ['@ChillMain/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig']
|
||||
#form_themes: ['bootstrap_5_horizontal_layout.html.twig']
|
||||
|
||||
when@dev:
|
||||
twig:
|
||||
globals:
|
||||
responsive_debug: false
|
@ -6,3 +6,8 @@ framework:
|
||||
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
|
||||
#auto_mapping:
|
||||
# App\Entity\: []
|
||||
|
||||
when@test:
|
||||
framework:
|
||||
validation:
|
||||
not_compromised_password: false
|
15
config/packages/web_profiler.yaml
Normal file
15
config/packages/web_profiler.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
when@dev:
|
||||
web_profiler:
|
||||
toolbar: true
|
||||
intercept_redirects: false
|
||||
|
||||
framework:
|
||||
profiler: { only_exceptions: false }
|
||||
|
||||
when@test:
|
||||
web_profiler:
|
||||
toolbar: false
|
||||
intercept_redirects: false
|
||||
|
||||
framework:
|
||||
profiler: { collect: false }
|
@ -1,16 +1,18 @@
|
||||
---
|
||||
webpack_encore:
|
||||
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
|
||||
output_path: '%kernel.project_dir%/public/build'
|
||||
|
||||
# If multiple builds are defined (as shown below), you can disable the default build:
|
||||
# output_path: false
|
||||
|
||||
# Set attributes that will be rendered on all script and link tags
|
||||
script_attributes:
|
||||
defer: true
|
||||
# Uncomment (also under link_attributes) if using Turbo Drive
|
||||
# https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change
|
||||
# 'data-turbo-track': reload
|
||||
# link_attributes:
|
||||
#
|
||||
# Uncomment if using Turbo Drive
|
||||
# 'data-turbo-track': reload
|
||||
|
||||
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
|
||||
# crossorigin: 'anonymous'
|
||||
@ -23,11 +25,17 @@ webpack_encore:
|
||||
|
||||
# If you have multiple builds:
|
||||
# builds:
|
||||
# pass "frontend" as the 3rg arg to the Twig functions
|
||||
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
|
||||
|
||||
# frontend: '%kernel.project_dir%/public/frontend/build'
|
||||
|
||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
# Put in config/packages/prod/webpack_encore.yaml
|
||||
# cache: true
|
||||
# pass the build name as the 3rd argument to the Twig functions
|
||||
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
|
||||
|
||||
#when@prod:
|
||||
# webpack_encore:
|
||||
# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
# # Available in version 1.2
|
||||
# cache: true
|
||||
|
||||
when@test:
|
||||
webpack_encore:
|
||||
strict_mode: false
|
2
config/packages/wopi.yaml
Normal file
2
config/packages/wopi.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
wopi:
|
||||
server: "%env(resolve:EDITOR_SERVER)%"
|
346
config/packages/workflow_chill.yaml
Normal file
346
config/packages/workflow_chill.yaml
Normal file
@ -0,0 +1,346 @@
|
||||
framework:
|
||||
workflows:
|
||||
vendee_internal:
|
||||
type: state_machine
|
||||
metadata:
|
||||
related_entity:
|
||||
- Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationDocument
|
||||
- Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWork
|
||||
- Chill\DocStoreBundle\Entity\AccompanyingCourseDocument
|
||||
label:
|
||||
fr: 'Suivi'
|
||||
support_strategy: Chill\MainBundle\Workflow\RelatedEntityWorkflowSupportsStrategy
|
||||
marking_store:
|
||||
service: Chill\MainBundle\Workflow\EntityWorkflowMarkingStore
|
||||
initial_marking: 'initial'
|
||||
places:
|
||||
initial:
|
||||
metadata:
|
||||
label:
|
||||
fr: Étape initiale
|
||||
attenteModification:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente de modification du document
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Modification effectuée}
|
||||
backward: {fr: Pas de modification effectuée}
|
||||
neutral: {fr: Autre}
|
||||
attenteMiseEnForme:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente de mise en forme
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Mise en forme terminée}
|
||||
backward: {fr: Pas de mise en forme effectuée}
|
||||
neutral: {fr: Autre}
|
||||
attenteVisa:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente de visa
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Visa accordé}
|
||||
backward: {fr: Visa refusé}
|
||||
neutral: {fr: Autre}
|
||||
attenteSignature:
|
||||
metadata:
|
||||
isSignature: ['user', 'person']
|
||||
onSignatureCompleted:
|
||||
transitionName: signatureApplied
|
||||
label:
|
||||
fr: En attente de signature
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Signature accordée}
|
||||
backward: {fr: Signature refusée}
|
||||
neutral: {fr: Autre}
|
||||
postSignature:
|
||||
metadata:
|
||||
label:
|
||||
fr: Signatures traitées
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Poursuite du traitement}
|
||||
backward: {fr: Annulation ou refus de signature}
|
||||
neutral: {fr: Autre}
|
||||
attenteTraitement:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente de traitement
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Traitement terminé favorablement}
|
||||
backward: {fr: Traitement terminé défavorablement}
|
||||
neutral: {fr: Autre}
|
||||
attenteEnvoi:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente d'envoi
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Document envoyé}
|
||||
backward: {fr: Document non envoyé}
|
||||
neutral: {fr: Autre}
|
||||
attenteValidationMiseEnForme:
|
||||
metadata:
|
||||
label:
|
||||
fr: En attente de validation de la mise en forme
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Validation de la mise en forme}
|
||||
backward: {fr: Refus de validation de la mise en forme}
|
||||
neutral: {fr: Autre}
|
||||
attenteReceptionExternal:
|
||||
metadata:
|
||||
isSentExternal: true
|
||||
onExternalView: clotureApresLectureEnvoiExterne
|
||||
label:
|
||||
fr: En attente d'ouverture par un destinataire externe
|
||||
validationFilterInputLabels:
|
||||
forward: {fr: Document reçu par un destinataire externe}
|
||||
backward: {fr: Document non reçu par un destinataire externe}
|
||||
neutral: {fr: Autre}
|
||||
annule:
|
||||
metadata:
|
||||
isFinal: true
|
||||
isFinalPositive: false
|
||||
label:
|
||||
fr: Annulé
|
||||
final:
|
||||
metadata:
|
||||
isFinal: true
|
||||
isFinalPositive: true
|
||||
label:
|
||||
fr: Finalisé
|
||||
transitions:
|
||||
# transition qui avancent
|
||||
demandeModificationDocument:
|
||||
from:
|
||||
- initial
|
||||
to: attenteModification
|
||||
metadata:
|
||||
label:
|
||||
fr: Demande de modification du document
|
||||
isForward: true
|
||||
demandeMiseEnForme:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
to: attenteMiseEnForme
|
||||
metadata:
|
||||
label:
|
||||
fr: Demande de mise en forme
|
||||
isForward: true
|
||||
demandeValidationMiseEnForme:
|
||||
from:
|
||||
- attenteMiseEnForme
|
||||
to: attenteValidationMiseEnForme
|
||||
metadata:
|
||||
label:
|
||||
fr: Demande de validation de la mise en forme
|
||||
isForward: true
|
||||
demandeVisa:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- postSignature
|
||||
- attenteTraitement
|
||||
to: attenteVisa
|
||||
metadata:
|
||||
label:
|
||||
fr: Demande de visa
|
||||
isForward: true
|
||||
demandeSignature:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- attenteVisa
|
||||
- attenteTraitement
|
||||
to: attenteSignature
|
||||
metadata:
|
||||
label: {fr: Demande de signature}
|
||||
isForward: true
|
||||
signatureApplied:
|
||||
from:
|
||||
- attenteSignature
|
||||
to: postSignature
|
||||
metadata:
|
||||
label: {fr: Signatures appliquées}
|
||||
isForward: true
|
||||
transitionGuard: 'system' # can be 'system+only-dest' or 'only-dest' (only-dest is default)
|
||||
demandeTraitement:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- attenteVisa
|
||||
- postSignature
|
||||
to: attenteTraitement
|
||||
metadata:
|
||||
label: {fr: Demande de traitement}
|
||||
isForward: true
|
||||
demandeEnvoi:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- attenteVisa
|
||||
- postSignature
|
||||
- attenteTraitement
|
||||
to: attenteEnvoi
|
||||
metadata:
|
||||
label: {fr: Demande d'envoi}
|
||||
isForward: true
|
||||
demandeEnvoiExterne:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- attenteVisa
|
||||
- postSignature
|
||||
- attenteTraitement
|
||||
to: attenteReceptionExternal
|
||||
metadata:
|
||||
label: {fr: Envoi sécurisé par courrier électronique}
|
||||
isForward: true
|
||||
clotureApresLectureEnvoiExterne:
|
||||
from:
|
||||
- attenteReceptionExternal
|
||||
to:
|
||||
- final
|
||||
metadata:
|
||||
transitionGuard: system
|
||||
isForward: true
|
||||
label: {fr: Consultation de l'envoi sécurisé}
|
||||
annulation:
|
||||
from:
|
||||
- initial
|
||||
- attenteModification
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
- attenteVisa
|
||||
- postSignature
|
||||
- attenteTraitement
|
||||
- attenteEnvoi
|
||||
to: annule
|
||||
metadata:
|
||||
label: {fr: Annulation}
|
||||
isForward: false
|
||||
transitionGuard: 'system+only-dest' # can be 'system+only-dest' or 'only-dest' (only-dest is default)
|
||||
# transitions qui répètent l'étape
|
||||
demandeMiseEnFormeSupplementaire:
|
||||
from:
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
to: attenteMiseEnForme
|
||||
metadata:
|
||||
label: {fr: Demande de mise en forme supplémentaire}
|
||||
demandeVisaSupplementaire:
|
||||
from:
|
||||
- attenteVisa
|
||||
to: attenteVisa
|
||||
metadata:
|
||||
label: {fr: Demande de visa supplémentaire}
|
||||
isForward: true
|
||||
demandeSignatureSupplementaire:
|
||||
from:
|
||||
- postSignature
|
||||
to: attenteSignature
|
||||
metadata:
|
||||
label: {fr: Demande de signature supplémentaire}
|
||||
isForward: true
|
||||
demandeTraitementSupplementaire:
|
||||
from:
|
||||
- attenteTraitement
|
||||
to: attenteTraitement
|
||||
metadata:
|
||||
label: {fr: Demande de traitement supplémentaire}
|
||||
# transitions qui renvoient vers une étape précédente
|
||||
refusEtModificationDocument:
|
||||
from:
|
||||
- attenteVisa
|
||||
- postSignature
|
||||
- attenteTraitement
|
||||
- attenteEnvoi
|
||||
to: attenteModification
|
||||
metadata:
|
||||
label:
|
||||
fr: Refus et demande de modification du document
|
||||
isForward: false
|
||||
refusEtDemandeMiseEnForme:
|
||||
from:
|
||||
- attenteVisa
|
||||
- attenteTraitement
|
||||
- attenteEnvoi
|
||||
to: attenteMiseEnForme
|
||||
metadata:
|
||||
label: {fr: Refus et demande de mise en forme}
|
||||
isForward: false
|
||||
refusEtDemandeVisa:
|
||||
from:
|
||||
- postSignature
|
||||
- attenteEnvoi
|
||||
to: attenteVisa
|
||||
metadata:
|
||||
label: {fr: Refus et demande de visa}
|
||||
isForward: false
|
||||
refusEtDemandeSignature:
|
||||
from:
|
||||
- attenteEnvoi
|
||||
to: attenteSignature
|
||||
metadata:
|
||||
label: {fr: Refus et demande de signature}
|
||||
isForward: false
|
||||
refusEtDemandeTraitement:
|
||||
from:
|
||||
- attenteEnvoi
|
||||
to: attenteTraitement
|
||||
metadata:
|
||||
label: {fr: Refus et demande de traitement}
|
||||
isForward: false
|
||||
# transition vers final
|
||||
initialToFinal:
|
||||
from:
|
||||
- initial
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Clotûre immédiate et cloture positive}
|
||||
isForward: true
|
||||
attenteMiseEnFormeToFinal:
|
||||
from:
|
||||
- attenteMiseEnForme
|
||||
- attenteValidationMiseEnForme
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Mise en forme terminée et cloture positive}
|
||||
isForward: true
|
||||
attenteVisaToFinal:
|
||||
from:
|
||||
- attenteVisa
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Accorde le visa et cloture positive}
|
||||
isForward: true
|
||||
postSignatureToFinal:
|
||||
from:
|
||||
- postSignature
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Cloture positive}
|
||||
isForward: true
|
||||
attenteTraitementToFinal:
|
||||
from:
|
||||
- attenteTraitement
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Traitement terminé et cloture positive}
|
||||
isForward: true
|
||||
attenteEnvoiToFinal:
|
||||
from:
|
||||
- attenteEnvoi
|
||||
to: final
|
||||
metadata:
|
||||
label: {fr: Envoyé et cloture positive}
|
||||
isForward: true
|
5
config/preload.php
Normal file
5
config/preload.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) {
|
||||
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php';
|
||||
}
|
@ -4,5 +4,5 @@
|
||||
|
||||
#load routes for chill bundles
|
||||
chill_routes:
|
||||
resource: .
|
||||
type: chill_routes
|
||||
resource: .
|
||||
type: chill_routes
|
3
config/routes/annotations.yaml
Normal file
3
config/routes/annotations.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
kernel:
|
||||
resource: ../../src/app/Kernel.php
|
||||
type: annotation
|
3
config/routes/chill_wopi.yaml
Normal file
3
config/routes/chill_wopi.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
chill_wopi_bundle:
|
||||
resource: '@ChillWopiBundle/Resources/config/routes/routes.php'
|
||||
prefix: /chill/wopi
|
4
config/routes/framework.yaml
Normal file
4
config/routes/framework.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
when@dev:
|
||||
_errors:
|
||||
resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
|
||||
prefix: /_error
|
8
config/routes/web_profiler.yaml
Normal file
8
config/routes/web_profiler.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
when@dev:
|
||||
web_profiler_wdt:
|
||||
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
|
||||
prefix: /_wdt
|
||||
|
||||
web_profiler_profiler:
|
||||
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
|
||||
prefix: /_profiler
|
3
config/routes/wopi.yaml
Normal file
3
config/routes/wopi.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
wopi_bundle:
|
||||
resource: '@WopiBundle/Resources/config/routes/routes.php'
|
||||
prefix: /wopi
|
@ -2,7 +2,7 @@
|
||||
# Files in the packages/ subdirectory configure your dependencies.
|
||||
|
||||
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
|
||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||
parameters:
|
||||
|
||||
services:
|
||||
@ -11,5 +11,3 @@ services:
|
||||
autowire: true # Automatically injects dependencies in your services.
|
||||
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
||||
|
||||
# add more service definitions when explicit configuration is needed
|
||||
# please note that last definitions always *replace* previous ones
|
34
docs/source/development/code-quality.rst
Normal file
34
docs/source/development/code-quality.rst
Normal file
@ -0,0 +1,34 @@
|
||||
Code style, code quality and other tools
|
||||
########################################
|
||||
|
||||
PHP-cs-fixer
|
||||
============
|
||||
|
||||
For development, you will also have to install:
|
||||
|
||||
- `php-cs-fixer <https://cs.symfony.com/>`_
|
||||
|
||||
We also encourage you to use tools like `phpstan <https://phpstan.org>`_ and `rector <https://getrector.com>`_.
|
||||
|
||||
For running php-cs-fixer:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony composer php-cs-fixer
|
||||
|
||||
Execute tests
|
||||
=============
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony composer exec phpunit -- /path/to_your_test.php
|
||||
|
||||
Note that IDE like PhpStorm should be able to run tests, even KernelTestcase or WebTestCase, `from within their interfaces <https://www.jetbrains.com/help/phpstorm/using-phpunit-framework.html#run_phpunit_tests>`_.
|
||||
|
||||
Execute rector
|
||||
==============
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony composer exec rector -- process
|
||||
|
@ -39,9 +39,12 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
|
||||
use Chill\MainBundle\Entity\CronJobExecution;
|
||||
use DateInterval;
|
||||
use DateTimeImmutable;
|
||||
use Symfony\Component\Clock\ClockInterface;
|
||||
|
||||
class MyCronJob implements CronJobInterface
|
||||
{
|
||||
function __construct(private ClockInterface $clock) {}
|
||||
|
||||
public function canRun(?CronJobExecution $cronJobExecution): bool
|
||||
{
|
||||
// the parameter $cronJobExecution contains data about the last execution of the cronjob
|
||||
@ -56,7 +59,7 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
|
||||
|
||||
// this cron job should be executed if the last execution is greater than one day, but only during the night
|
||||
|
||||
$now = new DateTimeImmutable('now');
|
||||
$now = $clock->now();
|
||||
|
||||
return $cronJobExecution->getLastStart() < $now->sub(new DateInterval('P1D'))
|
||||
&& in_array($now->format('H'), self::ACCEPTED_HOURS, true)
|
||||
@ -69,10 +72,15 @@ Implements a :code:`Chill\MainBundle\Cron\CronJobInterface`. Here is an example:
|
||||
return 'arbitrary-and-unique-key';
|
||||
}
|
||||
|
||||
public function run(): void
|
||||
public function run(array $lastExecutionData): void
|
||||
{
|
||||
// here, we execute the command
|
||||
}
|
||||
|
||||
// we return execution data, which will be served for next execution
|
||||
// this data should be easily serializable in a json column: it should contains
|
||||
// only int, string, etc. Avoid storing object
|
||||
return ['last-execution-id' => 0];
|
||||
}
|
||||
}
|
||||
|
||||
How are cron job scheduled ?
|
||||
|
125
docs/source/installation/enable-collabora-for-dev.rst
Normal file
125
docs/source/installation/enable-collabora-for-dev.rst
Normal file
@ -0,0 +1,125 @@
|
||||
|
||||
Enable CODE for development
|
||||
===========================
|
||||
|
||||
For editing a document, there must be a way to communicate between the collabora server and the symfony server, in
|
||||
both direction. The domain name should also be the same for collabora server and for the browser which access to the
|
||||
online editor.
|
||||
|
||||
Using ngrok (or other http tunnel)
|
||||
----------------------------------
|
||||
|
||||
One can configure a tunnel server to expose your local install to the web, and access to your local server using the
|
||||
tunnel url.
|
||||
|
||||
Start ngrok
|
||||
^^^^^^^^^^^
|
||||
|
||||
This can be achieve using `ngrok <https://ngrok.com/>`_.
|
||||
|
||||
.. note::
|
||||
|
||||
The configuration of ngrok is outside of the scope of this document. Refers to the ngrok's documentation.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# ensuring that your server is running through http and port 8000
|
||||
ngrok http 8000
|
||||
# then open the link given by the ngrok utility and you should reach your app
|
||||
|
||||
At this step, ensure that you can reach your local app using the ngrok url.
|
||||
|
||||
Configure Collabora
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The collabora server must be executed online and configure to access to your ngrok installation. Ensure that the aliasgroup
|
||||
exists for your ngrok application (`See the CODE documentation: <https://sdk.collaboraonline.com/docs/installation/Configuration.html#multihost-configuration>`_).
|
||||
|
||||
Configure your app
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Set the :code:`EDITOR_SERVER` variable to point to your collabora server, this should be done in your :code:`.env.local` file.
|
||||
|
||||
At this point, everything must be fine. In case of errors, watch the log from your collabora server, use the `profiler <https://symfony.com/doc/current/profiler.html>`_
|
||||
to debug the requests.
|
||||
|
||||
.. note::
|
||||
|
||||
In case of error while validating proof (you'll see those message in the collabora's logs), you can temporarily disable
|
||||
the proof validation adding this code snippet in `config/services.yaml`:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
when@dev:
|
||||
# add only in dev environment, to avoid security problems
|
||||
services:
|
||||
ChampsLibres\WopiLib\Contract\Service\ProofValidatorInterface:
|
||||
# this class will always validate proof
|
||||
alias: Chill\WopiBundle\Service\Wopi\NullProofValidator
|
||||
|
||||
With a local CODE image
|
||||
-----------------------
|
||||
|
||||
.. warning::
|
||||
|
||||
This configuration is not sure, and must be refined. The documentation does not seems to be entirely valid.
|
||||
|
||||
Use a local domain name and https for your app
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use the proxy feature from embedded symfony server to run your app. `See the dedicated doc <https://symfony.com/doc/current/setup/symfony_server.html#local-domain-names>`
|
||||
|
||||
Configure also the `https certificate <https://symfony.com/doc/current/setup/symfony_server.html#enabling-tls>`_
|
||||
|
||||
In this example, your local domain name will be :code:`my-domain` and the url will be :code:`https://my-domain.wip`.
|
||||
|
||||
Ensure that the proxy is running.
|
||||
|
||||
Create a certificate database for collabora
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Collabora must validate your certificate generated by symfony console. For that, you need `to create a NSS database <https://sdk.collaboraonline.com/docs/installation/Configuration.html#validating-digital-signatures>`
|
||||
and configure collabora to use it.
|
||||
|
||||
At first, export the certificate for symfony development. Use the graphical interface from your browser to get the
|
||||
certificate as a PEM file.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# create your database in a custom directory
|
||||
mkdir /path/to/your/directory
|
||||
certutil -N -d /path/to/your/directory
|
||||
cat /path/to/your/ca.crt | certutil -d . -A symfony -t -t C,P,C,u,w -a
|
||||
|
||||
Launch CODE properly configured
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
collabora:
|
||||
image: collabora/code:latest
|
||||
environment:
|
||||
- SLEEPFORDEBUGGER=0
|
||||
- DONT_GEN_SSL_CERT="True"
|
||||
# add path to the database
|
||||
- extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.level=7 -o:certificates.database_path=/etc/custom-certificates/nss-database
|
||||
- username=admin
|
||||
- password=admin
|
||||
- dictionaries=en_US
|
||||
- aliasgroup1=https://my-domain.wip
|
||||
ports:
|
||||
- "127.0.0.1:9980:9980"
|
||||
volumes:
|
||||
- "/path/to/your/directory/nss-database:/etc/custom-certificates/nss-database"
|
||||
extra_hosts:
|
||||
- "my-domain.wip:host-gateway"
|
||||
|
||||
Configure your app
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Into your :code:`.env.local` file:
|
||||
|
||||
.. code-block:: env
|
||||
|
||||
EDITOR_SERVER=http://${COLLABORA_HOST}:${COLLABORA_PORT}
|
||||
|
||||
At this step, you should be able to edit a document through collabora.
|
@ -17,6 +17,27 @@ Installation & Usage
|
||||
|
||||
You will learn here how to install a new symfony project with chill, and configure it.
|
||||
|
||||
Which can of installation do I need ?
|
||||
=====================================
|
||||
|
||||
I want to run chill in production
|
||||
---------------------------------
|
||||
|
||||
See the :ref:`instructions about installing Chill for production <installation-production>`.
|
||||
|
||||
I want to add features to the main chill bundles
|
||||
------------------------------------------------
|
||||
|
||||
If you want to add features to chill bundles itself, **and** you want those features to be merged into the chill bundles,
|
||||
you can use the "development" installation mode.
|
||||
|
||||
See the :ref:`instruction for installation for development <installation-for-dev>`.
|
||||
|
||||
I want to add features to Chill, but keep those features for my instance
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Follow the same instruction than for production, until the end.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
@ -36,341 +57,11 @@ Chill needs a redis server and a postgresql database, and a few other things lik
|
||||
generate documents from templates. **All these things are available through docker using the plugin compose**. We do not provide
|
||||
information on how to run this without docker compose.
|
||||
|
||||
|
||||
Install a new project
|
||||
=====================
|
||||
|
||||
Initialize project and dependencies
|
||||
***********************************
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony new --version=5.4 my_chill_project
|
||||
cd my_chill_project
|
||||
|
||||
We strongly encourage you to initialize a git repository at this step, to track further changes.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# add the flex endpoints required for custom recipes
|
||||
cat <<< "$(jq '.extra.symfony += {"endpoint": ["flex://defaults", "https://gitlab.com/api/v4/projects/57371968/repository/files/index.json/raw?ref=main"]}' composer.json)" > composer.json
|
||||
# install chill and some dependencies
|
||||
# TODO fix the suffix "alpha1" and replace by ^3.0.0 when version 3.0.0 will be released
|
||||
symfony composer require chill-project/chill-bundles v3.0.0-RC3 champs-libres/wopi-lib dev-master@dev champs-libres/wopi-bundle dev-master@dev
|
||||
|
||||
We encourage you to accept the inclusion of the "Docker configuration from recipes": this is the documented way to run the database.
|
||||
You must also accept to configure recipes from the contrib repository, unless you want to configure the bundles manually).
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# fix some configuration
|
||||
./post-install-chill.sh
|
||||
# install node dependencies
|
||||
yarn install
|
||||
# and compile assets
|
||||
yarn run encore production
|
||||
|
||||
.. note::
|
||||
|
||||
If you encounter this error during assets compilation (:code:`yarn run encore production`) (repeated multiple times):
|
||||
|
||||
.. code-block:: txt
|
||||
|
||||
[tsl] ERROR in /tmp/chill/v1/public/bundles/chillcalendar/types.ts(2,65)
|
||||
TS2307: Cannot find module '../../../ChillMainBundle/Resources/public/types' or its corresponding type declarations.
|
||||
|
||||
run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
rm -rf public/bundles/*
|
||||
|
||||
Then restart the compilation of assets (:code:```yarn run encore production```)
|
||||
|
||||
Configure your project
|
||||
**********************
|
||||
|
||||
You should read the configuration files in :code:`chill/config/packages` carefully, especially if you have
|
||||
custom developments. But most of the time, this should be fine.
|
||||
|
||||
You have to configure some local variables, which are described in the :code:`.env` file. The secrets should not be stored
|
||||
in this :code:`.env` file, but instead using the `secrets management tool <https://symfony.com/doc/current/configuration/secrets.html>`_
|
||||
or in the :code:`.env.local` file, which should not be committed to the git repository.
|
||||
|
||||
You do not need to set variables for the smtp server, redis server and relatorio server, as they are generated automatically
|
||||
by the symfony server, from the docker compose services.
|
||||
|
||||
The only required variable is the :code:`ADMIN_PASSWORD`. You can generate a hashed and salted admin password using the command
|
||||
:code:`symfony console security:hash-password <your password> 'Symfony\Component\Security\Core\User\User'`. Then,
|
||||
you can either:
|
||||
|
||||
- add this password to the :code:`.env.local` file, you must escape the character :code:`$`: if the generated password
|
||||
is :code:`$2y$13$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm`, your :code:`.env.local` file will be:
|
||||
|
||||
.. code-block:: env
|
||||
|
||||
ADMIN_PASSWORD=\$2y\$13\$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm
|
||||
# note: if you copy-paste the line above, the password will be "admin".
|
||||
|
||||
- add the generated password to the secrets manager (**note**: you must add the generated hashed password to the secrets env,
|
||||
not the password in clear text).
|
||||
|
||||
- set up the jwt authentication bundle
|
||||
|
||||
Some environment variables are available for the JWT authentication bundle in the :code:`.env` file.
|
||||
|
||||
Prepare migrations and other tools
|
||||
**********************************
|
||||
|
||||
To continue the installation process, you will have to run migrations:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# start databases and other services
|
||||
docker compose up -d
|
||||
# the first start, it may last some seconds, you can check with docker compose ps
|
||||
# run migrations
|
||||
symfony console doctrine:migrations:migrate
|
||||
# setup messenger
|
||||
symfony console messenger:setup-transports
|
||||
# prepare some views
|
||||
symfony console chill:db:sync-views
|
||||
# generate jwt token, required for some api features (webdav access, ...)
|
||||
symfony console lexik:jwt:generate-keypair
|
||||
|
||||
.. warning::
|
||||
|
||||
If you encounter an error while running :code:`symfony console messenger:setup-transports`, you can set up the messenger
|
||||
transport to redis, by adding this in the :code:`.env.local` or :code:`.env` file:
|
||||
|
||||
.. code-block:: env
|
||||
|
||||
MESSENGER_TRANSPORT_DSN=redis://${REDIS_HOST}:${REDIS_PORT}/messages
|
||||
|
||||
Start your web server locally
|
||||
*****************************
|
||||
|
||||
At this step, Chill will be ready to be served locally, but without any configuration. You can run the project
|
||||
locally using the `local symfony server <https://symfony.com/doc/current/setup/symfony_server.html>`_:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# see the whole possibilities at https://symfony.com/doc/current/setup/symfony_server.html
|
||||
symfony server:start -d
|
||||
|
||||
|
||||
If you need to test the instance with accounts and some basic configuration, please install the fixtures (see below).
|
||||
|
||||
|
||||
Add capabilities for dev
|
||||
========================
|
||||
|
||||
If you need to add custom bundles, you can develop them in the `src/` directory, like for any other symfony project. You
|
||||
can rely on the whole chill framework, meaning there is no need to add them to the original `chill-bundles`.
|
||||
|
||||
You will require some bundles to have the following development tools:
|
||||
|
||||
- add fixtures
|
||||
- add profiler and debug bundle
|
||||
|
||||
Install fixtures
|
||||
****************
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# generate fixtures for chill
|
||||
symfony composer require --dev doctrine/doctrine-fixtures-bundle nelmio/alice
|
||||
# now, you can generate fixtures (this will reset your database)
|
||||
symfony console doctrine:fixtures:load
|
||||
|
||||
This will generate user accounts, centers, and some basic configuration.
|
||||
|
||||
The accounts created are: :code:`center a_social`, :code:`center b_social`, :code:`center a_direction`, ... The full list is
|
||||
visible in the "users" table: :code:`docker compose exec database psql -U app -c "SELECT username FROM users"`.
|
||||
|
||||
The password is always :code:`password`.
|
||||
|
||||
.. warning::
|
||||
|
||||
The fixtures are not fully functional. See the `corresponding issue <https://gitlab.com/Chill-Projet/chill-bundles/-/issues/280>`_.
|
||||
|
||||
Add web profiler and debugger
|
||||
*****************************
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony composer require --dev symfony/web-profiler-bundle symfony/debug-bundle
|
||||
|
||||
Working on chill bundles
|
||||
************************
|
||||
|
||||
If you plan to improve the chill-bundles repository, that's great!
|
||||
|
||||
You will have to download chill-bundles as a git repository (and not as an archive, which is barely editable).
|
||||
|
||||
In your :code:`composer.json` file, add these lines:
|
||||
|
||||
.. code-block:: diff
|
||||
|
||||
{
|
||||
"config": {
|
||||
+ "preferred-install": {
|
||||
+ "chill-project/chill-bundles": "source",
|
||||
"*": "dist"
|
||||
+ }
|
||||
}
|
||||
|
||||
Then, run :code:`symfony composer reinstall chill-project/chill-bundles` to re-install the package from source.
|
||||
|
||||
Code style, code quality and other tools
|
||||
****************************************
|
||||
|
||||
For development, you will also have to install:
|
||||
|
||||
- `php-cs-fixer <https://cs.symfony.com/>`_
|
||||
|
||||
We also encourage you to use tools like `phpstan <https://phpstan.org>`_ and `rector <https://getrector.com>`_.
|
||||
|
||||
Commit and share your project
|
||||
=============================
|
||||
|
||||
If multiple developers work on a project, you can commit your symfony project and share it with other people.
|
||||
|
||||
When another developer clones your project, they will have to:
|
||||
|
||||
- run :code:`symfony composer install` and :code:`yarn install` to install the same dependencies as the initial developer;
|
||||
- run :code:`yarn run encore production` to compile assets;
|
||||
- copy any possible variables from the :code:`.env.local` files;
|
||||
- start the docker compose stack, using :code:`docker compose`, and run migrations, set up transports, and prepare chill db views
|
||||
(see the corresponding command above)
|
||||
|
||||
Update
|
||||
======
|
||||
|
||||
In order to update your app, you must update dependencies:
|
||||
|
||||
- for chill-bundles, you can `set the last version <https://gitlab.com/Chill-Projet/chill-bundles/-/releases>`_ manually
|
||||
in the :code:`composer.json` file, or set the version to `^3.0.0` and run :code:`symfony composer update` regularly
|
||||
- run :code:`composer update` and :code:`yarn update` to maintain your dependencies up-to-date.
|
||||
|
||||
After each update, you must update your database schema:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console doctrine:migrations:migrate
|
||||
symfony console chill:db:sync-views
|
||||
|
||||
Operations
|
||||
==========
|
||||
|
||||
Build assets
|
||||
************
|
||||
|
||||
run those commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# for production (or in dev, when you don't need to work on your assets and need some speed)
|
||||
yarn run encore production
|
||||
# in dev, when you wan't to reload the assets on each changes
|
||||
yarn run encore dev --watch
|
||||
|
||||
How to execute the console ?
|
||||
****************************
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# start the console with all required variables
|
||||
symfony console
|
||||
# you can add your command after that:
|
||||
symfony console list
|
||||
|
||||
How to generate documents
|
||||
*************************
|
||||
|
||||
Documents are generated asynchronously by `"consuming messages" <https://symfony.com/doc/current/messenger.html#consuming-messages-running-the-worker>`_.
|
||||
|
||||
You must generate them using a dedicated process:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console messenger:consume async priority
|
||||
|
||||
To avoid memory issues, we encourage you to also use the :code:`--limit` parameter of the command.
|
||||
|
||||
How to read emails sent by the program ?
|
||||
*******************************************
|
||||
|
||||
In development, there is a built-in "mail catcher". Open it with :code:`symfony open:local:webmail`
|
||||
|
||||
How to run cron-jobs ?
|
||||
**********************
|
||||
|
||||
Some commands must be executed in :ref:`cron jobs <cronjob>`. To execute them:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console chill:cron-job:execute
|
||||
|
||||
What about materialized views ?
|
||||
*******************************
|
||||
|
||||
There are some materialized views in chill, to speed up some complex computations in the database.
|
||||
|
||||
In order to refresh them, run a cron job or refresh them manually in your database.
|
||||
|
||||
How to run tests for chill-bundles
|
||||
**********************************
|
||||
|
||||
Tests reside inside the installed bundles. You must `cd` into that directory, download the required packages, and execute them from this place.
|
||||
|
||||
**Note**: some bundles require the fixtures to be executed. See the dedicated _how-tos_.
|
||||
|
||||
Example, for running a unit test inside `main` bundle:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# cd into main directory
|
||||
cd vendor/chill-project/chill-bundles
|
||||
composer install
|
||||
# run tests
|
||||
bin/phpunit src/Bundle/path/to/your/test
|
||||
|
||||
Or for running tests to check code style and php conventions with csfixer and phpstan:
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
Error `An exception has been thrown during the rendering of a template ("Asset manifest file "/var/www/app/web/build/manifest.json" does not exist.").` on first run
|
||||
********************************************************************************************************************************************************************
|
||||
|
||||
Build assets, see above.
|
||||
|
||||
Running in production
|
||||
=====================
|
||||
|
||||
Currently, to run this software in production, the *state of the art* is the following :
|
||||
|
||||
1. Run the software locally and tweak the configuration to your needs ;
|
||||
2. Build the image and store it in a private container registry.
|
||||
|
||||
.. warning::
|
||||
|
||||
In production, you **must** set these variables:
|
||||
|
||||
* ``APP_ENV`` to ``prod``
|
||||
* ``APP_DEBUG`` to ``false``
|
||||
|
||||
There are security issues if you keep the same variables as for production.
|
||||
|
||||
|
||||
Going further
|
||||
=============
|
||||
Instructions
|
||||
============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
prod.rst
|
||||
load-addresses.rst
|
||||
prod-calendar-sms-sending.rst
|
||||
msgraph-configure.rst
|
||||
installation-development.rst
|
||||
installation-production.rst
|
||||
|
101
docs/source/installation/installation-development.rst
Normal file
101
docs/source/installation/installation-development.rst
Normal file
@ -0,0 +1,101 @@
|
||||
.. _installation-for-dev:
|
||||
|
||||
Installation for development or testing purpose only
|
||||
====================================================
|
||||
|
||||
⚠️ Use this method for development only. ⚠️
|
||||
|
||||
You will need:
|
||||
|
||||
- `Composer <https://getcomposer.org>`__;
|
||||
- `Symfony-cli tool <https://symfony.com/download>`__;
|
||||
- `docker <https://docs.docker.com/engine/install/>`__ and
|
||||
`docker-compose <https://docs.docker.com/compose/>`__
|
||||
- node > 20 and yarn 1.22
|
||||
|
||||
First initialization
|
||||
--------------------
|
||||
|
||||
1. clone the repository and move to the cloned directory:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
git clone https://gitlab.com/Chill-Projet/chill-bundles.git
|
||||
cd chill-bundles
|
||||
|
||||
2. install dependencies using composer
|
||||
|
||||
.. code:: bash
|
||||
|
||||
composer install
|
||||
|
||||
3. Install and compile assets:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
yarn install
|
||||
yarn run encore production
|
||||
|
||||
**note** double check that you have the node version > 20 using the
|
||||
``node --version`` command.
|
||||
|
||||
4. configure your project: create a ``.env.local`` file at the root, and
|
||||
add the admin password:
|
||||
|
||||
.. code:: dotenv
|
||||
|
||||
# for this installation mode, the environment should always be "dev"
|
||||
APP_ENV=dev
|
||||
ADMIN_PASSWORD=\$2y\$13\$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm
|
||||
# note: if you copy-paste the line above, the password will be "admin".
|
||||
|
||||
5. start the stack using ``docker compose up -d``, check the status of
|
||||
the start with ``docker compose ps``
|
||||
|
||||
6. configure all the needed third-party tools
|
||||
|
||||
.. code:: bash
|
||||
|
||||
# the first start, it may last some seconds, you can check with docker compose ps
|
||||
# run migrations
|
||||
symfony console doctrine:migrations:migrate
|
||||
# setup messenger
|
||||
symfony console messenger:setup-transports
|
||||
# prepare some views
|
||||
symfony console chill:db:sync-views
|
||||
# generate jwt token, required for some api features (webdav access, ...)
|
||||
symfony console lexik:jwt:generate-keypair
|
||||
|
||||
7. add some fixtures
|
||||
|
||||
This will truncate all the existing data of the database. But remember,
|
||||
we are in dev mode !
|
||||
|
||||
.. code:: bash
|
||||
|
||||
symfony console doctrine:fixtures:load
|
||||
|
||||
8. launch symfony dev-server
|
||||
|
||||
.. code:: bash
|
||||
|
||||
symfony server:start -d
|
||||
|
||||
And visit the web page it suggest. You can login with user
|
||||
``center a_social`` and password ``password``, or login ``admin`` with
|
||||
the password you set.
|
||||
|
||||
Stopping the server
|
||||
-------------------
|
||||
|
||||
.. code:: bash
|
||||
|
||||
symfony server:stop
|
||||
|
||||
Restart the webserver for subsequent start
|
||||
------------------------------------------
|
||||
|
||||
.. code:: bash
|
||||
|
||||
symfony server:start -d
|
||||
# this will automatically starts the full docker compose services
|
328
docs/source/installation/installation-production.rst
Normal file
328
docs/source/installation/installation-production.rst
Normal file
@ -0,0 +1,328 @@
|
||||
.. _installation-production:
|
||||
|
||||
Install Chill for production with or without adding personal features
|
||||
#####################################################################
|
||||
|
||||
Chill is a set of "bundles" for a symfony app.
|
||||
|
||||
To run Chill in production or add new features to it (without merging those features to the chill core), you must create
|
||||
a symfony app, and eventually add those features into your app.
|
||||
|
||||
Once you are happy with the configuration, `you should follow the dedicated instructions of how to go into production for
|
||||
Symfony apps <https://symfony.com/doc/current/deployment.html>`_.
|
||||
|
||||
Install a new app
|
||||
=================
|
||||
|
||||
Initialize project and dependencies
|
||||
-----------------------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony new --version=5.4 my_chill_project
|
||||
cd my_chill_project
|
||||
|
||||
We strongly encourage you to initialize a git repository at this step, to track further changes.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# add the flex endpoints required for custom recipes
|
||||
cat <<< "$(jq '.extra.symfony += {"endpoint": ["flex://defaults", "https://gitlab.com/api/v4/projects/57371968/repository/files/index.json/raw?ref=main"]}' composer.json)" > composer.json
|
||||
# install chill and some dependencies
|
||||
# TODO fix the suffix "alpha1" and replace by ^3.0.0 when version 3.0.0 will be released
|
||||
symfony composer require chill-project/chill-bundles v3.0.0-RC3 champs-libres/wopi-lib dev-master@dev champs-libres/wopi-bundle dev-master@dev
|
||||
|
||||
We encourage you to accept the inclusion of the "Docker configuration from recipes": this is the documented way to run the database.
|
||||
You must also accept to configure recipes from the contrib repository, unless you want to configure the bundles manually).
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# fix some configuration
|
||||
./post-install-chill.sh
|
||||
# install node dependencies
|
||||
yarn install
|
||||
# and compile assets
|
||||
yarn run encore production
|
||||
|
||||
.. note::
|
||||
|
||||
If you encounter this error during assets compilation (:code:`yarn run encore production`) (repeated multiple times):
|
||||
|
||||
.. code-block:: txt
|
||||
|
||||
[tsl] ERROR in /tmp/chill/v1/public/bundles/chillcalendar/types.ts(2,65)
|
||||
TS2307: Cannot find module '../../../ChillMainBundle/Resources/public/types' or its corresponding type declarations.
|
||||
|
||||
run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
rm -rf public/bundles/*
|
||||
|
||||
Then restart the compilation of assets (:code:```yarn run encore production```)
|
||||
|
||||
Configure your project
|
||||
----------------------
|
||||
|
||||
You should read the configuration files in :code:`chill/config/packages` carefully, especially if you have
|
||||
custom developments. But most of the time, this should be fine.
|
||||
|
||||
You have to configure some local variables, which are described in the :code:`.env` file. The secrets should not be stored
|
||||
in this :code:`.env` file, but instead using the `secrets management tool <https://symfony.com/doc/current/configuration/secrets.html>`_
|
||||
or in the :code:`.env.local` file, which should not be committed to the git repository.
|
||||
|
||||
You do not need to set variables for the smtp server, redis server and relatorio server, as they are generated automatically
|
||||
by the symfony server, from the docker compose services.
|
||||
|
||||
The only required variable is the :code:`ADMIN_PASSWORD`. You can generate a hashed and salted admin password using the command
|
||||
:code:`symfony console security:hash-password <your password> 'Symfony\Component\Security\Core\User\User'`. Then,
|
||||
you can either:
|
||||
|
||||
- add this password to the :code:`.env.local` file, you must escape the character :code:`$`: if the generated password
|
||||
is :code:`$2y$13$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm`, your :code:`.env.local` file will be:
|
||||
|
||||
.. code-block:: env
|
||||
|
||||
ADMIN_PASSWORD=\$2y\$13\$iyvJLuT4YEa6iWXyQV4/N.hNHpNG8kXlYDkkt5MkYy4FXcSwYAwmm
|
||||
# note: if you copy-paste the line above, the password will be "admin".
|
||||
|
||||
- add the generated password to the secrets manager (**note**: you must add the generated hashed password to the secrets env,
|
||||
not the password in clear text).
|
||||
|
||||
- set up the jwt authentication bundle
|
||||
|
||||
Some environment variables are available for the JWT authentication bundle in the :code:`.env` file.
|
||||
|
||||
Prepare migrations and other tools
|
||||
----------------------------------
|
||||
|
||||
To continue the installation process, you will have to run migrations:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# start databases and other services
|
||||
docker compose up -d
|
||||
# the first start, it may last some seconds, you can check with docker compose ps
|
||||
# run migrations
|
||||
symfony console doctrine:migrations:migrate
|
||||
# setup messenger
|
||||
symfony console messenger:setup-transports
|
||||
# prepare some views
|
||||
symfony console chill:db:sync-views
|
||||
# generate jwt token, required for some api features (webdav access, ...)
|
||||
symfony console lexik:jwt:generate-keypair
|
||||
|
||||
.. warning::
|
||||
|
||||
If you encounter an error while running :code:`symfony console messenger:setup-transports`, you can set up the messenger
|
||||
transport to redis, by adding this in the :code:`.env.local` or :code:`.env` file:
|
||||
|
||||
.. code-block:: env
|
||||
|
||||
MESSENGER_TRANSPORT_DSN=redis://${REDIS_HOST}:${REDIS_PORT}/messages
|
||||
|
||||
Start your web server locally
|
||||
-----------------------------
|
||||
|
||||
At this step, Chill will be ready to be served locally, but without any configuration. You can run the project
|
||||
locally using the `local symfony server <https://symfony.com/doc/current/setup/symfony_server.html>`_:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# see the whole possibilities at https://symfony.com/doc/current/setup/symfony_server.html
|
||||
symfony server:start -d
|
||||
|
||||
|
||||
If you need to test the instance with accounts and some basic configuration, please install the fixtures (see below).
|
||||
|
||||
|
||||
Add capabilities for dev
|
||||
========================
|
||||
|
||||
If you need to add custom bundles, you can develop them in the `src/` directory, like for any other symfony project. You
|
||||
can rely on the whole chill framework, meaning there is no need to add them to the original `chill-bundles`.
|
||||
|
||||
You will require some bundles to have the following development tools:
|
||||
|
||||
- add fixtures
|
||||
- add profiler and debug bundle
|
||||
|
||||
Install fixtures
|
||||
----------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# generate fixtures for chill
|
||||
symfony composer require --dev doctrine/doctrine-fixtures-bundle nelmio/alice
|
||||
# now, you can generate fixtures (this will reset your database)
|
||||
symfony console doctrine:fixtures:load
|
||||
|
||||
This will generate user accounts, centers, and some basic configuration.
|
||||
|
||||
The accounts created are: :code:`center a_social`, :code:`center b_social`, :code:`center a_direction`, ... The full list is
|
||||
visible in the "users" table: :code:`docker compose exec database psql -U app -c "SELECT username FROM users"`.
|
||||
|
||||
The password is always :code:`password`.
|
||||
|
||||
.. warning::
|
||||
|
||||
The fixtures are not fully functional. See the `corresponding issue <https://gitlab.com/Chill-Projet/chill-bundles/-/issues/280>`_.
|
||||
|
||||
Add web profiler and debugger
|
||||
-----------------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony composer require --dev symfony/web-profiler-bundle symfony/debug-bundle
|
||||
|
||||
Working on chill bundles
|
||||
------------------------
|
||||
|
||||
If you plan to improve the chill-bundles repository, that's great!
|
||||
|
||||
It would be better :ref:`to follow the instruction about development <installation-for-dev>`. But if those features are
|
||||
deeply linked to some dev you made in the app, it can be easier to develop within the :code:`vendor/` directory.
|
||||
|
||||
You will have to download chill-bundles as a git repository (and not as an archive, which is barely editable).
|
||||
|
||||
In your :code:`composer.json` file, add these lines:
|
||||
|
||||
.. code-block:: diff
|
||||
|
||||
{
|
||||
"config": {
|
||||
+ "preferred-install": {
|
||||
+ "chill-project/chill-bundles": "source",
|
||||
"*": "dist"
|
||||
+ }
|
||||
}
|
||||
|
||||
Then, run :code:`symfony composer reinstall chill-project/chill-bundles` to re-install the package from source.
|
||||
|
||||
|
||||
Update
|
||||
======
|
||||
|
||||
In order to update your app, you must update dependencies:
|
||||
|
||||
- for chill-bundles, you can `set the last version <https://gitlab.com/Chill-Projet/chill-bundles/-/releases>`_ manually
|
||||
in the :code:`composer.json` file, or set the version to `^3.0.0` and run :code:`symfony composer update` regularly
|
||||
- run :code:`composer update` and :code:`yarn update` to maintain your dependencies up-to-date.
|
||||
|
||||
After each update, you must update your database schema:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console doctrine:migrations:migrate
|
||||
symfony console chill:db:sync-views
|
||||
|
||||
|
||||
Commit and share your project
|
||||
=============================
|
||||
|
||||
If multiple developers work on a project, you can commit your symfony project and share it with other people.
|
||||
|
||||
When another developer clones your project, they will have to:
|
||||
|
||||
- run :code:`symfony composer install` and :code:`yarn install` to install the same dependencies as the initial developer;
|
||||
- run :code:`yarn run encore production` to compile assets;
|
||||
- copy any possible variables from the :code:`.env.local` files;
|
||||
- start the docker compose stack, using :code:`docker compose`, and run migrations, set up transports, and prepare chill db views
|
||||
(see the corresponding command above)
|
||||
|
||||
Operations
|
||||
==========
|
||||
|
||||
Build assets
|
||||
------------
|
||||
|
||||
run those commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# for production (or in dev, when you don't need to work on your assets and need some speed)
|
||||
yarn run encore production
|
||||
# in dev, when you wan't to reload the assets on each changes
|
||||
yarn run encore dev --watch
|
||||
|
||||
How to execute the console ?
|
||||
----------------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# start the console with all required variables
|
||||
symfony console
|
||||
# you can add your command after that:
|
||||
symfony console list
|
||||
|
||||
How to generate documents
|
||||
-------------------------
|
||||
|
||||
Documents are generated asynchronously by `"consuming messages" <https://symfony.com/doc/current/messenger.html#consuming-messages-running-the-worker>`_.
|
||||
|
||||
You must generate them using a dedicated process:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console messenger:consume async priority
|
||||
|
||||
To avoid memory issues, we encourage you to also use the :code:`--limit` parameter of the command.
|
||||
|
||||
How to read emails sent by the program ?
|
||||
-------------------------------------------
|
||||
|
||||
In development, there is a built-in "mail catcher". Open it with :code:`symfony open:local:webmail`
|
||||
|
||||
How to run cron-jobs ?
|
||||
----------------------
|
||||
|
||||
Some commands must be executed in :ref:`cron jobs <cronjob>`. To execute them:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
symfony console chill:cron-job:execute
|
||||
|
||||
What about materialized views ?
|
||||
-------------------------------
|
||||
|
||||
There are some materialized views in chill, to speed up some complex computations in the database.
|
||||
|
||||
In order to refresh them, run a cron job or refresh them manually in your database.
|
||||
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
Error `An exception has been thrown during the rendering of a template ("Asset manifest file "/var/www/app/web/build/manifest.json" does not exist.").` on first run
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Build assets, see above.
|
||||
|
||||
Go to production
|
||||
================
|
||||
|
||||
Currently, to run this software in production, the *state of the art* is the following :
|
||||
|
||||
1. Run the software locally and tweak the configuration to your needs ;
|
||||
2. Build the image and store it in a private container registry.
|
||||
|
||||
.. warning::
|
||||
|
||||
In production, you **must** set these variables:
|
||||
|
||||
* ``APP_ENV`` to ``prod``
|
||||
* ``APP_DEBUG`` to ``false``
|
||||
|
||||
There are security issues if you keep the same variables as for production.
|
||||
|
||||
|
||||
Going further
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
prod.rst
|
||||
load-addresses.rst
|
||||
prod-calendar-sms-sending.rst
|
||||
msgraph-configure.rst
|
11
package.json
11
package.json
@ -7,9 +7,9 @@
|
||||
"@babel/core": "^7.20.5",
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@ckeditor/ckeditor5-build-classic": "^41.4.2",
|
||||
"@ckeditor/ckeditor5-dev-translations": "^40.2.0",
|
||||
"@ckeditor/ckeditor5-dev-utils": "^40.2.0",
|
||||
"@ckeditor/ckeditor5-dev-webpack-plugin": "^31.1.13",
|
||||
"@ckeditor/ckeditor5-dev-translations": "^40.2.0",
|
||||
"@ckeditor/ckeditor5-markdown-gfm": "^41.4.2",
|
||||
"@ckeditor/ckeditor5-theme-lark": "^41.4.2",
|
||||
"@ckeditor/ckeditor5-vue": "^5.1.0",
|
||||
@ -22,8 +22,8 @@
|
||||
"dompurify": "^3.1.0",
|
||||
"fork-awesome": "^1.1.7",
|
||||
"jquery": "^3.6.0",
|
||||
"node-sass": "^8.0.0",
|
||||
"marked": "^12.0.1",
|
||||
"node-sass": "^8.0.0",
|
||||
"popper.js": "^1.16.1",
|
||||
"postcss-loader": "^7.0.2",
|
||||
"raw-loader": "^4.0.2",
|
||||
@ -45,17 +45,18 @@
|
||||
"@fullcalendar/timegrid": "^6.1.4",
|
||||
"@fullcalendar/vue3": "^6.1.4",
|
||||
"@popperjs/core": "^2.9.2",
|
||||
"@types/leaflet": "^1.9.3",
|
||||
"@types/dompurify": "^3.0.5",
|
||||
"@types/leaflet": "^1.9.3",
|
||||
"bootstrap-icons": "^1.11.3",
|
||||
"dropzone": "^5.7.6",
|
||||
"es6-promise": "^4.2.8",
|
||||
"leaflet": "^1.7.1",
|
||||
"marked": "^12.0.2",
|
||||
"masonry-layout": "^4.2.2",
|
||||
"mime": "^4.0.0",
|
||||
"swagger-ui": "^4.15.5",
|
||||
"pdfjs-dist": "^4.3.136",
|
||||
"vis-network": "^9.1.0",
|
||||
"vue": "^3.2.37",
|
||||
"vue": "^3.5.6",
|
||||
"vue-i18n": "^9.1.6",
|
||||
"vue-multiselect": "3.0.0-alpha.2",
|
||||
"vue-toast-notification": "^3.1.2",
|
||||
|
@ -1,12 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" backupGlobals="false" colors="true" bootstrap="tests/bootstrap.php">
|
||||
<phpunit
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
||||
backupGlobals="false"
|
||||
colors="true"
|
||||
bootstrap="tests/bootstrap.php"
|
||||
>
|
||||
<php>
|
||||
<ini name="display_errors" value="1" />
|
||||
<ini name="error_reporting" value="-1"/>
|
||||
<server name="APP_ENV" value="test" force="true"/>
|
||||
<env name="SYMFONY_DEPRECATIONS_HELPER" value="max[direct]=93&max[indirect]=999999"/>
|
||||
<server name="SHELL_VERBOSITY" value="-1"/>
|
||||
<env name="KERNEL_CLASS" value="\App\Kernel"/>
|
||||
<server name="SYMFONY_PHPUNIT_REMOVE" value="" />
|
||||
<server name="SYMFONY_PHPUNIT_VERSION" value="9.5" />
|
||||
<ini name="date.timezone" value="Europe/Brussels" />
|
||||
</php>
|
||||
<testsuites>
|
||||
<!--
|
||||
|
9
public/index.php
Normal file
9
public/index.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
use App\Kernel;
|
||||
|
||||
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
|
||||
|
||||
return function (array $context) {
|
||||
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
|
||||
};
|
@ -69,9 +69,8 @@ return static function (RectorConfig $rectorConfig): void {
|
||||
|
||||
// skip some path...
|
||||
$rectorConfig->skip([
|
||||
// we must adapt service definition
|
||||
\Rector\Symfony\Symfony28\Rector\MethodCall\GetToConstructorInjectionRector::class,
|
||||
\Rector\Symfony\Symfony34\Rector\Closure\ContainerGetNameToTypeInTestsRector::class,
|
||||
// waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
|
||||
\Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
|
||||
]);
|
||||
|
||||
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::class, [
|
||||
|
BIN
resources/dev-certificate/dummy.p12
Normal file
BIN
resources/dev-certificate/dummy.p12
Normal file
Binary file not shown.
51
resources/dev-certificate/rootca.conf
Normal file
51
resources/dev-certificate/rootca.conf
Normal file
@ -0,0 +1,51 @@
|
||||
#
|
||||
# rootca.conf
|
||||
#
|
||||
# See Ristic OpenSSL Cookbook URL above.
|
||||
|
||||
oid_section = new_oids
|
||||
|
||||
[ new_oids ]
|
||||
tsa_policy1 = 1.2.3.4.1
|
||||
tsa_policy2 = 1.2.3.4.5.6
|
||||
tsa_policy3 = 1.2.3.4.5.7
|
||||
|
||||
########### TSA extension ##############
|
||||
#
|
||||
# Copied from the OpenSSL CAtsa.cnf test configuration and modified for use as a TSA extension.
|
||||
#
|
||||
#
|
||||
|
||||
[ tsa ]
|
||||
|
||||
default_tsa = tsa_config1
|
||||
|
||||
[ tsa_config1 ]
|
||||
dir = /etc/sign-pdf # TSA root directory
|
||||
serial = /var/lib/tsa/tsa_serial # current serial number (mandatory)
|
||||
signer_cert = $dir/tsa/tsa.crt # signing certificate (optional)
|
||||
certs = $dir/tsa/tsa-chain.pem # certification chain (optional)
|
||||
signer_key = $dir/tsa/private/tsa.key # tsa private key (optional)
|
||||
default_policy = tsa_policy1
|
||||
signer_digest = sha256 # digest to use for signing (optional)
|
||||
other_policies = tsa_policy2,tsa_policy3 # other policies (optional)
|
||||
digests = sha256,sha384,sha512 # acceptable digests (mandatory)
|
||||
accuracy = secs:1,millisecs:500,microsecs:100 # accuracy optional
|
||||
ordering = yes # is ordering defined? (optional, default: no)
|
||||
tsa_name = yes # must tsa name be included in reply? (opt., default: no)
|
||||
ess_cert_id_chain = yes # must ess cert id change be incl? (opt., default: no)
|
||||
ess_cert_id_alg = sha256 # alg to compute cert. id (optional, default: sha1)
|
||||
|
||||
# added, was missing in the blog post
|
||||
crypto_device = builtin
|
||||
|
||||
# The tsa_ext extension is
|
||||
# used to create the tsa cert tsa.crt
|
||||
|
||||
[ tsa_ext ]
|
||||
|
||||
authorityKeyIdentifier = keyid:always
|
||||
basicConstraints = critical,CA:false
|
||||
extendedKeyUsage = critical,timeStamping
|
||||
keyUsage = critical,nonRepudiation
|
||||
subjectKeyIdentifier = hash
|
30
resources/dev-certificate/tsa/private/tsa.key
Normal file
30
resources/dev-certificate/tsa/private/tsa.key
Normal file
@ -0,0 +1,30 @@
|
||||
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||
MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIJKTwMigNoUMCAggA
|
||||
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECEZP8zY4qrUIBIIEyGUWpexwnxFi
|
||||
8q/Flw0Y9sL2Z7rLOriVHPhjtgt17e3rTUYaV788D/YZu/of15CnvJLj4BupcH0M
|
||||
9i/Tqd7x6iwteIl3VJ8gIQLr44qCHdsGMoqKA7JrZmrr5uZkBBBblo1wwZOuEZSp
|
||||
wXvZEBWV7H/vfdHZcc/und1bmXzn6NmBwIvyYvVD3yWuT+49n7JWshmBJj27fd2V
|
||||
lOo7nrF25fdwgHve0E5gBZO1RFjhYH5EwyRg5DtUrAt6xvpmTHfDoXo8JcfgD+RR
|
||||
Rkg1aRdty4uc8tHph+QI47hgxpCp6mvgHajn23C725F89qYF7EsSZr/eqyOxzYYr
|
||||
L9cgKJMRlQC0Lc0y9rBj6gLGCMOqkpy0fsSZ1Wdr7EpfgvjW84oGW/4slNML3zFk
|
||||
D93qPfry8LpLQZlxNTvGZHbG/EHj41RjluBkhnqCcdPueaz1zs55BMAjP3vb9Hfy
|
||||
BfMRnK7tSgLCtFn1Vu3sWT02SVMa33WYMtuFHK7jBzp6IinA8RbKRoMcMdDtmCFC
|
||||
bMTjkiC7MQ0dPFCMdn8aRAjXtnIQfQKQt5fTVeha8lWi9DAdE9iBmy1mwksCnneL
|
||||
QTiSCs9+tMRBfKsgd5eND1/KhbHlUtjq/W/tsX/cVw+mBsz7s/VePSbfqkAr3ShI
|
||||
o2KcoQHjreGzvckTAaZ0r6IaStrT+i+zjHSZChwaJClq1eE/fIld6/cr//+cS4Hn
|
||||
BdNzjBpsfSJ+mXGrR63ZxF/iqYb5Y5vUxdpHiEOWQJmS3PbvD8soPYO+IxVdXO6h
|
||||
b+CL9uune5Fznrcm3OA3QfDE64b4bif1qV4govNcnd2LxTmJ8UjdvpNgaMjwNPNI
|
||||
JhaxGzAr0BsR8Wn+A/xvhtFtfX9s2jPDhn1diNZwklGSlakaHUsU8ZQNC8sy3sJ+
|
||||
38fIQ50624P0lKx5E1L8npUytNCodg/ewSxJFANui8OpLck/DbYhvzYFhUd0F+4m
|
||||
wmXSDNrp7bWvtT/b2MYW74RF9pt+R0AipYj3z1kCmZIECc0GpaL8PLuyWvEmEmfd
|
||||
mwEz4hJ5d7JkqLSVtmYWi6U/hRr12bt5ggn9GH0M6R2Q8RV4SlKhW2jgiDC1OOUP
|
||||
iQZvVCBuL2+wpx0Xn7l3Ef6Onr/Gfa9n0JEKqrKzDl1R0GxIh3w+XTVlPmEjOMfx
|
||||
XOwn/UzMMEybo7BD/t6/9Fp6UMrqcoj9sgWyFg6UQsVlMjRva7TUPCDVxxqD53yS
|
||||
iMqDVdSwcP6Py7FtSX2D42n6m8E7GlI68qs+a/7jSBrpKWyTye8kOP5uADFHjwCy
|
||||
AZpLnfGFUG7OpfUgyVhBZSNoA4HGwSkiEdoh09uyFWcTj32DNcDqqRoN6W6azqKP
|
||||
+IlGmUrOMMnzB1jhiphYqBJQc196qRmYaRMi0oXWQx91Y+PXkXdv0E1x9+5E5SzK
|
||||
VQ3R3PlRx2uGLGxVQkXiwtNwcU++dnRPl+XIdyGzIxM2f2Ziwdi5srCxQpBMW+kK
|
||||
6Sumitx+xfcsgA32hWLlF7NJVqKqSpXSen5O8mI8H81qlNJmdWbP2kzpZyMZaK2R
|
||||
i+V1IMZyTSvNw+K7fM+apmq1DtvT4v7+6FYJ8l7AvAG/7qqpqqF+vbJzsVcz3aMw
|
||||
M/yg+z/tJtjUH4WyvZdHjw==
|
||||
-----END ENCRYPTED PRIVATE KEY-----
|
42
resources/dev-certificate/tsa/tsa-chain.pem
Normal file
42
resources/dev-certificate/tsa/tsa-chain.pem
Normal file
@ -0,0 +1,42 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDmDCCAoCgAwIBAgIRALBI/r9Su2VPe3I1YD91PrwwDQYJKoZIhvcNAQELBQAw
|
||||
NjELMAkGA1UEBhMCVVMxFTATBgNVBAoMDEV4YW1wbGUgSW5jLjEQMA4GA1UEAwwH
|
||||
Um9vdCBDQTAeFw0yNDEwMTEwNzE3NTFaFw0yNTEwMTEwNzE3NTFaMF8xCzAJBgNV
|
||||
BAYTAlVTMRUwEwYDVQQKDAxFeGFtcGxlIEluYy4xFDASBgNVBAsMC0VuZ2luZWVy
|
||||
aW5nMSMwIQYDVQQDDBpFeGFtcGxlIEluYy4gVFNBIFJlc3BvbmRlcjCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOGcX2IkZmoa2ShecFL8Qr0WTq5xjWey
|
||||
fO+8/e5/F01eFL+eXoogo/mGyIcqavhb7a3lVzwmrBEp7iTfuFQ9mIt4kddFEJqb
|
||||
lV5SC+WOJm0KX83TOnDkdyDGLRoOUpkC3ZQKQ+/G7p0DUaF94q6rYyHGNn35lb9F
|
||||
ebqz/kGl3KOwGI+dCESDH1RSdPU1aRo/x06pYJhap6yNrJtX/7YmWQkPKGAGNavo
|
||||
R4iTr9GE6NlHhNQ4Fg0hc4F9+IU3kXmxA8TWSAhmzOcKdGUbz2ac/g6+Lgw4Am7u
|
||||
yqs78n176da3U0Eu9Obb03wCN3Yhsf1dqjsBLAD8Bn4iG44iTGrZI98CAwEAAaN4
|
||||
MHYwHwYDVR0jBBgwFoAUHD5JsO28Mf8S9jAWY+3jAlYs3eAwDAYDVR0TAQH/BAIw
|
||||
ADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCBkAwHQYDVR0O
|
||||
BBYEFAOm2MbXTrFPmDV2rgH4J7xSJ5KuMA0GCSqGSIb3DQEBCwUAA4IBAQBX9Zx0
|
||||
u2EfWRuP21RfO1uuaArbKS6qozG+1umXqPCpvf4EnZX1fielI35LLAZ/w2b+PXDZ
|
||||
y2i6vJVDLMpQwaXHpyT4wsxXtVocE/AqT6Y0dgMV4ebw8UP+o4dSWMWsaOn71TjI
|
||||
3TvSNrkCE8jgS+4Z5Tci0mBFgdnB24OL6cKaIgUcuJhHtdMQdJd/lu9kJ/nrsDsr
|
||||
7xE1iK0b8JPhNq35Gwbqq9PnOvQN1DKUWXggIlI4t+MtKVP2A+Ci6ssAWLk+rj3m
|
||||
SUAwNimBHp3l0uAVnFjp0Rg/4gdOSSNU4S+TXlcMxA1Ce8VGQR2Urb21Ebit5bS8
|
||||
tOcbGzdJkJFBo22C
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDOTCCAiGgAwIBAgIRALBI/r9Su2VPe3I1YD91PrswDQYJKoZIhvcNAQELBQAw
|
||||
NjELMAkGA1UEBhMCVVMxFTATBgNVBAoMDEV4YW1wbGUgSW5jLjEQMA4GA1UEAwwH
|
||||
Um9vdCBDQTAeFw0yNDEwMTEwNjU4NTRaFw0zNDEwMDkwNjU4NTRaMDYxCzAJBgNV
|
||||
BAYTAlVTMRUwEwYDVQQKDAxFeGFtcGxlIEluYy4xEDAOBgNVBAMMB1Jvb3QgQ0Ew
|
||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfVsoNWcVbT85bbjT5GLaN
|
||||
P8PI9pDgKvHJxqY9Des1osGrCV0q5gym9Z5RIAqMW1LSGUqzzfoNVOuOtS0EOWmx
|
||||
Go0drTCHt/uFFbSGXO5ghRXldFnuZglDrj6kTfVshxrMCAn+63PL6trxLNGMsyJn
|
||||
FdmFwr1h+XKzWTI151cpr45D+08oa7PwpPfQdy3E5O7ihAMu0DcebEHqE3aeUsO2
|
||||
yqauErFi3uAB9I9ormi5KLPEi6VdGc7WyDvI2x+L2bdsK2bJuA3JZVx8jqfgx6oc
|
||||
NdVkrJ4q5xa6G3z0sfFjdnFuBnaDppRDmcEFmrQUNcXNGFCuC06D2RSjxOvpwMiR
|
||||
AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud
|
||||
DgQWBBQcPkmw7bwx/xL2MBZj7eMCVizd4DANBgkqhkiG9w0BAQsFAAOCAQEAWT1T
|
||||
1179iZl0DsAh+auKOwa36YKiZyjhnSjYeUgSp776DKc8AA5VquLxfcHSBEnJzxYN
|
||||
7tlNob21XtFDAEbYNzU2siFxYRp3cbzY8HrOTgFo/npiYgHfAnYtAv3pwOb8AvrG
|
||||
J7+KBOlXG4RXk10CiwhR63c0QPtnQxe93I4R2m5FCq7hDw1tMzoImPHeHi/xEXNb
|
||||
3uMQV5esrIwJlZ/eihCWQ0Hu47RDzb0ooAj6pKEdKBj5ZPy7h5p3/cdCZmtvcfSc
|
||||
s5iRF/c2rcyAfssFpJs2/KWl77pQBsJl7oxdlwJjSQ7/Hsv51yYjs0Cj0oLt8tS9
|
||||
W+afHq4oRaAXFKgRBA==
|
||||
-----END CERTIFICATE-----
|
84
resources/dev-certificate/tsa/tsa.crt
Normal file
84
resources/dev-certificate/tsa/tsa.crt
Normal file
@ -0,0 +1,84 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
b0:48:fe:bf:52:bb:65:4f:7b:72:35:60:3f:75:3e:bc
|
||||
Signature Algorithm: sha256WithRSAEncryption
|
||||
Issuer: C=US, O=Example Inc., CN=Root CA
|
||||
Validity
|
||||
Not Before: Oct 11 07:17:51 2024 GMT
|
||||
Not After : Oct 11 07:17:51 2025 GMT
|
||||
Subject: C=US, O=Example Inc., OU=Engineering, CN=Example Inc. TSA Responder
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e1:9c:5f:62:24:66:6a:1a:d9:28:5e:70:52:fc:
|
||||
42:bd:16:4e:ae:71:8d:67:b2:7c:ef:bc:fd:ee:7f:
|
||||
17:4d:5e:14:bf:9e:5e:8a:20:a3:f9:86:c8:87:2a:
|
||||
6a:f8:5b:ed:ad:e5:57:3c:26:ac:11:29:ee:24:df:
|
||||
b8:54:3d:98:8b:78:91:d7:45:10:9a:9b:95:5e:52:
|
||||
0b:e5:8e:26:6d:0a:5f:cd:d3:3a:70:e4:77:20:c6:
|
||||
2d:1a:0e:52:99:02:dd:94:0a:43:ef:c6:ee:9d:03:
|
||||
51:a1:7d:e2:ae:ab:63:21:c6:36:7d:f9:95:bf:45:
|
||||
79:ba:b3:fe:41:a5:dc:a3:b0:18:8f:9d:08:44:83:
|
||||
1f:54:52:74:f5:35:69:1a:3f:c7:4e:a9:60:98:5a:
|
||||
a7:ac:8d:ac:9b:57:ff:b6:26:59:09:0f:28:60:06:
|
||||
35:ab:e8:47:88:93:af:d1:84:e8:d9:47:84:d4:38:
|
||||
16:0d:21:73:81:7d:f8:85:37:91:79:b1:03:c4:d6:
|
||||
48:08:66:cc:e7:0a:74:65:1b:cf:66:9c:fe:0e:be:
|
||||
2e:0c:38:02:6e:ee:ca:ab:3b:f2:7d:7b:e9:d6:b7:
|
||||
53:41:2e:f4:e6:db:d3:7c:02:37:76:21:b1:fd:5d:
|
||||
aa:3b:01:2c:00:fc:06:7e:22:1b:8e:22:4c:6a:d9:
|
||||
23:df
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Authority Key Identifier:
|
||||
1C:3E:49:B0:ED:BC:31:FF:12:F6:30:16:63:ED:E3:02:56:2C:DD:E0
|
||||
X509v3 Basic Constraints: critical
|
||||
CA:FALSE
|
||||
X509v3 Extended Key Usage: critical
|
||||
Time Stamping
|
||||
X509v3 Key Usage: critical
|
||||
Non Repudiation
|
||||
X509v3 Subject Key Identifier:
|
||||
03:A6:D8:C6:D7:4E:B1:4F:98:35:76:AE:01:F8:27:BC:52:27:92:AE
|
||||
Signature Algorithm: sha256WithRSAEncryption
|
||||
Signature Value:
|
||||
57:f5:9c:74:bb:61:1f:59:1b:8f:db:54:5f:3b:5b:ae:68:0a:
|
||||
db:29:2e:aa:a3:31:be:d6:e9:97:a8:f0:a9:bd:fe:04:9d:95:
|
||||
f5:7e:27:a5:23:7e:4b:2c:06:7f:c3:66:fe:3d:70:d9:cb:68:
|
||||
ba:bc:95:43:2c:ca:50:c1:a5:c7:a7:24:f8:c2:cc:57:b5:5a:
|
||||
1c:13:f0:2a:4f:a6:34:76:03:15:e1:e6:f0:f1:43:fe:a3:87:
|
||||
52:58:c5:ac:68:e9:fb:d5:38:c8:dd:3b:d2:36:b9:02:13:c8:
|
||||
e0:4b:ee:19:e5:37:22:d2:60:45:81:d9:c1:db:83:8b:e9:c2:
|
||||
9a:22:05:1c:b8:98:47:b5:d3:10:74:97:7f:96:ef:64:27:f9:
|
||||
eb:b0:3b:2b:ef:11:35:88:ad:1b:f0:93:e1:36:ad:f9:1b:06:
|
||||
ea:ab:d3:e7:3a:f4:0d:d4:32:94:59:78:20:22:52:38:b7:e3:
|
||||
2d:29:53:f6:03:e0:a2:ea:cb:00:58:b9:3e:ae:3d:e6:49:40:
|
||||
30:36:29:81:1e:9d:e5:d2:e0:15:9c:58:e9:d1:18:3f:e2:07:
|
||||
4e:49:23:54:e1:2f:93:5e:57:0c:c4:0d:42:7b:c5:46:41:1d:
|
||||
94:ad:bd:b5:11:b8:ad:e5:b4:bc:b4:e7:1b:1b:37:49:90:91:
|
||||
41:a3:6d:82
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDmDCCAoCgAwIBAgIRALBI/r9Su2VPe3I1YD91PrwwDQYJKoZIhvcNAQELBQAw
|
||||
NjELMAkGA1UEBhMCVVMxFTATBgNVBAoMDEV4YW1wbGUgSW5jLjEQMA4GA1UEAwwH
|
||||
Um9vdCBDQTAeFw0yNDEwMTEwNzE3NTFaFw0yNTEwMTEwNzE3NTFaMF8xCzAJBgNV
|
||||
BAYTAlVTMRUwEwYDVQQKDAxFeGFtcGxlIEluYy4xFDASBgNVBAsMC0VuZ2luZWVy
|
||||
aW5nMSMwIQYDVQQDDBpFeGFtcGxlIEluYy4gVFNBIFJlc3BvbmRlcjCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOGcX2IkZmoa2ShecFL8Qr0WTq5xjWey
|
||||
fO+8/e5/F01eFL+eXoogo/mGyIcqavhb7a3lVzwmrBEp7iTfuFQ9mIt4kddFEJqb
|
||||
lV5SC+WOJm0KX83TOnDkdyDGLRoOUpkC3ZQKQ+/G7p0DUaF94q6rYyHGNn35lb9F
|
||||
ebqz/kGl3KOwGI+dCESDH1RSdPU1aRo/x06pYJhap6yNrJtX/7YmWQkPKGAGNavo
|
||||
R4iTr9GE6NlHhNQ4Fg0hc4F9+IU3kXmxA8TWSAhmzOcKdGUbz2ac/g6+Lgw4Am7u
|
||||
yqs78n176da3U0Eu9Obb03wCN3Yhsf1dqjsBLAD8Bn4iG44iTGrZI98CAwEAAaN4
|
||||
MHYwHwYDVR0jBBgwFoAUHD5JsO28Mf8S9jAWY+3jAlYs3eAwDAYDVR0TAQH/BAIw
|
||||
ADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCBkAwHQYDVR0O
|
||||
BBYEFAOm2MbXTrFPmDV2rgH4J7xSJ5KuMA0GCSqGSIb3DQEBCwUAA4IBAQBX9Zx0
|
||||
u2EfWRuP21RfO1uuaArbKS6qozG+1umXqPCpvf4EnZX1fielI35LLAZ/w2b+PXDZ
|
||||
y2i6vJVDLMpQwaXHpyT4wsxXtVocE/AqT6Y0dgMV4ebw8UP+o4dSWMWsaOn71TjI
|
||||
3TvSNrkCE8jgS+4Z5Tci0mBFgdnB24OL6cKaIgUcuJhHtdMQdJd/lu9kJ/nrsDsr
|
||||
7xE1iK0b8JPhNq35Gwbqq9PnOvQN1DKUWXggIlI4t+MtKVP2A+Ci6ssAWLk+rj3m
|
||||
SUAwNimBHp3l0uAVnFjp0Rg/4gdOSSNU4S+TXlcMxA1Ce8VGQR2Urb21Ebit5bS8
|
||||
tOcbGzdJkJFBo22C
|
||||
-----END CERTIFICATE-----
|
1
resources/dev-certificate/tsa_serial
Normal file
1
resources/dev-certificate/tsa_serial
Normal file
@ -0,0 +1 @@
|
||||
08
|
@ -68,7 +68,7 @@ final class ActivityController extends AbstractController
|
||||
private readonly FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||
private readonly PaginatorFactory $paginatorFactory,
|
||||
private readonly ChillSecurity $security
|
||||
private readonly ChillSecurity $security,
|
||||
) {}
|
||||
|
||||
/**
|
||||
|
@ -80,7 +80,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private \DateTime $date;
|
||||
|
||||
/**
|
||||
* @var Collection<StoredObject>
|
||||
* @var Collection<int, StoredObject>
|
||||
*/
|
||||
#[Assert\Valid(traverse: true)]
|
||||
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
|
||||
@ -107,7 +107,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private ?Person $person = null;
|
||||
|
||||
/**
|
||||
* @var Collection<Person>
|
||||
* @var Collection<int, \Chill\PersonBundle\Entity\Person>
|
||||
*/
|
||||
#[Groups(['read', 'docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: Person::class)]
|
||||
@ -117,7 +117,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private PrivateCommentEmbeddable $privateComment;
|
||||
|
||||
/**
|
||||
* @var Collection<ActivityReason>
|
||||
* @var Collection<int, ActivityReason>
|
||||
*/
|
||||
#[Groups(['docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: ActivityReason::class)]
|
||||
@ -132,7 +132,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private string $sentReceived = '';
|
||||
|
||||
/**
|
||||
* @var Collection<SocialAction>
|
||||
* @var Collection<int, \Chill\PersonBundle\Entity\SocialWork\SocialAction>
|
||||
*/
|
||||
#[Groups(['read', 'docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: SocialAction::class)]
|
||||
@ -140,7 +140,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private Collection $socialActions;
|
||||
|
||||
/**
|
||||
* @var Collection<SocialIssue>
|
||||
* @var Collection<int, SocialIssue>
|
||||
*/
|
||||
#[Groups(['read', 'docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: SocialIssue::class)]
|
||||
@ -148,7 +148,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private Collection $socialIssues;
|
||||
|
||||
/**
|
||||
* @var Collection<ThirdParty>
|
||||
* @var Collection<int, ThirdParty>
|
||||
*/
|
||||
#[Groups(['read', 'docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
||||
@ -162,7 +162,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
||||
private ?User $user = null;
|
||||
|
||||
/**
|
||||
* @var Collection<User>
|
||||
* @var Collection<int, User>
|
||||
*/
|
||||
#[Groups(['read', 'docgen:read'])]
|
||||
#[ORM\ManyToMany(targetEntity: User::class)]
|
||||
|
@ -40,9 +40,9 @@ class ActivityReasonCategory implements \Stringable
|
||||
/**
|
||||
* Array of ActivityReason.
|
||||
*
|
||||
* @var Collection<ActivityReason>
|
||||
* @var Collection<int, ActivityReason>
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: ActivityReason::class, mappedBy: 'category')]
|
||||
#[ORM\OneToMany(mappedBy: 'category', targetEntity: ActivityReason::class)]
|
||||
private Collection $reasons;
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,7 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
|
||||
public function __construct(
|
||||
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
|
||||
protected ActivityReasonRepository $activityReasonRepository,
|
||||
protected TranslatableStringHelper $translatableStringHelper
|
||||
protected TranslatableStringHelper $translatableStringHelper,
|
||||
) {}
|
||||
|
||||
public function addRole(): ?string
|
||||
|
@ -26,7 +26,7 @@ class ActivityUsersJobAggregator implements AggregatorInterface
|
||||
|
||||
public function __construct(
|
||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||
) {}
|
||||
|
||||
public function addRole(): ?string
|
||||
|
@ -26,7 +26,7 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
|
||||
|
||||
public function __construct(
|
||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||
) {}
|
||||
|
||||
public function addRole(): ?string
|
||||
|
@ -26,7 +26,7 @@ class CreatorJobAggregator implements AggregatorInterface
|
||||
|
||||
public function __construct(
|
||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||
private readonly TranslatableStringHelper $translatableStringHelper
|
||||
private readonly TranslatableStringHelper $translatableStringHelper,
|
||||
) {}
|
||||
|
||||
public function addRole(): ?string
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user