diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-08-01 01:10:35 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-08-01 01:10:35 +0200 |
| commit | f6c1f0f08f031778a491465d35ac694bfcdc12b0 (patch) | |
| tree | 99aec0f419b1122821124fdb7ae8bdf4bc5831db /config/locales | |
| parent | df90138fb55f7d3652d3d69d58325d7329920f51 (diff) | |
Require a fresh second factor for user management
Administrative actions are gated behind a 30-minute elevation window:
creating and retiring accounts, editing roles, clearing a second factor.
Reading the list is not gated, and content work is untouched.
elevated? is tied to is_admin?, so losing the role closes the window at
once. The window opens when the second factor verifies at login, so an
admin heading straight for user management is already elevated, and closes
on logout with the other session state. Five wrong codes end the session,
mirroring the login challenge.
users#update carries no elevation filter, since self-service reaches it;
the role field is gated in user_params instead and fails closed.
Diffstat (limited to 'config/locales')
| -rw-r--r-- | config/locales/de.yml | 11 | ||||
| -rw-r--r-- | config/locales/en.yml | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/config/locales/de.yml b/config/locales/de.yml index 04eb738e..7edffe2d 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml | |||
| @@ -628,6 +628,8 @@ de: | |||
| 628 | none_to_remove: "Es existiert keine %{lang}-Übersetzung zum Entfernen." | 628 | none_to_remove: "Es existiert keine %{lang}-Übersetzung zum Entfernen." |
| 629 | last_translation: "Die einzige verbliebene Übersetzung kann nicht entfernt werden." | 629 | last_translation: "Die einzige verbliebene Übersetzung kann nicht entfernt werden." |
| 630 | removed: "%{lang}-Übersetzung aus dem Entwurf entfernt. Veröffentlichen, um das dauerhaft zu machen." | 630 | removed: "%{lang}-Übersetzung aus dem Entwurf entfernt. Veröffentlichen, um das dauerhaft zu machen." |
| 631 | elevation: | ||
| 632 | dropped: "Administrative Rechte abgelegt." | ||
| 631 | 633 | ||
| 632 | assets: | 634 | assets: |
| 633 | index: | 635 | index: |
| @@ -721,6 +723,15 @@ de: | |||
| 721 | title_fields: | 723 | title_fields: |
| 722 | falls_back: "Menu-Titel. Leere Titel werden aus deutsch übernommen" | 724 | falls_back: "Menu-Titel. Leere Titel werden aus deutsch übernommen" |
| 723 | 725 | ||
| 726 | elevations: | ||
| 727 | new: | ||
| 728 | title: "Administrative Rechte anfordern" | ||
| 729 | hint: "Für Benutzerverwaltung ist ein aktueller zweiter Faktor nötig. Die Rechte gelten dann %{minutes} Minuten." | ||
| 730 | code: "Aktueller Code" | ||
| 731 | elevate: "Rechte anfordern" | ||
| 732 | not_enrolled: "Für administrative Arbeiten ist ein zweiter Faktor erforderlich. Bitte zuerst einen einrichten." | ||
| 733 | enrol: "Zweiten Faktor einrichten" | ||
| 734 | |||
| 724 | layouts: | 735 | layouts: |
| 725 | application: | 736 | application: |
| 726 | light_mode_aria: "Zwischen dunklem und hellem Modus wechseln" | 737 | light_mode_aria: "Zwischen dunklem und hellem Modus wechseln" |
diff --git a/config/locales/en.yml b/config/locales/en.yml index 2f7ac72f..9a8041bf 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml | |||
| @@ -587,6 +587,8 @@ en: | |||
| 587 | none_to_remove: "No %{lang} translation exists to remove." | 587 | none_to_remove: "No %{lang} translation exists to remove." |
| 588 | last_translation: "Can't remove the only remaining translation." | 588 | last_translation: "Can't remove the only remaining translation." |
| 589 | removed: "%{lang} translation removed from the draft. Publish to make this permanent." | 589 | removed: "%{lang} translation removed from the draft. Publish to make this permanent." |
| 590 | elevation: | ||
| 591 | dropped: "Administrative rights dropped." | ||
| 590 | 592 | ||
| 591 | assets: | 593 | assets: |
| 592 | index: | 594 | index: |
| @@ -664,6 +666,15 @@ en: | |||
| 664 | title: "Compare" | 666 | title: "Compare" |
| 665 | default_marker: "default" | 667 | default_marker: "default" |
| 666 | 668 | ||
| 669 | elevations: | ||
| 670 | new: | ||
| 671 | title: "Request administrative rights" | ||
| 672 | hint: "User management needs a current second factor. The rights then last %{minutes} minutes." | ||
| 673 | code: "Current code" | ||
| 674 | elevate: "Request rights" | ||
| 675 | not_enrolled: "Administrative work requires a second factor. Please set one up first." | ||
| 676 | enrol: "Set up a second factor" | ||
| 677 | |||
| 667 | layouts: | 678 | layouts: |
| 668 | application: | 679 | application: |
| 669 | light_mode_aria: "Switch between dark and light mode" | 680 | light_mode_aria: "Switch between dark and light mode" |
