From 3c4ca66e59d6fd5398722f4b400725b5fb689cf9 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Fri, 30 Jul 2021 21:17:20 +0200
Subject: [PATCH] Fixed behaviour if an invalid password is set in admin view,
 closes #28

---
 tests/test_user.py                           |   1 -
 uffd/translations/de/LC_MESSAGES/messages.mo | Bin 30572 -> 30646 bytes
 uffd/translations/de/LC_MESSAGES/messages.po |  14 +++++++++-----
 uffd/user/views_user.py                      |   4 +++-
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/tests/test_user.py b/tests/test_user.py
index 3d5f53fa..962840db 100644
--- a/tests/test_user.py
+++ b/tests/test_user.py
@@ -194,7 +194,6 @@ class TestUserViews(UffdTestCase):
 		self.assertEqual(user_updated.loginname, user_unupdated.loginname)
 		self.assertTrue(ldap.test_user_bind(user_updated.dn, 'newpassword'))
 
-	@unittest.skip('See #28')
 	def test_update_invalid_password(self):
 		user_unupdated = self.get_user()
 		r = self.client.get(path=url_for('user.show', uid=user_unupdated.uid), follow_redirects=True)
diff --git a/uffd/translations/de/LC_MESSAGES/messages.mo b/uffd/translations/de/LC_MESSAGES/messages.mo
index 3fb2252ba8b5eba1f3c47aa9ec52c6b5eef02364..df2fed3467524abc4c2f938fd07bb2cad81b9f2c 100644
GIT binary patch
delta 4914
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

delta 4852
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

diff --git a/uffd/translations/de/LC_MESSAGES/messages.po b/uffd/translations/de/LC_MESSAGES/messages.po
index 8860b6b4..cec4ea94 100644
--- a/uffd/translations/de/LC_MESSAGES/messages.po
+++ b/uffd/translations/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2021-07-30 21:03+0200\n"
+"POT-Creation-Date: 2021-07-30 21:15+0200\n"
 "PO-Revision-Date: 2021-05-25 21:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: de\n"
@@ -1431,21 +1431,25 @@ msgstr "E-Mail-Adresse nicht valide"
 msgid "Display name does not meet requirements"
 msgstr "Anzeigename entspricht nicht den Anforderungen"
 
-#: uffd/user/views_user.py:75
+#: uffd/user/views_user.py:63
+msgid "Password is invalid"
+msgstr "Passwort ist ungültig"
+
+#: uffd/user/views_user.py:77
 msgid "Service user created"
 msgstr "Service-Account erstellt"
 
-#: uffd/user/views_user.py:78
+#: uffd/user/views_user.py:80
 msgid "User created. We sent the user a password reset link by mail"
 msgstr ""
 "Benutzer erstellt. E-Mail mit einem Link zum Setzen des Passworts wurde "
 "versendet."
 
-#: uffd/user/views_user.py:80
+#: uffd/user/views_user.py:82
 msgid "User updated"
 msgstr "Benutzer aktualisiert"
 
-#: uffd/user/views_user.py:91
+#: uffd/user/views_user.py:93
 msgid "Deleted user"
 msgstr "Benutzer gelöscht"
 
diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py
index 969b71b4..db2800a8 100644
--- a/uffd/user/views_user.py
+++ b/uffd/user/views_user.py
@@ -59,7 +59,9 @@ def update(uid=None):
 		return redirect(url_for('user.show', uid=uid))
 	new_password = request.form.get('password')
 	if uid is not None and new_password:
-		user.set_password(new_password)
+		if not user.set_password(new_password):
+			flash(_('Password is invalid'))
+			return redirect(url_for('user.show', uid=uid))
 	ldap.session.add(user)
 	user.roles.clear()
 	for role in Role.query.all():
-- 
GitLab