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,11 +1,30 @@
|
|||||||
## v2.23.0 - 2024-07-23
|
## v2.23.0 - 2024-07-23 & 2024-07-19
|
||||||
### Feature
|
### Feature
|
||||||
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
* ([#221](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/221)) [DX] move async-upload-bundle features into chill-bundles
|
||||||
* Add job bundle (module emploi)
|
* Add job bundle (module emploi)
|
||||||
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
||||||
|
|
||||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
* 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
|
### Fixed
|
||||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
* Fix resolving of centers for an household, which will fix in turn the access control
|
||||||
* Resolved type hinting error in activity list export
|
* 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).
|
# 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
|
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
||||||
|
|
||||||
## Locale
|
|
||||||
LOCALE=fr
|
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
###> symfony/framework-bundle ###
|
||||||
# this should be set in docker-compose.yml file
|
|
||||||
APP_ENV=prod
|
APP_ENV=prod
|
||||||
APP_SECRET=ChangeItf2b58287ef7f9976409d3f6c72529e99ChangeIt
|
APP_SECRET=!ChangeMeInAppEnv!
|
||||||
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)$'
|
|
||||||
###< symfony/framework-bundle ###
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
## Wopi server for editing documents online
|
## Wopi server for editing documents online
|
||||||
WOPI_SERVER=http://collabora:9980
|
EDITOR_SERVER=http://collabora:9980
|
||||||
|
|
||||||
# must be manually set in .env.local
|
# must be manually set in .env.local
|
||||||
# ADMIN_PASSWORD=
|
# ADMIN_PASSWORD=
|
||||||
@ -32,52 +26,14 @@ WOPI_SERVER=http://collabora:9980
|
|||||||
# MAILER_DSN=null://null
|
# MAILER_DSN=null://null
|
||||||
###< symfony/mailer ###
|
###< 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 ###
|
###> symfony/messenger ###
|
||||||
# Choose one of the transports below
|
# Choose one of the transports below
|
||||||
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
|
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
|
||||||
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
|
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
|
||||||
MESSENGER_TRANSPORT_DSN=sync://
|
# MESSENGER_TRANSPORT_DSN=sync://
|
||||||
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
# MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
||||||
|
MESSENGER_TRANSPORT_DSN=${RABBITMQ_URL}/%2f
|
||||||
###< symfony/messenger ###
|
###< symfony/messenger ###
|
||||||
|
|
||||||
###> doctrine/doctrine-bundle ###
|
###> 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_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
|
||||||
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
||||||
###< lexik/jwt-authentication-bundle ###
|
###< 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'
|
KERNEL_CLASS='App\Kernel'
|
||||||
APP_SECRET='$ecretf0rt3st'
|
APP_SECRET='$ecretf0rt3st'
|
||||||
|
|
||||||
TRUSTED_HOSTS=
|
|
||||||
|
|
||||||
ADMIN_PASSWORD=password
|
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_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
|
||||||
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
|
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
|
||||||
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
JWT_PASSPHRASE=2a30f6ba26521a2613821da35f28386e
|
||||||
@ -22,22 +15,25 @@ TWILIO_SECRET=~
|
|||||||
DEFAULT_CARRIER_CODE=BE
|
DEFAULT_CARRIER_CODE=BE
|
||||||
|
|
||||||
ADD_ADDRESS_DEFAULT_COUNTRY=BE
|
ADD_ADDRESS_DEFAULT_COUNTRY=BE
|
||||||
|
|
||||||
ADD_ADDRESS_MAP_CENTER_X=50.8443
|
ADD_ADDRESS_MAP_CENTER_X=50.8443
|
||||||
ADD_ADDRESS_MAP_CENTER_Y=4.3523
|
ADD_ADDRESS_MAP_CENTER_Y=4.3523
|
||||||
ADD_ADDRESS_MAP_CENTER_Z=15
|
ADD_ADDRESS_MAP_CENTER_Z=15
|
||||||
|
|
||||||
SHORT_MESSAGE_DSN=null://null
|
SHORT_MESSAGE_DSN=null://null
|
||||||
MESSENGER_TRANSPORT_DSN=sync://
|
MESSENGER_TRANSPORT_DSN=sync://
|
||||||
###< symfony/messenger ###
|
|
||||||
|
|
||||||
###> doctrine/doctrine-bundle ###
|
###> doctrine/doctrine-bundle ###
|
||||||
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
# 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
|
# 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 ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
ASYNC_UPLOAD_TEMP_URL_KEY=
|
ASYNC_UPLOAD_TEMP_URL_KEY=
|
||||||
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
|
ASYNC_UPLOAD_TEMP_URL_BASE_PATH=
|
||||||
ASYNC_UPLOAD_TEMP_URL_CONTAINER=
|
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.phar
|
||||||
composer.lock
|
composer.lock
|
||||||
docs/build/
|
docs/build/
|
||||||
node_modules/*
|
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
.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 ###
|
###> symfony/framework-bundle ###
|
||||||
/.env.local
|
/.env.local
|
||||||
/.env.local.php
|
/.env.local.php
|
||||||
@ -15,7 +23,6 @@ node_modules/*
|
|||||||
/public/bundles/
|
/public/bundles/
|
||||||
/var/
|
/var/
|
||||||
/vendor/
|
/vendor/
|
||||||
/bin/
|
|
||||||
###< symfony/framework-bundle ###
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
###> phpunit/phpunit ###
|
###> phpunit/phpunit ###
|
||||||
@ -27,4 +34,20 @@ node_modules/*
|
|||||||
/.idea/
|
/.idea/
|
||||||
/.psalm/
|
/.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
|
# 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.
|
# See http://docs.gitlab.com/ee/ci/services/README.html for examples.
|
||||||
services:
|
services:
|
||||||
- name: postgis/postgis:14-3.3-alpine
|
- name: postgis/postgis:17-3.5-alpine
|
||||||
alias: db
|
alias: db
|
||||||
command:
|
command:
|
||||||
- postgres
|
- postgres
|
||||||
@ -26,7 +26,7 @@ variables:
|
|||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
# configure database access
|
# 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
|
# fetch the chill-app using git submodules
|
||||||
# GIT_SUBMODULE_STRATEGY: recursive
|
# GIT_SUBMODULE_STRATEGY: recursive
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
@ -56,7 +56,6 @@ build:
|
|||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
- bin
|
|
||||||
- vendor/
|
- vendor/
|
||||||
|
|
||||||
code_style:
|
code_style:
|
||||||
@ -70,63 +69,56 @@ code_style:
|
|||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
- bin
|
|
||||||
- vendor/
|
- vendor/
|
||||||
|
|
||||||
phpstan_tests:
|
phpstan_tests:
|
||||||
stage: Tests
|
stage: Tests
|
||||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
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:
|
script:
|
||||||
- bin/phpstan analyze --memory-limit=2G
|
- composer exec phpstan -- analyze --memory-limit=3G
|
||||||
cache:
|
cache:
|
||||||
paths:
|
paths:
|
||||||
- .cache/
|
- .cache/
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
- bin
|
|
||||||
- vendor/
|
- vendor/
|
||||||
|
|
||||||
rector_tests:
|
rector_tests:
|
||||||
stage: Tests
|
stage: Tests
|
||||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
||||||
|
before_script:
|
||||||
|
- bin/console cache:clear --env=dev
|
||||||
script:
|
script:
|
||||||
- tests/console cache:clear
|
- composer exec rector -- process --dry-run
|
||||||
- bin/rector process --dry-run
|
|
||||||
cache:
|
cache:
|
||||||
paths:
|
paths:
|
||||||
- .cache/
|
- .cache/
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
- bin
|
|
||||||
- vendor/
|
- 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:
|
unit_tests:
|
||||||
stage: Tests
|
stage: Tests
|
||||||
image: gitea.champs-libres.be/chill-project/chill-skeleton-basic/base-image:php82
|
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:
|
script:
|
||||||
- php tests/console doctrine:migrations:migrate -n --env=test
|
- composer exec phpunit -- --colors=never --exclude-group dbIntensive,openstack-integration
|
||||||
- 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
|
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 day
|
expire_in: 1 day
|
||||||
paths:
|
paths:
|
||||||
- bin
|
|
||||||
- vendor/
|
- vendor/
|
||||||
|
|
||||||
release:
|
release:
|
||||||
@ -138,4 +130,4 @@ release:
|
|||||||
- echo "running release_job"
|
- echo "running release_job"
|
||||||
release:
|
release:
|
||||||
tag_name: '$CI_COMMIT_TAG'
|
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,
|
$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);
|
return $config->setRules($rules);
|
||||||
|
2
.symfony.local.yaml
Normal file
2
.symfony.local.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
workers:
|
||||||
|
docker_compose: ~
|
105
CHANGELOG.md
105
CHANGELOG.md
@ -6,17 +6,102 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|||||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||||
|
|
||||||
|
|
||||||
## v2.23.0 - 2024-07-23
|
## v3.4.1 - 2024-11-22
|
||||||
### 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)
|
|
||||||
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
|
||||||
|
|
||||||
* Upgrade CKEditor and refactor configuration with use of typescript
|
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix resolving of centers for an household, which will fix in turn the access control
|
* Set the workflow's title to notification content and subject
|
||||||
* Resolved type hinting error in activity list export
|
|
||||||
|
## 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)
|
||||||
|
* Upgrade import of address list to the last version of compiled addresses of belgian-best-address
|
||||||
|
|
||||||
|
* 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
|
## v2.22.2 - 2024-07-03
|
||||||
### Fixed
|
### 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 App\Kernel;
|
||||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
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')) {
|
if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
|
||||||
throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".');
|
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",
|
"phpoffice/phpspreadsheet": "^1.16",
|
||||||
"ramsey/uuid-doctrine": "^1.7",
|
"ramsey/uuid-doctrine": "^1.7",
|
||||||
"sensio/framework-extra-bundle": "^5.5",
|
"sensio/framework-extra-bundle": "^5.5",
|
||||||
|
"smalot/pdfparser": "^2.10",
|
||||||
"spomky-labs/base64url": "^2.0",
|
"spomky-labs/base64url": "^2.0",
|
||||||
"symfony/asset": "^5.4",
|
"symfony/asset": "^5.4",
|
||||||
"symfony/browser-kit": "^5.4",
|
"symfony/browser-kit": "^5.4",
|
||||||
@ -42,6 +43,7 @@
|
|||||||
"symfony/dom-crawler": "^5.4",
|
"symfony/dom-crawler": "^5.4",
|
||||||
"symfony/error-handler": "^5.4",
|
"symfony/error-handler": "^5.4",
|
||||||
"symfony/event-dispatcher": "^5.4",
|
"symfony/event-dispatcher": "^5.4",
|
||||||
|
"symfony/event-dispatcher-contracts": "^2.4",
|
||||||
"symfony/expression-language": "^5.4",
|
"symfony/expression-language": "^5.4",
|
||||||
"symfony/filesystem": "^5.4",
|
"symfony/filesystem": "^5.4",
|
||||||
"symfony/finder": "^5.4",
|
"symfony/finder": "^5.4",
|
||||||
@ -97,11 +99,13 @@
|
|||||||
"rector/rector": "^1.1.0",
|
"rector/rector": "^1.1.0",
|
||||||
"symfony/debug-bundle": "^5.4",
|
"symfony/debug-bundle": "^5.4",
|
||||||
"symfony/dotenv": "^5.4",
|
"symfony/dotenv": "^5.4",
|
||||||
|
"symfony/flex": "^2.4",
|
||||||
"symfony/maker-bundle": "^1.20",
|
"symfony/maker-bundle": "^1.20",
|
||||||
"symfony/phpunit-bridge": "^7.1",
|
"symfony/phpunit-bridge": "^7.1",
|
||||||
"symfony/runtime": "^5.4",
|
"symfony/runtime": "^5.4",
|
||||||
"symfony/stopwatch": "^5.4",
|
"symfony/stopwatch": "^5.4",
|
||||||
"symfony/var-dumper": "^5.4"
|
"symfony/var-dumper": "^5.4",
|
||||||
|
"symfony/web-profiler-bundle": "^5.4"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/symfony": "*"
|
"symfony/symfony": "*"
|
||||||
@ -129,7 +133,7 @@
|
|||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"App\\": "tests/",
|
"App\\": "src/app",
|
||||||
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
"Chill\\DocGeneratorBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
||||||
"Chill\\WopiBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
"Chill\\WopiBundle\\Tests\\": "src/Bundle/ChillDocGeneratorBundle/tests",
|
||||||
"Chill\\Utils\\Rector\\Tests\\": "utils/rector/tests"
|
"Chill\\Utils\\Rector\\Tests\\": "utils/rector/tests"
|
||||||
@ -143,16 +147,22 @@
|
|||||||
"phpro/grumphp": true,
|
"phpro/grumphp": true,
|
||||||
"phpstan/extension-installer": true,
|
"phpstan/extension-installer": true,
|
||||||
"roave/you-are-using-it-wrong": true,
|
"roave/you-are-using-it-wrong": true,
|
||||||
"symfony/runtime": true
|
"symfony/runtime": true,
|
||||||
|
"symfony/flex": true
|
||||||
},
|
},
|
||||||
"bin-dir": "bin",
|
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
"sort-packages": true
|
"sort-packages": true
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"auto-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"
|
"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
|
<?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 [
|
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\ActivityBundle\ChillActivityBundle::class => ['all' => true],
|
||||||
Chill\AsideActivityBundle\ChillAsideActivityBundle::class => ['all' => true],
|
Chill\AsideActivityBundle\ChillAsideActivityBundle::class => ['all' => true],
|
||||||
Chill\CalendarBundle\ChillCalendarBundle::class => ['all' => true],
|
Chill\CalendarBundle\ChillCalendarBundle::class => ['all' => true],
|
||||||
@ -23,24 +34,6 @@ return [
|
|||||||
Chill\TaskBundle\ChillTaskBundle::class => ['all' => true],
|
Chill\TaskBundle\ChillTaskBundle::class => ['all' => true],
|
||||||
Chill\ThirdPartyBundle\ChillThirdPartyBundle::class => ['all' => true],
|
Chill\ThirdPartyBundle\ChillThirdPartyBundle::class => ['all' => true],
|
||||||
Chill\BudgetBundle\ChillBudgetBundle::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],
|
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
|
# Namespaced pools use the above "app" backend by default
|
||||||
#pools:
|
#pools:
|
||||||
#my.dedicated.cache: null
|
#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\CustomFields': '@ChillCustomFieldsBundle/migrations'
|
||||||
'Chill\Migrations\Event': '@ChillEventBundle/migrations'
|
'Chill\Migrations\Event': '@ChillEventBundle/migrations'
|
||||||
'Chill\Migrations\Person': '@ChillPersonBundle/migrations'
|
'Chill\Migrations\Person': '@ChillPersonBundle/migrations'
|
||||||
'Chill\Migrations\Report': '@ChillReportBundle/migrations'
|
|
||||||
'Chill\Migrations\Task': '@ChillTaskBundle/migrations'
|
'Chill\Migrations\Task': '@ChillTaskBundle/migrations'
|
||||||
'Chill\Migrations\ThirdParty': '@ChillThirdPartyBundle/migrations'
|
'Chill\Migrations\ThirdParty': '@ChillThirdPartyBundle/migrations'
|
||||||
'Chill\Migrations\AsideActivity': '@ChillAsideActivityBundle/migrations'
|
|
||||||
'Chill\Migrations\DocGenerator': '@ChillDocGeneratorBundle/migrations'
|
'Chill\Migrations\DocGenerator': '@ChillDocGeneratorBundle/migrations'
|
||||||
|
'Chill\Migrations\AsideActivity': '@ChillAsideActivityBundle/migrations'
|
||||||
'Chill\Migrations\Calendar': '@ChillCalendarBundle/migrations'
|
'Chill\Migrations\Calendar': '@ChillCalendarBundle/migrations'
|
||||||
'Chill\Migrations\Budget': '@ChillBudgetBundle/migrations'
|
'Chill\Migrations\Budget': '@ChillBudgetBundle/migrations'
|
||||||
|
'Chill\Migrations\Report': '@ChillReportBundle/migrations'
|
||||||
all_or_nothing:
|
all_or_nothing:
|
||||||
true
|
true
|
||||||
|
|
||||||
services:
|
services:
|
||||||
'Doctrine\Migrations\Version\Comparator': 'Chill\MainBundle\Doctrine\Migrations\VersionComparator'
|
'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
|
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
||||||
framework:
|
framework:
|
||||||
secret: '%env(APP_SECRET)%'
|
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
|
#csrf_protection: true
|
||||||
http_method_override: false
|
http_method_override: false
|
||||||
|
|
||||||
@ -27,12 +17,6 @@ framework:
|
|||||||
php_errors:
|
php_errors:
|
||||||
log: true
|
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:
|
when@test:
|
||||||
framework:
|
framework:
|
||||||
test: true
|
test: true
|
@ -1,3 +1,8 @@
|
|||||||
framework:
|
framework:
|
||||||
assets:
|
assets:
|
||||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
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\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory'
|
||||||
Psr\Http\Message\UriFactoryInterface: '@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:
|
nyholm.psr7.psr17_factory:
|
||||||
class: Nyholm\Psr7\Factory\Psr17Factory
|
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.
|
# 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
|
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||||
#default_uri: http://localhost
|
#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:
|
security:
|
||||||
|
|
||||||
access_decision_manager:
|
|
||||||
strategy: unanimous
|
|
||||||
allow_if_all_abstain: false
|
|
||||||
|
|
||||||
enable_authenticator_manager: true
|
enable_authenticator_manager: true
|
||||||
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
|
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
|
||||||
password_hashers:
|
password_hashers:
|
||||||
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
|
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
|
||||||
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
|
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
|
||||||
providers:
|
providers:
|
||||||
|
# providers added by chill-bundles recipes\n
|
||||||
chain_provider:
|
# those providers are required to make chill working
|
||||||
chain :
|
chill_chain_provider:
|
||||||
providers: [in_memory, users]
|
chain:
|
||||||
in_memory:
|
providers: [chill_in_memory, chill_users]
|
||||||
|
chill_in_memory:
|
||||||
memory:
|
memory:
|
||||||
users:
|
users:
|
||||||
admin: { password: '%env(resolve:ADMIN_PASSWORD)%', roles: ['ROLE_ADMIN', 'ROLE_ALLOWED_TO_SWITCH', 'ROLE_USER'] }
|
admin: { password: '%env(resolve:ADMIN_PASSWORD)%', roles: ['ROLE_ADMIN', 'ROLE_ALLOWED_TO_SWITCH', 'ROLE_USER'] }
|
||||||
users:
|
chill_users:
|
||||||
id: chill.main.user_provider
|
id: chill.main.user_provider
|
||||||
|
# end of providers added by chill-bundles recipes\n
|
||||||
encoders:
|
# all other providers might be removed, unless you have specific needs\n
|
||||||
Chill\MainBundle\Entity\User:
|
|
||||||
algorithm: bcrypt
|
|
||||||
Symfony\Component\Security\Core\User\User: plaintext
|
|
||||||
|
|
||||||
firewalls:
|
firewalls:
|
||||||
|
|
||||||
dev:
|
dev:
|
||||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
||||||
security: false
|
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:
|
wopi:
|
||||||
pattern: ^/wopi
|
pattern: ^/wopi
|
||||||
provider: chain_provider
|
provider: chill_chain_provider
|
||||||
stateless: true
|
stateless: true
|
||||||
guard:
|
guard:
|
||||||
authenticators:
|
authenticators:
|
||||||
- lexik_jwt_authentication.jwt_token_authenticator
|
- lexik_jwt_authentication.jwt_token_authenticator
|
||||||
|
dav:
|
||||||
main:
|
pattern: ^/dav
|
||||||
# remove during upgrade from symfony 4 to symfony 5 TODO check this
|
provider: chill_chain_provider
|
||||||
#anonymous: ~
|
stateless: true
|
||||||
provider: chain_provider
|
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:
|
form_login:
|
||||||
csrf_parameter: _csrf_token
|
csrf_parameter: _csrf_token
|
||||||
csrf_token_id: authenticate
|
csrf_token_id: authenticate
|
||||||
#csrf_provider: security.csrf.token_manager
|
#csrf_provider: security.csrf.token_manager
|
||||||
# remove during upgrade from symfony 4 to symfony 5 TODO check this
|
|
||||||
# logout_on_user_change: true
|
|
||||||
logout:
|
logout:
|
||||||
path: /logout
|
path: /logout
|
||||||
|
|
||||||
# uncomment to enable impersonate mode in Chill
|
# uncomment to enable impersonate mode in Chill
|
||||||
# https://symfony.com/doc/current/security/impersonating_user.html
|
# https://symfony.com/doc/current/security/impersonating_user.html
|
||||||
switch_user: true
|
switch_user: true
|
||||||
|
# end of lines added by chill-bundles recipe
|
||||||
# activate different ways to authenticate
|
# 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
|
# Easy way to control access for large sections of your site
|
||||||
# Note: Only the *first* access control that matches will be used
|
# Note: Only the *first* access control that matches will be used
|
||||||
access_control:
|
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: ^/(login|logout), roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||||
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
- { path: ^/public, roles: IS_AUTHENTICATED_ANONYMOUSLY }
|
||||||
- { path: ^/wopi, roles: IS_AUTHENTICATED_FULLY }
|
- { path: ^/wopi, roles: IS_AUTHENTICATED_FULLY }
|
||||||
@ -75,6 +75,7 @@ security:
|
|||||||
- { path: ^/([a-z]+/)?admin, roles: ROLE_ADMIN }
|
- { path: ^/([a-z]+/)?admin, roles: ROLE_ADMIN }
|
||||||
# other pages, only for regular user (no admin)
|
# other pages, only for regular user (no admin)
|
||||||
- { path: ^/, roles: ROLE_USER }
|
- { path: ^/, roles: ROLE_USER }
|
||||||
|
# this is the end of line added by chill-project/chill-bundles recipes
|
||||||
|
|
||||||
when@test:
|
when@test:
|
||||||
security:
|
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:
|
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 !!
|
## 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 sf5 https://symfony.com/doc/current/form/form_themes.html
|
||||||
# see sf4 https://symfony.com/doc/4.4/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.
|
# and adapt it lightly.
|
||||||
#
|
#
|
||||||
form_themes: ['@ChillMain/Form/bootstrap5/bootstrap_5_horizontal_layout.html.twig']
|
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.
|
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
|
||||||
#auto_mapping:
|
#auto_mapping:
|
||||||
# App\Entity\: []
|
# 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:
|
webpack_encore:
|
||||||
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
|
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
|
||||||
output_path: '%kernel.project_dir%/public/build'
|
output_path: '%kernel.project_dir%/public/build'
|
||||||
|
|
||||||
# If multiple builds are defined (as shown below), you can disable the default build:
|
# If multiple builds are defined (as shown below), you can disable the default build:
|
||||||
# output_path: false
|
# output_path: false
|
||||||
|
|
||||||
# Set attributes that will be rendered on all script and link tags
|
# Set attributes that will be rendered on all script and link tags
|
||||||
script_attributes:
|
script_attributes:
|
||||||
defer: true
|
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:
|
# 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')
|
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
|
||||||
# crossorigin: 'anonymous'
|
# crossorigin: 'anonymous'
|
||||||
@ -23,11 +25,17 @@ webpack_encore:
|
|||||||
|
|
||||||
# If you have multiple builds:
|
# If you have multiple builds:
|
||||||
# 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'
|
# frontend: '%kernel.project_dir%/public/frontend/build'
|
||||||
|
|
||||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
# pass the build name as the 3rd argument to the Twig functions
|
||||||
# Put in config/packages/prod/webpack_encore.yaml
|
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
|
||||||
# cache: true
|
|
||||||
|
#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
|
#load routes for chill bundles
|
||||||
chill_routes:
|
chill_routes:
|
||||||
resource: .
|
resource: .
|
||||||
type: chill_routes
|
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.
|
# 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
|
# 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:
|
parameters:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
@ -11,5 +11,3 @@ services:
|
|||||||
autowire: true # Automatically injects dependencies in your services.
|
autowire: true # Automatically injects dependencies in your services.
|
||||||
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
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 Chill\MainBundle\Entity\CronJobExecution;
|
||||||
use DateInterval;
|
use DateInterval;
|
||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
|
use Symfony\Component\Clock\ClockInterface;
|
||||||
|
|
||||||
class MyCronJob implements CronJobInterface
|
class MyCronJob implements CronJobInterface
|
||||||
{
|
{
|
||||||
|
function __construct(private ClockInterface $clock) {}
|
||||||
|
|
||||||
public function canRun(?CronJobExecution $cronJobExecution): bool
|
public function canRun(?CronJobExecution $cronJobExecution): bool
|
||||||
{
|
{
|
||||||
// the parameter $cronJobExecution contains data about the last execution of the cronjob
|
// 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
|
// 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'))
|
return $cronJobExecution->getLastStart() < $now->sub(new DateInterval('P1D'))
|
||||||
&& in_array($now->format('H'), self::ACCEPTED_HOURS, true)
|
&& 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';
|
return 'arbitrary-and-unique-key';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function run(): void
|
public function run(array $lastExecutionData): void
|
||||||
{
|
{
|
||||||
// here, we execute the command
|
// 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 ?
|
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.
|
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
|
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
|
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.
|
information on how to run this without docker compose.
|
||||||
|
|
||||||
|
Instructions
|
||||||
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
|
|
||||||
=============
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
prod.rst
|
installation-development.rst
|
||||||
load-addresses.rst
|
installation-production.rst
|
||||||
prod-calendar-sms-sending.rst
|
|
||||||
msgraph-configure.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/core": "^7.20.5",
|
||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@ckeditor/ckeditor5-build-classic": "^41.4.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-utils": "^40.2.0",
|
||||||
"@ckeditor/ckeditor5-dev-webpack-plugin": "^31.1.13",
|
"@ckeditor/ckeditor5-dev-webpack-plugin": "^31.1.13",
|
||||||
"@ckeditor/ckeditor5-dev-translations": "^40.2.0",
|
|
||||||
"@ckeditor/ckeditor5-markdown-gfm": "^41.4.2",
|
"@ckeditor/ckeditor5-markdown-gfm": "^41.4.2",
|
||||||
"@ckeditor/ckeditor5-theme-lark": "^41.4.2",
|
"@ckeditor/ckeditor5-theme-lark": "^41.4.2",
|
||||||
"@ckeditor/ckeditor5-vue": "^5.1.0",
|
"@ckeditor/ckeditor5-vue": "^5.1.0",
|
||||||
@ -22,8 +22,8 @@
|
|||||||
"dompurify": "^3.1.0",
|
"dompurify": "^3.1.0",
|
||||||
"fork-awesome": "^1.1.7",
|
"fork-awesome": "^1.1.7",
|
||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
"node-sass": "^8.0.0",
|
|
||||||
"marked": "^12.0.1",
|
"marked": "^12.0.1",
|
||||||
|
"node-sass": "^8.0.0",
|
||||||
"popper.js": "^1.16.1",
|
"popper.js": "^1.16.1",
|
||||||
"postcss-loader": "^7.0.2",
|
"postcss-loader": "^7.0.2",
|
||||||
"raw-loader": "^4.0.2",
|
"raw-loader": "^4.0.2",
|
||||||
@ -45,17 +45,18 @@
|
|||||||
"@fullcalendar/timegrid": "^6.1.4",
|
"@fullcalendar/timegrid": "^6.1.4",
|
||||||
"@fullcalendar/vue3": "^6.1.4",
|
"@fullcalendar/vue3": "^6.1.4",
|
||||||
"@popperjs/core": "^2.9.2",
|
"@popperjs/core": "^2.9.2",
|
||||||
"@types/leaflet": "^1.9.3",
|
|
||||||
"@types/dompurify": "^3.0.5",
|
"@types/dompurify": "^3.0.5",
|
||||||
|
"@types/leaflet": "^1.9.3",
|
||||||
|
"bootstrap-icons": "^1.11.3",
|
||||||
"dropzone": "^5.7.6",
|
"dropzone": "^5.7.6",
|
||||||
"es6-promise": "^4.2.8",
|
"es6-promise": "^4.2.8",
|
||||||
"leaflet": "^1.7.1",
|
"leaflet": "^1.7.1",
|
||||||
"marked": "^12.0.2",
|
"marked": "^12.0.2",
|
||||||
"masonry-layout": "^4.2.2",
|
"masonry-layout": "^4.2.2",
|
||||||
"mime": "^4.0.0",
|
"mime": "^4.0.0",
|
||||||
"swagger-ui": "^4.15.5",
|
"pdfjs-dist": "^4.3.136",
|
||||||
"vis-network": "^9.1.0",
|
"vis-network": "^9.1.0",
|
||||||
"vue": "^3.2.37",
|
"vue": "^3.5.6",
|
||||||
"vue-i18n": "^9.1.6",
|
"vue-i18n": "^9.1.6",
|
||||||
"vue-multiselect": "3.0.0-alpha.2",
|
"vue-multiselect": "3.0.0-alpha.2",
|
||||||
"vue-toast-notification": "^3.1.2",
|
"vue-toast-notification": "^3.1.2",
|
||||||
|
@ -1,12 +1,21 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
|
<!-- 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>
|
<php>
|
||||||
|
<ini name="display_errors" value="1" />
|
||||||
<ini name="error_reporting" value="-1"/>
|
<ini name="error_reporting" value="-1"/>
|
||||||
<server name="APP_ENV" value="test" force="true"/>
|
<server name="APP_ENV" value="test" force="true"/>
|
||||||
<env name="SYMFONY_DEPRECATIONS_HELPER" value="max[direct]=93&max[indirect]=999999"/>
|
<env name="SYMFONY_DEPRECATIONS_HELPER" value="max[direct]=93&max[indirect]=999999"/>
|
||||||
<server name="SHELL_VERBOSITY" value="-1"/>
|
<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>
|
</php>
|
||||||
<testsuites>
|
<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...
|
// skip some path...
|
||||||
$rectorConfig->skip([
|
$rectorConfig->skip([
|
||||||
// we must adapt service definition
|
// waiting for fixing this bug: https://github.com/rectorphp/rector-doctrine/issues/342
|
||||||
\Rector\Symfony\Symfony28\Rector\MethodCall\GetToConstructorInjectionRector::class,
|
\Rector\Doctrine\CodeQuality\Rector\Property\ImproveDoctrineCollectionDocTypeInEntityRector::class,
|
||||||
\Rector\Symfony\Symfony34\Rector\Closure\ContainerGetNameToTypeInTestsRector::class,
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$rectorConfig->ruleWithConfiguration(AnnotationToAttributeRector::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 FilterOrderHelperFactoryInterface $filterOrderHelperFactory,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
private readonly PaginatorFactory $paginatorFactory,
|
private readonly PaginatorFactory $paginatorFactory,
|
||||||
private readonly ChillSecurity $security
|
private readonly ChillSecurity $security,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +80,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private \DateTime $date;
|
private \DateTime $date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<StoredObject>
|
* @var Collection<int, StoredObject>
|
||||||
*/
|
*/
|
||||||
#[Assert\Valid(traverse: true)]
|
#[Assert\Valid(traverse: true)]
|
||||||
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
|
#[ORM\ManyToMany(targetEntity: StoredObject::class, cascade: ['persist'])]
|
||||||
@ -107,7 +107,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private ?Person $person = null;
|
private ?Person $person = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<Person>
|
* @var Collection<int, \Chill\PersonBundle\Entity\Person>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: Person::class)]
|
#[ORM\ManyToMany(targetEntity: Person::class)]
|
||||||
@ -117,7 +117,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private PrivateCommentEmbeddable $privateComment;
|
private PrivateCommentEmbeddable $privateComment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<ActivityReason>
|
* @var Collection<int, ActivityReason>
|
||||||
*/
|
*/
|
||||||
#[Groups(['docgen:read'])]
|
#[Groups(['docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: ActivityReason::class)]
|
#[ORM\ManyToMany(targetEntity: ActivityReason::class)]
|
||||||
@ -132,7 +132,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private string $sentReceived = '';
|
private string $sentReceived = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<SocialAction>
|
* @var Collection<int, \Chill\PersonBundle\Entity\SocialWork\SocialAction>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: SocialAction::class)]
|
#[ORM\ManyToMany(targetEntity: SocialAction::class)]
|
||||||
@ -140,7 +140,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private Collection $socialActions;
|
private Collection $socialActions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<SocialIssue>
|
* @var Collection<int, SocialIssue>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: SocialIssue::class)]
|
#[ORM\ManyToMany(targetEntity: SocialIssue::class)]
|
||||||
@ -148,7 +148,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private Collection $socialIssues;
|
private Collection $socialIssues;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<ThirdParty>
|
* @var Collection<int, ThirdParty>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
#[ORM\ManyToMany(targetEntity: ThirdParty::class)]
|
||||||
@ -162,7 +162,7 @@ class Activity implements AccompanyingPeriodLinkedWithSocialIssuesEntityInterfac
|
|||||||
private ?User $user = null;
|
private ?User $user = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<User>
|
* @var Collection<int, User>
|
||||||
*/
|
*/
|
||||||
#[Groups(['read', 'docgen:read'])]
|
#[Groups(['read', 'docgen:read'])]
|
||||||
#[ORM\ManyToMany(targetEntity: User::class)]
|
#[ORM\ManyToMany(targetEntity: User::class)]
|
||||||
|
@ -40,9 +40,9 @@ class ActivityReasonCategory implements \Stringable
|
|||||||
/**
|
/**
|
||||||
* Array of ActivityReason.
|
* 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;
|
private Collection $reasons;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,7 +28,7 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
|
protected ActivityReasonCategoryRepository $activityReasonCategoryRepository,
|
||||||
protected ActivityReasonRepository $activityReasonRepository,
|
protected ActivityReasonRepository $activityReasonRepository,
|
||||||
protected TranslatableStringHelper $translatableStringHelper
|
protected TranslatableStringHelper $translatableStringHelper,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@ -26,7 +26,7 @@ class ActivityUsersJobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@ -26,7 +26,7 @@ class ActivityUsersScopeAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly ScopeRepositoryInterface $scopeRepository,
|
private readonly ScopeRepositoryInterface $scopeRepository,
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
public function addRole(): ?string
|
||||||
|
@ -26,7 +26,7 @@ class CreatorJobAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UserJobRepositoryInterface $userJobRepository,
|
private readonly UserJobRepositoryInterface $userJobRepository,
|
||||||
private readonly TranslatableStringHelper $translatableStringHelper
|
private readonly TranslatableStringHelper $translatableStringHelper,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function addRole(): ?string
|
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