From f669d8ea3839da370e23da665219bec487d50b66 Mon Sep 17 00:00:00 2001
From: Kai <sistason@sistason.de>
Date: Fri, 20 Nov 2020 12:56:24 +0100
Subject: [PATCH] Fixes #15 by adding a new-optional attribute to
 send_passwordreset, for using a different mail template

---
 uffd/selfservice/templates/newuser.mail.txt | 10 ++++++++++
 uffd/selfservice/views.py                   | 10 +++++++---
 uffd/user/views_user.py                     |  4 ++--
 3 files changed, 19 insertions(+), 5 deletions(-)
 create mode 100644 uffd/selfservice/templates/newuser.mail.txt

diff --git a/uffd/selfservice/templates/newuser.mail.txt b/uffd/selfservice/templates/newuser.mail.txt
new file mode 100644
index 00000000..afae8181
--- /dev/null
+++ b/uffd/selfservice/templates/newuser.mail.txt
@@ -0,0 +1,10 @@
+Hi {{ user.displayname }},
+
+welcome to the CCCV infrastructure.
+An account was created for you, visit this url to set your password: {{ url_for('selfservice.token_password', token=token, _external=True) }}
+**Please note this link is only valid for 48h**
+
+If you have no idea why someone would create an account for you to be used for the next CCC event organization, please contact it@cccv.de.
+
+Kind regards,
+uffd
diff --git a/uffd/selfservice/views.py b/uffd/selfservice/views.py
index fae2c27d..53076679 100644
--- a/uffd/selfservice/views.py
+++ b/uffd/selfservice/views.py
@@ -142,7 +142,7 @@ def send_mail_verification(loginname, newmail):
 	msg['Subject'] = 'Mail verification'
 	send_mail(newmail, msg)
 
-def send_passwordreset(loginname):
+def send_passwordreset(loginname, new=False):
 	session = db.session
 	expired_tokens = PasswordToken.query.filter(PasswordToken.created < (datetime.datetime.now() - datetime.timedelta(days=2))).all()
 	duplicate_tokens = PasswordToken.query.filter(PasswordToken.loginname == loginname).all()
@@ -156,8 +156,12 @@ def send_passwordreset(loginname):
 	user = User.from_ldap_dn(loginname_to_dn(loginname))
 
 	msg = EmailMessage()
-	msg.set_content(render_template('passwordreset.mail.txt', user=user, token=token.token))
-	msg['Subject'] = 'Password reset'
+	if new:
+		msg.set_content(render_template('newuser.mail.txt', user=user, token=token.token))
+		msg['Subject'] = 'Welcome to the CCCV infrastructure'
+	else:
+		msg.set_content(render_template('passwordreset.mail.txt', user=user, token=token.token))
+		msg['Subject'] = 'Password reset'
 	send_mail(user.mail, msg)
 
 def send_mail(to_address, msg):
diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py
index 4237b487..14fcb690 100644
--- a/uffd/user/views_user.py
+++ b/uffd/user/views_user.py
@@ -88,7 +88,7 @@ def update(uid=False):
 
 	if user.to_ldap(new=is_newuser):
 		if is_newuser:
-			send_passwordreset(user.loginname)
+			send_passwordreset(user.loginname, new=True)
 			flash('User created. We sent the user a password reset link by mail')
 		else:
 			flash('User updated')
@@ -158,7 +158,7 @@ def csvimport():
 			result = newuser.to_ldap(new=True)
 			print(result)
 			if result:
-				send_passwordreset(newuser.loginname)
+				send_passwordreset(newuser.loginname, new=True)
 
 				usergroups = set()
 				for role in Role.get_for_user(newuser).all():
-- 
GitLab