masks-server 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/masks/server/scim_endpoint.rb +2 -2
  3. data/app/controllers/masks/server/account_exports_controller.rb +2 -2
  4. data/app/controllers/masks/server/addresses_controller.rb +2 -3
  5. data/app/controllers/masks/server/authenticator_apps_controller.rb +2 -3
  6. data/app/controllers/masks/server/authorize_controller.rb +2 -2
  7. data/app/controllers/masks/server/device_authorizations_controller.rb +2 -2
  8. data/app/controllers/masks/server/device_verifications_controller.rb +2 -2
  9. data/app/controllers/masks/server/enrollments_controller.rb +4 -4
  10. data/app/controllers/masks/server/forward_auth_controller.rb +2 -2
  11. data/app/controllers/masks/server/introspections_controller.rb +2 -2
  12. data/app/controllers/masks/server/logins_controller.rb +10 -12
  13. data/app/controllers/masks/server/manage_controller.rb +1 -0
  14. data/app/controllers/masks/server/organization_members_controller.rb +2 -2
  15. data/app/controllers/masks/server/passwords_controller.rb +2 -3
  16. data/app/controllers/masks/server/pushed_authorizations_controller.rb +2 -2
  17. data/app/controllers/masks/server/received_signals_controller.rb +2 -2
  18. data/app/controllers/masks/server/registrations_controller.rb +2 -2
  19. data/app/controllers/masks/server/revocations_controller.rb +2 -2
  20. data/app/controllers/masks/server/saml_controller.rb +2 -2
  21. data/app/controllers/masks/server/scim/metadata_controller.rb +1 -1
  22. data/app/controllers/masks/server/sign_in_approvals_controller.rb +2 -3
  23. data/app/controllers/masks/server/tokens_controller.rb +2 -2
  24. data/app/controllers/masks/server/verifications_controller.rb +2 -3
  25. data/app/graphql/masks/server/manage/types/health_check_type.rb +1 -1
  26. data/app/ldap/masks/server/ldap/gate.rb +14 -16
  27. data/app/models/masks/server/app_passwords.rb +7 -13
  28. data/app/models/masks/server/app_preset.rb +1 -1
  29. data/app/models/masks/server/client.rb +24 -0
  30. data/app/models/masks/server/client_metadata_document.rb +4 -8
  31. data/app/models/masks/server/confirmation_code.rb +2 -2
  32. data/app/models/masks/server/declared.rb +3 -1
  33. data/app/models/masks/server/event.rb +2 -2
  34. data/app/models/masks/server/health.rb +70 -3
  35. data/app/models/masks/server/saml_identity/farewells.rb +1 -0
  36. data/app/models/masks/server/tenant.rb +48 -4
  37. data/app/models/masks/server/throttle.rb +165 -0
  38. data/app/views/masks/server/handshakes/show.html.erb +2 -8
  39. data/app/views/masks/server/logins/_consent.html.erb +43 -44
  40. data/app/views/masks/server/logins/_enrol.html.erb +1 -1
  41. data/app/views/masks/server/logins/_setup_configure.html.erb +2 -6
  42. data/app/views/masks/server/logins/_signup.html.erb +2 -9
  43. data/app/views/masks/server/logins/_signup_credentials.html.erb +1 -2
  44. data/app/views/masks/server/logins/_signup_head.html.erb +1 -11
  45. data/config/locales/de/account.yml +4 -4
  46. data/config/locales/de/handshakes.yml +6 -6
  47. data/config/locales/de/logins.yml +44 -30
  48. data/config/locales/de/manage/health.yml +9 -2
  49. data/config/locales/en/account.yml +4 -4
  50. data/config/locales/en/handshakes.yml +6 -6
  51. data/config/locales/en/logins.yml +44 -30
  52. data/config/locales/en/manage/health.yml +9 -2
  53. data/config/locales/es/account.yml +4 -4
  54. data/config/locales/es/handshakes.yml +6 -6
  55. data/config/locales/es/logins.yml +42 -28
  56. data/config/locales/es/manage/health.yml +9 -2
  57. data/config/locales/fr/account.yml +4 -4
  58. data/config/locales/fr/handshakes.yml +6 -6
  59. data/config/locales/fr/logins.yml +43 -29
  60. data/config/locales/fr/manage/health.yml +9 -2
  61. data/db/migrate/20261031100000_default_key_rotation_to_ninety_days.rb +5 -0
  62. data/lib/generators/masks/server/install/install_generator.rb +19 -0
  63. data/lib/masks/server/configuration.rb +14 -8
  64. data/lib/masks/server/engine.rb +2 -1
  65. data/lib/masks/server/forwarding.rb +26 -3
  66. data/lib/masks/server/schema_reference.rb +1 -1
  67. data/lib/masks/server/tenancy/middleware.rb +4 -7
  68. data/lib/masks/server/tenant_isolation.rb +12 -0
  69. data/public/masks-assets/.vite/manifest.json +3 -3
  70. data/public/masks-assets/assets/app-Cfbt-A5V.css +2 -0
  71. data/public/masks-assets/assets/login-BDggujiZ.js +6 -0
  72. data/public/masks-assets/assets/login-BDggujiZ.js.map +1 -0
  73. data/public/masks-assets/assets/{manage-DpVxe5sv.js → manage-VgOqKj7N.js} +2 -2
  74. data/public/masks-assets/assets/manage-VgOqKj7N.js.map +1 -0
  75. data/version.txt +1 -1
  76. metadata +8 -6
  77. data/public/masks-assets/assets/app-BXOScMjL.css +0 -2
  78. data/public/masks-assets/assets/login-C21_jb6L.js +0 -4
  79. data/public/masks-assets/assets/login-C21_jb6L.js.map +0 -1
  80. data/public/masks-assets/assets/manage-DpVxe5sv.js.map +0 -1
@@ -62,7 +62,7 @@ de:
62
62
  set:
63
63
  one: "1 eingerichtet"
64
64
  other: "%{count} eingerichtet"
65
- explained: "Statt ein Passwort einzugeben, prüft Ihr Gerät auf dieselbe Weise, wie es sich entsperrt, dass Sie es sind. Das zählt als beide Faktoren zugleich, daher müssen Sie auf keinen Code warten."
65
+ explained: "Statt ein Passwort einzutippen, prüft Ihr Gerät so, dass Sie es sind, wie es sich ohnehin entsperrt. Es zählt auch als Ihr zweiter Schritt, also müssen Sie auf keinen Code warten."
66
66
  used: "zuletzt verwendet vor %{age}"
67
67
  never_used: "nie verwendet"
68
68
  remove: "Entfernen"
@@ -209,11 +209,11 @@ de:
209
209
  remembered: "%{label}, ohne Nachfrage bis %{date}"
210
210
  heading: "Apps, die Sie zugelassen haben"
211
211
  none_yet: "Bisher hat nichts angefragt. Eine App erscheint hier, sobald Sie sich bei ihr anmelden, zusammen mit dem, was sie sehen darf."
212
- revoke: "Zugriff widerrufen"
212
+ revoke: "Zugriff entfernen"
213
213
  more:
214
214
  one: "und eine weitere"
215
215
  other: "und %{count} weitere"
216
- confirm_revoke: "%{client} widerrufen? Alles, was die App hält, funktioniert nicht mehr, und sie muss bei Ihrer nächsten Anmeldung erneut fragen."
216
+ confirm_revoke: "%{client} den Zugriff entfernen? Alles, was es gerade hält, funktioniert nicht mehr, und es muss bei der nächsten Anmeldung erneut fragen."
217
217
 
218
218
  connections:
219
219
  heading: "Verbundene Konten"
@@ -258,7 +258,7 @@ de:
258
258
 
259
259
  export:
260
260
  heading: "Ihr Konto herunterladen"
261
- state: "JSON"
261
+ state: "Eine Datei"
262
262
  lede: "Eine Datei mit Ihrem Profil, Ihren Anmeldemethoden, Organisationen, Apps, verbundenen Konten und Geräten sowie der Aktivität, die masks aufbewahrt hat. Sie enthält keine Passwörter, Codes oder Schlüssel."
263
263
  again: "Ihre Anmeldung ist eine Weile her, daher werden Sie zuerst gebeten, sich erneut anzumelden."
264
264
  submit: "Herunterladen"
@@ -3,29 +3,29 @@ de:
3
3
  show:
4
4
  page_title: "%{name} verbinden"
5
5
  page_title_again: "%{name} neu verbinden"
6
- title: "%{name} mit %{tenant} verbinden?"
6
+ title: "%{name} verbinden?"
7
7
  title_again: "%{name} neu verbinden?"
8
- runs_at: "Läuft unter"
8
+ runs_at: "%{name} läuft unter %{origin}."
9
9
  lede_html: "Alle können sich dann mit ihrem %{tenant}-Konto bei <strong>%{name}</strong> anmelden. Vorerst haben nur Sie Zugang, und Sie legen später fest, wer noch hinein darf."
10
10
  lede_again_html: "<strong>%{name}</strong> ist bereits mit %{tenant} verbunden. Beim neuen Verbinden wird die App neu eingerichtet. Vorerst haben nur Sie Zugang, und Sie legen später fest, wer noch hinein darf."
11
11
  stops_working: "Die bisherige Verbindung zu %{name} funktioniert dann nicht mehr."
12
12
  connected_by_you: "Sie haben %{name} am %{date} verbunden."
13
13
  connected_by: "%{who} hat %{name} am %{date} verbunden."
14
- signed_in_as: "Sie stimmen zu als"
14
+ signed_in_as: "Sie verbinden als"
15
15
  unconfirmed: "(E-Mail noch nicht bestätigt)"
16
- check: "Sehen Sie sich das zuerst an"
16
+ check: "Bevor Sie verbinden"
17
17
  heed:
18
18
  offline_access: "%{name} kann Personen angemeldet halten, ohne erneut zu fragen, bis sie sich abmelden."
19
19
  delegates_title: "Personen bitten, ihre anderen Konten zu verbinden"
20
20
  delegates: "Jede Person entscheidet selbst. %{name} kann diese Konten dann nutzen, während sie nicht da sind."
21
21
  delegate: "%{name} kann dieses Konto nutzen, während Sie nicht da sind, bis Sie es beenden."
22
22
  manage: "Alle, die sich über %{name} anmelden, können jede Einstellung auf diesem Server ändern."
23
- sees: "%{name} sieht"
23
+ sees: "%{name} erfährt"
24
24
  area: "Eigene Berechtigungen von %{name}"
25
25
  area_says_html: "%{name} erhält eigene Berechtigungen mit dem Namen %{namespaces}. Sie entscheiden, wer sie bekommt."
26
26
  area_yours: " Sie erhalten sie jetzt alle."
27
27
  also: "%{name} kann außerdem"
28
- details: "Technische Details"
28
+ details: "Details"
29
29
  scopes: "Scopes"
30
30
  client: "Zugangsdaten"
31
31
  credentials:
@@ -16,7 +16,7 @@ de:
16
16
  name: "Name"
17
17
  phone: "Telefon"
18
18
  password: "Passwort"
19
- not_you: "Nicht Sie?"
19
+ not_you: "Ein anderes Konto verwenden"
20
20
  sign_out: "Abmelden"
21
21
  use_passkey: "Passkey verwenden"
22
22
  or: "oder"
@@ -40,10 +40,12 @@ de:
40
40
  tab_confirmation: "Bestätigung"
41
41
  setup_cap: "Willkommen!"
42
42
  setup_title: "Einrichten"
43
- signup_title: "Konto erstellen bei"
43
+ signup_title: "Konto anlegen"
44
44
  token: "Einrichtungstoken"
45
- token_hint: "Steht in den Server-Logs, die nur lesen kann, wer masks betreibt."
46
- origin: "Einrichten unter"
45
+ token_hint: "Es steht im Protokoll des Servers."
46
+ origin: "Dieses masks antwortet unter %{origin}."
47
+ pick_nickname: "Einen Spitznamen wählen"
48
+ nickname_hint: "Andere sehen ihn. Lassen Sie es, wie es ist, um %{suggested} zu verwenden."
47
49
  once: "Dieser Bildschirm erscheint nicht wieder."
48
50
  docs: "Dokumentation lesen."
49
51
  confirm: "Passwort bestätigen"
@@ -57,15 +59,15 @@ de:
57
59
  proving: "Browser wird geprüft"
58
60
 
59
61
  identify:
60
- heading: "Melden Sie sich an, um fortzufahren"
62
+ heading: "Anmelden"
61
63
  heading_to: "Bei %{client} anmelden"
62
- identifier: "Spitzname oder E-Mail-Adresse"
63
- signup_hint: "Neu hier? Geben Sie die Adresse ein, die Sie verwenden möchten, und dafür wird ein Konto erstellt."
64
+ identifier: "E-Mail oder Spitzname"
65
+ signup_hint: "Neu hier? Geben Sie Ihre E-Mail-Adresse ein, und masks legt ein Konto für Sie an."
64
66
 
65
67
  first_factor:
66
68
  title: "Geben Sie Ihr Passwort ein"
67
69
  title_code: "Mit einem Code anmelden"
68
- forgot: "Vergessen?"
70
+ forgot: "Passwort vergessen?"
69
71
  email_me: "Stattdessen einen Code per E-Mail senden"
70
72
  email_only: "Code per E-Mail senden"
71
73
 
@@ -76,16 +78,16 @@ de:
76
78
  sent_again: "Gesendet"
77
79
 
78
80
  second_factor:
79
- title: "Geben Sie Ihren Code ein"
80
- title_passkey: "Verwenden Sie Ihren zweiten Faktor"
81
- trust: "Diesem Gerät %{duration} lang vertrauen"
81
+ title: "Bestätigen Sie, dass Sie es sind"
82
+ title_passkey: "Bestätigen Sie mit Ihrem Passkey, dass Sie es sind"
83
+ trust: "Auf diesem Gerät %{duration} lang überspringen"
82
84
  use_backup_code: "Backup-Code verwenden"
83
85
  stuck_insecure: "Der zweite Faktor dieses Kontos ist ein Passkey, und der Browser bietet Passkeys nur Seiten an, die über HTTPS ausgeliefert werden. Öffnen Sie diese Seite über HTTPS, um fortzufahren."
84
86
  stuck_unsupported: "Der zweite Faktor dieses Kontos ist ein Passkey, und dieser Browser unterstützt keine Passkeys. Öffnen Sie diese Seite in einem Browser, der sie unterstützt, um fortzufahren."
85
87
  stuck_no_script: "Der zweite Faktor dieses Kontos ist ein Passkey, und ein Passkey braucht JavaScript. Aktivieren Sie JavaScript, um fortzufahren."
86
88
  stuck_inbox: "Diese Anmeldung hat in Ihrem Posteingang begonnen, daher kann ein dorthin gesendeter Code sie nicht bestätigen. Beginnen Sie von vorn und melden Sie sich mit Ihrem Passwort an, um einen Code per E-Mail zu verwenden."
87
89
  stuck_nothing: "Dieses Konto hat keinen zweiten Faktor, den diese Anmeldung verwenden kann. Ein Verwalter kann ihn zurücksetzen."
88
- recovery_request: "Ich kann nichts davon verwenden"
90
+ recovery_request: "Ich kann keinen davon verwenden"
89
91
  recovery_ask: "Einen Verwalter um Hilfe bitten"
90
92
  recovery_requested: "Ein Verwalter wurde gebeten, Ihre zweiten Faktoren zurückzusetzen. Er wird Sie möglicherweise kontaktieren, um sicherzugehen, dass Sie es sind. Danach melden Sie sich erneut an, um einen neuen einzurichten."
91
93
  sent_to: "Gesendet an %{to}."
@@ -101,16 +103,26 @@ de:
101
103
  approval_checked: "Ich habe genehmigt"
102
104
 
103
105
  enrol:
104
- title: "Sichern Sie Ihr Konto"
105
- lede: "Fügen Sie beliebig viele zweite Faktoren hinzu. Dieses Konto braucht mindestens einen."
106
- lede_optional: "Fügen Sie beliebig viele zweite Faktoren hinzu."
106
+ title: "Konto schützen"
107
+ lede: "Wählen Sie einen Weg, mit dem Sie bei der Anmeldung bestätigen, dass Sie es sind. Weitere können Sie später hinzufügen."
108
+ lede_optional: "Wählen Sie einen Weg, mit dem Sie bei der Anmeldung bestätigen, dass Sie es sind, oder überspringen Sie das vorerst."
109
+ on_title: "Ihr Konto ist geschützt"
110
+ on_lede: "So bestätigen Sie bei der Anmeldung, dass Sie es sind."
111
+ on_label: "Eingeschaltet"
112
+ passkey: "Passkey"
107
113
  otp: "Authenticator-App"
114
+ otp_about: "Eine App wie Google Authenticator oder 1Password zeigt einen sechsstelligen Code."
108
115
  otp_on: "Aktiv"
109
- scan_hint: "Scannen Sie ihn, oder geben Sie diesen Schlüssel von Hand ein:"
116
+ scan_hint: "Scannen Sie das mit Ihrer Authenticator-App, oder tippen Sie den Schlüssel dort ein:"
117
+ passkey_about: "Ihr Telefon oder Computer prüft mit Gesicht, Fingerabdruck oder PIN, dass Sie es sind."
118
+ codes_email_about: "Bei jeder Anmeldung geht ein Code an %{to}."
119
+ codes_sms_about: "Bei jeder Anmeldung geht ein Code per SMS an %{to}."
120
+ another_way: "Einen anderen Weg wählen"
121
+ add_way: "Einen weiteren Weg hinzufügen"
110
122
  open: "In Ihrer Authenticator-App öffnen"
111
123
  turn_on: "Aktivieren"
112
124
  passkeys: "Passkeys"
113
- passkeys_none: "Noch keine. Einer, der eine PIN oder einen Fingerabdruck prüft, zählt."
125
+ passkeys_none: "Noch keiner."
114
126
  passkeys_some: "%{count} hinzugefügt"
115
127
  add_passkey: "Passkey hinzufügen"
116
128
  add_another_passkey: "Weiteren hinzufügen"
@@ -118,17 +130,17 @@ de:
118
130
  codes_email_hint: "Ein an %{to} gesendeter Code bestätigt jede Anmeldung."
119
131
  codes_sms: "Codes per SMS"
120
132
  codes_sms_hint: "Ein per SMS an %{to} gesendeter Code bestätigt jede Anmeldung."
121
- send_code: "Code senden, um es zu aktivieren"
133
+ send_code: "Code schicken"
122
134
  sent_to: "Gesendet an %{to}."
123
135
  backup_codes: "Backup-Codes"
124
- backup_codes_waiting: "Werden für Sie erstellt, sobald oben ein Faktor aktiv ist."
125
- backup_codes_hint: "Jeder meldet einmal an, wenn nichts anderes zur Hand ist. Sie werden nicht erneut angezeigt."
136
+ backup_codes_waiting: "Werden erstellt, sobald ein Weg oben eingeschaltet ist."
137
+ backup_codes_hint: "Jeder Code meldet Sie einmal an, falls Sie Ihren anderen Weg verlieren. Sichern Sie sie jetzt. Sie werden nicht noch einmal gezeigt."
126
138
  backup_codes_left: "%{count} übrig"
127
139
  backup_codes_file: "Backup-Codes für %{account} bei %{origin}"
128
140
  copy: "Kopieren"
129
141
  copied: "Kopiert"
130
142
  download: "Herunterladen"
131
- kept: "Ich habe meine Backup-Codes sicher aufbewahrt"
143
+ kept: "Ich habe meine Backup-Codes gesichert"
132
144
  done: "Weiter"
133
145
  skip: "Vorerst überspringen"
134
146
 
@@ -163,7 +175,7 @@ de:
163
175
  prove_email:
164
176
  title: "Prüfen Sie Ihre E-Mails"
165
177
  lede: "Ein sechsstelliger Code ist unterwegs an %{email}. Geben Sie ihn ein, um fortzufahren."
166
- no_mailer: "Dieser Server kann noch keine E-Mails senden, daher kann keine Adresse zur Anmeldung verwendet werden. Verwenden Sie Ihren Spitznamen oder wenden Sie sich an einen Verwalter."
178
+ no_mailer: "Dieser Server kann noch keine E-Mails senden, also kann er Ihre Adresse nicht prüfen. Melden Sie sich mit Ihrem Spitznamen an, oder bitten Sie den Betreiber, die Adresse für Sie zu bestätigen."
167
179
 
168
180
  setup_configure:
169
181
  called: "Dieser Server heißt"
@@ -202,17 +214,19 @@ de:
202
214
  as: "%{organization}, als %{role}"
203
215
 
204
216
  consent:
205
- title: "%{client} erlauben?"
206
- access: "Zugriff"
207
- no_access: "Nichts außer der Bestätigung, wer Sie sind."
208
- audience: "In Ihrem Namen bei"
217
+ title: "%{client} möchte Sie anmelden"
218
+ access: "Es erfährt"
219
+ no_access: "Nur, dass Sie hier ein Konto haben."
220
+ audience: "Es kann für Sie handeln bei %{resources}."
209
221
  details: "Genau dies"
210
222
  returns_to: "Danach zurück zu"
223
+ more: "Details"
224
+ scopes: "Berechtigungen"
211
225
  site: "Über %{client}"
212
226
  terms: "Nutzungsbedingungen"
213
227
  privacy: "Datenschutzerklärung"
214
228
  allow: "Erlauben"
215
- deny: "Ablehnen"
229
+ deny: "Jetzt nicht"
216
230
  working: "Wird erlaubt"
217
231
 
218
232
  settled:
@@ -221,7 +235,7 @@ de:
221
235
  waiting: "Sie werden zurückgeleitet"
222
236
 
223
237
  warnings:
224
- invalid-credentials: "Spitzname und Passwort passen nicht zusammen."
238
+ invalid-credentials: "Diese E-Mail oder dieser Spitzname und das Passwort passen nicht zusammen."
225
239
  invalid-code: "Dieser Code ist ungültig."
226
240
  invalid-backup-code: "Dieser Backup-Code ist ungültig."
227
241
  invalid-passkey: "Dieser Passkey konnte nicht verwendet werden."
@@ -233,7 +247,7 @@ de:
233
247
  passkey-crowded: "Dieses Konto hat bereits so viele Passkeys, wie dieser Server speichert."
234
248
  second-factor-required: "Aktivieren Sie mindestens einen zweiten Faktor, um fortzufahren."
235
249
  backup-codes-unkept: "Bewahren Sie Ihre Backup-Codes auf, bevor Sie fortfahren."
236
- missing-identifier: "Geben Sie Ihren Spitznamen oder Ihre E-Mail-Adresse ein."
250
+ missing-identifier: "Geben Sie Ihre E-Mail oder Ihren Spitznamen ein."
237
251
  missing-first-factor: "Dieser Schritt ist abgelaufen. Beginnen Sie von vorn."
238
252
  too-many-attempts: "Zu viele Versuche. Warten Sie einige Minuten."
239
253
  too-many-attempts-for-account: "Zu viele Versuche für dieses Konto."
@@ -258,7 +272,7 @@ de:
258
272
  work-unsolved: "Dieser Browser hat die Prüfung gegen automatisierte Registrierungen nicht abgeschlossen. Versuchen Sie es erneut."
259
273
  invitation-expired: "Diese Einladung ist nicht mehr gültig. Fordern Sie eine neue an."
260
274
  reset-expired: "Dieser Link zum Zurücksetzen ist nicht mehr gültig. Fordern Sie einen neuen an."
261
- no-mailer: "Dieser Server kann keine E-Mails senden. Wenden Sie sich an einen Verwalter."
275
+ no-mailer: "Dieser Server kann noch keine E-Mails senden, also kann er Ihr Passwort nicht zurücksetzen. Bitten Sie den Betreiber um einen Link zum Zurücksetzen."
262
276
  sso-failed: "Diese Anmeldung wurde nicht abgeschlossen. Versuchen Sie es erneut."
263
277
  sso-expired: "Diese Anmeldung hat zu lange gedauert. Versuchen Sie es erneut."
264
278
  sso-unavailable: "Diese Art der Anmeldung ist nicht verfügbar."
@@ -65,13 +65,20 @@ de:
65
65
  proven: "Jede beanspruchte Domain hat noch ihren TXT-Eintrag."
66
66
  missing: "Der TXT-Eintrag fehlt für %{domains}. Ein Anspruch wird eine Woche nach dem Verschwinden seines Eintrags freigegeben."
67
67
  advice: "Legen Sie den TXT-Eintrag wieder unter dem Namen an, der auf der Seite Domains steht."
68
+ proxy:
69
+ title: "Reverse-Proxy"
70
+ quiet: "Weitergeleitete Header kommen nur von vertrauten Proxys, über HTTPS."
71
+ untrusted: "Weitergeleitete Header kamen von %{addresses}, das nicht in MASKS_TRUSTED_PROXIES steht, und wurden deshalb ignoriert. Alle Besucher hinter diesem Proxy teilen sich eine Adresse und ein Kontingent."
72
+ plain: "Der Proxy unter %{addresses} leitet Anfragen als einfaches HTTP weiter. masks markiert seine Cookies nur für HTTPS, also verwerfen Browser sie, und Anmeldungen laufen im Kreis."
73
+ one: "Alle %{count} Ereignisse der letzten Stunde kamen von %{address}, einer privaten Adresse, also höchstwahrscheinlich vom Proxy selbst."
74
+ advice: "Tragen Sie den Proxy in MASKS_TRUSTED_PROXIES ein und lassen Sie ihn X-Forwarded-For und X-Forwarded-Proto senden. Suchen Sie im Serverprotokoll nach Zeilen, die mit proxy: beginnen."
68
75
  keys:
69
76
  title: "Signaturschlüssel"
70
77
  missing: "Dieser Mandant hat keinen aktiven Signaturschlüssel, also kann nichts signiert werden."
71
- manual: "Schlüssel werden von Hand rotiert. Der aktive Schlüssel ist %{days} Tage alt."
78
+ manual: "Schlüssel werden von Hand rotiert, also ersetzt nichts den aktiven Schlüssel von selbst. Er ist %{days} Tage alt."
72
79
  fresh: "Der aktive Schlüssel ist %{days} Tage alt und rotiert alle %{period} Tage."
73
80
  stale: "Der aktive Schlüssel ist %{days} Tage alt, älter als seine Rotation von %{period} Tagen."
74
- advice: "Rotieren Sie den Schlüssel auf der Seite Einstellungen, oder lesen Sie den Job signing_keys im Serverprotokoll."
81
+ advice: "Wählen Sie auf der Seite Einstellungen einen Rotationsplan, rotieren Sie den Schlüssel dort, oder lesen Sie den Job signing_keys im Serverprotokoll."
75
82
  release:
76
83
  available: "Version %{version} ist verfügbar."
77
84
  operator: "Diese Version braucht einen Schritt von einem Betreiber. Lesen Sie ihre Hinweise vor dem Upgrade."
@@ -62,7 +62,7 @@ en:
62
62
  set:
63
63
  one: "1 set up"
64
64
  other: "%{count} set up"
65
- explained: "Instead of typing a password, your device checks it is you the way it already unlocks. It counts as both factors at once, so there is no code to wait for."
65
+ explained: "Instead of typing a password, your device checks it is you the way it already unlocks. It also counts as your second step, so there is no code to wait for."
66
66
  used: "last used %{age} ago"
67
67
  never_used: "never used"
68
68
  remove: "Remove"
@@ -209,11 +209,11 @@ en:
209
209
  remembered: "%{label}, without asking until %{date}"
210
210
  heading: "Apps you have let in"
211
211
  none_yet: "Nothing has asked yet. An app appears here once you sign in to it, with what you agreed it may see."
212
- revoke: "Revoke access"
212
+ revoke: "Remove access"
213
213
  more:
214
214
  one: "and one more"
215
215
  other: "and %{count} more"
216
- confirm_revoke: "Revoke %{client}? Anything it is holding stops working, and it has to ask again the next time you sign in."
216
+ confirm_revoke: "Remove %{client}'s access? Anything it is holding stops working, and it has to ask again the next time you sign in."
217
217
 
218
218
  connections:
219
219
  heading: "Connected accounts"
@@ -258,7 +258,7 @@ en:
258
258
 
259
259
  export:
260
260
  heading: "Download your account"
261
- state: "JSON"
261
+ state: "A file"
262
262
  lede: "A file with your profile, how you sign in, your organizations, apps, connected accounts, and devices, and the activity masks has kept. It holds no passwords, codes, or keys."
263
263
  again: "You signed in a while ago, so you will be asked to sign in again first."
264
264
  submit: "Download"
@@ -3,29 +3,29 @@ en:
3
3
  show:
4
4
  page_title: "Connect %{name}"
5
5
  page_title_again: "Reconnect %{name}"
6
- title: "Connect %{name} to %{tenant}?"
6
+ title: "Connect %{name}?"
7
7
  title_again: "Reconnect %{name}?"
8
- runs_at: "Runs at"
8
+ runs_at: "%{name} runs at %{origin}."
9
9
  lede_html: "People will be able to sign in to <strong>%{name}</strong> with their %{tenant} account. For now only you are allowed in, and you choose who else gets in later."
10
10
  lede_again_html: "<strong>%{name}</strong> is already connected to %{tenant}. Reconnecting sets it up again. For now only you are allowed in, and you choose who else gets in later."
11
11
  stops_working: "The current %{name} connection stops working."
12
12
  connected_by_you: "You connected %{name} on %{date}."
13
13
  connected_by: "%{who} connected %{name} on %{date}."
14
- signed_in_as: "You are approving as"
14
+ signed_in_as: "You are connecting as"
15
15
  unconfirmed: "(email not confirmed yet)"
16
- check: "Look at these first"
16
+ check: "Before you connect"
17
17
  heed:
18
18
  offline_access: "%{name} can keep people signed in without asking again, until they sign out."
19
19
  delegates_title: "Ask people to connect their other accounts"
20
20
  delegates: "Each person chooses for themselves. %{name} can then use those accounts while they are away."
21
21
  delegate: "%{name} can use that account while you are away, until you stop it."
22
22
  manage: "Anyone who signs in through %{name} can change every setting on this server."
23
- sees: "%{name} can see"
23
+ sees: "%{name} will know"
24
24
  area: "%{name}'s own permissions"
25
25
  area_says_html: "%{name} gets its own set of permissions, named %{namespaces}. You decide who gets them."
26
26
  area_yours: " You get all of them now."
27
27
  also: "%{name} can also"
28
- details: "Technical details"
28
+ details: "Details"
29
29
  scopes: "Scopes"
30
30
  client: "Credentials"
31
31
  credentials:
@@ -16,7 +16,7 @@ en:
16
16
  name: "Name"
17
17
  phone: "Phone"
18
18
  password: "Password"
19
- not_you: "Not you?"
19
+ not_you: "Use a different account"
20
20
  sign_out: "Sign out"
21
21
  use_passkey: "Use a passkey"
22
22
  or: "or"
@@ -40,10 +40,12 @@ en:
40
40
  tab_confirmation: "Confirmation"
41
41
  setup_cap: "Welcome!"
42
42
  setup_title: "Set up"
43
- signup_title: "Create an account at"
43
+ signup_title: "Create your account"
44
44
  token: "Setup token"
45
- token_hint: "Printed in the server's logs, where only whoever runs masks can read it."
46
- origin: "Set up at"
45
+ token_hint: "It is printed in the server's logs."
46
+ origin: "This masks answers at %{origin}."
47
+ pick_nickname: "Choose a nickname"
48
+ nickname_hint: "Other people see it. Leave it as it is to use %{suggested}."
47
49
  once: "This screen will not appear again."
48
50
  docs: "Read the documentation."
49
51
  confirm: "Confirm password"
@@ -57,15 +59,15 @@ en:
57
59
  proving: "Checking this browser"
58
60
 
59
61
  identify:
60
- heading: "Sign in to continue"
62
+ heading: "Sign in"
61
63
  heading_to: "Sign in to %{client}"
62
- identifier: "Nickname or email"
63
- signup_hint: "New here? Enter the address you want to use, and an account is made for it."
64
+ identifier: "Email or nickname"
65
+ signup_hint: "New here? Enter your email and masks makes you an account."
64
66
 
65
67
  first_factor:
66
68
  title: "Enter your password"
67
69
  title_code: "Sign in with a code"
68
- forgot: "Forgot it?"
70
+ forgot: "Forgot your password?"
69
71
  email_me: "Email me a code instead"
70
72
  email_only: "Email me a code"
71
73
 
@@ -76,16 +78,16 @@ en:
76
78
  sent_again: "Sent"
77
79
 
78
80
  second_factor:
79
- title: "Enter your code"
80
- title_passkey: "Use your second factor"
81
- trust: "Trust this device for %{duration}"
81
+ title: "Confirm it's you"
82
+ title_passkey: "Confirm it's you with your passkey"
83
+ trust: "Skip this on this device for %{duration}"
82
84
  use_backup_code: "Use a backup code"
83
85
  stuck_insecure: "This account's second factor is a passkey, and the browser only offers passkeys to a page served over HTTPS. Open this page over HTTPS to continue."
84
86
  stuck_unsupported: "This account's second factor is a passkey, and this browser does not support passkeys. Open this page in a browser that does to continue."
85
87
  stuck_no_script: "This account's second factor is a passkey, and a passkey needs JavaScript. Turn JavaScript on to continue."
86
88
  stuck_inbox: "This sign-in began from your inbox, so a code sent there cannot confirm it. Start over and sign in with your password to use an email code."
87
89
  stuck_nothing: "This account has no second factor this sign-in can use. A manager can reset it."
88
- recovery_request: "I cannot use any of these"
90
+ recovery_request: "I can't use any of these"
89
91
  recovery_ask: "Ask a manager for help"
90
92
  recovery_requested: "A manager has been asked to reset your second factors. They may contact you to make sure it is you. Once they have, sign in again to set up a new one."
91
93
  sent_to: "Sent to %{to}."
@@ -101,16 +103,26 @@ en:
101
103
  approval_checked: "I approved it"
102
104
 
103
105
  enrol:
104
- title: "Secure your account"
105
- lede: "Add as many second factors as you like. This account needs at least one."
106
- lede_optional: "Add as many second factors as you like."
106
+ title: "Protect your account"
107
+ lede: "Pick one way to confirm it's you when you sign in. You can add more later."
108
+ lede_optional: "Pick a way to confirm it's you when you sign in, or skip this for now."
109
+ on_title: "Your account is protected"
110
+ on_lede: "Here is how you confirm it's you when you sign in."
111
+ on_label: "Turned on"
112
+ passkey: "Passkey"
107
113
  otp: "Authenticator app"
114
+ otp_about: "An app such as Google Authenticator or 1Password shows a six-digit code."
108
115
  otp_on: "On"
109
- scan_hint: "Scan it, or enter this key by hand:"
116
+ scan_hint: "Scan this with your authenticator app, or type the key into it:"
117
+ passkey_about: "Your phone or computer checks it's you with your face, fingerprint, or PIN."
118
+ codes_email_about: "A code goes to %{to} each time you sign in."
119
+ codes_sms_about: "A code goes to %{to} by text message each time you sign in."
120
+ another_way: "Choose another way"
121
+ add_way: "Add another way"
110
122
  open: "Open in your authenticator app"
111
123
  turn_on: "Turn it on"
112
124
  passkeys: "Passkeys"
113
- passkeys_none: "None yet. One that checks a PIN or fingerprint counts."
125
+ passkeys_none: "None yet."
114
126
  passkeys_some: "%{count} added"
115
127
  add_passkey: "Add a passkey"
116
128
  add_another_passkey: "Add another"
@@ -118,17 +130,17 @@ en:
118
130
  codes_email_hint: "A code sent to %{to} confirms each sign-in."
119
131
  codes_sms: "SMS codes"
120
132
  codes_sms_hint: "A code sent to %{to} by SMS confirms each sign-in."
121
- send_code: "Send a code to turn it on"
133
+ send_code: "Send me a code"
122
134
  sent_to: "Sent to %{to}."
123
135
  backup_codes: "Backup codes"
124
- backup_codes_waiting: "Made for you once a factor above is on."
125
- backup_codes_hint: "Each one signs in once, when nothing else is to hand. They are not shown again."
136
+ backup_codes_waiting: "Made for you once a way above is on."
137
+ backup_codes_hint: "Each code signs you in once if you lose your other way in. Save them now. They are not shown again."
126
138
  backup_codes_left: "%{count} left"
127
139
  backup_codes_file: "Backup codes for %{account} at %{origin}"
128
140
  copy: "Copy them"
129
141
  copied: "Copied"
130
142
  download: "Download them"
131
- kept: "I have kept my backup codes somewhere safe"
143
+ kept: "I saved my backup codes"
132
144
  done: "Continue"
133
145
  skip: "Skip for now"
134
146
 
@@ -163,7 +175,7 @@ en:
163
175
  prove_email:
164
176
  title: "Check your email"
165
177
  lede: "A six-digit code is on its way to %{email}. Enter it to carry on."
166
- no_mailer: "This server cannot send email yet, so an address cannot be used to sign in. Use your nickname, or ask a manager."
178
+ no_mailer: "This server cannot send email yet, so it cannot check your address. Sign in with your nickname, or ask whoever runs it to confirm the address for you."
167
179
 
168
180
  setup_configure:
169
181
  called: "This server is called"
@@ -202,17 +214,19 @@ en:
202
214
  as: "%{organization}, as %{role}"
203
215
 
204
216
  consent:
205
- title: "Allow %{client}?"
206
- access: "Access"
207
- no_access: "Nothing beyond confirming who you are."
208
- audience: "On your behalf at"
217
+ title: "%{client} wants to sign you in"
218
+ access: "It will know"
219
+ no_access: "Only that you have an account here."
220
+ audience: "It can act for you at %{resources}."
209
221
  details: "Exactly this"
210
222
  returns_to: "Then back to"
223
+ more: "Details"
224
+ scopes: "Permissions"
211
225
  site: "About %{client}"
212
226
  terms: "Its terms"
213
227
  privacy: "Its privacy policy"
214
228
  allow: "Allow"
215
- deny: "Deny"
229
+ deny: "Not now"
216
230
  working: "Allowing"
217
231
 
218
232
  settled:
@@ -221,7 +235,7 @@ en:
221
235
  waiting: "Taking you back"
222
236
 
223
237
  warnings:
224
- invalid-credentials: "That nickname and password do not match."
238
+ invalid-credentials: "That email or nickname and password do not match."
225
239
  invalid-code: "That code is not valid."
226
240
  invalid-backup-code: "That backup code is not valid."
227
241
  invalid-passkey: "That passkey could not be used."
@@ -233,7 +247,7 @@ en:
233
247
  passkey-crowded: "This account already has as many passkeys as this server keeps."
234
248
  second-factor-required: "Turn on at least one second factor to continue."
235
249
  backup-codes-unkept: "Keep your backup codes before you continue."
236
- missing-identifier: "Enter your nickname or email."
250
+ missing-identifier: "Enter your email or nickname."
237
251
  missing-first-factor: "That step expired. Start over."
238
252
  too-many-attempts: "Too many attempts. Wait a few minutes."
239
253
  too-many-attempts-for-account: "Too many attempts for that account."
@@ -258,7 +272,7 @@ en:
258
272
  work-unsolved: "This browser did not finish the check that keeps out automated signups. Try again."
259
273
  invitation-expired: "That invitation is no longer valid. Ask for another."
260
274
  reset-expired: "That reset link is no longer valid. Ask for another."
261
- no-mailer: "This server cannot send email. Ask a manager."
275
+ no-mailer: "This server cannot send email yet, so it cannot reset your password. Ask whoever runs it for a reset link."
262
276
  sso-failed: "That sign-in did not complete. Try again."
263
277
  sso-expired: "That sign-in took too long. Try again."
264
278
  sso-unavailable: "That way of signing in is not available."
@@ -65,13 +65,20 @@ en:
65
65
  proven: "Every claimed domain still has its TXT record."
66
66
  missing: "The TXT record is gone for %{domains}. A claim is released a week after its record disappears."
67
67
  advice: "Put the TXT record back at the name shown on the Domains page."
68
+ proxy:
69
+ title: "Reverse proxy"
70
+ quiet: "Forwarded headers come only from trusted proxies, over HTTPS."
71
+ untrusted: "Forwarded headers came from %{addresses}, which MASKS_TRUSTED_PROXIES does not list, so they were ignored. Every visitor behind that proxy shares one address and one set of rate limits."
72
+ plain: "The proxy at %{addresses} forwards requests as plain HTTP. masks marks its cookies for HTTPS only, so browsers drop them and sign-ins loop."
73
+ one: "All %{count} events in the last hour came from %{address}, a private address, which is most likely the proxy itself."
74
+ advice: "List the proxy in MASKS_TRUSTED_PROXIES and have it send X-Forwarded-For and X-Forwarded-Proto. Search the server log for lines that start with proxy:."
68
75
  keys:
69
76
  title: "Signing keys"
70
77
  missing: "This tenant has no active signing key, so nothing can be signed."
71
- manual: "Keys rotate by hand. The active key is %{days} days old."
78
+ manual: "Keys rotate by hand, so nothing replaces the active key on its own. It is %{days} days old."
72
79
  fresh: "The active key is %{days} days old and rotates every %{period} days."
73
80
  stale: "The active key is %{days} days old, past its %{period} day rotation."
74
- advice: "Rotate the key on the Settings page, or read the signing_keys job in the server log."
81
+ advice: "Pick a rotation schedule on the Settings page, rotate the key there, or read the signing_keys job in the server log."
75
82
  release:
76
83
  available: "Version %{version} is available."
77
84
  operator: "This release needs a step from an operator. Read its notes before you upgrade."
@@ -62,7 +62,7 @@ es:
62
62
  set:
63
63
  one: "1 configurada"
64
64
  other: "%{count} configuradas"
65
- explained: "En lugar de escribir una contraseña, tu dispositivo comprueba que eres tú de la misma forma en que ya se desbloquea. Cuenta como los dos factores a la vez, así que no hay que esperar ningún código."
65
+ explained: "En lugar de escribir una contraseña, tu dispositivo comprueba que eres tú igual que cuando lo desbloqueas. También cuenta como tu segundo paso, así que no hay ningún código que esperar."
66
66
  used: "usada por última vez hace %{age}"
67
67
  never_used: "nunca usada"
68
68
  remove: "Eliminar"
@@ -209,11 +209,11 @@ es:
209
209
  remembered: "%{label}, sin preguntar hasta el %{date}"
210
210
  heading: "Aplicaciones a las que diste acceso"
211
211
  none_yet: "Nada ha pedido acceso todavía. Una aplicación aparece aquí cuando inicias sesión en ella, con lo que aceptaste que pueda ver."
212
- revoke: "Revocar acceso"
212
+ revoke: "Quitar el acceso"
213
213
  more:
214
214
  one: "y una más"
215
215
  other: "y %{count} más"
216
- confirm_revoke: "¿Revocar %{client}? Todo lo que tiene deja de funcionar y tendrá que volver a pedirlo la próxima vez que inicies sesión."
216
+ confirm_revoke: "¿Quitar el acceso a %{client}? Todo lo que tenga deja de funcionar, y tendrá que pedirlo otra vez la próxima vez que inicies sesión."
217
217
 
218
218
  connections:
219
219
  heading: "Cuentas conectadas"
@@ -258,7 +258,7 @@ es:
258
258
 
259
259
  export:
260
260
  heading: "Descargar tu cuenta"
261
- state: "JSON"
261
+ state: "Un archivo"
262
262
  lede: "Un archivo con tu perfil, cómo inicias sesión, tus organizaciones, aplicaciones, cuentas conectadas y dispositivos, y la actividad que masks ha guardado. No contiene contraseñas, códigos ni claves."
263
263
  again: "Iniciaste sesión hace tiempo, así que primero se te pedirá que vuelvas a iniciarla."
264
264
  submit: "Descargar"
@@ -3,29 +3,29 @@ es:
3
3
  show:
4
4
  page_title: "Conectar %{name}"
5
5
  page_title_again: "Volver a conectar %{name}"
6
- title: "¿Conectar %{name} con %{tenant}?"
6
+ title: "¿Conectar %{name}?"
7
7
  title_again: "¿Volver a conectar %{name}?"
8
- runs_at: "Funciona en"
8
+ runs_at: "%{name} funciona en %{origin}."
9
9
  lede_html: "Las personas podrán iniciar sesión en <strong>%{name}</strong> con su cuenta de %{tenant}. Por ahora solo tú tienes acceso, y más adelante eliges quién más entra."
10
10
  lede_again_html: "<strong>%{name}</strong> ya está conectada con %{tenant}. Volver a conectarla la configura de nuevo. Por ahora solo tú tienes acceso, y más adelante eliges quién más entra."
11
11
  stops_working: "La conexión actual de %{name} deja de funcionar."
12
12
  connected_by_you: "Conectaste %{name} el %{date}."
13
13
  connected_by: "%{who} conectó %{name} el %{date}."
14
- signed_in_as: "Apruebas como"
14
+ signed_in_as: "Estás conectando como"
15
15
  unconfirmed: "(correo aún sin confirmar)"
16
- check: "Revisa esto primero"
16
+ check: "Antes de conectar"
17
17
  heed:
18
18
  offline_access: "%{name} puede mantener la sesión iniciada sin volver a preguntar, hasta que la persona la cierre."
19
19
  delegates_title: "Pedir a las personas que conecten sus otras cuentas"
20
20
  delegates: "Cada persona decide por sí misma. %{name} puede usar esas cuentas mientras no están."
21
21
  delegate: "%{name} puede usar esa cuenta mientras no estás, hasta que lo detengas."
22
22
  manage: "Cualquiera que inicie sesión a través de %{name} puede cambiar toda la configuración de este servidor."
23
- sees: "%{name} puede ver"
23
+ sees: "%{name} sabrá"
24
24
  area: "Permisos propios de %{name}"
25
25
  area_says_html: "%{name} recibe su propio conjunto de permisos, llamado %{namespaces}. Tú decides quién los recibe."
26
26
  area_yours: " Tú los recibes todos ahora."
27
27
  also: "%{name} también puede"
28
- details: "Detalles técnicos"
28
+ details: "Detalles"
29
29
  scopes: "Alcances"
30
30
  client: "Credenciales"
31
31
  credentials: