Compare commits

..

No commits in common. "1.2.0" and "v1.1.4" have entirely different histories.

8 changed files with 61 additions and 63 deletions

View File

@ -7,5 +7,4 @@ DB_PASSWORD=bla
DB_NAME=./test.sqlite
NODE_ENV=production
POSTALCODE_COUNTRYCODE=DE
SEED_TEST_DATA=false
SELFSERVICE_URL=bla
SEED_TEST_DATA=false

View File

@ -7,11 +7,14 @@ steps:
- latest
registry: registry.odit.services
platforms: linux/amd64,linux/arm64
cache_from: registry.odit.services/lfk/backend:dev
cache_from: registry.odit.services/lfk/backend:latest
username:
from_secret: odit-registry-builder-username
password:
from_secret: odit-registry-builder-password
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
when:
branch: main
- name: build dev
@ -27,6 +30,9 @@ steps:
from_secret: odit-registry-builder-username
password:
from_secret: odit-registry-builder-password
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
when:
branch: dev
when:

View File

@ -7,11 +7,23 @@ steps:
- "${CI_COMMIT_TAG}"
registry: registry.odit.services
platforms: linux/amd64,linux/arm64
cache_from: registry.odit.services/lfk/backend:dev
cache_from: registry.odit.services/lfk/backend:latest
username:
from_secret: odit-registry-builder-username
password:
from_secret: odit-registry-builder-password
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
- name: trigger js lib build
image: woodpeckerci/plugin-trigger
settings:
repositories:
- lfk/lfk-client-js
params:
- "SOURCE_TAG=${CI_COMMIT_TAG}"
token:
from_secret: odit-ci-bot-apikey
when:
event:
- tag
event: tag

13
.woodpecker/testpr.yml Normal file
View File

@ -0,0 +1,13 @@
steps:
- name: playwright tests
image: registry.odit.services/hub/library/node:19.5.0-alpine3.16
commands:
- npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
- pnpm i
- pnpm test:ci
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
when:
event:
- pull_request

View File

@ -35,6 +35,13 @@ pnpm test:watch
pnpm test:ci
```
### Use your own mail templates
> You use your own mail templates by replacing the default ones we provided (either in-code or by mounting them into the /app/static/mail_templates folder).
The mail templates always come in a .html and a .txt variant to provide compatability with legacy mail clients.
Currently the following templates exist:
* pw-reset.(html/txt)
### Generate Docs
```bash
pnpm docs
@ -59,7 +66,6 @@ pnpm docs
| SEED_TEST_DATA | Boolean | False | If you want the app to seed some example data set this to true |
| MAILER_URL | String(Url) | N/A | The mailer's base url (no trailing slash) |
| MAILER_KEY | String | N/A | The mailer's api key. |
| SELFSERVICE_URL | String(Url) | N/A | The link to selfservice (no trailing slash) |
| IMPRINT_URL | String(Url) | /imprint | The link to a imprint page for the system (Defaults to the frontend's imprint) |
| PRIVACY_URL | String(Url) | /privacy | The link to a privacy page for the system (Defaults to the frontend's privacy page) |

View File

@ -1,6 +1,6 @@
{
"name": "@odit/lfk-backend",
"version": "1.2.0",
"version": "1.1.4",
"main": "src/app.ts",
"repository": "https://git.odit.services/lfk/backend",
"engines": {
@ -114,4 +114,4 @@
"docs/*"
]
}
}
}

View File

@ -131,7 +131,7 @@ export class RunnerSelfServiceController {
const token = JwtCreator.createSelfService(runner);
try {
await Mailer.sendSelfserviceForgottenMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, token, locale)
await Mailer.sendSelfserviceForgottenMail(runner.email, token, locale)
} catch (error) {
throw new MailSendingError();
}
@ -157,7 +157,7 @@ export class RunnerSelfServiceController {
response.token = JwtCreator.createSelfService(runner);
try {
await Mailer.sendSelfserviceWelcomeMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, response.token, locale)
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, locale)
} catch (error) {
throw new MailSendingError();
}
@ -182,7 +182,7 @@ export class RunnerSelfServiceController {
response.token = JwtCreator.createSelfService(runner);
try {
await Mailer.sendSelfserviceWelcomeMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, response.token, locale)
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, locale)
} catch (error) {
throw new MailSendingError();
}

View File

@ -18,19 +18,9 @@ export class Mailer {
*/
public static async sendResetMail(to_address: string, token: string, locale: string = "en") {
try {
await axios.request({
method: 'POST',
url: `${Mailer.base}/api/v1/email`,
headers: {
authorization: `Bearer ${Mailer.key}`,
'content-type': 'application/json'
},
data: {
to: to_address,
templateName: 'password-reset',
language: locale,
data: { token: token }
}
await axios.post(`${Mailer.base}/reset?locale=${locale}&key=${Mailer.key}`, {
address: to_address,
resetKey: token
});
} catch (error) {
if (Mailer.testing) { return true; }
@ -42,26 +32,12 @@ export class Mailer {
* Function for sending a runner selfservice welcome mail.
* @param to_address The address the mail will be sent to. Should always get pulled from a runner object.
* @param token The requested selfservice token - will be combined with the app_url to generate a selfservice profile link.
*/
public static async sendSelfserviceWelcomeMail(to_address: string, runner_id: number, firstname: string, middlename: string, lastname: string, token: string, locale: string = "en") {
*/
public static async sendSelfserviceWelcomeMail(to_address: string, token: string, locale: string = "en") {
try {
await axios.request({
method: 'POST',
url: `${Mailer.base}/api/v1/email`,
headers: {
authorization: `Bearer ${Mailer.key}`,
'content-type': 'application/json'
},
data: {
to: to_address,
templateName: 'welcome',
language: locale,
data: {
name: `${firstname} ${middlename} ${lastname}`,
barcode_content: `${runner_id}`,
link: `${process.env.SELFSERVICE_URL}/profile/${token}`
}
}
await axios.post(`${Mailer.base}/registration?locale=${locale}&key=${Mailer.key}`, {
address: to_address,
selfserviceToken: token
});
} catch (error) {
if (Mailer.testing) { return true; }
@ -73,26 +49,12 @@ export class Mailer {
* Function for sending a runner selfservice link forgotten mail.
* @param to_address The address the mail will be sent to. Should always get pulled from a runner object.
* @param token The requested selfservice token - will be combined with the app_url to generate a selfservice profile link.
*/
public static async sendSelfserviceForgottenMail(to_address: string, runner_id: number, firstname: string, middlename: string, lastname: string, token: string, locale: string = "en") {
*/
public static async sendSelfserviceForgottenMail(to_address: string, token: string, locale: string = "en") {
try {
await axios.request({
method: 'POST',
url: `${Mailer.base}/api/v1/email`,
headers: {
authorization: `Bearer ${Mailer.key}`,
'content-type': 'application/json'
},
data: {
to: to_address,
templateName: 'welcome',
language: locale,
data: {
name: `${firstname} ${middlename} ${lastname}`,
barcode_content: `${runner_id}`,
link: `${process.env.SELFSERVICE_URL}/profile/${token}`
}
}
await axios.post(`${Mailer.base}/registration_forgot?locale=${locale}&key=${Mailer.key}`, {
address: to_address,
selfserviceToken: token
});
} catch (error) {
if (Mailer.testing) { return true; }