From 0f4561d7b749e26b97fd2ba8b26bea28f6889ec2 Mon Sep 17 00:00:00 2001
From: Julian Rother <julian@cccv.de>
Date: Mon, 4 Oct 2021 01:00:17 +0200
Subject: [PATCH] Show 2FA status in admin interface

---
 uffd/translations/de/LC_MESSAGES/messages.mo | Bin 31872 -> 31934 bytes
 uffd/translations/de/LC_MESSAGES/messages.po |  92 +++++++++++--------
 uffd/user/templates/user/show.html           |  13 ++-
 3 files changed, 65 insertions(+), 40 deletions(-)

diff --git a/uffd/translations/de/LC_MESSAGES/messages.mo b/uffd/translations/de/LC_MESSAGES/messages.mo
index ba3b019d4866c4a53f286272f0989265dd3ab66e..7c1c953373dc7e65bbf123a966f8c7efd0507552 100644
GIT binary patch
delta 5139
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
UW|w4^ZC3ZImVhf<n08+j0OV<GHUIzs

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

diff --git a/uffd/translations/de/LC_MESSAGES/messages.po b/uffd/translations/de/LC_MESSAGES/messages.po
index 4568ca95..85347a75 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-09-15 10:56+0200\n"
+"POT-Creation-Date: 2021-10-04 00:22+0200\n"
 "PO-Revision-Date: 2021-05-25 21:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: de\n"
@@ -134,6 +134,7 @@ msgid "Signup"
 msgstr "Account-Registrierung"
 
 #: uffd/invite/templates/invite/list.html:49
+#: uffd/user/templates/user/show.html:91
 msgid "Disabled"
 msgstr "Deaktiviert"
 
@@ -269,8 +270,9 @@ msgstr "Enthaltene Rollen"
 #: uffd/rolemod/templates/rolemod/show.html:46
 #: uffd/selfservice/templates/selfservice/self.html:101
 #: uffd/user/templates/group/list.html:15
-#: uffd/user/templates/group/show.html:26 uffd/user/templates/user/show.html:95
-#: uffd/user/templates/user/show.html:127
+#: uffd/user/templates/group/show.html:26
+#: uffd/user/templates/user/show.html:106
+#: uffd/user/templates/user/show.html:138
 msgid "Name"
 msgstr "Name"
 
@@ -280,8 +282,9 @@ msgstr "Name"
 #: uffd/rolemod/templates/rolemod/show.html:28
 #: uffd/selfservice/templates/selfservice/self.html:102
 #: uffd/user/templates/group/list.html:16
-#: uffd/user/templates/group/show.html:30 uffd/user/templates/user/show.html:96
-#: uffd/user/templates/user/show.html:128
+#: uffd/user/templates/group/show.html:30
+#: uffd/user/templates/user/show.html:107
+#: uffd/user/templates/user/show.html:139
 msgid "Description"
 msgstr "Beschreibung"
 
@@ -381,8 +384,8 @@ msgstr "Speichern"
 #: uffd/mfa/templates/mfa/setup.html:117 uffd/mfa/templates/mfa/setup.html:179
 #: uffd/role/templates/role/show.html:21 uffd/role/templates/role/show.html:24
 #: uffd/user/templates/group/show.html:11
-#: uffd/user/templates/group/show.html:13 uffd/user/templates/user/show.html:11
-#: uffd/user/templates/user/show.html:13
+#: uffd/user/templates/group/show.html:13 uffd/user/templates/user/show.html:10
+#: uffd/user/templates/user/show.html:12
 msgid "Delete"
 msgstr "Löschen"
 
@@ -430,6 +433,7 @@ msgstr "Zwei-Faktor-Authentifizierung fehlgeschlagen"
 
 #: uffd/mfa/templates/mfa/auth.html:6
 #: uffd/selfservice/templates/selfservice/self.html:67
+#: uffd/user/templates/user/show.html:89
 msgid "Two-Factor Authentication"
 msgstr "Zwei-Faktor-Authentifizierung"
 
@@ -510,6 +514,7 @@ msgstr "Zwei-Faktor-Authentifizierung zurücksetzen"
 
 #: uffd/mfa/templates/mfa/setup.html:46
 #: uffd/mfa/templates/mfa/setup_recovery.html:5
+#: uffd/user/templates/user/show.html:92
 msgid "Recovery Codes"
 msgstr "Wiederherstellungscodes"
 
@@ -547,7 +552,7 @@ msgstr "Generiere neue Wiederherstellungscodes"
 msgid "You have no remaining recovery codes."
 msgstr "Du hast keine Wiederherstellungscodes übrig."
 
-#: uffd/mfa/templates/mfa/setup.html:85
+#: uffd/mfa/templates/mfa/setup.html:85 uffd/user/templates/user/show.html:92
 msgid "Authenticator Apps (TOTP)"
 msgstr "Authentifikator-Apps (TOTP)"
 
@@ -577,7 +582,7 @@ msgstr "Registriert am"
 msgid "No authenticator apps registered yet"
 msgstr "Bisher keine Authentifikator-Apps registriert"
 
-#: uffd/mfa/templates/mfa/setup.html:134
+#: uffd/mfa/templates/mfa/setup.html:134 uffd/user/templates/user/show.html:92
 msgid "U2F and FIDO2 Devices"
 msgstr "U2F und FIDO2 Geräte"
 
@@ -777,8 +782,8 @@ msgstr ""
 "versuchen?"
 
 #: uffd/role/views.py:48 uffd/selfservice/templates/selfservice/self.html:86
-#: uffd/user/templates/user/list.html:20 uffd/user/templates/user/show.html:21
-#: uffd/user/templates/user/show.html:90
+#: uffd/user/templates/user/list.html:20 uffd/user/templates/user/show.html:20
+#: uffd/user/templates/user/show.html:101
 msgid "Roles"
 msgstr "Rollen"
 
@@ -812,7 +817,8 @@ msgstr "Als Default setzen"
 
 #: uffd/role/templates/role/show.html:19 uffd/role/templates/role/show.html:21
 #: uffd/selfservice/templates/selfservice/self.html:117
-#: uffd/user/templates/group/show.html:11 uffd/user/templates/user/show.html:11
+#: uffd/user/templates/group/show.html:11 uffd/user/templates/user/show.html:10
+#: uffd/user/templates/user/show.html:94
 msgid "Are you sure?"
 msgstr "Wirklich fortfahren?"
 
@@ -952,7 +958,7 @@ msgstr ""
 "die Adresse gesendet."
 
 #: uffd/selfservice/views.py:91 uffd/selfservice/views.py:100
-#: uffd/selfservice/views.py:133 uffd/selfservice/views.py:143
+#: uffd/selfservice/views.py:132 uffd/selfservice/views.py:142
 msgid "Token expired, please try again."
 msgstr "Link abgelaufen, bitte versuche es erneut."
 
@@ -964,15 +970,15 @@ msgstr "Password fehlt, bitte versuche es erneut."
 msgid "Passwords do not match, please try again."
 msgstr "Die Passwörter stimmen nicht überein, bitte versuche es erneut"
 
-#: uffd/selfservice/views.py:117
+#: uffd/selfservice/views.py:116
 msgid "Password ist not valid, please try again."
 msgstr "Ungültiges Passwort, bitte versuche es erneut"
 
-#: uffd/selfservice/views.py:120
+#: uffd/selfservice/views.py:119
 msgid "New password set"
 msgstr "Passwort geändert"
 
-#: uffd/selfservice/views.py:150
+#: uffd/selfservice/views.py:148
 msgid ""
 "This link was generated for another user. Login as the correct user to "
 "continue."
@@ -980,20 +986,20 @@ msgstr ""
 "Dieser Link wurde für einen anderen Account erstellt. Melde dich mit dem "
 "richtigen Account an um Fortzufahren."
 
-#: uffd/selfservice/views.py:152
+#: uffd/selfservice/views.py:150
 msgid "New mail set"
 msgstr "E-Mail-Adresse geändert"
 
-#: uffd/selfservice/views.py:162
+#: uffd/selfservice/views.py:160
 msgid "Leaving roles is disabled"
 msgstr "Verlassen von Rollen ist deaktiviert"
 
-#: uffd/selfservice/views.py:168
+#: uffd/selfservice/views.py:166
 #, python-format
 msgid "You left role %(role_name)s"
 msgstr "Rolle %(role_name)s verlassen"
 
-#: uffd/selfservice/views.py:185 uffd/selfservice/views.py:205
+#: uffd/selfservice/views.py:177 uffd/selfservice/views.py:194
 #, python-format
 msgid "Mail to \"%(mail_address)s\" could not be sent!"
 msgstr "E-Mail an \"%(mail_address)s\" konnte nicht gesendet werden!"
@@ -1006,7 +1012,7 @@ msgstr "Passwort vergessen"
 #: uffd/selfservice/templates/selfservice/self.html:21
 #: uffd/session/templates/session/login.html:9
 #: uffd/signup/templates/signup/start.html:14
-#: uffd/user/templates/user/list.html:18 uffd/user/templates/user/show.html:48
+#: uffd/user/templates/user/list.html:18 uffd/user/templates/user/show.html:47
 msgid "Login Name"
 msgstr "Anmeldename"
 
@@ -1028,7 +1034,7 @@ msgstr ""
 "\tDiese Berechtigungen werden erst aktiv, wenn du dies getan hast."
 
 #: uffd/selfservice/templates/selfservice/self.html:14
-#: uffd/user/templates/user/show.html:18
+#: uffd/user/templates/user/show.html:17
 msgid "Profile"
 msgstr "Profil"
 
@@ -1048,7 +1054,7 @@ msgstr "Änderungen sind erst nach einigen Minuten in allen Diensten sichtbar."
 
 #: uffd/selfservice/templates/selfservice/self.html:25
 #: uffd/signup/templates/signup/start.html:27
-#: uffd/user/templates/user/list.html:19 uffd/user/templates/user/show.html:63
+#: uffd/user/templates/user/list.html:19 uffd/user/templates/user/show.html:62
 msgid "Display Name"
 msgstr "Anzeigename"
 
@@ -1070,7 +1076,7 @@ msgstr "Änderungen speichern"
 #: uffd/selfservice/templates/selfservice/self.html:44
 #: uffd/session/templates/session/login.html:13
 #: uffd/signup/templates/signup/start.html:41
-#: uffd/user/templates/user/show.html:77
+#: uffd/user/templates/user/show.html:76
 msgid "Password"
 msgstr "Passwort"
 
@@ -1519,7 +1525,7 @@ msgstr "CSV-Import"
 msgid "UID"
 msgstr "UID"
 
-#: uffd/user/templates/user/list.html:34 uffd/user/templates/user/show.html:30
+#: uffd/user/templates/user/list.html:34 uffd/user/templates/user/show.html:29
 msgid "service"
 msgstr "service"
 
@@ -1537,7 +1543,7 @@ msgstr ""
 "Anzeigename oder das Password können (derzeit) nicht gesetzt werden. "
 "Beispiel:"
 
-#: uffd/user/templates/user/list.html:75 uffd/user/templates/user/show.html:58
+#: uffd/user/templates/user/list.html:75 uffd/user/templates/user/show.html:57
 msgid "Ignore login name blocklist"
 msgstr "Liste der nicht erlaubten Anmeldenamen ignorieren"
 
@@ -1545,23 +1551,19 @@ msgstr "Liste der nicht erlaubten Anmeldenamen ignorieren"
 msgid "Import"
 msgstr "Importieren"
 
-#: uffd/user/templates/user/show.html:10
-msgid "Reset 2FA"
-msgstr "2FA zurücksetzen"
-
-#: uffd/user/templates/user/show.html:28
+#: uffd/user/templates/user/show.html:27
 msgid "User ID"
 msgstr "Account ID"
 
-#: uffd/user/templates/user/show.html:36
+#: uffd/user/templates/user/show.html:35
 msgid "will be choosen"
 msgstr "wird automatisch bestimmt"
 
-#: uffd/user/templates/user/show.html:43
+#: uffd/user/templates/user/show.html:42
 msgid "Service User"
 msgstr "Service-Account"
 
-#: uffd/user/templates/user/show.html:51
+#: uffd/user/templates/user/show.html:50
 msgid ""
 "Only letters, numbers, dashes (\"-\") and underscores (\"_\") are "
 "allowed. At most 32, at least 2 characters. There is a word blocklist. "
@@ -1571,7 +1573,7 @@ msgstr ""
 "erlaubt. Maximal 32, mindestens 2 Zeichen. Es gibt eine Liste nicht "
 "erlaubter Namen. Muss einmalig sein."
 
-#: uffd/user/templates/user/show.html:66
+#: uffd/user/templates/user/show.html:65
 msgid ""
 "If you leave this empty it will be set to the login name. At most 128, at"
 " least 2 characters. No character restrictions."
@@ -1579,11 +1581,11 @@ msgstr ""
 "Wenn das Feld leer bleibt, wird der Anmeldename verwendet. Maximal 128, "
 "mindestens 2 Zeichen. Keine Zeichenbeschränkung."
 
-#: uffd/user/templates/user/show.html:70
+#: uffd/user/templates/user/show.html:69
 msgid "Mail"
 msgstr "E-Mail-Adresse"
 
-#: uffd/user/templates/user/show.html:73
+#: uffd/user/templates/user/show.html:72
 msgid ""
 "Do a sanity check here. A user can take over another account if both have"
 " the same mail address set."
@@ -1592,11 +1594,23 @@ msgstr ""
 "anderen Account übernehmen, wenn beide die selbe E-Mail-Adresse "
 "verwenden."
 
-#: uffd/user/templates/user/show.html:81
+#: uffd/user/templates/user/show.html:80
 msgid "mail to set it will be sent"
 msgstr "Mail zum Setzen wird versendet"
 
-#: uffd/user/templates/user/show.html:123
+#: uffd/user/templates/user/show.html:91
+msgid "Status:"
+msgstr "Status:"
+
+#: uffd/user/templates/user/show.html:91
+msgid "Enabled"
+msgstr "Aktiv"
+
+#: uffd/user/templates/user/show.html:94
+msgid "Reset 2FA"
+msgstr "2FA zurücksetzen"
+
+#: uffd/user/templates/user/show.html:134
 msgid "Resulting groups (only updated after save)"
 msgstr "Resultierende Gruppen (wird nur aktualisiert beim Speichern)"
 
diff --git a/uffd/user/templates/user/show.html b/uffd/user/templates/user/show.html
index bd5a0a65..16ceb1b2 100644
--- a/uffd/user/templates/user/show.html
+++ b/uffd/user/templates/user/show.html
@@ -7,7 +7,6 @@
 		<button type="submit" class="btn btn-primary"><i class="fa fa-save" aria-hidden="true"></i> {{_("Save")}}</button>
 		<a href="{{ url_for("user.index") }}" class="btn btn-secondary">{{_("Cancel")}}</a>
 		{% if user.id %}
-			<a href="{{ url_for("mfa.admin_disable", id=user.id) }}" class="btn btn-secondary">{{_("Reset 2FA")}}</a>
 			<a href="{{ url_for("user.delete", id=user.id) }}" onClick='return confirm({{_("Are you sure?")|tojson}});' class="btn btn-danger"><i class="fa fa-trash" aria-hidden="true"></i> {{_("Delete")}}</a>
 		{% else %}
 			<a href="#" class="btn btn-danger disabled"><i class="fa fa-trash" aria-hidden="true"></i> {{_("Delete")}}</a>
@@ -84,6 +83,18 @@
 					{{ User.PASSWORD_DESCRIPTION|safe }}
 				</small>
 			</div>
+
+			{% if user.id %}
+			<div class="form-group col">
+				<div class="mb-1">{{_("Two-Factor Authentication")}}</div>
+				<p>
+					{{ _("Status:") }} {{ _("Enabled") if user.mfa_enabled else _("Disabled") }}<br>
+					{{ user.mfa_recovery_codes|length }} {{ _("Recovery Codes") }}, {{ user.mfa_totp_methods|length }} {{ _("Authenticator Apps (TOTP)") }}, {{ user.mfa_webauthn_methods|length }} {{ _("U2F and FIDO2 Devices") }}
+				</p>
+				<a href="{{ url_for("mfa.admin_disable", id=user.id) }}" onClick='return confirm({{_("Are you sure?")|tojson}});' class="btn btn-secondary">{{_("Reset 2FA")}}</a>
+			</div>
+			{% endif %}
+
 		</div>
 		<div class="tab-pane fade" id="roles" role="tabpanel" aria-labelledby="roles-tab">
 			<div class="form-group col">
-- 
GitLab