From 2a4b35bd056a76bee95e510e9e7c134e80d6ec59 Mon Sep 17 00:00:00 2001 From: Tiago Loureiro Date: Mon, 2 Oct 2017 15:02:16 +0200 Subject: [PATCH] Use a different email template when a user creates a team --- services/brig/Procfile | 2 +- services/brig/deb/etc/sv/brig/run | 1 + .../user/ar/email/team-activation-subject.txt | 1 + .../user/ar/email/team-activation.html | 1 + .../user/ar/email/team-activation.txt | 1 + .../user/de/email/team-activation-subject.txt | 1 + .../user/de/email/team-activation.html | 118 +++++++++++++++++ .../user/de/email/team-activation.txt | 24 ++++ .../templates/user/en/email/activation.html | 1 + .../user/en/email/team-activation-subject.txt | 1 + .../user/en/email/team-activation.html | 121 ++++++++++++++++++ .../user/en/email/team-activation.txt | 22 ++++ .../es-ES/email/team-activation-subject.txt | 1 + .../user/es-ES/email/team-activation.html | 1 + .../user/es-ES/email/team-activation.txt | 1 + .../user/et/email/team-activation-subject.txt | 1 + .../user/et/email/team-activation.html | 1 + .../user/et/email/team-activation.txt | 1 + .../user/fa/email/team-activation-subject.txt | 1 + .../user/fa/email/team-activation.html | 1 + .../user/fa/email/team-activation.txt | 1 + .../user/fr/email/team-activation-subject.txt | 1 + .../user/fr/email/team-activation.html | 1 + .../user/fr/email/team-activation.txt | 1 + .../user/it/email/team-activation-subject.txt | 1 + .../user/it/email/team-activation.html | 1 + .../user/it/email/team-activation.txt | 1 + .../pt-BR/email/team-activation-subject.txt | 1 + .../user/pt-BR/email/team-activation.html | 1 + .../user/pt-BR/email/team-activation.txt | 1 + .../user/ru/email/team-activation-subject.txt | 1 + .../user/ru/email/team-activation.html | 1 + .../user/ru/email/team-activation.txt | 1 + .../sv-SE/email/team-activation-subject.txt | 1 + .../user/sv-SE/email/team-activation.html | 1 + .../user/sv-SE/email/team-activation.txt | 1 + .../user/tr/email/team-activation-subject.txt | 1 + .../user/tr/email/team-activation.html | 1 + .../user/tr/email/team-activation.txt | 1 + .../user/uk/email/team-activation-subject.txt | 1 + .../user/uk/email/team-activation.html | 1 + .../user/uk/email/team-activation.txt | 1 + .../zh-TW/email/team-activation-subject.txt | 1 + .../user/zh-TW/email/team-activation.html | 1 + .../user/zh-TW/email/team-activation.txt | 1 + services/brig/src/Brig/API.hs | 8 +- services/brig/src/Brig/Options.hs | 6 + services/brig/src/Brig/User/Email.hs | 44 +++++++ services/brig/src/Brig/User/Template.hs | 28 +++- 49 files changed, 406 insertions(+), 7 deletions(-) create mode 120000 services/brig/deb/opt/brig/templates/user/ar/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/ar/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/ar/email/team-activation.txt create mode 100644 services/brig/deb/opt/brig/templates/user/de/email/team-activation-subject.txt create mode 100644 services/brig/deb/opt/brig/templates/user/de/email/team-activation.html create mode 100644 services/brig/deb/opt/brig/templates/user/de/email/team-activation.txt create mode 100644 services/brig/deb/opt/brig/templates/user/en/email/team-activation-subject.txt create mode 100644 services/brig/deb/opt/brig/templates/user/en/email/team-activation.html create mode 100644 services/brig/deb/opt/brig/templates/user/en/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/et/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/et/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/et/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/fa/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/fa/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/fa/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/fr/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/fr/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/fr/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/it/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/it/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/it/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/ru/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/ru/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/ru/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/tr/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/tr/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/tr/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/uk/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/uk/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/uk/email/team-activation.txt create mode 120000 services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation-subject.txt create mode 120000 services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.html create mode 120000 services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.txt diff --git a/services/brig/Procfile b/services/brig/Procfile index d6b29710c2..411b68e50d 100644 --- a/services/brig/Procfile +++ b/services/brig/Procfile @@ -1 +1 @@ -web: LOG_LEVEL=Warn ./dist/brig --host=$BRIG_WEB_HOST --port=$PORT --cassandra-host=$BRIG_CASSANDRA_HOST --cassandra-port=$BRIG_CASSANDRA_PORT --cassandra-keyspace=$BRIG_CASSANDRA_KEYSPACE --galley-host=$GALLEY_WEB_HOST --galley-port=$GALLEY_WEB_PORT --gundeck-host=$GUNDECK_WEB_HOST --gundeck-port=$GUNDECK_WEB_PORT --aws-ses-queue=$AWS_USER_SES_QUEUE --aws-internal-queue=$AWS_USER_INTERNAL_QUEUE --aws-dynamo-blacklist=$AWS_USER_BLACKLIST_TABLE --aws-dynamo-prekeys=$AWS_USER_PREKEYS_TABLE --aws-account-id=$AWS_ACCOUNT --aws-access-key-id=$AWS_ACCESS_KEY_ID --aws-secret-access-key=$AWS_SECRET_ACCESS_KEY --twilio-sid=$TWILIO_SID --twilio-token=$TWILIO_TOKEN --twilio-sender=$TWILIO_SENDER --nexmo-key=$NEXMO_KEY --nexmo-secret=$NEXMO_SECRET --nexmo-endpoint=$NEXMO_ENDPOINT --activation-url=http://$BRIG_WEB_HOST:$PORT/activate?key=\${key}\&code=\${code} --sms-activation-url=http://$BRIG_WEB_HOST:$PORT/v/\${code} --password-reset-url=http://$BRIG_WEB_HOST:$PORT/password-reset/\${key}?code=\${code} --invitation-url=http://$BRIG_WEB_HOST:$PORT/register?invitation_code=\${code} --deletion-url=http://$BRIG_WEB_HOST:$PORT/users/delete?key=\${key}\&code=\${code} --provider-activation-url=http://$BRIG_WEB_HOST:$PORT/provider/activate?key=\${key}\&code=\${code} --provider-approval-url=http://$BRIG_WEB_HOST:$PORT/provider/approve?key=\${key}\&code=\${code} --team-invitation-url=http://$BRIG_WEB_HOST:$PORT/register?team=\${team}\&team_code=\${code} --template-dir=deb/opt/brig/templates --email-sender=$EMAIL_SENDER --activation-timeout=$USER_ACTIVATION_TIMEOUT --user-connection-limit=$USER_CONNECTION_LIMIT --cookie-domain=$COOKIE_DOMAIN --provider-approval-to=$PROVIDER_APPROVAL_TO --provider-home-url=$PROVIDER_HOME_URL --zauth-provider-token-timeout=$ZAUTH_PROVIDER_TOKEN_TIMEOUT --zauth-private-keys=$ZAUTH_PRIVKEYS --zauth-public-keys=$ZAUTH_PUBKEYS --zauth-key-index=$ZAUTH_KEY_INDEX --zauth-user-token-timeout=$ZAUTH_USER_TOKEN_TIMEOUT --user-cookie-renew-age=$USER_COOKIE_RENEW_AGE --zauth-access-token-timeout=$ZAUTH_ACCESS_TOKEN_TIMEOUT --zauth-session-token-timeout=$ZAUTH_SESSION_TOKEN_TIMEOUT --cookie-insecure --user-cookie-retry-after=$USER_COOKIE_RETRY_AFTER --user-cookie-min-deviation=$USER_COOKIE_MIN_DEVIATION --user-cookie-limit=$USER_COOKIE_LIMIT --turn-servers=$TURN_SERVERS --turn-secret=$TURN_SECRET --elasticsearch-url=$BRIG_ELASTICSEARCH_URL --elasticsearch-user-index=$BRIG_ELASTICSEARCH_USER_INDEX +web: LOG_LEVEL=Warn ./dist/brig --host=$BRIG_WEB_HOST --port=$PORT --cassandra-host=$BRIG_CASSANDRA_HOST --cassandra-port=$BRIG_CASSANDRA_PORT --cassandra-keyspace=$BRIG_CASSANDRA_KEYSPACE --galley-host=$GALLEY_WEB_HOST --galley-port=$GALLEY_WEB_PORT --gundeck-host=$GUNDECK_WEB_HOST --gundeck-port=$GUNDECK_WEB_PORT --aws-ses-queue=$AWS_USER_SES_QUEUE --aws-internal-queue=$AWS_USER_INTERNAL_QUEUE --aws-dynamo-blacklist=$AWS_USER_BLACKLIST_TABLE --aws-dynamo-prekeys=$AWS_USER_PREKEYS_TABLE --aws-account-id=$AWS_ACCOUNT --aws-access-key-id=$AWS_ACCESS_KEY_ID --aws-secret-access-key=$AWS_SECRET_ACCESS_KEY --twilio-sid=$TWILIO_SID --twilio-token=$TWILIO_TOKEN --twilio-sender=$TWILIO_SENDER --nexmo-key=$NEXMO_KEY --nexmo-secret=$NEXMO_SECRET --nexmo-endpoint=$NEXMO_ENDPOINT --activation-url=http://$BRIG_WEB_HOST:$PORT/activate?key=\${key}\&code=\${code} --team-activation-url=http://$BRIG_WEB_HOST:$PORT/activate?key=\${key}\&code=\${code} --sms-activation-url=http://$BRIG_WEB_HOST:$PORT/v/\${code} --password-reset-url=http://$BRIG_WEB_HOST:$PORT/password-reset/\${key}?code=\${code} --invitation-url=http://$BRIG_WEB_HOST:$PORT/register?invitation_code=\${code} --deletion-url=http://$BRIG_WEB_HOST:$PORT/users/delete?key=\${key}\&code=\${code} --provider-activation-url=http://$BRIG_WEB_HOST:$PORT/provider/activate?key=\${key}\&code=\${code} --provider-approval-url=http://$BRIG_WEB_HOST:$PORT/provider/approve?key=\${key}\&code=\${code} --team-invitation-url=http://$BRIG_WEB_HOST:$PORT/register?team=\${team}\&team_code=\${code} --template-dir=deb/opt/brig/templates --email-sender=$EMAIL_SENDER --activation-timeout=$USER_ACTIVATION_TIMEOUT --user-connection-limit=$USER_CONNECTION_LIMIT --cookie-domain=$COOKIE_DOMAIN --provider-approval-to=$PROVIDER_APPROVAL_TO --provider-home-url=$PROVIDER_HOME_URL --zauth-provider-token-timeout=$ZAUTH_PROVIDER_TOKEN_TIMEOUT --zauth-private-keys=$ZAUTH_PRIVKEYS --zauth-public-keys=$ZAUTH_PUBKEYS --zauth-key-index=$ZAUTH_KEY_INDEX --zauth-user-token-timeout=$ZAUTH_USER_TOKEN_TIMEOUT --user-cookie-renew-age=$USER_COOKIE_RENEW_AGE --zauth-access-token-timeout=$ZAUTH_ACCESS_TOKEN_TIMEOUT --zauth-session-token-timeout=$ZAUTH_SESSION_TOKEN_TIMEOUT --cookie-insecure --user-cookie-retry-after=$USER_COOKIE_RETRY_AFTER --user-cookie-min-deviation=$USER_COOKIE_MIN_DEVIATION --user-cookie-limit=$USER_COOKIE_LIMIT --turn-servers=$TURN_SERVERS --turn-secret=$TURN_SECRET --elasticsearch-url=$BRIG_ELASTICSEARCH_URL --elasticsearch-user-index=$BRIG_ELASTICSEARCH_USER_INDEX diff --git a/services/brig/deb/etc/sv/brig/run b/services/brig/deb/etc/sv/brig/run index 9558bddba0..b9d6d4cffc 100755 --- a/services/brig/deb/etc/sv/brig/run +++ b/services/brig/deb/etc/sv/brig/run @@ -62,6 +62,7 @@ exec chpst -u $USER \ --cassandra-port=${BRIG_CASSANDRA_PORT?'unset'} \ --cassandra-keyspace=${BRIG_CASSANDRA_KEYSPACE?'unset'} \ --activation-url=${BRIG_ACTIVATION_URL?'unset'} \ + --team-activation-url=${BRIG_TEAM_ACTIVATION_URL?'unset'} \ --activation-timeout=${BRIG_ACTIVATION_TIMEOUT?'unset'} \ --sms-activation-url=${BRIG_SMS_ACTIVATION_URL?'unset'} \ --password-reset-url=${BRIG_PASSWORD_RESET_URL?'unset'} \ diff --git a/services/brig/deb/opt/brig/templates/user/ar/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ar/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/de/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/de/email/team-activation-subject.txt new file mode 100644 index 0000000000..78e3e141b8 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/de/email/team-activation-subject.txt @@ -0,0 +1 @@ +Dein Wire-Benutzerkonto diff --git a/services/brig/deb/opt/brig/templates/user/de/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/de/email/team-activation.html new file mode 100644 index 0000000000..562d8c5a4d --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/de/email/team-activation.html @@ -0,0 +1,118 @@ + + + + + + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + +
+ Wire + + wire.com +
+

+ Dein neues Wire-Benutzerkonto im '${team}' Team +

+
+

Ein Wire Benutzerkonto in einem neuen Wire Team namens '${team}' wurde mit der E-Mail-Adresse ${email} erstellt. Wir möchten gerne sicherstellen, dass du ${name} bist. +

+ + VERIFIZIEREN + +

+

+ Bitte klicke open auf "Verifizieren", um deine Identität zu bestätigen. Erst danach kannst du Wire nutzen. +

+

+ Wenn du nicht auf den "Verifizieren"-Button klicken kannst, benutze stattdessen bitte folgenden Link:
+

+

+ ${url} +

+

+ Wenn du kein Wire-Benutzerkonto mit dieser E-Mail-Adresse erstellt hast, klicke bitte hier. +

+

+
+ Datenschutzrichtlinie· + Missbrauch melden
Wire Swiss GmbH. Alle Rechte vorbehalten. +
+
+
+ + + diff --git a/services/brig/deb/opt/brig/templates/user/de/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/de/email/team-activation.txt new file mode 100644 index 0000000000..2e96043c88 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/de/email/team-activation.txt @@ -0,0 +1,24 @@ +Wire + + +Hallo, + + +Ein Wire Benutzerkonto in einem neuen Wire Team namens '${team}' wurde mit der E-Mail-Adresse ${email} erstellt. Wir möchten gerne sicherstellen, dass du ${name} bist. + +Bitte klicke auf den folgenden Link, um deine Identität zu bestätigen. Erst danach kannst du Wire nutzen. + + +${url} + +Bitte antworte nicht auf diese E-Mail. + +Wenn du kein Wire-Benutzerkonto mit dieser E-Mail-Adresse erstellt hast, gehe bitte auf https://support.wire.com + + + + +(c) Wire Swiss GmbH + +Datenschutzrichtlinie | Missbrauch melden + diff --git a/services/brig/deb/opt/brig/templates/user/en/email/activation.html b/services/brig/deb/opt/brig/templates/user/en/email/activation.html index 687e6b5ce7..743b5d3083 100644 --- a/services/brig/deb/opt/brig/templates/user/en/email/activation.html +++ b/services/brig/deb/opt/brig/templates/user/en/email/activation.html @@ -77,6 +77,7 @@ display: inline-block; margin: 20px 0; line-height: 3; + text-align: center; ">VERIFY + VERIFY + +

+

+ Click the button above to verify your address. You won’t be able to use Wire until you do. +

+

+ If you can’t click on the button, use this link:
+

+

+ ${url} +

+

+ If you didn’t create a Wire account using this email address, please + + contact us + . +

+ + + + + + + Privacy· + Report Misuse
Wire Swiss GmbH. All Rights Reserved. + + + + + + + + + + diff --git a/services/brig/deb/opt/brig/templates/user/en/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/en/email/team-activation.txt new file mode 100644 index 0000000000..66d5fe5afd --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/en/email/team-activation.txt @@ -0,0 +1,22 @@ +Wire + + +Hello, + +A new Wire team called ${team} was created with ${email}. We want to verify that you are indeed ${name}. + +Follow the link below to verify your address. You won't be able to use Wire until you do. + + +${url} + +Please don't reply to this message. + +If you didn't create a Wire account using this email address, please visit https://support.wire.com + + + + +(c) Wire Swiss GmbH + +Privacy Policy | Report misuse diff --git a/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/es-ES/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/et/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/et/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/et/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/et/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/et/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/et/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/et/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/et/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/et/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fa/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fa/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fr/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/fr/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/it/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/it/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/it/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/it/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/it/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/it/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/it/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/it/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/it/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/pt-BR/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/ru/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/ru/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/sv-SE/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/tr/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/tr/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/uk/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/uk/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation-subject.txt b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation-subject.txt new file mode 120000 index 0000000000..784e3a04e3 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation-subject.txt @@ -0,0 +1 @@ +../../en/email/team-activation-subject.txt \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.html b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.html new file mode 120000 index 0000000000..39707d4f01 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.html @@ -0,0 +1 @@ +../../en/email/team-activation.html \ No newline at end of file diff --git a/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.txt b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.txt new file mode 120000 index 0000000000..731780a7a2 --- /dev/null +++ b/services/brig/deb/opt/brig/templates/user/zh-TW/email/team-activation.txt @@ -0,0 +1 @@ +../../en/email/team-activation.txt \ No newline at end of file diff --git a/services/brig/src/Brig/API.hs b/services/brig/src/Brig/API.hs index 826a93c8e5..4bb99e4562 100644 --- a/services/brig/src/Brig/API.hs +++ b/services/brig/src/Brig/API.hs @@ -62,6 +62,7 @@ import qualified Brig.Types.Swagger as Doc import qualified Network.Wai.Utilities.Swagger as Doc import qualified Data.Swagger.Build.Api as Doc import qualified Galley.Types.Swagger as Doc +import qualified Galley.Types.Teams as Team import qualified Network.Wai.Middleware.Gzip as GZip import qualified Network.Wai.Middleware.Gunzip as GZip import qualified Data.ByteString.Lazy as Lazy @@ -1104,7 +1105,7 @@ createUser (_ ::: _ ::: req) = do let lang = userLocale usr lift $ do for_ (liftM2 (,) (userEmail usr) epair) $ \(e, p) -> - sendActivationMail e (userName usr) p (Just lang) Nothing + sendActivationEmail e (userName usr) p (Just lang) (newUserTeam new) for_ (liftM2 (,) (userPhone usr) ppair) $ \(p, c) -> sendActivationSms p c (Just lang) cok <- lift $ Auth.newCookie (userId usr) PersistentCookie (newUserLabel new) @@ -1112,6 +1113,11 @@ createUser (_ ::: _ ::: req) = do $ setStatus status201 . addHeader "Location" (toByteString' (userId usr)) $ json (SelfProfile usr) + where + sendActivationEmail e u p l (Just (NewUserTeam (Right (Team.BindingNewTeam t)))) = + sendTeamActivationMail e u p l (fromRange $ t^.Team.newTeamName) + sendActivationEmail e u p l _ = + sendActivationMail e u p l Nothing createUserNoVerify :: JSON ::: JSON ::: Request -> Handler Response createUserNoVerify (_ ::: _ ::: req) = do diff --git a/services/brig/src/Brig/Options.hs b/services/brig/src/Brig/Options.hs index 63ccc52e47..8b23de6dc8 100644 --- a/services/brig/src/Brig/Options.hs +++ b/services/brig/src/Brig/Options.hs @@ -75,6 +75,7 @@ data Opts = Opts -- Email & SMS (User) , optUserActivationUrl :: !ByteString + , optUserTeamActivationUrl :: !ByteString , optUserSmsActivationUrl :: !ByteString , optUserPasswordResetUrl :: !ByteString , optUserInvitationUrl :: !ByteString @@ -247,6 +248,11 @@ parseOptions = execParser (info (helper <*> optsParser) desc) <> metavar "URL" <> help "Activation URL template") + <*> (bytesOption $ + long "team-activation-url" + <> metavar "URL" + <> help "Team Activation URL template") + <*> (bytesOption $ long "sms-activation-url" <> metavar "URL" diff --git a/services/brig/src/Brig/User/Email.hs b/services/brig/src/Brig/User/Email.hs index 47f4295e9a..33a842c143 100644 --- a/services/brig/src/Brig/User/Email.hs +++ b/services/brig/src/Brig/User/Email.hs @@ -5,6 +5,8 @@ module Brig.User.Email ( ActivationEmail (..) , sendActivationMail + , sendTeamActivationMail + , PasswordResetEmail (..) , sendPasswordResetMail @@ -68,6 +70,12 @@ sendNewClientEmail name email client locale = do tpl <- newClientEmail . snd <$> userTemplates (Just locale) Aws.sendMail $ renderNewClientEmail tpl (NewClientEmail locale email name client) +sendTeamActivationMail :: Email -> Name -> ActivationPair -> Maybe Locale -> Text -> AppIO () +sendTeamActivationMail to name pair loc team = do + tpl <- teamActivationEmail . snd <$> userTemplates loc + let mail = TeamActivationEmail to name team pair + Aws.sendMail $ renderTeamActivationMail mail tpl + ------------------------------------------------------------------------------- -- New Client Email @@ -185,6 +193,42 @@ renderActivationUrl t (ActivationKey k, ActivationCode c) = replace "code" = Ascii.toText c replace x = x +------------------------------------------------------------------------------- +-- Team Activation Email + +data TeamActivationEmail = TeamActivationEmail + { tacmTo :: !Email + , tacmName :: !Name + , tacmTeamName :: !Text + , tacmPair :: !ActivationPair + } + +renderTeamActivationMail :: TeamActivationEmail -> TeamActivationEmailTemplate -> Mail +renderTeamActivationMail TeamActivationEmail{..} TeamActivationEmailTemplate{..} = + (emptyMail from) + { mailTo = [ to ] + , mailHeaders = [ ("Subject", toStrict subj) + , ("X-Zeta-Purpose", "Activation") + , ("X-Zeta-Key", Ascii.toText key) + , ("X-Zeta-Code", Ascii.toText code) + ] + , mailParts = [ [ plainPart txt, htmlPart html ] ] + } + where + (ActivationKey key, ActivationCode code) = tacmPair + + from = Address (Just teamActivationEmailSenderName) (fromEmail teamActivationEmailSender) + to = mkMimeAddress tacmName tacmTo + txt = renderText teamActivationEmailBodyText replace + html = renderHtml teamActivationEmailBodyHtml replace + subj = renderText teamActivationEmailSubject replace + + replace "url" = renderActivationUrl teamActivationEmailUrl tacmPair + replace "email" = fromEmail tacmTo + replace "name" = fromName tacmName + replace "team" = tacmTeamName + replace x = x + ------------------------------------------------------------------------------- -- Password Reset Email diff --git a/services/brig/src/Brig/User/Template.hs b/services/brig/src/Brig/User/Template.hs index 4d7fb9e4de..148f7e0d36 100644 --- a/services/brig/src/Brig/User/Template.hs +++ b/services/brig/src/Brig/User/Template.hs @@ -5,6 +5,7 @@ module Brig.User.Template ( UserTemplates (..) , ActivationSmsTemplate (..) , ActivationEmailTemplate (..) + , TeamActivationEmailTemplate(..) , ActivationCallTemplate (..) , PasswordResetSmsTemplate (..) , PasswordResetEmailTemplate (..) @@ -36,6 +37,7 @@ data UserTemplates = UserTemplates , activationCall :: !ActivationCallTemplate , activationEmail :: !ActivationEmailTemplate , activationEmailUpdate :: !ActivationEmailTemplate + , teamActivationEmail :: !TeamActivationEmailTemplate , passwordResetSms :: !PasswordResetSmsTemplate , passwordResetEmail :: !PasswordResetEmailTemplate , invitationEmail :: !InvitationEmailTemplate @@ -66,6 +68,15 @@ data ActivationEmailTemplate = ActivationEmailTemplate , activationEmailSenderName :: !Text } +data TeamActivationEmailTemplate = TeamActivationEmailTemplate + { teamActivationEmailUrl :: !Template + , teamActivationEmailSubject :: !Template + , teamActivationEmailBodyText :: !Template + , teamActivationEmailBodyHtml :: !Template + , teamActivationEmailSender :: !Email + , teamActivationEmailSenderName :: !Text + } + data DeletionEmailTemplate = DeletionEmailTemplate { deletionEmailUrl :: !Template , deletionEmailSubject :: !Template @@ -148,6 +159,12 @@ loadUserTemplates o = readLocalesDir defLocale templateDir $ \fp -> <*> readTemplate (fp <> "/email/update.html") <*> pure (optEmailSender o) <*> readText (fp <> "/email/sender.txt")) + <*> (TeamActivationEmailTemplate teamActivationUrl + <$> readTemplate (fp <> "/email/team-activation-subject.txt") + <*> readTemplate (fp <> "/email/team-activation.txt") + <*> readTemplate (fp <> "/email/team-activation.html") + <*> pure (optEmailSender o) + <*> readText (fp <> "/email/sender.txt")) <*> (PasswordResetSmsTemplate <$> readTemplate (fp <> "/sms/password-reset.txt") <*> pure (optTwilioSender o)) @@ -187,11 +204,12 @@ loadUserTemplates o = readLocalesDir defLocale templateDir $ \fp -> <*> pure (optEmailSender o) <*> readText (fp <> "/email/sender.txt")) where - smsActivationUrl = template . Text.decodeLatin1 $ optUserSmsActivationUrl o - activationUrl = template . Text.decodeLatin1 $ optUserActivationUrl o - passwordResetUrl = template . Text.decodeLatin1 $ optUserPasswordResetUrl o - invitationUrl = template . Text.decodeLatin1 $ optUserInvitationUrl o - deletionUserUrl = template . Text.decodeLatin1 $ optUserDeletionUserUrl o + smsActivationUrl = template . Text.decodeLatin1 $ optUserSmsActivationUrl o + activationUrl = template . Text.decodeLatin1 $ optUserActivationUrl o + teamActivationUrl = template . Text.decodeLatin1 $ optUserTeamActivationUrl o + passwordResetUrl = template . Text.decodeLatin1 $ optUserPasswordResetUrl o + invitationUrl = template . Text.decodeLatin1 $ optUserInvitationUrl o + deletionUserUrl = template . Text.decodeLatin1 $ optUserDeletionUserUrl o defLocale = setDefaultLocale (optSettings o) templateDir = optTemplateDir o <> "/user"