This commit is contained in:
2024-09-29 13:56:38 +02:00
commit 31a6ef96d8
85 changed files with 13360 additions and 0 deletions
+270
View File
@@ -0,0 +1,270 @@
import { Reception } from './classes.reception.js';
import { RegistrationSession } from './classes.registrationsession.js';
import { User } from './classes.user.js';
import * as plugins from './plugins.js';
export class ReceptionMailer {
public receptionRef: Reception;
constructor(receptionRefArg: Reception) {
this.receptionRef = receptionRefArg;
}
private createBodyString = (textArg) => `
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
* {
font-family:Arial,Helvetica Neue,Helvetica,sans-serif;
box-sizing:border-box;
}
body {
width: 100%;
}
.bodyspacer {
background-color: #f0f0f0;
padding-top:20px;
padding-bottom:20px;
padding-left:10px;
padding-right:10px;
}
.logo {
display: block;
margin: auto;
width: 200px;
padding: 30px;
}
.logoBottom {
display: block;
margin: auto;
width: 150px;
padding: 30px;
}
h1 {
text-align:center;
line-height:35px;
margin-bottom:20;
}
h1.subheading{
font-size:15px;
font-weight:normal;
margin-bottom:10px;
}
h3 {
padding:0;
margin:0;
margin-bottom:5px;
}
p {
margin-top:5px;
}
a {
text-decoration:none;
color: #CCCCCC;
}
.contentspacer{
padding-left:20px;
padding-right:20px;
}
.content {
box-shadow: 0px 0px 3px rgba(0,0,0,0.5);
color: #333333;
background:#ffffff;
max-width:600px;
border-radius:3px;
margin-left:auto;
margin-right:auto;
min-height:40px;
overflow:hidden;
}
.headerimagewrapper {
overflow:hidden;
border:none;
}
.headerimage {
min-height: 10px;
width:100%;
vertical-align:middle;
background:#eeeeeb;
}
img, a {
border:none;
outline:none;
}
.textcontent {
padding:20px;
}
.button {
transition: all 0.2s ease;
width: 200px;
text-align: center;
border-radius: 3px;
color: #333333;
background: #f0f0f0;
margin: 20px auto;
padding: 10px;
text-transform: uppercase;
cursor: pointer;
}
.button:hover {
color: #fff;
background: #e4002b;
}
.footer {
color: #CCCCCC;
text-align:center;
font-size:12px;
margin-top:10px;
}
</style>
</head>
<body>
<div class="bodyspacer">
<img class="logo" src="https://assetbroker.lossless.one/brandfiles/00general/brightdark_workspaceglobal@2x.png" />
<div class="contentspacer">
<div class="content">
<div class="headerimagewrapper">
</div>
<div class="textcontent">
<span>
${textArg}
</span>
</div>
</div>
<div class="footer">
This email is a service by<br/>
Task Venture Capital GmbH, Karl-Ferdinand-Braun-Str. 5, 28359 Bremen, Germany<br/>
<a style="color: #666666" href="https://legal.task.vc">Legal Info (https://legal.task.vc)</a>
<img class="logoBottom" src="https://assetbroker.lossless.one/brandfiles/00general/brightdark_taskvc@2x_transparent.png" />
</div>
</div>
</div>
</body>
</html>
`;
public sendRegistrationEmail(signupSessionArg: RegistrationSession, validationTokenArg: string) {
this.receptionRef.szPlatformClient.emailConnector.sendEmail({
from: 'workspace.global <noreply@mail.workspace.global>',
title: 'Verify your Email Address!',
to: signupSessionArg.emailAddress,
body: this.createBodyString(`
<h1>Email Verification for <br><a style="color: #555555;" href="mailto:${
signupSessionArg.emailAddress
}">${signupSessionArg.emailAddress}</a></h1>
<p>It looks like you requested to register an account with us. We just want to make sure it really was you.</p>
<p>In case it was you, <b>please continue with the registration process by clicking the button below</b>. Otherwise, please ignore this email.</p>
<a href="https://registration.workspace.global/finishregistration?validationtoken=${encodeURI(
validationTokenArg
)}"><div class="button">
continue with registration
</div></a>
<p>
<b>What do I need a workspace.global Account for?</b><br/>
The workspace.global Account is needed to log into e.g. <b>social.io</b>
</p>
`),
});
}
public sendAlreadyRegisteredEmail(userArg: User) {
this.receptionRef.szPlatformClient.emailConnector.sendEmail({
from: 'workspace.global <noreply@mail.workspace.global>',
title: 'Login Instead?!',
to: userArg.data.email,
body: this.createBodyString(`
<h1>Email is already registered:<br><a style="color: #555555;" href="mailto:${
userArg.data.email
}">${userArg.data.email}</a></h1>
<p>Someone retried to reregister with the email ${userArg.data.email}</p>
<p>In case it was you, <b>please simply log in with your existing account</b>. Otherwise, please ignore this email.</p>
<a href="https://account.lossless.org/finishsignup?email=${encodeURI(
userArg.data.email
)}"><div class="button">
Simply login :)
</div></a>
<p>
<b>Forgot your password?</b><br/>
Just click the password reset link when logging in.
</p>
`),
});
}
public sendWelcomeEMail(userArg: User) {
this.receptionRef.szPlatformClient.emailConnector.sendEmail({
from: 'workspace.global <noreply@mail.workspace.global>',
title: 'Welcome and Thank You!',
to: userArg.data.email,
body: this.createBodyString(`
<h1>Welcome And Thank You, ${userArg.data.name}</h1>
<p>You now have a fully registered workspace.global Account</p>
<p>
<b>What can I use it for?</b><br/>
The workspace.global Account can be used to log into all our apps.<br>
Some of them are<br/>
${(() => {
const products = ['social.io', 'layer.io'];
return products.map((productArg) => `<span>${productArg}</span>`).join(' ');
})()}
</p>
<a href="https://account.lossless.org/manage/
userArg.username
)}"><div class="button">
Go to my account
</div></a>
`),
});
}
public sendLoginWithEMailMail(userArg: User, validationTokenArg: string) {
this.receptionRef.szPlatformClient.emailConnector.sendEmail({
from: 'workspace.global <noreply@mail.workspace.global>',
title: 'Click to login!',
to: userArg.data.email,
body: this.createBodyString(`
<h1>EMail Login Link for <br><a style="color: #555555;" href="mailto:${
userArg.data.email
}">${userArg.data.email}</a></h1>
<p>It looks like you requested to login passwordless via this email.</p>
<p>In case it was you, <b>please continue by clicking the button below</b>. Otherwise, please ignore this email.</p>
<a href="https://account.lossless.org/?email=${encodeURI(
userArg.data.email
)}&validationtoken=${encodeURI(validationTokenArg)}"><div class="button">
Login!
</div></a>
`),
});
}
public sendPasswordResetMail(userArg: User, validationTokenArg: string) {
this.receptionRef.szPlatformClient.emailConnector.sendEmail({
from: 'workspace.global <noreply@mail.workspace.global>',
title: 'Password reset?',
to: userArg.data.email,
body: this.createBodyString(`
<h1>Password Reset for <br><a style="color: #555555;" href="mailto:${userArg.data.email}">${
userArg.data.email
}</a></h1>
<p>It looks like you requested to reset your password with us.</p>
<p>In case it was you, <b>please continue by clicking the button below</b>. Otherwise, please ignore this email.</p>
<a href="https://account.lossless.org/?email=${encodeURI(
userArg.data.email
)}&validationtoken=${encodeURI(validationTokenArg)}"><div class="button">
Reset Password
</div></a>
`),
});
}
}