Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ce3053c0ba | |||
| 6608456c68 | |||
| 1cbe5a1614 | |||
| 9584bfed8b | |||
| 0839ff6359 | |||
| 4739193709 | |||
| 0ade57536e | |||
| d17108f4b9 | |||
| 3c42ca3042 | |||
| 073433f308 | |||
| 8bac1fadd6 | |||
| a478081727 | |||
| b1978e796f | |||
| c51ec74d30 | |||
| b8f0d1fa60 | |||
| 96886c74bc | |||
| 8d3cc34395 | |||
| 85519bc2e4 | |||
| ed02306738 | |||
| 31a59500fa | |||
| d01b4a0b99 | |||
| d9919404b5 | |||
| b180e04045 | |||
| 7f28525ec2 | |||
| 677bd86133 | |||
| b612562d34 | |||
| e9d3574599 | |||
| 9dd62cefa9 | |||
| 0797c678c8 | |||
| 5e4d6f44da | |||
| 885765ac71 | |||
| 03ed6d5bc1 | |||
| 4e1e124d0d | |||
| 19fbf50f6f | |||
| 21b5e048ed | |||
| c012b4943d | |||
| 7c23dba493 | |||
| ba566bcc33 | |||
| a386c5bef8 | |||
| 1ca5d3ea07 | |||
| fd8b7e56da | |||
| 55877de2aa | |||
| d1a29c1cbb |
46
.drone.yml
46
.drone.yml
@@ -1,6 +1,27 @@
|
|||||||
|
---
|
||||||
|
kind: secret
|
||||||
|
name: docker_username
|
||||||
|
get:
|
||||||
|
path: odit-registry-builder
|
||||||
|
name: username
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: secret
|
||||||
|
name: docker_password
|
||||||
|
get:
|
||||||
|
path: odit-registry-builder
|
||||||
|
name: password
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: secret
|
||||||
|
name: git_ssh
|
||||||
|
get:
|
||||||
|
path: odit-git-bot
|
||||||
|
name: sshkey
|
||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: kubernetes
|
||||||
name: build:dev
|
name: build:dev
|
||||||
clone:
|
clone:
|
||||||
disable: true
|
disable: true
|
||||||
@@ -16,13 +37,14 @@ steps:
|
|||||||
depends_on: [clone]
|
depends_on: [clone]
|
||||||
settings:
|
settings:
|
||||||
username:
|
username:
|
||||||
from_secret: DOCKER_REGISTRY_USER
|
from_secret: docker_username
|
||||||
password:
|
password:
|
||||||
from_secret: DOCKER_REGISTRY_PASSWORD
|
from_secret: docker_password
|
||||||
repo: registry.odit.services/lfk/document-server
|
repo: registry.odit.services/lfk/document-server
|
||||||
tags:
|
tags:
|
||||||
- dev
|
- dev
|
||||||
registry: registry.odit.services
|
registry: registry.odit.services
|
||||||
|
mtu: 1000
|
||||||
- name: run changelog export
|
- name: run changelog export
|
||||||
depends_on: ["clone"]
|
depends_on: ["clone"]
|
||||||
image: node:latest
|
image: node:latest
|
||||||
@@ -38,7 +60,7 @@ steps:
|
|||||||
author_email: bot@odit.services
|
author_email: bot@odit.services
|
||||||
remote: git@git.odit.services:lfk/document-server.git
|
remote: git@git.odit.services:lfk/document-server.git
|
||||||
ssh_key:
|
ssh_key:
|
||||||
from_secret: GITLAB_SSHKEY
|
from_secret: git_ssh
|
||||||
- name: run full license export
|
- name: run full license export
|
||||||
depends_on: ["clone"]
|
depends_on: ["clone"]
|
||||||
image: node:14.15.1-alpine3.12
|
image: node:14.15.1-alpine3.12
|
||||||
@@ -56,7 +78,7 @@ steps:
|
|||||||
remote: git@git.odit.services:lfk/document-server.git
|
remote: git@git.odit.services:lfk/document-server.git
|
||||||
skip_verify: true
|
skip_verify: true
|
||||||
ssh_key:
|
ssh_key:
|
||||||
from_secret: GITLAB_SSHKEY
|
from_secret: git_ssh
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
@@ -66,7 +88,7 @@ trigger:
|
|||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: kubernetes
|
||||||
name: build:latest
|
name: build:latest
|
||||||
clone:
|
clone:
|
||||||
disable: true
|
disable: true
|
||||||
@@ -84,9 +106,9 @@ steps:
|
|||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
username:
|
username:
|
||||||
from_secret: DOCKER_REGISTRY_USER
|
from_secret: docker_username
|
||||||
password:
|
password:
|
||||||
from_secret: DOCKER_REGISTRY_PASSWORD
|
from_secret: docker_password
|
||||||
repo: registry.odit.services/lfk/document-server
|
repo: registry.odit.services/lfk/document-server
|
||||||
tags:
|
tags:
|
||||||
- latest
|
- latest
|
||||||
@@ -99,7 +121,7 @@ steps:
|
|||||||
commit: false
|
commit: false
|
||||||
remote: git@git.odit.services:lfk/document-server.git
|
remote: git@git.odit.services:lfk/document-server.git
|
||||||
ssh_key:
|
ssh_key:
|
||||||
from_secret: GITLAB_SSHKEY
|
from_secret: git_ssh
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
@@ -109,7 +131,7 @@ trigger:
|
|||||||
|
|
||||||
---
|
---
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: docker
|
type: kubernetes
|
||||||
name: build:tags
|
name: build:tags
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -118,9 +140,9 @@ steps:
|
|||||||
depends_on: [clone]
|
depends_on: [clone]
|
||||||
settings:
|
settings:
|
||||||
username:
|
username:
|
||||||
from_secret: DOCKER_REGISTRY_USER
|
from_secret: docker_username
|
||||||
password:
|
password:
|
||||||
from_secret: DOCKER_REGISTRY_PASSWORD
|
from_secret: docker_password
|
||||||
repo: registry.odit.services/lfk/document-server
|
repo: registry.odit.services/lfk/document-server
|
||||||
tags:
|
tags:
|
||||||
- '${DRONE_TAG}'
|
- '${DRONE_TAG}'
|
||||||
|
|||||||
61
CHANGELOG.md
61
CHANGELOG.md
@@ -2,22 +2,75 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [v0.4.2](https://git.odit.services/lfk/document-server/compare/v0.4.0...v0.4.2)
|
||||||
|
|
||||||
|
- 🚀Bumped version to v0.4.1 [`d17108f`](https://git.odit.services/lfk/document-server/commit/d17108f4b9f041727afcee5c171d5d8f9a3c677c)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`0ade575`](https://git.odit.services/lfk/document-server/commit/0ade57536e372a62356fe2f329f6cfe04bcfc397)
|
||||||
|
- Fixed faulty object mapping [`9584bfe`](https://git.odit.services/lfk/document-server/commit/9584bfed8ba5b8c856b55aa90969874d4d6751ff)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`8bac1fa`](https://git.odit.services/lfk/document-server/commit/8bac1fadd6b4257e5062a1b1673e122c5b535046)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`b8f0d1f`](https://git.odit.services/lfk/document-server/commit/b8f0d1fa60da4e3262623cecf4a78c8a9a322f8c)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`073433f`](https://git.odit.services/lfk/document-server/commit/073433f308f2f8e7ada97dd0b3896fb541e85711)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`a478081`](https://git.odit.services/lfk/document-server/commit/a47808172797e12800c46d17ccf4b458f4a506de)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`0839ff6`](https://git.odit.services/lfk/document-server/commit/0839ff63593cfb9e8339b2b2a86dbe7e2afb5dcb)
|
||||||
|
- Now using our own images to build stuff 🚀 [`96886c7`](https://git.odit.services/lfk/document-server/commit/96886c74bc397e1ee793e83e0d01a6bbaa953da3)
|
||||||
|
- 🚀Bumped version to v0.4.2 [`1cbe5a1`](https://git.odit.services/lfk/document-server/commit/1cbe5a1614c40fbf23f032be60039ddb1472ca94)
|
||||||
|
- Emergency bugfixes 🐞 [`3c42ca3`](https://git.odit.services/lfk/document-server/commit/3c42ca30427174c21e0db6426d8f0d91a1ebc501)
|
||||||
|
- Let's try the mtu fix [`c51ec74`](https://git.odit.services/lfk/document-server/commit/c51ec74d30334b156668de4719c77f2e9c6d023f)
|
||||||
|
|
||||||
|
#### [v0.4.0](https://git.odit.services/lfk/document-server/compare/v0.3.3...v0.4.0)
|
||||||
|
|
||||||
|
> 14 March 2021
|
||||||
|
|
||||||
|
- Merge pull request 'Alpha Release 0.4.0' (#38) from dev into main [`8d3cc34`](https://git.odit.services/lfk/document-server/commit/8d3cc34395922a271da1032310da6ec6f7a164f7)
|
||||||
|
- Updated ci with new kubernetes secrets 🚀🚀🚀 [`b180e04`](https://git.odit.services/lfk/document-server/commit/b180e0404537404d0564453fde5976f4de672a8b)
|
||||||
|
- Updated styleing [`03ed6d5`](https://git.odit.services/lfk/document-server/commit/03ed6d5bc18c5b26edd7b1d698c9de936e008f32)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`b612562`](https://git.odit.services/lfk/document-server/commit/b612562d347f5fafcf4ce94a4508b7c0bb9370c6)
|
||||||
|
- 🚀Bumped version to v0.4.0 [`85519bc`](https://git.odit.services/lfk/document-server/commit/85519bc2e4e8906732dc5f99e417014a14bad7d0)
|
||||||
|
- Merge pull request 'Configureable contracts amount feature/35-contracts_per_runner' (#37) from feature/35-contracts_per_runner into dev [`ed02306`](https://git.odit.services/lfk/document-server/commit/ed023067386551dc92d60ba63dff8bc4cc44ce00)
|
||||||
|
- Added disclaimer to template [`4e1e124`](https://git.odit.services/lfk/document-server/commit/4e1e124d0dc08f96aeb05dd1c975064fe785b80f)
|
||||||
|
- Changed ci pipeline type to kubernetes [`677bd86`](https://git.odit.services/lfk/document-server/commit/677bd861335302269baec96a59916475bbdd405f)
|
||||||
|
- Added config for amount of contracts per runner [`d01b4a0`](https://git.odit.services/lfk/document-server/commit/d01b4a0b99f3c1aa088b02d766d21bfb6b9e3a29)
|
||||||
|
- Added logic for generateing multiple contracts per runner [`d991940`](https://git.odit.services/lfk/document-server/commit/d9919404b5b90151318d20258a273ca6c7640393)
|
||||||
|
- MAde disclaimer configurable via env [`5e4d6f4`](https://git.odit.services/lfk/document-server/commit/5e4d6f44dab581483135594432bd8c8d65ba74ef)
|
||||||
|
- MAde disclaimer configurable via env [`885765a`](https://git.odit.services/lfk/document-server/commit/885765ac71b6a65c869ee841c383667f4947dcde)
|
||||||
|
- Documented the new config var [`31a5950`](https://git.odit.services/lfk/document-server/commit/31a59500fa77f1ad7c54fa297d00c8707ae6db9c)
|
||||||
|
- Merge pull request 'Configurable sponsoring disclaimer feature/33-disclaimer' (#34) from feature/33-disclaimer into dev [`e9d3574`](https://git.odit.services/lfk/document-server/commit/e9d35745997a9e948509ea67b59f5a7658f9d652)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`19fbf50`](https://git.odit.services/lfk/document-server/commit/19fbf50f6f6057c5321a999b6551d05db32b5fd8)
|
||||||
|
- Added reamde entry for the new env var [`9dd62ce`](https://git.odit.services/lfk/document-server/commit/9dd62cefa94bf3f0bf8e77fd25e7ca1ec4b30e2b)
|
||||||
|
|
||||||
|
#### [v0.3.3](https://git.odit.services/lfk/document-server/compare/v0.3.2...v0.3.3)
|
||||||
|
|
||||||
|
> 19 February 2021
|
||||||
|
|
||||||
|
- Merge pull request 'Alpha Release 0.3.3 - Download options' (#32) from dev into main [`21b5e04`](https://git.odit.services/lfk/document-server/commit/21b5e048ed5ed72f88304e5c737639c54cc71483)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`d1a29c1`](https://git.odit.services/lfk/document-server/commit/d1a29c1cbb8845a1adf8a414d158ebcabd48dc04)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`fd8b7e5`](https://git.odit.services/lfk/document-server/commit/fd8b7e56da4a1601141f63627e3990660c521ea6)
|
||||||
|
- Added download option to cards [`1ca5d3e`](https://git.odit.services/lfk/document-server/commit/1ca5d3ea078ef51818657e2b3c9f114c67bff86d)
|
||||||
|
- Added download header [`55877de`](https://git.odit.services/lfk/document-server/commit/55877de2aa46583f30d033467037e0454d1236be)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`c012b49`](https://git.odit.services/lfk/document-server/commit/c012b4943d96ee3a9442c65389c4dcea08642109)
|
||||||
|
- 🚀Bumped version to v0.3.3 [`ba566bc`](https://git.odit.services/lfk/document-server/commit/ba566bcc33ed920324cd9977b3f293a2c629f92c)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`a386c5b`](https://git.odit.services/lfk/document-server/commit/a386c5bef88da29e4447399d4edca0234b674ed5)
|
||||||
|
|
||||||
#### [v0.3.2](https://git.odit.services/lfk/document-server/compare/v0.3.0...v0.3.2)
|
#### [v0.3.2](https://git.odit.services/lfk/document-server/compare/v0.3.0...v0.3.2)
|
||||||
|
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`cc6a53b`](https://git.odit.services/lfk/document-server/commit/cc6a53b25895594874acca370a1439d37bb280de)
|
> 18 February 2021
|
||||||
- 🚀Bumped version to v0.3.2 [`a9019e4`](https://git.odit.services/lfk/document-server/commit/a9019e4c67e7620b65650d60b0ebd57bc11a854e)
|
|
||||||
- Merge pull request 'Now using full group names feature/18-group_names' (#30) from feature/18-group_names into dev [`e0db6f6`](https://git.odit.services/lfk/document-server/commit/e0db6f6a78d0026a8485a57c88af1e9407bd68a4)
|
- Merge pull request 'Alpha Release 0.3.2' (#31) from dev into main [`e6f7dd2`](https://git.odit.services/lfk/document-server/commit/e6f7dd2be8d729f5fc7fbb458cc859b113f5aa86)
|
||||||
- 🚀Bumped version to v0.3.1 [`dcde424`](https://git.odit.services/lfk/document-server/commit/dcde424b77dcc9753859f94f7bcbe24fe3523c27)
|
- 🚀Bumped version to v0.3.1 [`dcde424`](https://git.odit.services/lfk/document-server/commit/dcde424b77dcc9753859f94f7bcbe24fe3523c27)
|
||||||
- 📖New license file version [CI SKIP] [skip ci] [`92c5240`](https://git.odit.services/lfk/document-server/commit/92c52401b398f6a2f247c10879e17f6dc105aa8e)
|
- 📖New license file version [CI SKIP] [skip ci] [`92c5240`](https://git.odit.services/lfk/document-server/commit/92c52401b398f6a2f247c10879e17f6dc105aa8e)
|
||||||
- Now manually parsing runnergroup full names [`c290908`](https://git.odit.services/lfk/document-server/commit/c2909082a2dbb38041ae0fc695bd0fa1451b39ff)
|
- Now manually parsing runnergroup full names [`c290908`](https://git.odit.services/lfk/document-server/commit/c2909082a2dbb38041ae0fc695bd0fa1451b39ff)
|
||||||
- Implemented basic auth [`bdeadd2`](https://git.odit.services/lfk/document-server/commit/bdeadd274bc0f9c8cbab35a8a5605bef4c22ba6c)
|
- Implemented basic auth [`bdeadd2`](https://git.odit.services/lfk/document-server/commit/bdeadd274bc0f9c8cbab35a8a5605bef4c22ba6c)
|
||||||
- 📖New license file version [CI SKIP] [skip ci] [`9d7d044`](https://git.odit.services/lfk/document-server/commit/9d7d0443848522e5bdfdb6a80c836bea4bc200a1)
|
- 📖New license file version [CI SKIP] [skip ci] [`9d7d044`](https://git.odit.services/lfk/document-server/commit/9d7d0443848522e5bdfdb6a80c836bea4bc200a1)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`cc6a53b`](https://git.odit.services/lfk/document-server/commit/cc6a53b25895594874acca370a1439d37bb280de)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`e306cdb`](https://git.odit.services/lfk/document-server/commit/e306cdb2c8e58fc1aef79b95cba5d4cc96ac7658)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`e306cdb`](https://git.odit.services/lfk/document-server/commit/e306cdb2c8e58fc1aef79b95cba5d4cc96ac7658)
|
||||||
- Added auth to openapi spec [`729f2d7`](https://git.odit.services/lfk/document-server/commit/729f2d7240b54ffe2d4db36cce29de0afdfc9417)
|
- Added auth to openapi spec [`729f2d7`](https://git.odit.services/lfk/document-server/commit/729f2d7240b54ffe2d4db36cce29de0afdfc9417)
|
||||||
- Pinned routing controllers version as temp workaround for routing controllers openapi being broken again [`7ca7266`](https://git.odit.services/lfk/document-server/commit/7ca7266ea46965251c9df637a2556f2a1706e7e6)
|
- Pinned routing controllers version as temp workaround for routing controllers openapi being broken again [`7ca7266`](https://git.odit.services/lfk/document-server/commit/7ca7266ea46965251c9df637a2556f2a1706e7e6)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`adf11ab`](https://git.odit.services/lfk/document-server/commit/adf11ab1c356b6964230541331836abd363170b0)
|
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`b7c6c6e`](https://git.odit.services/lfk/document-server/commit/b7c6c6e15708e471f5c3d0ca4cf11b1c08c88c9c)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`b7c6c6e`](https://git.odit.services/lfk/document-server/commit/b7c6c6e15708e471f5c3d0ca4cf11b1c08c88c9c)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`95099c5`](https://git.odit.services/lfk/document-server/commit/95099c5fbd7e6cb07c68151a998eebb0f00556f3)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`95099c5`](https://git.odit.services/lfk/document-server/commit/95099c5fbd7e6cb07c68151a998eebb0f00556f3)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`49590b8`](https://git.odit.services/lfk/document-server/commit/49590b897ed5ee5c9386d34408ac6868f43cc27c)
|
||||||
|
- 🚀Bumped version to v0.3.2 [`a9019e4`](https://git.odit.services/lfk/document-server/commit/a9019e4c67e7620b65650d60b0ebd57bc11a854e)
|
||||||
|
- Merge pull request 'Now using full group names feature/18-group_names' (#30) from feature/18-group_names into dev [`e0db6f6`](https://git.odit.services/lfk/document-server/commit/e0db6f6a78d0026a8485a57c88af1e9407bd68a4)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`adf11ab`](https://git.odit.services/lfk/document-server/commit/adf11ab1c356b6964230541331836abd363170b0)
|
||||||
- Updated templates with full group name [`0fcfb30`](https://git.odit.services/lfk/document-server/commit/0fcfb30d5c13266ca4faf7697308dfb7a0f91b4f)
|
- Updated templates with full group name [`0fcfb30`](https://git.odit.services/lfk/document-server/commit/0fcfb30d5c13266ca4faf7697308dfb7a0f91b4f)
|
||||||
- Merge pull request 'Alpha Release 0.3.1 - API Keys' (#29) from dev into main [`db91661`](https://git.odit.services/lfk/document-server/commit/db916615564813e8d21e3672581e4f3a4d748b89)
|
- Merge pull request 'Alpha Release 0.3.1 - API Keys' (#29) from dev into main [`db91661`](https://git.odit.services/lfk/document-server/commit/db916615564813e8d21e3672581e4f3a4d748b89)
|
||||||
- Merge pull request 'API Key based auth feature/26-api_auth' (#27) from feature/26-api_auth into dev [`2d031da`](https://git.odit.services/lfk/document-server/commit/2d031dae035866a4aa247398ea68ff338ab58cbd)
|
- Merge pull request 'API Key based auth feature/26-api_auth' (#27) from feature/26-api_auth into dev [`2d031da`](https://git.odit.services/lfk/document-server/commit/2d031dae035866a4aa247398ea68ff338ab58cbd)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Typescript Build
|
# Typescript Build
|
||||||
FROM registry.odit.services/mirror/node:14.15.1-alpine3.12
|
FROM registry.odit.services/hub/library/node:14.15.1-alpine3.12
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json ./
|
COPY package.json ./
|
||||||
RUN npm i -g pnpm
|
RUN npm i -g pnpm
|
||||||
@@ -8,7 +8,7 @@ COPY tsconfig.json ./
|
|||||||
COPY src ./src
|
COPY src ./src
|
||||||
RUN pnpm run build
|
RUN pnpm run build
|
||||||
# final image
|
# final image
|
||||||
FROM registry.odit.services/mirror/alpine:3.13.1
|
FROM registry.odit.services/hub/library/alpine:3.13.1
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
chromium \
|
chromium \
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ The basic generation mechanism makes the templates and routes interchangeable (i
|
|||||||
| SPONSORING_RECEIPT_MINIMUM_AMOUNT | String | "10" | The mimimum total donation amount a sponsor has to donate to be able to receive a donation receipt - used to generate pdf text.
|
| SPONSORING_RECEIPT_MINIMUM_AMOUNT | String | "10" | The mimimum total donation amount a sponsor has to donate to be able to receive a donation receipt - used to generate pdf text.
|
||||||
| SPONOR_LOGOS | Array<String> | Empty png | The sponsor images you want to loop through. You can provide them via http url, local file or base64-encoded image.
|
| SPONOR_LOGOS | Array<String> | Empty png | The sponsor images you want to loop through. You can provide them via http url, local file or base64-encoded image.
|
||||||
| API_KEY | String(min length: 64) | Random generated string | The api key you want to use for auth (query-param `key`), has to be at least 64 chars long.
|
| API_KEY | String(min length: 64) | Random generated string | The api key you want to use for auth (query-param `key`), has to be at least 64 chars long.
|
||||||
|
| DISCLAIMER_TEXT | String | N/A | A disclaimer that will get displayed on the bottom of each sponsoring contract. R/N You can only provide the disclaimer for one language.
|
||||||
|
| CONTRACTS_PER_RUNNER | Number | 1 | The amount of contracts that get created per runner (per request).
|
||||||
|
|
||||||
## Templates
|
## Templates
|
||||||
> The document server uses html templates to generate various pdf documents.
|
> The document server uses html templates to generate various pdf documents.
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
version: "3"
|
version: "3"
|
||||||
services:
|
services:
|
||||||
document_server:
|
document_server:
|
||||||
build: .
|
build: .
|
||||||
ports:
|
ports:
|
||||||
- 4010:4010
|
- 4010:4010
|
||||||
environment:
|
environment:
|
||||||
APP_PORT: 4010
|
APP_PORT: 4010
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
|
EVENT_NAME: "Lauf für Kaya! 2021"
|
||||||
|
CURRENCY_SYMBOL: "€"
|
||||||
|
API_KEY: RYRccAJ4SKZnZaEci6Nyk9Z6mw3sD94fyKJ74WNzi6hLkxGNyJDrKPkxBmPwvR4f
|
||||||
|
CONTRACTS_PER_RUNNER: 2
|
||||||
|
SPONSORING_RECEIPT_MINIMUM_AMOUNT: 50
|
||||||
|
DISCLAIMER_TEXT: "Rechtsgrundlage unserer Datenverarbeitung aufgrund freiwilliger Einwilligung ist Art. 6 Abs. 1 e), Abs. 3 DSGVO i.V.m. Art. 85 BayEUG. Mit Ihrer Unterschrift willigen Sie in unsere Datennutzung zum Zwecke des Lauf für Kaya! ein. Die Daten für Spendenquittungen"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-document-server",
|
"name": "@odit/lfk-document-server",
|
||||||
"version": "0.3.2",
|
"version": "0.4.2",
|
||||||
"description": "The document generation server for the LfK! runner system. This generates certificates, sponsoring aggreements and more",
|
"description": "The document generation server for the LfK! runner system. This generates certificates, sponsoring aggreements and more",
|
||||||
"main": "src/app.ts",
|
"main": "src/app.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export class PdfCreator {
|
|||||||
private templateDir = path.join(__dirname, '/templates');
|
private templateDir = path.join(__dirname, '/templates');
|
||||||
private browser;
|
private browser;
|
||||||
private static interpolations = { eventname: config.eventname, sponsoring_receipt_minimum_amount: config.sponsoring_receipt_minimum_amount, currency_symbol: config.currency_symbol }
|
private static interpolations = { eventname: config.eventname, sponsoring_receipt_minimum_amount: config.sponsoring_receipt_minimum_amount, currency_symbol: config.currency_symbol }
|
||||||
|
private static contractsPerRunner = config.contracts_per_runner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main constructor.
|
* Main constructor.
|
||||||
@@ -108,6 +109,11 @@ export class PdfCreator {
|
|||||||
if (runners.length == 1 && Object.keys(runners[0]).length == 0) {
|
if (runners.length == 1 && Object.keys(runners[0]).length == 0) {
|
||||||
runners[0] = this.generateEmptyRunner();
|
runners[0] = this.generateEmptyRunner();
|
||||||
}
|
}
|
||||||
|
for (var i = 1; i < PdfCreator.contractsPerRunner; i++) {
|
||||||
|
runners = runners.reduce(function (res, current, index, array) {
|
||||||
|
return res.concat([current, current]);
|
||||||
|
}, []);
|
||||||
|
}
|
||||||
if (runners.length > 50) {
|
if (runners.length > 50) {
|
||||||
let pdf_promises = new Array<Promise<Buffer>>();
|
let pdf_promises = new Array<Promise<Buffer>>();
|
||||||
let i, j;
|
let i, j;
|
||||||
@@ -121,7 +127,7 @@ export class PdfCreator {
|
|||||||
await i18next.changeLanguage(locale);
|
await i18next.changeLanguage(locale);
|
||||||
const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8');
|
const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8');
|
||||||
const template = Handlebars.compile(template_source);
|
const template = Handlebars.compile(template_source);
|
||||||
let result = template({ runners, codeformat });
|
let result = template({ runners, codeformat, disclaimer: config.disclaimer_text });
|
||||||
result = await awaitAsyncHandlebarHelpers(result);
|
result = await awaitAsyncHandlebarHelpers(result);
|
||||||
const pdf = await this.renderPdf(result, { format: "A5", landscape: true });
|
const pdf = await this.renderPdf(result, { format: "A5", landscape: true });
|
||||||
return pdf
|
return pdf
|
||||||
|
|||||||
@@ -12,11 +12,16 @@ export const config = {
|
|||||||
codeformat: process.env.CODEFORMAT || "qrcode",
|
codeformat: process.env.CODEFORMAT || "qrcode",
|
||||||
sponor_logos: getSponsorLogos(),
|
sponor_logos: getSponsorLogos(),
|
||||||
api_key: getApiKey(),
|
api_key: getApiKey(),
|
||||||
|
disclaimer_text: process.env.DISCLAIMER_TEXT || "",
|
||||||
|
contracts_per_runner: parseInt(process.env.CONTRACTS_PER_RUNNER) || 1,
|
||||||
}
|
}
|
||||||
let errors = 0
|
let errors = 0
|
||||||
if (typeof config.internal_port !== "number") {
|
if (typeof config.internal_port !== "number") {
|
||||||
errors++
|
errors++
|
||||||
}
|
}
|
||||||
|
if (typeof config.contracts_per_runner !== "number") {
|
||||||
|
errors++
|
||||||
|
}
|
||||||
if (typeof config.development !== "boolean") {
|
if (typeof config.development !== "boolean") {
|
||||||
errors++
|
errors++
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export class PdfController {
|
|||||||
|
|
||||||
@Post('/contracts')
|
@Post('/contracts')
|
||||||
@OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects.<br>You can choose your prefered locale by passing the 'locale' query-param.<br> If you provide more than 100 runenrs this could take a moment or two (we tested up to 1000 runners in about 70sec so far)." })
|
@OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects.<br>You can choose your prefered locale by passing the 'locale' query-param.<br> If you provide more than 100 runenrs this could take a moment or two (we tested up to 1000 runners in about 70sec so far)." })
|
||||||
async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("codeformat") codeformat: string) {
|
async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("codeformat") codeformat: string, @QueryParam("download") download: boolean) {
|
||||||
if (!this.initialized) {
|
if (!this.initialized) {
|
||||||
await this.pdf.init();
|
await this.pdf.init();
|
||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
@@ -29,12 +29,15 @@ export class PdfController {
|
|||||||
runners = this.mapRunnerGroupNames(runners)
|
runners = this.mapRunnerGroupNames(runners)
|
||||||
const contracts = await this.pdf.generateSponsoringContract(runners, locale, codeformat);
|
const contracts = await this.pdf.generateSponsoringContract(runners, locale, codeformat);
|
||||||
res.setHeader('content-type', 'application/pdf');
|
res.setHeader('content-type', 'application/pdf');
|
||||||
|
if (download) {
|
||||||
|
res.setHeader('Content-Disposition', 'attachment; filename="contracts.pdf"')
|
||||||
|
}
|
||||||
return contracts;
|
return contracts;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('/cards')
|
@Post('/cards')
|
||||||
@OpenAPI({ description: "Generate runner card pdfs from runner card objects.<br>You can choose your prefered locale by passing the 'locale' query-param." })
|
@OpenAPI({ description: "Generate runner card pdfs from runner card objects.<br>You can choose your prefered locale by passing the 'locale' query-param." })
|
||||||
async generateCards(@Body({ validate: true, options: { limit: "500mb" } }) cards: RunnerCard | RunnerCard[], @Res() res: any, @QueryParam("locale") locale: string) {
|
async generateCards(@Body({ validate: true, options: { limit: "500mb" } }) cards: RunnerCard | RunnerCard[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("download") download: boolean) {
|
||||||
if (!this.initialized) {
|
if (!this.initialized) {
|
||||||
await this.pdf.init();
|
await this.pdf.init();
|
||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
@@ -45,6 +48,9 @@ export class PdfController {
|
|||||||
cards = this.mapCardGroupNames(cards);
|
cards = this.mapCardGroupNames(cards);
|
||||||
const contracts = await this.pdf.generateRunnerCards(cards, locale);
|
const contracts = await this.pdf.generateRunnerCards(cards, locale);
|
||||||
res.setHeader('content-type', 'application/pdf');
|
res.setHeader('content-type', 'application/pdf');
|
||||||
|
if (download) {
|
||||||
|
res.setHeader('Content-Disposition', 'attachment; filename="cards.pdf"')
|
||||||
|
}
|
||||||
return contracts;
|
return contracts;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +71,20 @@ export class PdfController {
|
|||||||
private mapCardGroupNames(cards: RunnerCard[]): RunnerCard[] {
|
private mapCardGroupNames(cards: RunnerCard[]): RunnerCard[] {
|
||||||
let response = new Array<RunnerCard>();
|
let response = new Array<RunnerCard>();
|
||||||
for (let card of cards) {
|
for (let card of cards) {
|
||||||
if (!card.runner.group.parentGroup) {
|
if (!card.runner) {
|
||||||
|
card.runner = {
|
||||||
|
id: 0,
|
||||||
|
firstname: "Blank",
|
||||||
|
lastname: "Blank",
|
||||||
|
distance: 0,
|
||||||
|
group: {
|
||||||
|
id: 0,
|
||||||
|
name: "Blank",
|
||||||
|
fullName: "Blank"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!card.runner.group.parentGroup) {
|
||||||
card.runner.group.fullName = card.runner.group.name;
|
card.runner.group.fullName = card.runner.group.name;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -68,8 +68,8 @@
|
|||||||
<p style="font-size: x-small; display: block;">{{__ "group"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "group"}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p>{{__ "sponsoring_amount_per_distance"}}</p>
|
<p style="margin-top: -0.5rem">{{__ "sponsoring_amount_per_distance"}}</p>
|
||||||
<div class="columns">
|
<div class="columns" style="margin-top: -1rem;">
|
||||||
<div class="column is-6">
|
<div class="column is-6">
|
||||||
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
||||||
<p style="font-size: x-small; display: block;">{{__ "lastname"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "lastname"}}</p>
|
||||||
@@ -79,9 +79,9 @@
|
|||||||
<p style="font-size: x-small; display: block;">{{__ "firstname"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "firstname"}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p style="font-size: medium;">{{__ "address"}} ({{__ "sponsor"}})</p>
|
<p style="font-size: medium; margin-top: -0.5rem;">{{__ "address"}} ({{__ "sponsor"}})</p>
|
||||||
<p style="font-size: x-small;">({{__ "sponsoring_address_condition"}})</p>
|
<p style="font-size: x-small;">({{__ "sponsoring_address_condition"}})</p>
|
||||||
<div class="columns">
|
<div class="columns" style="margin-top: -1rem;">
|
||||||
<div class="column is-8">
|
<div class="column is-8">
|
||||||
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
||||||
<p style="font-size: x-small; display: block;">{{__ "street"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "street"}}</p>
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
<p style="font-size: x-small; display: block;">{{__ "house_number"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "house_number"}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="columns">
|
<div class="columns" style="margin-top: -1rem;">
|
||||||
<div class="column is-4">
|
<div class="column is-4">
|
||||||
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
||||||
<p style="font-size: x-small; display: block;">{{__ "postalcode"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "postalcode"}}</p>
|
||||||
@@ -101,8 +101,7 @@
|
|||||||
<p style="font-size: x-small; display: block;">{{__ "city"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "city"}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<div class="columns" style="margin-top: -1rem;">
|
||||||
<div class="columns">
|
|
||||||
<div class="column is-7">
|
<div class="column is-7">
|
||||||
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
<span style="border-bottom: 1px solid; width: 100%; display: block;"> </span>
|
||||||
<p style="font-size: x-small; display: block;">{{__ "location"}}, {{__ "date"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "location"}}, {{__ "date"}}</p>
|
||||||
@@ -112,6 +111,7 @@
|
|||||||
<p style="font-size: x-small; display: block;">{{__ "signature"}}</p>
|
<p style="font-size: x-small; display: block;">{{__ "signature"}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<p style="font-size: xx-small; overflow: hidden; height: 4rem; text-align: center;">{{../disclaimer}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|||||||
Reference in New Issue
Block a user