diff --git a/.env.example b/.env.example index 565a391..5a0dec3 100644 --- a/.env.example +++ b/.env.example @@ -7,4 +7,5 @@ DB_PASSWORD=bla DB_NAME=./test.sqlite NODE_ENV=production POSTALCODE_COUNTRYCODE=DE -SEED_TEST_DATA=false \ No newline at end of file +SEED_TEST_DATA=false +SELFSERVICE_URL=bla \ No newline at end of file diff --git a/README.md b/README.md index cbbfcd0..ea2200f 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ 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) | diff --git a/src/controllers/RunnerSelfServiceController.ts b/src/controllers/RunnerSelfServiceController.ts index ec98eda..5168e0c 100644 --- a/src/controllers/RunnerSelfServiceController.ts +++ b/src/controllers/RunnerSelfServiceController.ts @@ -131,7 +131,7 @@ export class RunnerSelfServiceController { const token = JwtCreator.createSelfService(runner); try { - await Mailer.sendSelfserviceForgottenMail(runner.email, token, locale) + await Mailer.sendSelfserviceForgottenMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, 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, response.token, locale) + await Mailer.sendSelfserviceWelcomeMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, 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, response.token, locale) + await Mailer.sendSelfserviceWelcomeMail(runner.email, runner.id, runner.firstname, runner.middlename, runner.lastname, response.token, locale) } catch (error) { throw new MailSendingError(); } diff --git a/src/mailer.ts b/src/mailer.ts index fae23d1..447df70 100644 --- a/src/mailer.ts +++ b/src/mailer.ts @@ -18,9 +18,19 @@ export class Mailer { */ public static async sendResetMail(to_address: string, token: string, locale: string = "en") { try { - await axios.post(`${Mailer.base}/reset?locale=${locale}&key=${Mailer.key}`, { - address: to_address, - resetKey: token + 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 } + } }); } catch (error) { if (Mailer.testing) { return true; } @@ -32,12 +42,26 @@ 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, token: string, locale: string = "en") { + */ + public static async sendSelfserviceWelcomeMail(to_address: string, runner_id: number, firstname: string, middlename: string, lastname: string, token: string, locale: string = "en") { try { - await axios.post(`${Mailer.base}/registration?locale=${locale}&key=${Mailer.key}`, { - address: to_address, - selfserviceToken: token + 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}` + } + } }); } catch (error) { if (Mailer.testing) { return true; } @@ -49,12 +73,26 @@ 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, token: string, locale: string = "en") { + */ + public static async sendSelfserviceForgottenMail(to_address: string, runner_id: number, firstname: string, middlename: string, lastname: string, token: string, locale: string = "en") { try { - await axios.post(`${Mailer.base}/registration_forgot?locale=${locale}&key=${Mailer.key}`, { - address: to_address, - selfserviceToken: token + 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}` + } + } }); } catch (error) { if (Mailer.testing) { return true; }