summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-08-01 04:14:00 +0200
committererdgeist <erdgeist@erdgeist.org>2026-08-01 04:14:00 +0200
commitabd7ee1fc2ecc15b50944db30c59bedc26ec41b6 (patch)
tree821bb8ca610664c57d9065bf62285166243500a4 /config
parent6df48c1413a14516e7ee8919f33fbc13f0141966 (diff)
Let Redaktion grant and revoke its own role
Any holder may add or remove another account, witnessed as redaktion_grant/revoke so the vouching is legible. Not behind elevation: onboarding must not wait for a keyholder, and a compromised Redaktion account can already publish.
Diffstat (limited to 'config')
-rw-r--r--config/locales/de.yml13
-rw-r--r--config/locales/en.yml15
-rw-r--r--config/routes.rb2
3 files changed, 30 insertions, 0 deletions
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 6b5c97cc..67117945 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -150,6 +150,7 @@ de:
150 attributes: 150 attributes:
151 roles: 151 roles:
152 unknown: "enthält unbekannte Rollen: %{list}" 152 unknown: "enthält unbekannte Rollen: %{list}"
153 admin_needs_otp: "Die Administrator-Rolle setzt einen zweiten Faktor voraus. Der Nutzer muss diesen zuerst selbst unter »Mein Konto« einrichten"
153 related_asset: 154 related_asset:
154 attributes: 155 attributes:
155 headline: 156 headline:
@@ -226,6 +227,8 @@ de:
226 otp_reset: "%{actor} hat den zweiten Faktor von %{target} zurückgesetzt" 227 otp_reset: "%{actor} hat den zweiten Faktor von %{target} zurückgesetzt"
227 user_deactivate: "%{actor} hat %{target} deaktiviert" 228 user_deactivate: "%{actor} hat %{target} deaktiviert"
228 user_reactivate: "%{actor} hat %{target} reaktiviert" 229 user_reactivate: "%{actor} hat %{target} reaktiviert"
230 redaktion_grant: "%{actor} hat %{target} in die Redaktion aufgenommen"
231 redaktion_revoke: "%{actor} hat %{target} aus der Redaktion entfernt"
229 232
230 open_gallery: "Gallerie anzeigen" 233 open_gallery: "Gallerie anzeigen"
231 asset_licenses: 234 asset_licenses:
@@ -291,6 +294,11 @@ de:
291 deactivate: "Deaktivieren" 294 deactivate: "Deaktivieren"
292 reactivate: "Reaktivieren" 295 reactivate: "Reaktivieren"
293 confirm_deactivate: "%{login} deaktivieren? Die Anmeldung wird sofort verweigert, Zuschreibungen bleiben erhalten." 296 confirm_deactivate: "%{login} deaktivieren? Die Anmeldung wird sofort verweigert, Zuschreibungen bleiben erhalten."
297 grant_redaktion: "In die Redaktion aufnehmen"
298 revoke_redaktion: "Aus der Redaktion entfernen"
299 confirm_grant_redaktion: "%{login} in die Redaktion aufnehmen? Damit darf %{login} in den geschützten Bereichen veröffentlichen."
300 confirm_revoke_redaktion: "%{login} aus der Redaktion entfernen?"
301 needs_otp: "zweiter Faktor fehlt"
294 index: 302 index:
295 title: "Benutzerkonten" 303 title: "Benutzerkonten"
296 create_editor: "Editor-Konto anlegen" 304 create_editor: "Editor-Konto anlegen"
@@ -301,6 +309,7 @@ de:
301 group_editor: "Editors" 309 group_editor: "Editors"
302 group_alumni: "Ehemalige" 310 group_alumni: "Ehemalige"
303 group_empty: "— keine —" 311 group_empty: "— keine —"
312 admin_hint: "Administrative Rechte lassen sich erst vergeben, nachdem der Nutzer sich angemeldet und einen zweiten Faktor eingerichtet hat."
304 labels: 313 labels:
305 roles: "Rollen" 314 roles: "Rollen"
306 roles: 315 roles:
@@ -595,6 +604,10 @@ de:
595 deactivated: "%{login} ist jetzt alumni und kann sich nicht mehr anmelden." 604 deactivated: "%{login} ist jetzt alumni und kann sich nicht mehr anmelden."
596 reactivated: "%{login} kann sich wieder anmelden." 605 reactivated: "%{login} kann sich wieder anmelden."
597 cannot_deactivate_self: "Das eigene Konto kann nicht deaktiviert werden." 606 cannot_deactivate_self: "Das eigene Konto kann nicht deaktiviert werden."
607 redaktion_granted: "%{login} gehört jetzt zur Redaktion."
608 redaktion_revoked: "%{login} gehört nicht mehr zur Redaktion."
609 redaktion_needs_otp: "%{login} braucht zuerst einen zweiten Faktor."
610 redaktion_not_self: "Die eigene Redaktions-Rolle kann nicht abgegeben werden."
598 assets: 611 assets:
599 created: "Asset wurde angelegt." 612 created: "Asset wurde angelegt."
600 updated: "Asset wurde aktualisiert." 613 updated: "Asset wurde aktualisiert."
diff --git a/config/locales/en.yml b/config/locales/en.yml
index e4c7ecc4..95eb7e94 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -97,6 +97,7 @@ en:
97 attributes: 97 attributes:
98 roles: 98 roles:
99 unknown: "contains unknown roles: %{list}" 99 unknown: "contains unknown roles: %{list}"
100 admin_needs_otp: "Administrator role requires an enrolled second factor. The user has to set one up under My account first"
100 related_asset: 101 related_asset:
101 attributes: 102 attributes:
102 headline: 103 headline:
@@ -170,6 +171,8 @@ en:
170 otp_reset: "%{actor} reset the second factor of %{target}" 171 otp_reset: "%{actor} reset the second factor of %{target}"
171 user_deactivate: "%{actor} deactivated %{target}" 172 user_deactivate: "%{actor} deactivated %{target}"
172 user_reactivate: "%{actor} reactivated %{target}" 173 user_reactivate: "%{actor} reactivated %{target}"
174 redaktion_grant: "%{actor} added %{target} to Redaktion"
175 redaktion_revoke: "%{actor} removed %{target} from Redaktion"
173 176
174 open_gallery: "Open gallery" 177 open_gallery: "Open gallery"
175 asset_licenses: 178 asset_licenses:
@@ -235,6 +238,12 @@ en:
235 deactivate: "Deactivate" 238 deactivate: "Deactivate"
236 reactivate: "Reactivate" 239 reactivate: "Reactivate"
237 confirm_deactivate: "Deactivate %{login}? Sign-in is refused immediately; attributions are preserved." 240 confirm_deactivate: "Deactivate %{login}? Sign-in is refused immediately; attributions are preserved."
241 grant_redaktion: "Add to Redaktion"
242 revoke_redaktion: "Remove from Redaktion"
243 confirm_grant_redaktion: "Add %{login} to Redaktion? They will be able to publish in the protected sections."
244 confirm_revoke_redaktion: "Remove %{login} from Redaktion?"
245 needs_otp: "no second factor"
246
238 index: 247 index:
239 title: "User accounts" 248 title: "User accounts"
240 create_editor: "Create editor account" 249 create_editor: "Create editor account"
@@ -245,6 +254,7 @@ en:
245 group_editor: "Editors" 254 group_editor: "Editors"
246 group_alumni: "Alumni" 255 group_alumni: "Alumni"
247 group_empty: "— none —" 256 group_empty: "— none —"
257 admin_hint: "Administrative rights can only be granted after the account has signed in and set up a second factor."
248 labels: 258 labels:
249 roles: "Roles" 259 roles: "Roles"
250 roles: 260 roles:
@@ -554,6 +564,11 @@ en:
554 deactivated: "%{login} is now an alumnus and can no longer sign in." 564 deactivated: "%{login} is now an alumnus and can no longer sign in."
555 reactivated: "%{login} can sign in again." 565 reactivated: "%{login} can sign in again."
556 cannot_deactivate_self: "You cannot deactivate your own account." 566 cannot_deactivate_self: "You cannot deactivate your own account."
567 redaktion_granted: "%{login} is now part of Redaktion."
568 redaktion_revoked: "%{login} is no longer part of Redaktion."
569 redaktion_needs_otp: "%{login} needs a second factor first."
570 redaktion_not_self: "You cannot give up your own Redaktion role."
571
557 assets: 572 assets:
558 created: "Asset was successfully created." 573 created: "Asset was successfully created."
559 updated: "Asset was successfully updated." 574 updated: "Asset was successfully updated."
diff --git a/config/routes.rb b/config/routes.rb
index 58e1e632..d19ac25b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -102,6 +102,8 @@ Cccms::Application.routes.draw do
102 put :reset_otp 102 put :reset_otp
103 put :deactivate 103 put :deactivate
104 put :reactivate 104 put :reactivate
105 put :grant_redaktion
106 put :revoke_redaktion
105 end 107 end
106 end 108 end
107 resource :otp_enrollment, :only => [:show, :create, :update, :destroy] 109 resource :otp_enrollment, :only => [:show, :create, :update, :destroy]