Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server
1 result
Show changes
Commits on Source (18)
Showing
with 13384 additions and 28606 deletions
image: docker:git
services:
- docker:dind
stages:
- test
- sonar-analysis
......@@ -10,7 +5,7 @@ stages:
- deploy
build:
image: docker:18.09
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
services:
- docker:18.09-dind
only:
......@@ -41,7 +36,7 @@ deploy_dev:
test:
stage: test
image: node:14.15.4
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/node:14.15.4
before_script:
- export GHOST_HOST_AND_PORT=http://localhost:2368
- export GHOST_ADMIN_API_KEY=60142bc9e33940000156bccc:6217742e2671e322612e89cac9bab61fcd01822709fe5d8f5e6a5b3e54d5e6bb
......@@ -60,29 +55,32 @@ test:
- dev
- merge_requests
code_analysis:
image: registry.forge.grandlyon.com/apoyen2/sonnar-scanner-gl:master
services:
- docker:18.09-dind
stage: sonar-analysis
only:
- dev
before_script:
- export NODE_PATH=$NODE_PATH:`npm root -g`
- npm install -g typescript
script:
- >
sonar-scanner
-Dsonar.projectName=${SONAR_PROJECT_KEY}
-Dsonar.projectVersion=1.0
-Dsonar.sourceEncoding=UTF-8
-Dsonar.projectBaseDir=.
-Dsonar.host.url=${SONAR_URL}
-Dsonar.projectKey=${SONAR_PROJECT_KEY}
-Dsonar.login=${SONAR_TOKEN}
# code_analysis:
# image: registry.forge.grandlyon.com/apoyen2/sonnar-scanner-gl:master
# services:
# - docker:18.09-dind
# stage: sonar-analysis
# only:
# - dev
# - merge_requests
# before_script:
# - export NODE_PATH=$NODE_PATH:`npm root -g`
# - npm install -g typescript
# script:
# - >
# sonar-scanner
# -Dsonar.projectName=${SONAR_PROJECT_KEY}
# -Dsonar.projectVersion=1.0
# -Dsonar.sourceEncoding=UTF-8
# -Dsonar.projectBaseDir=.
# -Dsonar.host.url=${SONAR_URL}
# -Dsonar.projectKey=${SONAR_PROJECT_KEY}
# -Dsonar.exclusions=scripts/**,**/*mock.*.ts,**/*spec.ts
# -Dsonar.login=${SONAR_TOKEN}
# -Dsonar.qualitygate.wait=true
mr:
image: docker:18.09
image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:18.09
services:
- docker:18.09-dind
stage: build
......
......@@ -2,272 +2,280 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [1.9.1](https://forge.grandlyon.com///compare/v1.9.0...v1.9.1) (2021-09-29)
## [1.9.0](https://forge.grandlyon.com///compare/v1.8.0...v1.9.0) (2021-05-31)
## [1.10.0](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/compare/v1.9.1...v1.10.0) (2021-12-22)
### Features
* add remote accompaniment ([48b3f3c](https://forge.grandlyon.com///commit/48b3f3c7a5a6c82861298fce11c042175dd1bfed))
* **doc:** add compodoc ([274e3f5](https://forge.grandlyon.com///commit/274e3f54a4aa84e6a0db2b6c38f5ea3a900784f3))
* add endpoint for unclaimed structure ([8dd5f50](https://forge.grandlyon.com///commit/8dd5f5020cce91c1d8933b906aa4b13921240f8e))
* add migration for pix label ([ab52515](https://forge.grandlyon.com///commit/ab52515ce0c86a14541486c8fbb1aa580828b9c0))
* add structure description to ES fields ([a8d675e](https://forge.grandlyon.com///commit/a8d675e47f384beb98f893236fecaa67ba08ea10))
* add women to public list ([3bb52d0](https://forge.grandlyon.com///commit/3bb52d0a2718c7a42d9084c225b4e82e0e27a9f4))
* **admin:** return incomplete structure ([9bff0dd](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/9bff0dd893b311272f6e00b0991054a54ada4352))
* make job fail in case of quality qate issue ([c09687f](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/c09687ffb4907a6e92c5107f13f78541bc7799fb))
* **structure:** add service venteMaterielPrixSolidaire ([1d24d33](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/1d24d339160dd3132db0ff50ad67469628d4a471))
* update init script for local install ([c7e7658](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/c7e76585d339747a173baa3f651e45ffe38ad2c2))
### Bug Fixes
* **TU:** missing key in test ([8601c97](https://forge.grandlyon.com///commit/8601c978773b34e749a819c86642194b74e1dff9))
* add claim structure email sending. It has been removed in a previous commit ([a282f91](https://forge.grandlyon.com///commit/a282f9171f2a3299d650ba01cf96c49e28b9d536))
* compilation error, missing import ([d6a08cb](https://forge.grandlyon.com///commit/d6a08cb6cdce8a7cd33d997033a2eb7a5d8860d1))
* minor fix and unused import ([2dff8b3](https://forge.grandlyon.com///commit/2dff8b3ae9c3fe28ff02762042d888a2f082c2ee))
* opendata endpoint data and email format ([759fcb5](https://forge.grandlyon.com///commit/759fcb53a0f78c03c594c524572d55f547d6f7ec))
* **TU:** increase TU coverage ([dd28504](https://forge.grandlyon.com///commit/dd2850437105827a5bb467d6ef53220858603b58))
* add creation of ES document on apitc structure ([1732577](https://forge.grandlyon.com///commit/17325772183bab4376f7db9d40e0105305d0742f))
* change naming for clarification ([4191eb3](https://forge.grandlyon.com///commit/4191eb3c28e9dd74c30e730dba590208d1850332))
* new endpoint for admin pannel, sorting and better algo ([440ffef](https://forge.grandlyon.com///commit/440ffef5def19a1325cd97615f45e33fe2b38f81))
* remove useless varuiable ([24aef88](https://forge.grandlyon.com///commit/24aef880741ea86fc7cdd8fa92052dc721d6a586))
* update missing conf in docker-compose ([70b630d](https://forge.grandlyon.com///commit/70b630dde80595fd952e8bf1520dd941648a13c6))
* update search of ES and max score to optimize ([115ab1d](https://forge.grandlyon.com///commit/115ab1d17cee59b44303ed725b1424292237c771))
* use id instead of name on formated structure. ([2f71261](https://forge.grandlyon.com///commit/2f7126104acd54c296db1f7b1671e21953e700a3))
* add migration france-service ([d0bfb36](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/d0bfb361fa017b12a5f2b61c2f59f3a0a3e257d3))
* change france-services migration ([99f5963](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/99f596392833824d0c4c26ca0185df076fc3d9a8))
* **chore:** update packages ([79f55d0](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/79f55d014425b6f2c9865f25156be25496514ca0))
* **cicd:** update gitlabci to use dependencies proxy ([ed2de02](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/ed2de02c40f0b084d37d2550022f72c8d1bf97c9))
* db init script, bad collection name for structureType ([cca9031](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/cca9031a57b3f9055f560d6fc915041b4f28059b))
* docker compose volumes persistence ([9ea0c4a](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server/commit/9ea0c4ae419240e7d27e473143ef6f9c6eada8ed))
## [1.8.0](https://forge.grandlyon.com///compare/v1.7.0...v1.8.0) (2021-05-06)
### [1.9.1](https://forge.grandlyon.com///compare/v1.9.0...v1.9.1) (2021-09-29)
### Features
- **migrations**: added label Conseiller numerique france service ([b310d9d](https://forge.grandlyon.com///commit/b310d9d2b84f54cdc72679e10ea7f85efe01f036))
### Bug Fixes
- changed password regex to match frontend regex ([d7ca511](https://forge.grandlyon.com///commit/d7ca5116a72e06755e121d9310c8fa751b668c62))
## [1.9.0](https://forge.grandlyon.com///compare/v1.8.0...v1.9.0) (2021-05-31)
### Features
* add auto-migrate for production ([f0568dc](https://forge.grandlyon.com///commit/f0568dcb3959db84a96c78915a7cd135d163b1b4))
* add migration for date format ([cae255e](https://forge.grandlyon.com///commit/cae255efe9c174457ae66c94a41e941bf7b2165c))
* **structures:** add elastic search stack for better search handling ([bbf608b](https://forge.grandlyon.com///commit/bbf608b6e90afaea9ae84ee9121e11ade7dd32c0))
* add enpoint for couting newsletter ([27cd278](https://forge.grandlyon.com///commit/27cd278781187a3734d06f16331fa9119da7adf4))
* add new endpoint for structures, data is formated (jointure on modules) ([509f30f](https://forge.grandlyon.com///commit/509f30f9a2c36b18ed093d25fa37c3b9b3849165))
* add notification mail to admin for structure ([d241ed8](https://forge.grandlyon.com///commit/d241ed8c4597a0151d5a916ae9c0f6aefe0e3092))
- add remote accompaniment ([48b3f3c](https://forge.grandlyon.com///commit/48b3f3c7a5a6c82861298fce11c042175dd1bfed))
- **doc:** add compodoc ([274e3f5](https://forge.grandlyon.com///commit/274e3f54a4aa84e6a0db2b6c38f5ea3a900784f3))
- add endpoint for unclaimed structure ([8dd5f50](https://forge.grandlyon.com///commit/8dd5f5020cce91c1d8933b906aa4b13921240f8e))
- add migration for pix label ([ab52515](https://forge.grandlyon.com///commit/ab52515ce0c86a14541486c8fbb1aa580828b9c0))
- add structure description to ES fields ([a8d675e](https://forge.grandlyon.com///commit/a8d675e47f384beb98f893236fecaa67ba08ea10))
- add women to public list ([3bb52d0](https://forge.grandlyon.com///commit/3bb52d0a2718c7a42d9084c225b4e82e0e27a9f4))
### Bug Fixes
- **TU:** missing key in test ([8601c97](https://forge.grandlyon.com///commit/8601c978773b34e749a819c86642194b74e1dff9))
- add claim structure email sending. It has been removed in a previous commit ([a282f91](https://forge.grandlyon.com///commit/a282f9171f2a3299d650ba01cf96c49e28b9d536))
- compilation error, missing import ([d6a08cb](https://forge.grandlyon.com///commit/d6a08cb6cdce8a7cd33d997033a2eb7a5d8860d1))
- minor fix and unused import ([2dff8b3](https://forge.grandlyon.com///commit/2dff8b3ae9c3fe28ff02762042d888a2f082c2ee))
- opendata endpoint data and email format ([759fcb5](https://forge.grandlyon.com///commit/759fcb53a0f78c03c594c524572d55f547d6f7ec))
- **TU:** increase TU coverage ([dd28504](https://forge.grandlyon.com///commit/dd2850437105827a5bb467d6ef53220858603b58))
- add creation of ES document on apitc structure ([1732577](https://forge.grandlyon.com///commit/17325772183bab4376f7db9d40e0105305d0742f))
- change naming for clarification ([4191eb3](https://forge.grandlyon.com///commit/4191eb3c28e9dd74c30e730dba590208d1850332))
- new endpoint for admin pannel, sorting and better algo ([440ffef](https://forge.grandlyon.com///commit/440ffef5def19a1325cd97615f45e33fe2b38f81))
- remove useless varuiable ([24aef88](https://forge.grandlyon.com///commit/24aef880741ea86fc7cdd8fa92052dc721d6a586))
- update missing conf in docker-compose ([70b630d](https://forge.grandlyon.com///commit/70b630dde80595fd952e8bf1520dd941648a13c6))
- update search of ES and max score to optimize ([115ab1d](https://forge.grandlyon.com///commit/115ab1d17cee59b44303ed725b1424292237c771))
- use id instead of name on formated structure. ([2f71261](https://forge.grandlyon.com///commit/2f7126104acd54c296db1f7b1671e21953e700a3))
## [1.8.0](https://forge.grandlyon.com///compare/v1.7.0...v1.8.0) (2021-05-06)
### Features
- add auto-migrate for production ([f0568dc](https://forge.grandlyon.com///commit/f0568dcb3959db84a96c78915a7cd135d163b1b4))
- add migration for date format ([cae255e](https://forge.grandlyon.com///commit/cae255efe9c174457ae66c94a41e941bf7b2165c))
- **structures:** add elastic search stack for better search handling ([bbf608b](https://forge.grandlyon.com///commit/bbf608b6e90afaea9ae84ee9121e11ade7dd32c0))
- add enpoint for couting newsletter ([27cd278](https://forge.grandlyon.com///commit/27cd278781187a3734d06f16331fa9119da7adf4))
- add new endpoint for structures, data is formated (jointure on modules) ([509f30f](https://forge.grandlyon.com///commit/509f30f9a2c36b18ed093d25fa37c3b9b3849165))
- add notification mail to admin for structure ([d241ed8](https://forge.grandlyon.com///commit/d241ed8c4597a0151d5a916ae9c0f6aefe0e3092))
### Bug Fixes
* better naming ([2f837e7](https://forge.grandlyon.com///commit/2f837e78add9bacece2c8a03aa90c828ab7a832f))
* change freeWorkshop back to notempty ([ad09120](https://forge.grandlyon.com///commit/ad0912014ce7e1da5c94565f4dd05ca14884adb6))
* changes after review ([b627628](https://forge.grandlyon.com///commit/b62762851345e08d09cde924bc961ecca3123f16))
* changes on email template (wording...) ([0d18670](https://forge.grandlyon.com///commit/0d18670ca6d889628150d3d04ef1257ef06c3a51))
* docker-compose missing var + add admin verification on ES index reset ([0af581d](https://forge.grandlyon.com///commit/0af581d8a9d06d0de5b00a65915694cec6d270d2))
* fix number of results for ES and filters count ([416654e](https://forge.grandlyon.com///commit/416654e6165072314f91d7db3924dd730dbe471b))
* hide some fiel on endpoint and create migration for opening hours ([ec6d2ac](https://forge.grandlyon.com///commit/ec6d2acfd96a69ffd38e08310ec6f1863332a306))
* remove mandatory field on structure + update local email sending conf ([7603e47](https://forge.grandlyon.com///commit/7603e47f335aee3ade21ec5d49e7927d7b6eaaa8))
* remove useless import ([2253581](https://forge.grandlyon.com///commit/2253581b1ebc5a0dd2c0826ed97d9e549bba9402))
* remove useless improt ([421806d](https://forge.grandlyon.com///commit/421806d13befac5092d87d4864358692938ccfd3))
* **migration:** fix remove field bug in script ([d6a0f77](https://forge.grandlyon.com///commit/d6a0f775e2cbe6ca9e98d30dc6d136206b587667))
- better naming ([2f837e7](https://forge.grandlyon.com///commit/2f837e78add9bacece2c8a03aa90c828ab7a832f))
- change freeWorkshop back to notempty ([ad09120](https://forge.grandlyon.com///commit/ad0912014ce7e1da5c94565f4dd05ca14884adb6))
- changes after review ([b627628](https://forge.grandlyon.com///commit/b62762851345e08d09cde924bc961ecca3123f16))
- changes on email template (wording...) ([0d18670](https://forge.grandlyon.com///commit/0d18670ca6d889628150d3d04ef1257ef06c3a51))
- docker-compose missing var + add admin verification on ES index reset ([0af581d](https://forge.grandlyon.com///commit/0af581d8a9d06d0de5b00a65915694cec6d270d2))
- fix number of results for ES and filters count ([416654e](https://forge.grandlyon.com///commit/416654e6165072314f91d7db3924dd730dbe471b))
- hide some fiel on endpoint and create migration for opening hours ([ec6d2ac](https://forge.grandlyon.com///commit/ec6d2acfd96a69ffd38e08310ec6f1863332a306))
- remove mandatory field on structure + update local email sending conf ([7603e47](https://forge.grandlyon.com///commit/7603e47f335aee3ade21ec5d49e7927d7b6eaaa8))
- remove useless import ([2253581](https://forge.grandlyon.com///commit/2253581b1ebc5a0dd2c0826ed97d9e549bba9402))
- remove useless improt ([421806d](https://forge.grandlyon.com///commit/421806d13befac5092d87d4864358692938ccfd3))
- **migration:** fix remove field bug in script ([d6a0f77](https://forge.grandlyon.com///commit/d6a0f775e2cbe6ca9e98d30dc6d136206b587667))
## [1.7.0](https://forge.grandlyon.com///compare/v1.6.1...v1.7.0) (2021-04-12)
### Features
* add aptic service offer query ([7602b41](https://forge.grandlyon.com///commit/7602b412f08047cd8dea2cb99af2e47b83d08c08))
* add endpoint for sending error report for structure ([bc64158](https://forge.grandlyon.com///commit/bc64158c06f6c1ecad7753dbac62a19a81f84a42))
* add newsletter data insert script ([a1a743d](https://forge.grandlyon.com///commit/a1a743d5c3391c2c54ec095a6cf12e4f2aeaae58))
* add newsletter subscription ([c507f53](https://forge.grandlyon.com///commit/c507f53646c9f10d40ebe1d6ea518b7aeea27876))
* edit request for structure service (not working) ([a156819](https://forge.grandlyon.com///commit/a1568197036f8a87d902b2563fc35430a79d13c3))
* TU for admin mailer and posts ([1b1724e](https://forge.grandlyon.com///commit/1b1724efcca24c2e5706e122f13f6740bb9b4ee9))
* zoom on town ([7eec8f1](https://forge.grandlyon.com///commit/7eec8f160286746c713b451d7d8576bc50314c9b))
- add aptic service offer query ([7602b41](https://forge.grandlyon.com///commit/7602b412f08047cd8dea2cb99af2e47b83d08c08))
- add endpoint for sending error report for structure ([bc64158](https://forge.grandlyon.com///commit/bc64158c06f6c1ecad7753dbac62a19a81f84a42))
- add newsletter data insert script ([a1a743d](https://forge.grandlyon.com///commit/a1a743d5c3391c2c54ec095a6cf12e4f2aeaae58))
- add newsletter subscription ([c507f53](https://forge.grandlyon.com///commit/c507f53646c9f10d40ebe1d6ea518b7aeea27876))
- edit request for structure service (not working) ([a156819](https://forge.grandlyon.com///commit/a1568197036f8a87d902b2563fc35430a79d13c3))
- TU for admin mailer and posts ([1b1724e](https://forge.grandlyon.com///commit/1b1724efcca24c2e5706e122f13f6740bb9b4ee9))
- zoom on town ([7eec8f1](https://forge.grandlyon.com///commit/7eec8f160286746c713b451d7d8576bc50314c9b))
### Bug Fixes
* migration script path ([0b549b8](https://forge.grandlyon.com///commit/0b549b86d961d25f95d3977cab2c2f86f5b0e6b1))
* typo in .gitignore ([ede567e](https://forge.grandlyon.com///commit/ede567e7fdd4542f5c5ccced51b3a627434bfd98))
* **structures:** prevent access to deleted structures ([ea0bf7b](https://forge.grandlyon.com///commit/ea0bf7bf698486cda875113852d6cc5c957f1f55))
* update search filter query ([44bb26e](https://forge.grandlyon.com///commit/44bb26ea836d95c3c5bc5437553eb633cf0092f1))
* **mail:** add link to structure in admin new structure mail ([b067483](https://forge.grandlyon.com///commit/b067483a91fb97ec7506f17a4999cd4fd65614be))
- migration script path ([0b549b8](https://forge.grandlyon.com///commit/0b549b86d961d25f95d3977cab2c2f86f5b0e6b1))
- typo in .gitignore ([ede567e](https://forge.grandlyon.com///commit/ede567e7fdd4542f5c5ccced51b3a627434bfd98))
- **structures:** prevent access to deleted structures ([ea0bf7b](https://forge.grandlyon.com///commit/ea0bf7bf698486cda875113852d6cc5c957f1f55))
- update search filter query ([44bb26e](https://forge.grandlyon.com///commit/44bb26ea836d95c3c5bc5437553eb633cf0092f1))
- **mail:** add link to structure in admin new structure mail ([b067483](https://forge.grandlyon.com///commit/b067483a91fb97ec7506f17a4999cd4fd65614be))
### [1.6.1](https://forge.grandlyon.com///compare/v1.6.0...v1.6.1) (2021-04-01)
### Features
* add jest auto testing in gitlab-ci ([e8b1b04](https://forge.grandlyon.com///commit/e8b1b04294c01a6d79c945e6d026906a249a18a9))
* add route for deleting user as admin ([da6052e](https://forge.grandlyon.com///commit/da6052e43ddd7557b061df38d7e6629613fbe00c))
* update gitlab-ci for test ([6b8f204](https://forge.grandlyon.com///commit/6b8f204754215ba88b167e79d87f1e59fa5f4f9c))
* updating user servuce ([e176e69](https://forge.grandlyon.com///commit/e176e69e1da5331b97c20bd0c242121821eb912d))
- add jest auto testing in gitlab-ci ([e8b1b04](https://forge.grandlyon.com///commit/e8b1b04294c01a6d79c945e6d026906a249a18a9))
- add route for deleting user as admin ([da6052e](https://forge.grandlyon.com///commit/da6052e43ddd7557b061df38d7e6629613fbe00c))
- update gitlab-ci for test ([6b8f204](https://forge.grandlyon.com///commit/6b8f204754215ba88b167e79d87f1e59fa5f4f9c))
- updating user servuce ([e176e69](https://forge.grandlyon.com///commit/e176e69e1da5331b97c20bd0c242121821eb912d))
### Bug Fixes
* add admin mail sending fo new structures ([51cf3ab](https://forge.grandlyon.com///commit/51cf3ab12fc54c0b7de2555a294e2e495c3f7b87))
* add https to regex replace ([21f5955](https://forge.grandlyon.com///commit/21f5955cb9d293f12d3436854e818636f65f5738))
* add img regex for html news ([8e6ed52](https://forge.grandlyon.com///commit/8e6ed525b7986d2280233a5524f65402b9f0ca50))
* gitlab-ci ([48eb446](https://forge.grandlyon.com///commit/48eb44603e280de3e5277f7468dfc16be99234da))
* gitlab-ci ([c822468](https://forge.grandlyon.com///commit/c822468cb96df73e8d5dcdafb2d7d7c5ba6507df))
* gitlab-ci ([ffd2edd](https://forge.grandlyon.com///commit/ffd2edd03b88a7e6b6bfa286c910abe5fea07834))
* gitlab-ci ([b67369c](https://forge.grandlyon.com///commit/b67369c8b8932f3361eec6e37cd1ab393c243174))
* host url for news image ([2698302](https://forge.grandlyon.com///commit/2698302c6b558f434039c0ace1806a70b98f9721))
* images path in getById ([bc80a95](https://forge.grandlyon.com///commit/bc80a95ff772e4df638514544565061016ed5060))
* sonar issues ([232dbd7](https://forge.grandlyon.com///commit/232dbd78d4bf6c8aa7dbdabdd37852f844b8df78))
* syntax ([39b7cd2](https://forge.grandlyon.com///commit/39b7cd25593f48771afa8954f24eae48ef4a2be7))
* typo in url ([be3c536](https://forge.grandlyon.com///commit/be3c5361e01208225ec2e5c0d8ba3937e6f65cb8))
* unitary test + update test coverage config ([6b6d4bd](https://forge.grandlyon.com///commit/6b6d4bd12e21b6769474a0477e6675d55b8974a5))
* update auth unitary test ([336849a](https://forge.grandlyon.com///commit/336849a37b40b76672993d2018e4072b6f59ed31))
- add admin mail sending fo new structures ([51cf3ab](https://forge.grandlyon.com///commit/51cf3ab12fc54c0b7de2555a294e2e495c3f7b87))
- add https to regex replace ([21f5955](https://forge.grandlyon.com///commit/21f5955cb9d293f12d3436854e818636f65f5738))
- add img regex for html news ([8e6ed52](https://forge.grandlyon.com///commit/8e6ed525b7986d2280233a5524f65402b9f0ca50))
- gitlab-ci ([48eb446](https://forge.grandlyon.com///commit/48eb44603e280de3e5277f7468dfc16be99234da))
- gitlab-ci ([c822468](https://forge.grandlyon.com///commit/c822468cb96df73e8d5dcdafb2d7d7c5ba6507df))
- gitlab-ci ([ffd2edd](https://forge.grandlyon.com///commit/ffd2edd03b88a7e6b6bfa286c910abe5fea07834))
- gitlab-ci ([b67369c](https://forge.grandlyon.com///commit/b67369c8b8932f3361eec6e37cd1ab393c243174))
- host url for news image ([2698302](https://forge.grandlyon.com///commit/2698302c6b558f434039c0ace1806a70b98f9721))
- images path in getById ([bc80a95](https://forge.grandlyon.com///commit/bc80a95ff772e4df638514544565061016ed5060))
- sonar issues ([232dbd7](https://forge.grandlyon.com///commit/232dbd78d4bf6c8aa7dbdabdd37852f844b8df78))
- syntax ([39b7cd2](https://forge.grandlyon.com///commit/39b7cd25593f48771afa8954f24eae48ef4a2be7))
- typo in url ([be3c536](https://forge.grandlyon.com///commit/be3c5361e01208225ec2e5c0d8ba3937e6f65cb8))
- unitary test + update test coverage config ([6b6d4bd](https://forge.grandlyon.com///commit/6b6d4bd12e21b6769474a0477e6675d55b8974a5))
- update auth unitary test ([336849a](https://forge.grandlyon.com///commit/336849a37b40b76672993d2018e4072b6f59ed31))
## [1.6.0](https://forge.grandlyon.com///compare/v1.5.0...v1.6.0) (2021-03-15)
### Features
* add Ghost admin client ([60ed843](https://forge.grandlyon.com///commit/60ed843bedc98a8e52dbbca0c9b37a4810dc51ae))
* add news tag handling ([588f9bd](https://forge.grandlyon.com///commit/588f9bdf614d9af60b8c2357b61f4d1fe5ae3d9b))
* add site mail signature ([6e1ba0a](https://forge.grandlyon.com///commit/6e1ba0ab9c09e9fbd53fff91edeb1e3e0874bec0))
* add tag and posts db init ([ed1fa26](https://forge.grandlyon.com///commit/ed1fa267871df403a8f0a89642df1844b14dcab6))
- add Ghost admin client ([60ed843](https://forge.grandlyon.com///commit/60ed843bedc98a8e52dbbca0c9b37a4810dc51ae))
- add news tag handling ([588f9bd](https://forge.grandlyon.com///commit/588f9bdf614d9af60b8c2357b61f4d1fe5ae3d9b))
- add site mail signature ([6e1ba0a](https://forge.grandlyon.com///commit/6e1ba0ab9c09e9fbd53fff91edeb1e3e0874bec0))
- add tag and posts db init ([ed1fa26](https://forge.grandlyon.com///commit/ed1fa267871df403a8f0a89642df1844b14dcab6))
### Bug Fixes
* bug on admin validation ([8fd705f](https://forge.grandlyon.com///commit/8fd705f5b4e769905c96496f064cf63b105aa8de))
* dockerfile typo ([2d7f67b](https://forge.grandlyon.com///commit/2d7f67b52676554a20a15e613700b575d67f3b46))
* update coord endpoint on photon-bal ([2d13c57](https://forge.grandlyon.com///commit/2d13c570cf2a1cb47470280a2a77e4e65711aa9f))
* update dockerfile to add init scripts ([6925278](https://forge.grandlyon.com///commit/69252787747e87d6f1a78aaacfb22968951051b1))
* update error handling on post controller + update ghost insert script ([ab97a2d](https://forge.grandlyon.com///commit/ab97a2dac4d82a6314e1f480498296eab644e731))
* update script data + clean code ([c360668](https://forge.grandlyon.com///commit/c36066859b6f84880f0611c0aba4e8f721c2e23d))
* **ghost:** ghost data ([00b6a18](https://forge.grandlyon.com///commit/00b6a18db4fe6d3f55bdf07775c2edf544292948))
- bug on admin validation ([8fd705f](https://forge.grandlyon.com///commit/8fd705f5b4e769905c96496f064cf63b105aa8de))
- dockerfile typo ([2d7f67b](https://forge.grandlyon.com///commit/2d7f67b52676554a20a15e613700b575d67f3b46))
- update coord endpoint on photon-bal ([2d13c57](https://forge.grandlyon.com///commit/2d13c570cf2a1cb47470280a2a77e4e65711aa9f))
- update dockerfile to add init scripts ([6925278](https://forge.grandlyon.com///commit/69252787747e87d6f1a78aaacfb22968951051b1))
- update error handling on post controller + update ghost insert script ([ab97a2d](https://forge.grandlyon.com///commit/ab97a2dac4d82a6314e1f480498296eab644e731))
- update script data + clean code ([c360668](https://forge.grandlyon.com///commit/c36066859b6f84880f0611c0aba4e8f721c2e23d))
- **ghost:** ghost data ([00b6a18](https://forge.grandlyon.com///commit/00b6a18db4fe6d3f55bdf07775c2edf544292948))
## [1.5.0](https://forge.grandlyon.com///compare/v1.4.0...v1.5.0) (2021-02-25)
### Features
* add ghost stack ([98e4254](https://forge.grandlyon.com///commit/98e4254ae9cc6c5f91bc7e7ab310b85b52111c33))
* add name and surname in token ([4a125a1](https://forge.grandlyon.com///commit/4a125a1b4f776baaaa6a7142f4ccc4fe46014f93))
* add post endpoint and update swagger declaration to allow auth ([d450d44](https://forge.grandlyon.com///commit/d450d44c79acda0262f74e3093a384822f6be733))
* add startup script for test users ([8d06a19](https://forge.grandlyon.com///commit/8d06a19f4a9c28465a561d720ad5c53db2ee2479))
* add temp-user handling for structure join ([9560829](https://forge.grandlyon.com///commit/95608291b11759847484efe9b94a1f81a02a3798))
* add user structure delete ([e592a89](https://forge.grandlyon.com///commit/e592a8979c96a5c03f5280eee21522b52329142b))
* move structureType to back ([22e0bd2](https://forge.grandlyon.com///commit/22e0bd2eaa6b336a77b4817ccee3d342d1f7d6fd))
* update config service for template handling + add structure join ([679f239](https://forge.grandlyon.com///commit/679f239edae90f714b60fd7a89e4f881fcc6d5dc))
- add ghost stack ([98e4254](https://forge.grandlyon.com///commit/98e4254ae9cc6c5f91bc7e7ab310b85b52111c33))
- add name and surname in token ([4a125a1](https://forge.grandlyon.com///commit/4a125a1b4f776baaaa6a7142f4ccc4fe46014f93))
- add post endpoint and update swagger declaration to allow auth ([d450d44](https://forge.grandlyon.com///commit/d450d44c79acda0262f74e3093a384822f6be733))
- add startup script for test users ([8d06a19](https://forge.grandlyon.com///commit/8d06a19f4a9c28465a561d720ad5c53db2ee2479))
- add temp-user handling for structure join ([9560829](https://forge.grandlyon.com///commit/95608291b11759847484efe9b94a1f81a02a3798))
- add user structure delete ([e592a89](https://forge.grandlyon.com///commit/e592a8979c96a5c03f5280eee21522b52329142b))
- move structureType to back ([22e0bd2](https://forge.grandlyon.com///commit/22e0bd2eaa6b336a77b4817ccee3d342d1f7d6fd))
- update config service for template handling + add structure join ([679f239](https://forge.grandlyon.com///commit/679f239edae90f714b60fd7a89e4f881fcc6d5dc))
### Bug Fixes
* add npm script for db init ([8c819fc](https://forge.grandlyon.com///commit/8c819fc5e250d54e26b9058457534f3f8ddbe1ef))
* add structure remove from userModel ([fd21790](https://forge.grandlyon.com///commit/fd2179074baef4f435092330ee9169cdae85f803))
* aptic structure accountVerified ([928bf58](https://forge.grandlyon.com///commit/928bf58b85e49d493e9f462d0fbe55cac21b7b81))
* aptic structure init + admin structurename for claim validation ([cef5451](https://forge.grandlyon.com///commit/cef545168d9bdd6346767a55fe985459ff81b606))
* delete structure ([451e004](https://forge.grandlyon.com///commit/451e0041f6c431c57938db34c507dbb48563e2bd))
* mail config + new url ([874b062](https://forge.grandlyon.com///commit/874b06236254fd6dc28df8fe060f3c0597d01913))
* MR conflicts ([ac18ce8](https://forge.grandlyon.com///commit/ac18ce82b3456198bb8f0f52638f386d303134ca))
* MR return + issue on delete owner endpoint ([1fb8047](https://forge.grandlyon.com///commit/1fb80471382d883db23909b4ae58beab05d1cfca))
* remove unused imports ([f2db14e](https://forge.grandlyon.com///commit/f2db14eb0bb98682dbb3c37610e88f800480f9d5))
* remove useless swagger auth ([bf89fbd](https://forge.grandlyon.com///commit/bf89fbd62873517fdb990a7a2b9126e296b0ddcd))
* user cration bug + structure find refacto ([25480d5](https://forge.grandlyon.com///commit/25480d585119ca6bef98dc4567cd63c8b273e980))
* user model structureid from string to objectid ([35fa953](https://forge.grandlyon.com///commit/35fa953761b6800426155d27595efaa26df0f47f))
* **form:** fix model ([f0d1df6](https://forge.grandlyon.com///commit/f0d1df6092c099a100256425c1ab4b640b48aaf6))
* **form:** fix structure ([af1b4fa](https://forge.grandlyon.com///commit/af1b4fac5fa2c370e53917dfe3271c3c60a55266))
- add npm script for db init ([8c819fc](https://forge.grandlyon.com///commit/8c819fc5e250d54e26b9058457534f3f8ddbe1ef))
- add structure remove from userModel ([fd21790](https://forge.grandlyon.com///commit/fd2179074baef4f435092330ee9169cdae85f803))
- aptic structure accountVerified ([928bf58](https://forge.grandlyon.com///commit/928bf58b85e49d493e9f462d0fbe55cac21b7b81))
- aptic structure init + admin structurename for claim validation ([cef5451](https://forge.grandlyon.com///commit/cef545168d9bdd6346767a55fe985459ff81b606))
- delete structure ([451e004](https://forge.grandlyon.com///commit/451e0041f6c431c57938db34c507dbb48563e2bd))
- mail config + new url ([874b062](https://forge.grandlyon.com///commit/874b06236254fd6dc28df8fe060f3c0597d01913))
- MR conflicts ([ac18ce8](https://forge.grandlyon.com///commit/ac18ce82b3456198bb8f0f52638f386d303134ca))
- MR return + issue on delete owner endpoint ([1fb8047](https://forge.grandlyon.com///commit/1fb80471382d883db23909b4ae58beab05d1cfca))
- remove unused imports ([f2db14e](https://forge.grandlyon.com///commit/f2db14eb0bb98682dbb3c37610e88f800480f9d5))
- remove useless swagger auth ([bf89fbd](https://forge.grandlyon.com///commit/bf89fbd62873517fdb990a7a2b9126e296b0ddcd))
- user cration bug + structure find refacto ([25480d5](https://forge.grandlyon.com///commit/25480d585119ca6bef98dc4567cd63c8b273e980))
- user model structureid from string to objectid ([35fa953](https://forge.grandlyon.com///commit/35fa953761b6800426155d27595efaa26df0f47f))
- **form:** fix model ([f0d1df6](https://forge.grandlyon.com///commit/f0d1df6092c099a100256425c1ab4b640b48aaf6))
- **form:** fix structure ([af1b4fa](https://forge.grandlyon.com///commit/af1b4fac5fa2c370e53917dfe3271c3c60a55266))
## [1.4.0](https://forge.grandlyon.com///compare/v1.3.0...v1.4.0) (2021-02-01)
### Features
* **structures:** add admin delete ([43eb15b](https://forge.grandlyon.com///commit/43eb15b70acfddfb251e02f98abd0840d7eb4567))
* add address search for structure registration ([c4811fb](https://forge.grandlyon.com///commit/c4811fb22dfab9149d94e4b87dcb79570a895f26))
* add APTIC api structure + cron job ([88bc8fd](https://forge.grandlyon.com///commit/88bc8fdc489059fe11fb1ee83b5b5716d9daf7e0))
* add APTIC api structure + cron job ([6605486](https://forge.grandlyon.com///commit/66054863ffda381a5f15d9419e3577717b2c9798))
* add email sending for outdated structures ([20fd741](https://forge.grandlyon.com///commit/20fd741e6c3c9a06ebce3f056f107d28e9cf50f8))
- **structures:** add admin delete ([43eb15b](https://forge.grandlyon.com///commit/43eb15b70acfddfb251e02f98abd0840d7eb4567))
- add address search for structure registration ([c4811fb](https://forge.grandlyon.com///commit/c4811fb22dfab9149d94e4b87dcb79570a895f26))
- add APTIC api structure + cron job ([88bc8fd](https://forge.grandlyon.com///commit/88bc8fdc489059fe11fb1ee83b5b5716d9daf7e0))
- add APTIC api structure + cron job ([6605486](https://forge.grandlyon.com///commit/66054863ffda381a5f15d9419e3577717b2c9798))
- add email sending for outdated structures ([20fd741](https://forge.grandlyon.com///commit/20fd741e6c3c9a06ebce3f056f107d28e9cf50f8))
### Bug Fixes
* add trim for opendata request to solve 400 request issue ([2d3b357](https://forge.grandlyon.com///commit/2d3b357965e0a5fa18d0e9207174a9143b1cb9cc))
* configuration logs and bug fix for user registration ([eb8b243](https://forge.grandlyon.com///commit/eb8b24330f0380eecb1cad762c18f1cd8f6ce1b6))
* cron duration ([2f86c0b](https://forge.grandlyon.com///commit/2f86c0bcbf6b52f83ca9f7f5de8a740bda5d135f))
* fix duplication bug from aptic structure ([4838342](https://forge.grandlyon.com///commit/48383420588f4b221dbf920f65e30e8da9def88f))
* merge conflit ([6a4290d](https://forge.grandlyon.com///commit/6a4290df9a0c42134f10b61c7de31d542acfc3fe))
* outdated structure range ([0d2666f](https://forge.grandlyon.com///commit/0d2666fd7ae0922cbf188ee3fd16a570e9192195))
* update conf ([e7070d1](https://forge.grandlyon.com///commit/e7070d130edbf875b8851eec89a4cf75ca8b3689))
* update mailing templates, user model wrong type and aptic structure handling when a structure is updated. ([f1b69ba](https://forge.grandlyon.com///commit/f1b69ba24d961c031b4f54eeaf1cc5b0cbd0a1d8))
* **structure:** remove unecessary sort for search ([2982dfe](https://forge.grandlyon.com///commit/2982dfe3ffa3b15f41f2bea497f16c255063e2c7))
* **structure:** structure id creation ([7b14c80](https://forge.grandlyon.com///commit/7b14c808b8e04a34552e58eb243906b6acd9bbfc))
* unecessary id declaration in model structure ([e788e55](https://forge.grandlyon.com///commit/e788e55e0c63155c5994b39cbc2f37871f2b4398))
- add trim for opendata request to solve 400 request issue ([2d3b357](https://forge.grandlyon.com///commit/2d3b357965e0a5fa18d0e9207174a9143b1cb9cc))
- configuration logs and bug fix for user registration ([eb8b243](https://forge.grandlyon.com///commit/eb8b24330f0380eecb1cad762c18f1cd8f6ce1b6))
- cron duration ([2f86c0b](https://forge.grandlyon.com///commit/2f86c0bcbf6b52f83ca9f7f5de8a740bda5d135f))
- fix duplication bug from aptic structure ([4838342](https://forge.grandlyon.com///commit/48383420588f4b221dbf920f65e30e8da9def88f))
- merge conflit ([6a4290d](https://forge.grandlyon.com///commit/6a4290df9a0c42134f10b61c7de31d542acfc3fe))
- outdated structure range ([0d2666f](https://forge.grandlyon.com///commit/0d2666fd7ae0922cbf188ee3fd16a570e9192195))
- update conf ([e7070d1](https://forge.grandlyon.com///commit/e7070d130edbf875b8851eec89a4cf75ca8b3689))
- update mailing templates, user model wrong type and aptic structure handling when a structure is updated. ([f1b69ba](https://forge.grandlyon.com///commit/f1b69ba24d961c031b4f54eeaf1cc5b0cbd0a1d8))
- **structure:** remove unecessary sort for search ([2982dfe](https://forge.grandlyon.com///commit/2982dfe3ffa3b15f41f2bea497f16c255063e2c7))
- **structure:** structure id creation ([7b14c80](https://forge.grandlyon.com///commit/7b14c808b8e04a34552e58eb243906b6acd9bbfc))
- unecessary id declaration in model structure ([e788e55](https://forge.grandlyon.com///commit/e788e55e0c63155c5994b39cbc2f37871f2b4398))
## [1.3.0](https://forge.grandlyon.com///compare/v1.2.0...v1.3.0) (2021-01-15)
### Features
* add admin module + add validation for claiming structures ([95ed7ec](https://forge.grandlyon.com///commit/95ed7eca7c099e24aeeb6ffb535e5b59858162fb))
* add new field in structure schema ([b09c65d](https://forge.grandlyon.com///commit/b09c65d4139976d22d20589d0b3f6e62ef996e2f))
* add role guard ([acb79f2](https://forge.grandlyon.com///commit/acb79f25c7a4c7ee447e4409be25682152b3f739))
* add role to jwt ([f446fd9](https://forge.grandlyon.com///commit/f446fd990de074512e1dc8dcfd7bba31e8b0c9e1))
* add sending of email when structure is validate or not by an admin ([6d683b5](https://forge.grandlyon.com///commit/6d683b5f28489c955b9dc9cfb3cf6522b07ef979))
* add structure name in claim validation mail ([3ad4b8c](https://forge.grandlyon.com///commit/3ad4b8cc7c6b111c45814b738184e56350053da1))
* add tcl module ([b3807e2](https://forge.grandlyon.com///commit/b3807e264a53be1717d316cd512f09bb371e454d))
* claim structure ([8f1bc01](https://forge.grandlyon.com///commit/8f1bc01010e3575a5fd53027be7bb9e680e8fc7c))
- add admin module + add validation for claiming structures ([95ed7ec](https://forge.grandlyon.com///commit/95ed7eca7c099e24aeeb6ffb535e5b59858162fb))
- add new field in structure schema ([b09c65d](https://forge.grandlyon.com///commit/b09c65d4139976d22d20589d0b3f6e62ef996e2f))
- add role guard ([acb79f2](https://forge.grandlyon.com///commit/acb79f25c7a4c7ee447e4409be25682152b3f739))
- add role to jwt ([f446fd9](https://forge.grandlyon.com///commit/f446fd990de074512e1dc8dcfd7bba31e8b0c9e1))
- add sending of email when structure is validate or not by an admin ([6d683b5](https://forge.grandlyon.com///commit/6d683b5f28489c955b9dc9cfb3cf6522b07ef979))
- add structure name in claim validation mail ([3ad4b8c](https://forge.grandlyon.com///commit/3ad4b8cc7c6b111c45814b738184e56350053da1))
- add tcl module ([b3807e2](https://forge.grandlyon.com///commit/b3807e264a53be1717d316cd512f09bb371e454d))
- claim structure ([8f1bc01](https://forge.grandlyon.com///commit/8f1bc01010e3575a5fd53027be7bb9e680e8fc7c))
### Bug Fixes
* mail issue after sen change ([29cdc20](https://forge.grandlyon.com///commit/29cdc20d5e636548665a4f7868dcd2802fe0a4c4))
* structure claim check with bdd ([e0ff4df](https://forge.grandlyon.com///commit/e0ff4df5be560a3e79a563a80b824be80ce62781))
- mail issue after sen change ([29cdc20](https://forge.grandlyon.com///commit/29cdc20d5e636548665a4f7868dcd2802fe0a4c4))
- structure claim check with bdd ([e0ff4df](https://forge.grandlyon.com///commit/e0ff4df5be560a3e79a563a80b824be80ce62781))
## [1.2.0](https://forge.grandlyon.com///compare/v1.1.0...v1.2.0) (2020-12-18)
### Features
* add comments and TU ([5c0dd46](https://forge.grandlyon.com///commit/5c0dd468d34f11c9e9fea2817a3600267f043043))
* add password cahnge endpoint ([cead66e](https://forge.grandlyon.com///commit/cead66ea129de7d7b38e026e6ee89d6fa2892f5e))
* add password reset ([ffea481](https://forge.grandlyon.com///commit/ffea481f8275c93748c114488c150d8b9ace3edd))
* add tu for password change ([c3eb184](https://forge.grandlyon.com///commit/c3eb184b73169d0c7611298f7e3fb00bde72a21a))
* structure edit + data refacto ([a2a65e8](https://forge.grandlyon.com///commit/a2a65e8a2ed3fb2bb8ea1066945d7b044eee7357))
* update dto definition for swagger ([d7a30ed](https://forge.grandlyon.com///commit/d7a30ed7a0e7e0f74e85dace474152f9a184bfc5))
* **auth:** add expiration date on token ([771bd91](https://forge.grandlyon.com///commit/771bd9165b700eb29cc473723d363997695d7f5f))
* **auth:** add user verification endpoint ([7b1fe8a](https://forge.grandlyon.com///commit/7b1fe8a6db800f0182c372e09c720d17771382a1))
* **auth:** send validation mail ([ccbfe8f](https://forge.grandlyon.com///commit/ccbfe8ffda6db3f55b1ff6263f189ef583df3a61))
* **auth:** update password strength verification, increase security with salt in env variable ([8cf88c0](https://forge.grandlyon.com///commit/8cf88c0eb37975172de43a869e30ae125edcacf3))
* **cicd:** add sonar conf + deploy ([1595281](https://forge.grandlyon.com///commit/1595281e0254bbbc06e89cc0058a0dc58a0e9a16))
* **cicd:** init cicd with build ([7156660](https://forge.grandlyon.com///commit/71566600376fcc43a9aa4b0486853746a6cf31be))
* **config:** update logging and add envconfiguration handling ([2ccc5e8](https://forge.grandlyon.com///commit/2ccc5e86bc34a5afaef901ca3ae1dca80c6294f4))
* **mailer:** add ejs template handling ([2b68810](https://forge.grandlyon.com///commit/2b68810cd5a7915da4370e91ae866020e5482df6))
- add comments and TU ([5c0dd46](https://forge.grandlyon.com///commit/5c0dd468d34f11c9e9fea2817a3600267f043043))
- add password cahnge endpoint ([cead66e](https://forge.grandlyon.com///commit/cead66ea129de7d7b38e026e6ee89d6fa2892f5e))
- add password reset ([ffea481](https://forge.grandlyon.com///commit/ffea481f8275c93748c114488c150d8b9ace3edd))
- add tu for password change ([c3eb184](https://forge.grandlyon.com///commit/c3eb184b73169d0c7611298f7e3fb00bde72a21a))
- structure edit + data refacto ([a2a65e8](https://forge.grandlyon.com///commit/a2a65e8a2ed3fb2bb8ea1066945d7b044eee7357))
- update dto definition for swagger ([d7a30ed](https://forge.grandlyon.com///commit/d7a30ed7a0e7e0f74e85dace474152f9a184bfc5))
- **auth:** add expiration date on token ([771bd91](https://forge.grandlyon.com///commit/771bd9165b700eb29cc473723d363997695d7f5f))
- **auth:** add user verification endpoint ([7b1fe8a](https://forge.grandlyon.com///commit/7b1fe8a6db800f0182c372e09c720d17771382a1))
- **auth:** send validation mail ([ccbfe8f](https://forge.grandlyon.com///commit/ccbfe8ffda6db3f55b1ff6263f189ef583df3a61))
- **auth:** update password strength verification, increase security with salt in env variable ([8cf88c0](https://forge.grandlyon.com///commit/8cf88c0eb37975172de43a869e30ae125edcacf3))
- **cicd:** add sonar conf + deploy ([1595281](https://forge.grandlyon.com///commit/1595281e0254bbbc06e89cc0058a0dc58a0e9a16))
- **cicd:** init cicd with build ([7156660](https://forge.grandlyon.com///commit/71566600376fcc43a9aa4b0486853746a6cf31be))
- **config:** update logging and add envconfiguration handling ([2ccc5e8](https://forge.grandlyon.com///commit/2ccc5e86bc34a5afaef901ca3ae1dca80c6294f4))
- **mailer:** add ejs template handling ([2b68810](https://forge.grandlyon.com///commit/2b68810cd5a7915da4370e91ae866020e5482df6))
### Bug Fixes
* **mailer:** update mailer service with new sen api request form ([edd8d04](https://forge.grandlyon.com///commit/edd8d0415224a5f55ef594bf7bd993d0af414b75))
* change token variables ([64d5fd4](https://forge.grandlyon.com///commit/64d5fd4830bfcb55f8226c4184f0851fa6ca7b5b))
* import typo ([cead291](https://forge.grandlyon.com///commit/cead291d4845201d2ebf42ef39ebda9b8299066f))
* route in reset-password mail template ([b9de8c9](https://forge.grandlyon.com///commit/b9de8c935cd2f7ae267292d7df3b560410012127))
* update missing import ([e9c77cb](https://forge.grandlyon.com///commit/e9c77cb64213929ad9a7cf402f00ae59f4a42260))
* **cicd:** add mr validation build + sonar ts ([da070d2](https://forge.grandlyon.com///commit/da070d2aa8a56f70279ff641090ad0df43314abc))
* **cicd:** add mr validation build + sonar ts ([8025ab2](https://forge.grandlyon.com///commit/8025ab2f3abed73f2354bb5254982dc0fb08628e))
* **cicd:** docker build issue ([7732250](https://forge.grandlyon.com///commit/7732250a37b8c1edc9af9509037aebf4f232f466))
* **cicd:** docker-compose version ([0187808](https://forge.grandlyon.com///commit/018780838acc590f5d799828a9a57a689b06f723))
* **cicd:** image build ([78c33c2](https://forge.grandlyon.com///commit/78c33c237b194c5c86e7bdd91f52be221fb63f76))
* **cicd:** image build ([50c1fd1](https://forge.grandlyon.com///commit/50c1fd1108fe50b9e19ebe256753a2284f87a021))
* **TU:** Add unitary testing for auth service ([af44ba0](https://forge.grandlyon.com///commit/af44ba026e4bba564f87ad268ea2bd8ef5a5c566))
* **TU:** fix import issues on TU and add user.service TU ([a0f9456](https://forge.grandlyon.com///commit/a0f94564ef8b04fa10503ec789901e758975888c))
* **TU:** wrong test description ([647da39](https://forge.grandlyon.com///commit/647da394bef7a16febf223220b581f78100b685a))
* build issue because of typo in imports ([fca81cb](https://forge.grandlyon.com///commit/fca81cb4687e141bf311d15e42c6a67e2de5e407))
- **mailer:** update mailer service with new sen api request form ([edd8d04](https://forge.grandlyon.com///commit/edd8d0415224a5f55ef594bf7bd993d0af414b75))
- change token variables ([64d5fd4](https://forge.grandlyon.com///commit/64d5fd4830bfcb55f8226c4184f0851fa6ca7b5b))
- import typo ([cead291](https://forge.grandlyon.com///commit/cead291d4845201d2ebf42ef39ebda9b8299066f))
- route in reset-password mail template ([b9de8c9](https://forge.grandlyon.com///commit/b9de8c935cd2f7ae267292d7df3b560410012127))
- update missing import ([e9c77cb](https://forge.grandlyon.com///commit/e9c77cb64213929ad9a7cf402f00ae59f4a42260))
- **cicd:** add mr validation build + sonar ts ([da070d2](https://forge.grandlyon.com///commit/da070d2aa8a56f70279ff641090ad0df43314abc))
- **cicd:** add mr validation build + sonar ts ([8025ab2](https://forge.grandlyon.com///commit/8025ab2f3abed73f2354bb5254982dc0fb08628e))
- **cicd:** docker build issue ([7732250](https://forge.grandlyon.com///commit/7732250a37b8c1edc9af9509037aebf4f232f466))
- **cicd:** docker-compose version ([0187808](https://forge.grandlyon.com///commit/018780838acc590f5d799828a9a57a689b06f723))
- **cicd:** image build ([78c33c2](https://forge.grandlyon.com///commit/78c33c237b194c5c86e7bdd91f52be221fb63f76))
- **cicd:** image build ([50c1fd1](https://forge.grandlyon.com///commit/50c1fd1108fe50b9e19ebe256753a2284f87a021))
- **TU:** Add unitary testing for auth service ([af44ba0](https://forge.grandlyon.com///commit/af44ba026e4bba564f87ad268ea2bd8ef5a5c566))
- **TU:** fix import issues on TU and add user.service TU ([a0f9456](https://forge.grandlyon.com///commit/a0f94564ef8b04fa10503ec789901e758975888c))
- **TU:** wrong test description ([647da39](https://forge.grandlyon.com///commit/647da394bef7a16febf223220b581f78100b685a))
- build issue because of typo in imports ([fca81cb](https://forge.grandlyon.com///commit/fca81cb4687e141bf311d15e42c6a67e2de5e407))
## 1.1.0 (2020-12-01)
### Features
* add categories endpoint ([b610803](https://forge.grandlyon.com///commit/b6108038843cdaf5099beb369bdd23e98d10f126))
* add count handling ([d918fb7](https://forge.grandlyon.com///commit/d918fb7e8a15061f482359b6e9b4cf8b1e424cea))
* add first working version for structure endpoint ([42b760b](https://forge.grandlyon.com///commit/42b760bc70029b3b19439b34aac38448ed7c65f5))
* add full text search ([609b51b](https://forge.grandlyon.com///commit/609b51b8a40056be18cc2b7fe39674c1db463c48))
* add health check ([0673e49](https://forge.grandlyon.com///commit/0673e49a7a9792e60910e1887ad4dcc56d453750))
* add registration and auth ([99b3c50](https://forge.grandlyon.com///commit/99b3c509f27e7fa2d105431347658957a017dcf0))
* first working version of auth ([8d8ff61](https://forge.grandlyon.com///commit/8d8ff617ea3065b54145502e7e8277c97304ac30))
* parse boolean string to boolean for search filter + Refacto ([1184295](https://forge.grandlyon.com///commit/1184295c0cadf04771fc377b0b6fd09507ceecc4))
* update readme + make coord and address call in backend instead of front ([87ca741](https://forge.grandlyon.com///commit/87ca7411ca6a61c5e23319fa472f8dff10627c8c))
* **docker:** add docker handling for mongo database ([d66af3c](https://forge.grandlyon.com///commit/d66af3c04547e85b222ef73eeee090520edd6d22))
- add categories endpoint ([b610803](https://forge.grandlyon.com///commit/b6108038843cdaf5099beb369bdd23e98d10f126))
- add count handling ([d918fb7](https://forge.grandlyon.com///commit/d918fb7e8a15061f482359b6e9b4cf8b1e424cea))
- add first working version for structure endpoint ([42b760b](https://forge.grandlyon.com///commit/42b760bc70029b3b19439b34aac38448ed7c65f5))
- add full text search ([609b51b](https://forge.grandlyon.com///commit/609b51b8a40056be18cc2b7fe39674c1db463c48))
- add health check ([0673e49](https://forge.grandlyon.com///commit/0673e49a7a9792e60910e1887ad4dcc56d453750))
- add registration and auth ([99b3c50](https://forge.grandlyon.com///commit/99b3c509f27e7fa2d105431347658957a017dcf0))
- first working version of auth ([8d8ff61](https://forge.grandlyon.com///commit/8d8ff617ea3065b54145502e7e8277c97304ac30))
- parse boolean string to boolean for search filter + Refacto ([1184295](https://forge.grandlyon.com///commit/1184295c0cadf04771fc377b0b6fd09507ceecc4))
- update readme + make coord and address call in backend instead of front ([87ca741](https://forge.grandlyon.com///commit/87ca7411ca6a61c5e23319fa472f8dff10627c8c))
- **docker:** add docker handling for mongo database ([d66af3c](https://forge.grandlyon.com///commit/d66af3c04547e85b222ef73eeee090520edd6d22))
### Bug Fixes
* or instead of and for filter search query ([e135dfb](https://forge.grandlyon.com///commit/e135dfb02db44621f25e08d36bc8475393e62573))
* search issue ([13e5b81](https://forge.grandlyon.com///commit/13e5b816236236ce2bf73a7179f0ea5b51ae6703))
* typo in structure.controller ([d9000b4](https://forge.grandlyon.com///commit/d9000b4d9d98454b8f99148cd8a5e0ed1c32adee))
* update docker-compose ([857a2d5](https://forge.grandlyon.com///commit/857a2d54ca8284778a7963828cfe6a55fcfce1ec))
- or instead of and for filter search query ([e135dfb](https://forge.grandlyon.com///commit/e135dfb02db44621f25e08d36bc8475393e62573))
- search issue ([13e5b81](https://forge.grandlyon.com///commit/13e5b816236236ce2bf73a7179f0ea5b51ae6703))
- typo in structure.controller ([d9000b4](https://forge.grandlyon.com///commit/d9000b4d9d98454b8f99148cd8a5e0ed1c32adee))
- update docker-compose ([857a2d5](https://forge.grandlyon.com///commit/857a2d54ca8284778a7963828cfe6a55fcfce1ec))
......@@ -84,7 +84,7 @@ services:
environment:
MYSQL_ROOT_PASSWORD: ${GHOST_DB_PASSWORD}
volumes:
- db-ghost
- db-ghost:/var/lib/mysql
es01:
image: elasticsearch:7.6.1
......@@ -96,7 +96,7 @@ services:
xpack.security.enabled: ${ELASTIC_SECURITY}
ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD}
volumes:
- db-elastic
- db-elastic:/usr/share/elasticsearch/data
networks:
- elastic
ports:
......@@ -120,10 +120,14 @@ services:
volumes:
db-ram:
driver: local
db-ghost:
driver: local
db-elastic:
driver: local
networks:
backend:
driver: bridge
elastic:
driver: bridge
Source diff could not be displayed: it is too large. Options to address this: view the blob.
{
"name": "ram_server",
"private": true,
"version": "1.9.1",
"version": "1.10.0",
"description": "Nest TypeScript starter repository",
"license": "MIT",
"scripts": {
......@@ -12,8 +12,8 @@
"start:dev": "nodemon",
"start:debug": "nodemon --config nodemon-debug.json",
"start:prod": "npm run migrate:up && node dist/main",
"doc": "npx @compodoc/compodoc -p tsconfig.json -s -n 'Resin api documentation'",
"doc:serve": "npm run doc && npx compodoc -s",
"doc": "./node_modules/.bin/compodoc compodoc -p tsconfig.json -s -n 'Resin api documentation'",
"doc:serve": "./node_modules/.bin/compodoc compodoc -s",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"release": "standard-version",
"init-db": "node ./scripts/init-db.js",
......@@ -38,9 +38,9 @@
"@nestjs/platform-express": "^7.5.1",
"@nestjs/schedule": "^0.4.1",
"@nestjs/swagger": "^4.7.5",
"@tryghost/admin-api": "^1.3.8",
"@tryghost/admin-api": "^1.4.4",
"@types/bcrypt": "^3.0.0",
"bcrypt": "^5.0.0",
"bcrypt": "^5.0.1",
"class-transformer": "^0.3.1",
"class-validator": "^0.12.2",
"dotenv": "^8.2.0",
......@@ -55,11 +55,11 @@
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^6.6.3",
"standard-version": "^9.0.0",
"swagger-ui-express": "^4.1.5"
"standard-version": "^9.3.2",
"swagger-ui-express": "^4.3.0"
},
"devDependencies": {
"@compodoc/compodoc": "^1.1.11",
"@compodoc/compodoc": "^1.1.16",
"@nestjs/cli": "^7.5.1",
"@nestjs/schematics": "^7.1.3",
"@nestjs/testing": "^7.5.1",
......
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('5fbb931c80a5c257dc0161f4'),
modules: [
{
id: 'accompagnantCaf',
text: 'Accompagnant CAF',
},
{
id: 'poleEmploi',
text: 'Pôle Emploi',
},
{
id: 'cpam',
text: 'CPAM',
},
{
id: 'impots',
text: 'Impôts',
},
{
id: 'logement',
text: 'Logement',
},
{
id: 'carsat',
text: 'CARSAT',
},
{
id: 'demarcheMetropolitaine',
text: 'Démarches Métropolitaines',
},
{
id: 'autres',
text: 'Autres',
},
],
name: 'Accompagnement des démarches',
id: 'proceduresAccompaniment',
__v: 0,
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('5fbb933b80a5c257dc0161f5'),
modules: [
{
id: '84',
display_id: '84',
display_name: 'Modules APTIC - n°84',
digest: 'Pôle Emploi : faire ses déclarations en ligne',
text: 'Pôle Emploi : faire ses déclarations en ligne',
},
{
id: '85',
display_id: '85',
display_name: 'Modules APTIC - n°85',
digest: 'Déclarer ses revenus en ligne et découvertes des services proposés',
text: 'Déclarer ses revenus en ligne et découvertes des services proposés',
},
{
id: '86',
display_id: '86',
display_name: 'Modules APTIC - n°86',
digest: 'Accéder à ses droits sociaux et les gérer en ligne (RSA…)',
text: 'Accéder à ses droits sociaux et les gérer en ligne (RSA…)',
},
{
id: '87',
display_id: '87',
display_name: 'Modules APTIC - n°87',
digest: 'Ouvrir et gérer son dossier de retraite (CNAF/CARSAT) en ligne',
text: 'Ouvrir et gérer son dossier de retraite (CNAF/CARSAT) en ligne',
},
{
id: '88',
display_id: '88',
display_name: 'Modules APTIC - n°88',
digest: "Gérer son abonnement et ses factures d'électricité/gaz en ligne",
text: "Gérer son abonnement et ses factures d'électricité/gaz en ligne",
},
{
id: '89',
display_id: '89',
display_name: 'Modules APTIC - n°89',
digest: "Gérer ses droits d'assuré social en ligne/sur internet",
text: "Gérer ses droits d'assuré social en ligne/sur internet",
},
{
id: '93',
display_id: '93',
display_name: 'Modules APTIC - n°93',
digest: 'Plateforme Ameli.fr : la sécurité sociale en ligne',
text: 'Plateforme Ameli.fr : la sécurité sociale en ligne',
},
{
id: '95',
display_id: '95',
display_name: 'Modules APTIC - n°95',
digest: 'Plateforme France Connect',
text: 'Plateforme France Connect',
},
],
name: 'Accès aux droits',
id: 'accessRight',
__v: 0,
},
{
modules: [
{
id: '260',
display_id: '260',
display_name: 'Modules APTIC - n°260',
digest: 'Maitrise de l’environnement d’un ordinateur (clavier, souris)',
text: 'Maitrise de l’environnement d’un ordinateur (clavier, souris)',
},
{
id: '1',
display_id: '1',
display_name: 'Modules APTIC - n°1',
digest: 'Composantes et facettes de l’identité numérique',
text: 'Composantes et facettes de l’identité numérique',
},
{
id: '11',
display_id: '11',
display_name: 'Modules APTIC - n°11',
digest: 'Internet : fonctionnement et outils de navigation web',
text: 'Internet : fonctionnement et outils de navigation web',
},
{
id: '38',
display_id: '38',
display_name: 'Modules APTIC - n°38',
digest: 'Le smartphone : principes de fonctionnement',
text: 'Le smartphone : principes de fonctionnement',
},
{
id: '48',
display_id: '48',
display_name: 'Modules APTIC - n°48',
digest: 'Internet : envoyer, recevoir, gérer ses emails',
text: 'Internet : envoyer, recevoir, gérer ses emails',
},
{
id: '74',
display_id: '74',
display_name: 'Modules APTIC - n°74',
digest: 'Smartphones et Tablettes sous Androïd',
text: 'Smartphones et Tablettes sous Androïd',
},
{
id: '77',
display_id: '77',
display_name: 'Modules APTIC - n°77',
digest: "Smartphone : Les principaux gestes pour l'écran tactile",
text: "Smartphone : Les principaux gestes pour l'écran tactile",
},
],
name: 'Les compétences de base',
id: 'baseSkills',
__v: 0,
},
{
modules: [
{
id: '6',
display_id: '6',
display_name: 'Modules APTIC - n°6',
digest: "Utiliser les réseaux sociaux pour sa recherche d'emploi",
text: "Utiliser les réseaux sociaux pour sa recherche d'emploi",
},
{
id: '20',
display_id: '20',
display_name: 'Modules APTIC - n°20',
digest: 'Panorama des plateformes de recherche d’emploi',
text: 'Panorama des plateformes de recherche d’emploi',
},
{
id: '66',
display_id: '66',
display_name: 'Modules APTIC - n°66',
digest: 'Traitement de texte : découverte',
text: 'Traitement de texte : découverte',
},
{
id: '67',
display_id: '67',
display_name: 'Modules APTIC - n°67',
digest: 'Traitement de texte : utilisation de base',
text: 'Traitement de texte : utilisation de base',
},
{
id: '68',
display_id: '68',
display_name: 'Modules APTIC - n°68',
digest: 'Traitement de texte : utilisation avancée',
text: 'Traitement de texte : utilisation avancée',
},
{
id: '69',
display_id: '69',
display_name: 'Modules APTIC - n°69',
digest: 'Tableur : découverte',
text: 'Tableur : découverte',
},
{
id: '124',
display_id: '124',
display_name: 'Modules APTIC - n°124',
digest: 'Réalisation CV',
text: 'Réalisation CV',
},
{
id: '125',
display_id: '125',
display_name: 'Modules APTIC - n°125',
digest: 'Diffuser son CV en ligne',
text: 'Diffuser son CV en ligne',
},
{
id: '127',
display_id: '127',
display_name: 'Modules APTIC - n°127',
digest: "Organiser sa recherche d'emploi",
text: "Organiser sa recherche d'emploi",
},
],
name: 'Insertion sociale et professionnelle',
id: 'socialAndProfessional',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb934c80a5c257dc0161f8'),
modules: [
{
id: '3',
display_id: '3',
display_name: 'Modules APTIC - n°3',
digest: "Être parent à l'ère numérique: connaître les usages, jouer son rôle de parent",
text: "Être parent à l'ère numérique: connaître les usages, jouer son rôle de parent",
},
{
id: '22',
display_id: '22',
display_name: 'Modules APTIC - n°22',
digest: 'Découvrir l’univers des jeux vidéo - 22',
text: 'Découvrir l’univers des jeux vidéo',
},
{
id: '82',
display_id: '82',
display_name: 'Modules APTIC - n°82',
digest: 'Suivre la scolarité de son enfant - 82',
text: 'Suivre la scolarité de son enfant',
},
{
id: '94',
display_id: '94',
display_name: 'Modules APTIC - n°94',
digest: "Découvrir les services en ligne de l'enfance de votre commune - 94",
text: "Découvrir les services en ligne de l'enfance de votre commune",
},
],
name: 'Aide à la parentalité',
id: 'parentingHelp',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb935080a5c257dc0161f9'),
modules: [
{
id: '2',
display_id: '2',
display_name: 'Modules APTIC - n°2',
digest: 'Les conduites à risques et les bons usages du numérique - 02',
text: 'Les conduites à risques et les bons usages du numérique',
},
{
id: '5',
display_id: '5',
display_name: 'Modules APTIC - n°5',
digest: 'Découvrir les réseaux sociaux : définition, fonctionnement - 05',
text: 'Découvrir les réseaux sociaux : définition, fonctionnement',
},
{
id: '9',
display_id: '9',
display_name: 'Modules APTIC - n°9',
digest: 'Fablab : charte, valeurs et panorama des outils numériques - 09',
text: 'Fablab : charte, valeurs et panorama des outils numériques',
},
{
id: '28',
display_id: '28',
display_name: 'Modules APTIC - n°28',
digest: 'Les paiements en ligne - 28',
text: 'Les paiements en ligne',
},
{
id: '34',
display_id: '34',
display_name: 'Modules APTIC - n°34',
digest: 'Internet : comprendre les principes de fonctionnement - 35',
text: 'Internet : comprendre les principes de fonctionnement',
},
{
id: '39',
display_id: '39',
display_name: 'Modules APTIC - n°39',
digest: 'Techniques de vérification de l’information - 39',
text: 'Techniques de vérification de l’information',
},
{
id: '42',
display_id: '42',
display_name: 'Modules APTIC - n°42',
digest: 'Créer et paramétrer un compte Google - 42',
text: 'Créer et paramétrer un compte Google',
},
{
id: '51',
display_id: '51',
display_name: 'Modules APTIC - n°51',
digest: 'Gérer ses données : sauvegarde en ligne (dans le cloud) - 51',
text: 'Gérer ses données : sauvegarde en ligne (dans le cloud)',
},
{
id: '52',
display_id: '52',
display_name: 'Modules APTIC - n°52',
digest: 'Gérer ses données : sauvegardes locales (disques durs externes, clé USB) - 52',
text: 'Gérer ses données : sauvegardes locales (disques durs externes, clé USB)',
},
{
id: '54',
display_id: '54',
display_name: 'Modules APTIC - n°54',
digest: 'Classer, gérer et partager ses photos - 54',
text: 'Classer, gérer et partager ses photos',
},
{
id: '65',
display_id: '65',
display_name: 'Modules APTIC - n°65',
digest: 'Skype et autres outils de visioconférence - 65',
text: 'Skype et autres outils de visioconférence',
},
{
id: '96',
display_id: '96',
display_name: 'Modules APTIC - n°96',
digest: 'Connaitre et gérer son identité numérique - 96',
text: 'Connaitre et gérer son identité numérique',
},
{
id: '97',
display_id: '97',
display_name: 'Modules APTIC - n°97',
digest: 'Nettoyer son identité numérique - 97',
text: 'Nettoyer son identité numérique',
},
{
id: '98',
display_id: '98',
display_name: 'Modules APTIC - n°98',
digest: 'Effacer ses traces sur le web, protéger ses données personnelles - 98',
text: 'Effacer ses traces sur le web, protéger ses données personnelles',
},
],
name: 'Culture et sécurité numérique',
id: 'digitalCultureSecurity',
__v: 0,
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('5fbb92dd80a5c257dc0161ef'),
modules: [
{
id: 'toutPublic',
text: 'Tout public',
},
{
id: 'moinsDe16Ans',
text: 'Moins de 16 ans',
},
{
id: 'jeunes1625Ans',
text: 'Jeunes (16-25 ans)',
},
{
id: 'adultes',
text: 'Adultes',
},
{
id: 'seniorsPlusDe65Ans',
text: 'Séniors (+ de 65 ans)',
},
],
name: 'Publics acceptés',
id: 'publics',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92e480a5c257dc0161f0'),
modules: [
{
id: 'aidantsConnect',
text: 'Aidants Connect',
},
{
id: 'espacePublicNumeriqueepn',
text: 'Espace public numérique',
},
{
id: 'fabriqueDeTerritoire',
text: 'Fabrique de territoire',
},
{
id: 'maisonFranceService',
text: 'Maison France Service',
},
{
id: 'passNumerique',
text: 'Pass numérique',
},
{
id: 'conseillerNumFranceServices',
text: 'Conseiller numérique France services',
},
],
name: 'Labels et qualifications',
id: 'labelsQualifications',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92e980a5c257dc0161f1'),
modules: [
{
id: 'accesLibre',
text: 'Accès libre',
},
{
id: 'telephoneVisio',
text: 'Téléphone / Visio',
},
{
id: 'surRdv',
text: 'Sur RDV',
},
],
name: "Modalités d'accès",
id: 'accessModality',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92ef80a5c257dc0161f2'),
modules: [
{
id: "Personnes en situation d'illetrisme",
text: "Personnes en situation d'illetrisme",
},
{
id: 'Langue étrangère (anglais)',
text: 'Langue étrangère (anglais)',
},
{
id: 'Langues étrangères (autres)',
text: 'Langues étrangères (autres)',
},
{
id: 'Surdité',
text: 'Surdité',
},
{
id: 'Déficience visuelle',
text: 'Déficience visuelle',
},
{
id: 'Handicap moteur',
text: 'Handicap moteur',
},
],
name: 'Accompagnement des publics spécifiques',
id: 'publicsAccompaniment',
__v: 0,
},
{
_id: mongoose.Types.ObjectId('5fbb92f380a5c257dc0161f3'),
modules: [
{
id: 'wifiEnAccesLibre',
text: 'Wifi en accès libre',
},
{
id: 'ordinateurs',
text: 'Ordinateurs',
},
{
id: 'tablettes',
text: 'Tablettes',
},
{
id: 'bornesNumeriques',
text: 'Bornes numériques',
},
{
id: 'imprimantes',
text: 'Imprimantes',
},
{
id: 'scanners',
text: 'Scanners',
},
{
id: 'donDeMateriels',
text: 'Prêt / don de matériels',
},
{
id: 'reconditionnementsDeMateriel',
text: 'Reconditionnements de matériel',
},
{
id: 'accesLivresInformatiques',
text: 'Accès à des revues ou livres informatiques et numériques',
},
],
name: 'Équipements et services proposés',
id: 'equipmentsAndServices',
__v: 0,
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('6001a35f16b08100062e415f'),
freeWorkShop: false,
createdAt: '2020-11-16T15:37:00.000Z',
updatedAt: '2021-03-02T12:36:53.000Z',
structureName: "Maison de l'Emploi (Feyzin)",
description:
"- Permanence de médiation numérique (sur rdv) les lundis; mardi, mercredi apres midi 13h30 - 17h30 et les vendredi matins 9h-12h - mise à disposition d'ordinateurs aux horaires d'ouverture de la structure lundi, mercredi, jeudi 9h-12h; 13h30-17h30 ; mardi 10h-12h 13h30- 17h30 et vendredi matin 9h-12H. - mise à disposition (sur rdv)de matériels pour suivre des formations / informations collectives à distance et participer à un entretien en visio - cours de code et entrainement en ligne sur rdv",
lockdownActivity:
'Toutes les activités sont maintenues durant le confinement. Toutes nécessitent cependant de prendre rdv préalablement',
contactPhone: '04 04 04 04 04',
contactMail: 'm.annequin@test.fr',
website: '',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
accessModality: ['accesLibre', 'surRdv'],
labelsQualifications: [],
publics: ['toutPublic'],
exceptionalClosures: 'Jours fériés',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
proceduresAccompaniment: ['poleEmploi', 'accompagnantCaf'],
publicsAccompaniment: [],
autresAccompagnements: '',
baseSkills: [],
accessRight: ['84'],
socialAndProfessional: [],
parentingHelp: [],
digitalCultureSecurity: [],
equipmentsAndServices: ['ordinateurs', 'imprimantes', 'wifiEnAccesLibre'],
nbComputers: 5,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
structureType: 'mairie',
hours: {
monday: {
open: true,
time: [
{
closing: '12:00',
opening: '9:00',
},
{
closing: '17:30',
opening: '13:30',
},
],
},
tuesday: {
open: true,
time: [
{
closing: '12:00',
opening: '10:00',
},
{
closing: '17:30',
opening: '13:30',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '12:00',
opening: '9:00',
},
{
closing: '17:30',
opening: '13:30',
},
],
},
thursday: {
open: true,
time: [
{
closing: '12:00',
opening: '9:00',
},
{
closing: '17:30',
opening: '13:30',
},
],
},
friday: {
open: true,
time: [
{
closing: '12:00',
opening: '9:00',
},
],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
address: {
numero: '18',
street: 'Rue de la Mairie',
commune: 'Feyzin',
},
accountVerified: true,
coord: [4.8563106, 45.6693619],
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
{
_id: mongoose.Types.ObjectId('6001a37716b08100062e4160'),
structureType: null,
digitalCultureSecurity: [],
parentingHelp: [],
socialAndProfessional: ['124', '125', '127'],
accessRight: ['84'],
baseSkills: [],
proceduresAccompaniment: ['poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'surRdv'],
freeWorkShop: false,
createdAt: '2020-11-16T10:19:00.000Z',
updatedAt: 'Mon May 10 2021 08:45:50 GMT+0000 (Coordinated Universal Time)',
structureName: 'Pôle emploi (Vénissieux)',
description: "Espace informatique en libre service le matin Sur RDV l'après-midi, réservation d'un poste",
lockdownActivity: "Espace libre accès le matin RDV l'après-midi, résercation d'un poste",
contactPhone: '',
contactMail: '',
website: '',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 10,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
time: [
{
closing: '12:30',
opening: '8:30',
},
{
closing: '16:00',
opening: '13:30',
},
],
},
tuesday: {
open: true,
time: [
{
closing: '12:30',
opening: '8:30',
},
{
closing: '16:00',
opening: '13:30',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '12:30',
opening: '8:30',
},
{
closing: '16:00',
opening: '13:30',
},
],
},
thursday: {
open: true,
time: [
{
closing: '12:30',
opening: '8:30',
},
{
closing: '16:00',
opening: '13:30',
},
],
},
friday: {
open: true,
time: [
{
closing: '12:30',
opening: '8:30',
},
],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
__v: 0,
address: {
numero: '27',
street: 'Avenue de la République',
commune: 'Vénissieux',
},
accountVerified: true,
coord: [4.8678548, 45.7075853],
linkedin: null,
nbScanners: 1,
otherDescription: null,
deletedAt: new Date('2021-05-10T08:45:50.076Z'),
},
{
_id: mongoose.Types.ObjectId('6001a38516b08100062e4161'),
freeWorkShop: false,
createdAt: '2020-11-16T14:15:00.000Z',
updatedAt: '2021-04-27T14:19:17.000Z',
structureName: 'Centre social Quartier Vitalité',
description:
"Le centre social s'inscrit dans une démarche d'animation de la vie sociale locale afin de permettre aux habitants d'exprimer, de concevoir, de réaliser leurs projets. C'est un lieu de proximité à vocation familiale et intergénérationnelle qui propose des activités sociales, éducatives et culturelles pour répondre aux besoins de chacun.",
lockdownActivity: 'Aide aux démarches administratives et médiation numérique, sur rendez vous uniquement',
contactPhone: '04 05 05 05 05',
contactMail: 'test@gmail.com',
website: 'www.centresocialquartiervitalite.i-citoyen.com',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
accessModality: ['telephoneVisio', 'surRdv'],
labelsQualifications: [],
publics: ['jeunes1625Ans', 'adultes', 'seniorsPlusDe65Ans', 'toutPublic'],
exceptionalClosures: "vacances de Noel + tout le mois d'Aout",
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
proceduresAccompaniment: ['poleEmploi', 'cpam', 'impots', 'logement', 'carsat', 'accompagnantCaf'],
publicsAccompaniment: [],
autresAccompagnements: '',
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
socialAndProfessional: ['66', '67', '68', '69', '124'],
parentingHelp: ['3', '22', '82', '94'],
digitalCultureSecurity: ['2', '28', '34', '39', '42', '52', '65'],
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 3,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
structureType: 'centreSocio',
address: {
numero: '7',
street: 'Rue Saint Polycarpe',
commune: 'Lyon 1er Arrondissement',
},
hours: {
monday: {
open: false,
time: [],
},
tuesday: {
open: true,
time: [
{
closing: '17:00',
opening: '13:30',
},
],
},
wednesday: {
open: false,
time: [],
},
thursday: {
open: true,
time: [
{
closing: '12:00',
opening: '9:30',
},
],
},
friday: {
open: false,
time: [],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
coord: [4.8343466, 45.7689958],
accountVerified: true,
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
{
_id: mongoose.Types.ObjectId('6001a39c16b08100062e4164'),
structureType: null,
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['cpam', 'impots', 'carsat', 'poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique', 'espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'telephoneVisio', 'surRdv'],
freeWorkShop: false,
createdAt: '2020-11-16T09:30:00.000Z',
updatedAt: '2021-04-12T08:48:00.000Z',
structureName: "L'Atelier Numérique",
description:
"L'Atelier Numérique est l'Espace Public Numérique des Centres Sociaux de Rillieux-la-Pape, ayant pour mission la médiation numérique pour toutes et tous.",
lockdownActivity:
'accesLibres, permanences numériques téléphoniques, cours et ateliers à distance, formations professionnelles.',
contactPhone: '',
contactMail: '',
website: '',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'tablettes'],
nbComputers: 16,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
time: [
{
closing: '12:30',
opening: '9:00',
},
{
closing: '17:00',
opening: '13:30',
},
],
},
tuesday: {
open: true,
time: [
{
closing: '12:30',
opening: '9:00',
},
{
closing: '17:00',
opening: '13:30',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '12:30',
opening: '9:00',
},
{
closing: '17:00',
opening: '13:30',
},
],
},
thursday: {
open: true,
time: [
{
closing: '12:30',
opening: '9:00',
},
{
closing: '17:00',
opening: '13:30',
},
],
},
friday: {
open: true,
time: [
{
closing: '12:30',
opening: '9:00',
},
],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
__v: 0,
address: {
numero: '30 bis',
street: 'Avenue Leclerc',
commune: 'Rillieux-la-Pape',
},
coord: [4.9036773, 45.8142196],
accountVerified: true,
linkedin: null,
nbScanners: 1,
otherDescription: null,
deletedAt: new Date('2021-04-12T08:48:00.764Z'),
},
{
_id: mongoose.Types.ObjectId('6001a3aa16b08100062e4166'),
structureType: 'mjc',
digitalCultureSecurity: ['2', '5', '9', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '22', '82', '94'],
socialAndProfessional: ['66', '67', '68', '69'],
accessRight: [],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: [],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique', 'espacePublicNumeriqueepn'],
accessModality: ['accesLibre', 'telephoneVisio', 'surRdv'],
freeWorkShop: false,
createdAt: '2020-11-16T08:53:00.000Z',
updatedAt: '2021-04-27T17:06:46.000Z',
structureName: 'Cyber-base / MJC Louis Aragon',
description:
'Notre espace est un lieu de DÉCOUVERTE, d’APPRENTISSAGE et de SOUTIEN de votre pratique numérique. Ouvert à tous, c’est un aussi un lieu de vie, d’échanges et de partage de savoirs. La Cyber-base est un lieu ressource pour les acteurs sociaux, éducatifs et culturels . Elle a vocation à ACCOMPAGNER : • les projets des structures impliquant le numérique comme levier social d’inclusion des citoyens • l’éducation aux médias des jeunes générations • à la parentalité.',
lockdownActivity:
"OUVERT au public pour un libre accès INTERNET et impressions de documents.\nUne permanence téléphonique d'AIDE NUMERIQUE (logiciel VISIO, envoyer une pièce jointe, se connecter au WIFI, récupération mot de passe,...) est maintenue : mercredi / vendredi, 11h à 13h et 18h à 19h au 04 72 81 76 87. Les activités enfants / ados sont SUSPENDUES. \nDes soirées conviviales sont organisées A DISTANCE les vendredis soirs, de 18h30 à 19h30 -> https://cyberbase.mjcbron.fr/les-vendredis-conviviaux/",
contactPhone: '04 06 06 06 60',
contactMail: 'cyberbase@test.fr',
website: 'http://cyberbase.mjcbron.fr',
facebook: 'facebook.com/CyberBaseMJCBron',
twitter: 'twitter.com/cyberbasebron',
instagram: 'instagram.com/mjc_louis_aragon_bron/',
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: false,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: [
'wifiEnAccesLibre',
'ordinateurs',
'tablettes',
'imprimantes',
'scanners',
'accesLivresInformatiques',
],
nbComputers: 9,
nbPrinters: 1,
nbTablets: 6,
nbNumericTerminal: 1,
hours: {
monday: {
open: false,
time: [],
},
tuesday: {
open: true,
time: [
{
closing: '18:30',
opening: '16:00',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '18:30',
opening: '16:00',
},
],
},
thursday: {
open: true,
time: [
{
closing: '18:30',
opening: '16:00',
},
],
},
friday: {
open: true,
time: [
{
closing: '18:30',
opening: '16:00',
},
],
},
saturday: {
open: true,
time: [
{
closing: '18:00',
opening: '14:00',
},
],
},
sunday: {
open: false,
time: [],
},
},
__v: 1,
address: {
numero: '212',
street: 'Avenue Franklin Roosevelt',
commune: 'Bron',
},
coord: [4.9149121, 45.7311648],
accountVerified: true,
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
{
_id: mongoose.Types.ObjectId('6001a3b116b08100062e4167'),
structureType: 'association',
digitalCultureSecurity: ['2', '5', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['3', '82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '86', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['cpam', 'impots', 'poleEmploi'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['accesLibre', 'surRdv'],
freeWorkShop: false,
createdAt: '2020-11-04T09:27:00.000Z',
updatedAt: '2021-03-02T10:07:48.000Z',
structureName: 'Oasis Informatique',
description: '',
lockdownActivity: '',
contactPhone: '06 06 06 60 60',
contactMail: 'iip.oasis@test.fr',
website: 'http://oasis-informatique.fr/',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs', 'imprimantes'],
nbComputers: 8,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
time: [
{
closing: '17:30',
opening: '14:30',
},
],
},
tuesday: {
open: true,
time: [
{
closing: '17:30',
opening: '14:30',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '17:30',
opening: '14:30',
},
],
},
thursday: {
open: true,
time: [
{
closing: '17:30',
opening: '14:30',
},
],
},
friday: {
open: true,
time: [
{
closing: '17:30',
opening: '14:30',
},
],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
__v: 0,
address: {
numero: '3',
street: 'Rue Louis Normand',
commune: 'Oullins',
},
coord: [4.8188378, 45.7157896],
accountVerified: true,
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
{
_id: mongoose.Types.ObjectId('6001a3b716b08100062e4168'),
structureType: 'coworking',
digitalCultureSecurity: ['2', '5', '28', '34', '39', '42', '51', '52', '54', '65', '96', '97', '98'],
parentingHelp: ['82', '94'],
socialAndProfessional: ['6', '20', '66', '67', '68', '69', '124', '125', '127'],
accessRight: ['84', '85', '87', '88', '89', '93', '95'],
baseSkills: ['260', '1', '11', '38', '48', '74', '77'],
proceduresAccompaniment: ['poleEmploi', 'cpam', 'impots', 'carsat', 'accompagnantCaf'],
publics: ['toutPublic'],
labelsQualifications: ['passNumerique'],
accessModality: ['telephoneVisio', 'surRdv'],
freeWorkShop: false,
createdAt: '2020-11-13T14:13:00.000Z',
updatedAt: '2021-03-02T10:09:30.000Z',
structureName: 'Le Son du Clic',
description:
"Entreprise de médiation numérique assurant l'animation d'atelier numériques en collectif ou l'accompagnement au numérique des particuliers en individuel. Structure agréée APTIC sur la métropole de Lyon, acceptant à ce titre le règlement de ses prestations en chèque PASS NUMERIQUE",
lockdownActivity:
'Médiation numérique et formation pour les particuliers, en individuel, à domicile ou en visioconférence',
contactPhone: '06 60 60 60 60',
contactMail: 'jean-francois@test.fr',
website: 'http://lesonduclic.fr/site1/',
facebook: null,
twitter: null,
instagram: null,
pmrAccess: true,
exceptionalClosures: '',
jaccompagneLesUsagersDansLeursDemarchesEnLigne: true,
publicsAccompaniment: [],
autresAccompagnements: '',
equipmentsAndServices: ['ordinateurs'],
nbComputers: 8,
nbPrinters: 1,
nbTablets: 1,
nbNumericTerminal: 1,
hours: {
monday: {
open: true,
time: [
{
closing: '17:00',
opening: '9:00',
},
],
},
tuesday: {
open: true,
time: [
{
closing: '17:00',
opening: '9:00',
},
],
},
wednesday: {
open: true,
time: [
{
closing: '17:00',
opening: '9:00',
},
],
},
thursday: {
open: true,
time: [
{
closing: '17:00',
opening: '9:00',
},
],
},
friday: {
open: true,
time: [
{
closing: '17:00',
opening: '9:00',
},
],
},
saturday: {
open: false,
time: [],
},
sunday: {
open: false,
time: [],
},
},
__v: 0,
address: {
numero: '7',
street: 'Rue Robert et Reynier ',
commune: 'Saint-Fons',
},
coord: [4.8608585, 45.7086482],
accountVerified: true,
linkedin: null,
nbScanners: 1,
otherDescription: null,
},
],
};
// eslint-disable-next-line @typescript-eslint/no-var-requires
const mongoose = require('mongoose');
module.exports = {
data: [
{
_id: mongoose.Types.ObjectId('601c223d3f612000068d4366'),
name: 'Publique',
values: [
'mairie',
'CAF',
'CCAS',
'CARSAT',
'poleEmploi',
'mdm',
'mediatheque',
'prefecture',
'bijPij',
'logement',
],
},
{
_id: mongoose.Types.ObjectId('601c22543f612000068d4367'),
name: 'Privée à but non lucratif',
values: ['association', 'centreSocio', 'mjc', 'pimms', 'sij', 'missionsLocales'],
},
{
_id: mongoose.Types.ObjectId('601c225e3f612000068d4368'),
name: 'Privée à but lucratif',
values: ['formation', 'insertion'],
},
],
};
......@@ -5,10 +5,7 @@ module.exports = {
data: [
{
pendingStructuresLink: [],
structuresLink: [
mongoose.Types.ObjectId('60059cf7dfb2ac4b00733db0'),
mongoose.Types.ObjectId('6001a48e16b08100062e4180'),
],
structuresLink: [],
phone: '06 06 06 06 06',
newEmail: null,
changeEmailToken: null,
......@@ -24,7 +21,7 @@ module.exports = {
{
structureOutdatedMailSent: [],
pendingStructuresLink: [],
structuresLink: [mongoose.Types.ObjectId('6001a48e16b08100062e4180')],
structuresLink: [mongoose.Types.ObjectId('6001a39c16b08100062e4164')],
newEmail: null,
changeEmailToken: null,
role: 0,
......@@ -39,7 +36,10 @@ module.exports = {
{
structureOutdatedMailSent: [],
pendingStructuresLink: [],
structuresLink: [mongoose.Types.ObjectId('6001a48e16b08100062e4180')],
structuresLink: [
mongoose.Types.ObjectId('6001a38516b08100062e4161'),
mongoose.Types.ObjectId('6001a3aa16b08100062e4166'),
],
newEmail: null,
changeEmailToken: null,
role: 0,
......
......@@ -2,6 +2,11 @@
const mongoose = require('mongoose');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const userData = require('./data/users');
const structuresTypeData = require('./data/structuresType');
const categoriesOthersData = require('./data/categoriesOthers');
const categoriesAccompanementsData = require('./data/categoriesAccompanements');
const categoriesFormationData = require('./data/categoriesFormation');
const structuresData = require('./data/structures');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const bcrypt = require('bcrypt');
// eslint-disable-next-line @typescript-eslint/no-var-requires
......@@ -28,6 +33,13 @@ function hashPassword() {
return bcrypt.hashSync(process.env.USER_PWD, process.env.SALT);
}
const handleError = async (name, err) => {
/* show messages */
if (err) {
if (err.code === 26) console.error(`-- ${name} collection does not exists --`);
else throw err;
} else console.log(`-- ${name} collection dropped --`);
};
// define Schema
var usersSchema = mongoose.Schema({
name: String,
......@@ -45,17 +57,82 @@ var usersSchema = mongoose.Schema({
password: String,
phone: String,
});
var structuresTypeSchema = mongoose.Schema(
{
name: String,
values: [],
},
{ collection: 'structuretype' }
);
var categoriesOthersSchema = mongoose.Schema({
name: String,
id: String,
modules: [],
});
var categoriesAccompanementsSchema = mongoose.Schema({
name: String,
id: String,
modules: [],
});
var categoriesFormationSchema = mongoose.Schema({
name: String,
id: String,
modules: [],
});
var structuresSchema = mongoose.Schema({
numero: String,
createdAt: String,
updatedAt: String,
structureName: String,
structureType: String,
description: String,
lockdownActivity: String,
address: Object,
contactPhone: String,
contactMail: String,
website: String,
facebook: String,
twitter: String,
instagram: String,
linkedin: String,
pmrAccess: Boolean,
accessModality: [],
otherDescription: String,
labelsQualifications: [],
publics: [],
exceptionalClosures: String,
publicsAccompaniment: [],
proceduresAccompaniment: [],
remoteAccompaniment: Boolean,
baseSkills: [],
accessRight: [],
socialAndProfessional: [],
parentingHelp: [],
digitalCultureSecurity: [],
equipmentsAndServices: [],
freeWorkShop: Boolean,
nbComputers: Number,
nbPrinters: Number,
nbTablets: Number,
nbNumericTerminal: Number,
nbScanners: Number,
hours: Object,
coord: [],
deletedAt: Date,
accountVerified: Boolean,
});
// compile schema to model
var User = mongoose.model('Users', usersSchema);
var structuresType = mongoose.model('structureType', structuresTypeSchema);
var categoriesOthers = mongoose.model('categoriesOthers', categoriesOthersSchema);
var categoriesAccompanements = mongoose.model('CategoriesAccompagnement', categoriesAccompanementsSchema);
var categoriesFormation = mongoose.model('categoriesFormation', categoriesFormationSchema);
var structures = mongoose.model('structures', structuresSchema);
/* drop users collections */
mongoose.connection.dropCollection('users', function (err) {
/* show messages */
if (err) {
if (err.code === 26) console.log('-- Users collection does not exists --');
else throw err;
} else console.log('-- Users collection dropped --');
mongoose.connection.dropCollection('users', async (err) => {
await handleError('Users', err);
// Init passsword
console.log('-- Users password encryption based on .env --');
......@@ -66,6 +143,43 @@ mongoose.connection.dropCollection('users', function (err) {
User.create(userData.data, function (error, user) {
if (error) return console.error(error);
console.log('-- Users collection initialized --');
});
});
/* Create structures ref */
mongoose.connection.dropCollection('structuretype', async (err) => {
await handleError('structureType', err);
structuresType.create(structuresTypeData.data, (error) => {
if (error) return console.error(error);
});
});
mongoose.connection.dropCollection('categoriesothers', async (err) => {
await handleError('categoriesOthers', err);
categoriesOthers.create(categoriesOthersData.data, (error) => {
if (error) return console.error(error);
});
});
mongoose.connection.dropCollection('categoriesaccompagnements', async (err) => {
await handleError('categoriesAccompanements', err);
categoriesAccompanements.create(categoriesAccompanementsData.data, (error) => {
if (error) return console.error(error);
});
});
mongoose.connection.dropCollection('categoriesformations', async (err) => {
await handleError('categoriesFormations', err);
categoriesFormation.create(categoriesFormationData.data, (error) => {
if (error) return console.error(error);
});
});
/* Create structures */
mongoose.connection.dropCollection('structures', async (err) => {
await handleError('structures', err);
structures.create(structuresData.data, (error) => {
if (error) return console.error(error);
process.exit(0);
});
});
const axios = require('axios');
const path = require('path');
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
axios
.post('http://localhost:3000/auth/login', {
email: 'admin@admin.com',
password: process.env.USER_PWD,
})
.then((res) => {
const config = {
headers: { Authorization: `Bearer ${res.data.accessToken}` },
};
axios
.post('http://localhost:3000/structures/resetSearchIndex', {}, config)
.then((res) => {
console.log(`statusCode: ${res.status}`);
})
.catch((error) => {
console.error('Error in index create');
console.error(error);
});
})
.catch((error) => {
console.error('Error in auth');
console.error(error);
});
......@@ -190,4 +190,11 @@ describe('AdminController', () => {
}
});
});
it('should get pending structure list for admin', async () => {
expect((await controller.getAdminStructuresList()).inClaim.length).toBe(2);
expect((await controller.getAdminStructuresList()).toClaim.length).toEqual(2);
expect((await controller.getAdminStructuresList()).claimed.length).toEqual(0);
expect((await controller.getAdminStructuresList()).incomplete.length).toEqual(2);
});
});
import { ApiOperation, ApiParam } from '@nestjs/swagger';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { Body, Delete, Param, Controller, Get, Post, UseGuards, HttpStatus, HttpException } from '@nestjs/common';
import {
Body,
Delete,
Param,
Controller,
Get,
Post,
UseGuards,
HttpStatus,
HttpException,
Logger,
} from '@nestjs/common';
import { NewsletterSubscription } from '../newsletter/newsletter-subscription.schema';
import { NewsletterService } from '../newsletter/newsletter.service';
import { StructuresService } from '../structures/services/structures.service';
......@@ -8,9 +19,12 @@ import { Roles } from '../users/decorators/roles.decorator';
import { RolesGuard } from '../users/guards/roles.guard';
import { UsersService } from '../users/users.service';
import { PendingStructureDto } from './dto/pending-structure.dto';
import { validate } from 'class-validator';
import { Structure } from '../structures/schemas/structure.schema';
@Controller('admin')
export class AdminController {
private readonly logger = new Logger(AdminController.name);
constructor(
private usersService: UsersService,
private structuresService: StructuresService,
......@@ -36,12 +50,13 @@ export class AdminController {
@Get('adminStructuresList')
@ApiOperation({ description: 'Get pending structre for validation' })
public async getAdminStructuresList(): Promise<any> {
const structuresList = { claimed: [], inClaim: [], toClaim: [] };
const structuresList = { claimed: [], inClaim: [], toClaim: [], incomplete: [] };
structuresList.inClaim = await this.getPendingAttachments();
structuresList.toClaim = (await this.structuresService.findAllUnclaimed()).filter(
(demand) => !structuresList.inClaim.find((elem) => elem.structureId == demand.structureId)
);
structuresList.claimed = (await this.structuresService.findAll())
const allStructures = await this.structuresService.findAll();
structuresList.claimed = allStructures
.filter(
(demand) =>
!structuresList.inClaim.find((elem) => elem.structureId == demand.id) &&
......@@ -50,9 +65,23 @@ export class AdminController {
.map((structure) => {
return { structureId: structure.id, structureName: structure.structureName };
});
structuresList.incomplete = await Promise.all(
allStructures.map(async (struct) => {
const validity = await validate(new Structure(struct));
if (validity.length > 0) {
this.logger.debug(`getAdminStructuresList - validation failed. errors: ${validity.toString()}`);
return { structureId: struct.id, structureName: struct.structureName };
} else {
this.logger.debug('getAdminStructuresList - validation succeed');
return null;
}
})
);
structuresList.incomplete = structuresList.incomplete.filter((structure) => structure);
structuresList.claimed.sort((a, b) => a.structureName.localeCompare(b.structureName));
structuresList.inClaim.sort((a, b) => a.structureName.localeCompare(b.structureName));
structuresList.toClaim.sort((a, b) => a.structureName.localeCompare(b.structureName));
structuresList.incomplete.sort((a, b) => a.structureName.localeCompare(b.structureName));
return structuresList;
}
......
import { Db } from 'mongodb';
import { getDb } from '../migrations-utils/db';
export const up = async () => {
const db: Db = await getDb();
const cursor = db.collection('categoriesothers').find({});
let document;
while ((document = await cursor.next())) {
if (document.id == 'equipmentsAndServices') {
const newDoc = updateLabel(document);
await db.collection('categoriesothers').updateOne({ _id: document._id }, [{ $set: newDoc }]);
}
}
console.log(`Update done`);
};
export const down = async () => {
const db: Db = await getDb();
const cursor = db.collection('categoriesothers').find({});
let document;
while ((document = await cursor.next())) {
if (document.id == 'equipmentsAndServices') {
const newDoc = downgradeLabel(document);
await db.collection('categoriesothers').updateOne({ _id: document._id }, [{ $set: newDoc }]);
}
}
console.log(`Update done`);
};
function updateLabel(doc) {
if (doc.modules) {
doc.modules.push({
id: 'venteMaterielPrixSolidaire',
text: 'Vente de matériel à prix solidaire',
});
}
return doc;
}
function downgradeLabel(doc) {
if (doc.modules) {
doc.modules = doc.modules.filter(function (elem) {
return elem.id != 'venteMaterielPrixSolidaire';
});
}
return doc;
}
import { Db } from 'mongodb';
import { getDb } from '../migrations-utils/db';
export const up = async () => {
const db: Db = await getDb();
const cursor = db.collection('categoriesothers').find({});
let document;
while ((document = await cursor.next())) {
if (document.id == 'labelsQualifications') {
const newDoc = updateText(document);
await db.collection('categoriesothers').updateOne({ _id: document._id }, [{ $set: newDoc }]);
}
}
console.log(`Update done`);
};
export const down = async () => {
const db: Db = await getDb();
const cursor = db.collection('categoriesothers').find({});
let document;
while ((document = await cursor.next())) {
if (document.id == 'labelsQualifications') {
const newDoc = downgradeText(document);
await db.collection('categoriesothers').updateOne({ _id: document._id }, [{ $set: newDoc }]);
}
}
console.log(`Update done`);
};
function updateText(doc) {
doc.modules = doc.modules.filter((elem) => elem.id !== 'maisonFranceService');
doc.modules.push({
id: 'maisonFranceService',
text: 'Maison France services',
});
return doc;
}
function downgradeText(doc) {
doc.modules = doc.modules.filter((elem) => elem.id !== 'maisonFranceService');
doc.modules.push({
id: 'maisonFranceService',
text: 'Maison France Service',
});
return doc;
}
import { Controller, Get, HttpException, HttpService, HttpStatus, Param, Query } from '@nestjs/common';
import { Controller, Get, HttpException, HttpService, HttpStatus, Logger, Param, Query } from '@nestjs/common';
import { Observable } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
import { ApiQuery } from '@nestjs/swagger';
......@@ -36,7 +36,8 @@ export class PostsController {
.pipe(
map((response) => response.data),
catchError((err) => {
throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST);
Logger.error(err);
throw new HttpException('Invalid ghost configuration', HttpStatus.BAD_REQUEST);
})
);
return new Promise((resolve) => {
......
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Type } from 'class-transformer';
import { ArrayNotEmpty, IsNotEmpty, ValidateNested } from 'class-validator';
import { Document } from 'mongoose';
import { Address } from './address.schema';
import { Week } from './week.schema';
......@@ -7,6 +9,50 @@ export type StructureDocument = Structure & Document;
@Schema({ timestamps: true })
export class Structure {
constructor(data: Partial<Structure> = {}) {
this.structureName = data.structureName;
this.createdAt = data.createdAt;
this.updatedAt = data.updatedAt;
this.numero = data.numero;
this.structureType = data.structureType;
this.description = data.description;
this.lockdownActivity = data.lockdownActivity;
this.address = data.address;
this.contactPhone = data.contactPhone;
this.contactMail = data.contactMail;
this.website = data.website;
this.facebook = data.facebook;
this.twitter = data.twitter;
this.instagram = data.instagram;
this.linkedin = data.linkedin;
this.pmrAccess = data.pmrAccess;
this.accessModality = data.accessModality;
this.otherDescription = data.otherDescription;
this.labelsQualifications = data.labelsQualifications;
this.publics = data.publics;
this.exceptionalClosures = data.exceptionalClosures;
this.publicsAccompaniment = data.publicsAccompaniment;
this.proceduresAccompaniment = data.proceduresAccompaniment;
this.remoteAccompaniment = data.remoteAccompaniment;
this.baseSkills = data.baseSkills;
this.accessRight = data.accessRight;
this.socialAndProfessional = data.socialAndProfessional;
this.parentingHelp = data.parentingHelp;
this.exceptionalClosures = data.exceptionalClosures;
this.digitalCultureSecurity = data.digitalCultureSecurity;
this.equipmentsAndServices = data.equipmentsAndServices;
this.freeWorkShop = data.freeWorkShop;
this.nbTablets = data.nbTablets;
this.nbPrinters = data.nbPrinters;
this.nbComputers = data.nbComputers;
this.nbNumericTerminal = data.nbNumericTerminal;
this.nbScanners = data.nbScanners;
this.hours = data.hours;
this.coord = data.coord;
this.deletedAt = data.deletedAt;
this.accountVerified = data.accountVerified;
}
@Prop()
numero: string;
......@@ -17,9 +63,11 @@ export class Structure {
updatedAt: string;
@Prop()
@IsNotEmpty()
structureName: string;
@Prop()
@IsNotEmpty()
structureType: string;
@Prop()
......@@ -29,13 +77,18 @@ export class Structure {
lockdownActivity: string;
@Prop()
@ValidateNested({ each: true })
@Type(() => Address)
address: Address;
@Prop()
@IsNotEmpty()
contactPhone: string;
@Prop()
@IsNotEmpty()
contactMail: string;
@Prop()
website: string;
......@@ -52,9 +105,11 @@ export class Structure {
linkedin: string;
@Prop()
@IsNotEmpty()
pmrAccess: boolean;
@Prop()
@ArrayNotEmpty()
accessModality: string[];
@Prop()
......@@ -64,6 +119,7 @@ export class Structure {
labelsQualifications: string[];
@Prop()
@ArrayNotEmpty()
publics: string[];
@Prop()
......@@ -76,6 +132,7 @@ export class Structure {
proceduresAccompaniment: string[];
@Prop()
@IsNotEmpty()
remoteAccompaniment: boolean;
@Prop()
......@@ -97,21 +154,26 @@ export class Structure {
equipmentsAndServices: string[];
@Prop()
@IsNotEmpty()
freeWorkShop: boolean;
@Prop()
nbComputers: number;
@Prop()
@IsNotEmpty()
nbPrinters: number;
@Prop()
@IsNotEmpty()
nbTablets: number;
@Prop()
@IsNotEmpty()
nbNumericTerminal: number;
@Prop()
@IsNotEmpty()
nbScanners: number;
@Prop()
......
......@@ -33,6 +33,7 @@ export class StructuresService {
) {}
async initiateStructureIndex(): Promise<StructureDocument[]> {
Logger.log('Reset structures indexes');
await this.structuresSearchService.dropIndex();
await this.structuresSearchService.createStructureIndex();
return this.populateES();
......@@ -563,7 +564,10 @@ export class StructuresService {
if (!structure) {
throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST);
}
const owners = await this.userService.getStructureOwnersMails(idStructure, emailUser);
const owners =
typeof emailUser == 'undefined'
? await this.userService.getStructureOwnersMails(structure._id, '')
: await this.userService.getStructureOwnersMails(structure._id, emailUser);
return { structure: structure, owners: owners };
}
......