masks-server 0.8.0 → 0.10.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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/masks/server/client_authentication.rb +4 -3
  3. data/app/controllers/concerns/masks/server/resource_token.rb +12 -3
  4. data/app/controllers/masks/server/addresses_controller.rb +6 -1
  5. data/app/controllers/masks/server/application_controller.rb +36 -6
  6. data/app/controllers/masks/server/authorize_controller.rb +24 -19
  7. data/app/controllers/masks/server/device_verifications_controller.rb +1 -1
  8. data/app/controllers/masks/server/logins_controller.rb +3 -1
  9. data/app/controllers/masks/server/notifications_controller.rb +11 -1
  10. data/app/controllers/masks/server/profiles_controller.rb +5 -0
  11. data/app/controllers/masks/server/registrations_controller.rb +9 -1
  12. data/app/controllers/masks/server/saml_controller.rb +1 -7
  13. data/app/controllers/masks/server/scim/metadata_controller.rb +1 -1
  14. data/app/controllers/masks/server/tokens_controller.rb +9 -1
  15. data/app/graphql/masks/server/manage/mutations/add_app.rb +1 -1
  16. data/app/graphql/masks/server/manage/mutations/create_actor.rb +1 -0
  17. data/app/graphql/masks/server/manage/mutations/update_actor.rb +1 -0
  18. data/app/graphql/masks/server/manage/mutations/update_client.rb +4 -0
  19. data/app/graphql/masks/server/manage/types/client_type.rb +2 -0
  20. data/app/graphql/masks/server/manage/types/query_type.rb +7 -0
  21. data/app/helpers/masks/server/account_helper.rb +1 -1
  22. data/app/jobs/masks/server/cleanup_job.rb +1 -0
  23. data/app/ldap/masks/server/ldap/listener.rb +16 -3
  24. data/app/logins/masks/server/login_states/confirmation.rb +9 -3
  25. data/app/logins/masks/server/login_states/signup.rb +1 -0
  26. data/app/models/masks/server/actor.rb +28 -5
  27. data/app/models/masks/server/client.rb +61 -6
  28. data/app/models/masks/server/client_keys.rb +12 -1
  29. data/app/models/masks/server/declared.rb +2 -1
  30. data/app/models/masks/server/event.rb +1 -0
  31. data/app/models/masks/server/handshake.rb +12 -6
  32. data/app/models/masks/server/login.rb +3 -6
  33. data/app/models/masks/server/notifications.rb +8 -0
  34. data/app/models/masks/server/pending_handshake.rb +2 -1
  35. data/app/models/masks/server/pending_request.rb +8 -0
  36. data/app/models/masks/server/refresh_token.rb +8 -0
  37. data/app/models/masks/server/released_nickname.rb +26 -0
  38. data/app/models/masks/server/scim/filter.rb +45 -5
  39. data/app/models/masks/server/scim/user.rb +1 -0
  40. data/app/models/masks/server/session.rb +6 -5
  41. data/app/policies/masks/server/exchange_policy.rb +1 -1
  42. data/app/policies/masks/server/grant_checks.rb +1 -1
  43. data/app/views/masks/server/account/_info.html.erb +13 -5
  44. data/app/views/masks/server/account/_organizations.html.erb +4 -4
  45. data/app/views/masks/server/account/index.html.erb +1 -1
  46. data/app/views/masks/server/application/_actor.html.erb +27 -0
  47. data/app/views/masks/server/authorize/error.html.erb +2 -2
  48. data/app/views/masks/server/handshakes/refused.html.erb +1 -1
  49. data/app/views/masks/server/handshakes/show.html.erb +1 -1
  50. data/app/views/masks/server/logins/_choose_organization.html.erb +1 -1
  51. data/app/views/masks/server/logins/_consent.html.erb +1 -1
  52. data/app/views/masks/server/sessions/confirm.html.erb +1 -1
  53. data/config/locales/de/account.yml +6 -2
  54. data/config/locales/de/actors.yml +2 -0
  55. data/config/locales/de/application.yml +1 -1
  56. data/config/locales/de/authorize.yml +2 -0
  57. data/config/locales/de/events.yml +7 -5
  58. data/config/locales/de/flashes.yml +1 -0
  59. data/config/locales/de/logins.yml +1 -0
  60. data/config/locales/de/manage/client.yml +3 -0
  61. data/config/locales/de/manage/groups.yml +1 -1
  62. data/config/locales/de/manage/ldap.yml +1 -0
  63. data/config/locales/de/manage/organization.yml +1 -1
  64. data/config/locales/de/notifications.yml +1 -0
  65. data/config/locales/en/account.yml +6 -2
  66. data/config/locales/en/actors.yml +2 -0
  67. data/config/locales/en/application.yml +1 -1
  68. data/config/locales/en/authorize.yml +2 -0
  69. data/config/locales/en/events.yml +7 -5
  70. data/config/locales/en/flashes.yml +1 -0
  71. data/config/locales/en/logins.yml +1 -0
  72. data/config/locales/en/manage/client.yml +3 -0
  73. data/config/locales/en/manage/groups.yml +1 -1
  74. data/config/locales/en/manage/ldap.yml +1 -0
  75. data/config/locales/en/manage/organization.yml +1 -1
  76. data/config/locales/en/notifications.yml +1 -0
  77. data/config/locales/es/account.yml +6 -2
  78. data/config/locales/es/actors.yml +2 -0
  79. data/config/locales/es/application.yml +1 -1
  80. data/config/locales/es/authorize.yml +2 -0
  81. data/config/locales/es/events.yml +7 -5
  82. data/config/locales/es/flashes.yml +1 -0
  83. data/config/locales/es/logins.yml +1 -0
  84. data/config/locales/es/manage/client.yml +3 -0
  85. data/config/locales/es/manage/groups.yml +1 -1
  86. data/config/locales/es/manage/ldap.yml +1 -0
  87. data/config/locales/es/manage/organization.yml +1 -1
  88. data/config/locales/es/notifications.yml +1 -0
  89. data/config/locales/fr/account.yml +6 -2
  90. data/config/locales/fr/actors.yml +2 -0
  91. data/config/locales/fr/application.yml +1 -1
  92. data/config/locales/fr/authorize.yml +2 -0
  93. data/config/locales/fr/events.yml +7 -5
  94. data/config/locales/fr/flashes.yml +1 -0
  95. data/config/locales/fr/logins.yml +1 -0
  96. data/config/locales/fr/manage/client.yml +3 -0
  97. data/config/locales/fr/manage/groups.yml +1 -1
  98. data/config/locales/fr/manage/ldap.yml +1 -0
  99. data/config/locales/fr/manage/organization.yml +1 -1
  100. data/config/locales/fr/notifications.yml +1 -0
  101. data/config/routes.rb +1 -0
  102. data/db/migrate/20261013010000_add_handshake_return_to_to_clients.rb +5 -0
  103. data/db/migrate/20261018100000_create_released_nicknames.rb +22 -0
  104. data/db/migrate/20261018110000_add_refresh_token_absolute_lifetime_to_clients.rb +5 -0
  105. data/lib/generators/masks/server/install/install_generator.rb +2 -2
  106. data/lib/masks/server/browser_access.rb +35 -0
  107. data/lib/masks/server/configuration.rb +11 -3
  108. data/lib/masks/server/engine.rb +1 -0
  109. data/lib/masks/server/schema_reference.rb +17 -4
  110. data/lib/masks/server/tenancy/middleware.rb +9 -1
  111. data/lib/masks/server.rb +1 -0
  112. data/public/masks-assets/.vite/manifest.json +7 -7
  113. data/public/masks-assets/assets/app-D7W0gAyT.css +2 -0
  114. data/public/masks-assets/assets/{initial-D99AzFOd.js → initial-C1GpCiEh.js} +2 -2
  115. data/public/masks-assets/assets/{initial-D99AzFOd.js.map → initial-C1GpCiEh.js.map} +1 -1
  116. data/public/masks-assets/assets/login-C_6igRZ3.js +4 -0
  117. data/public/masks-assets/assets/login-C_6igRZ3.js.map +1 -0
  118. data/public/masks-assets/assets/manage-DR9qQiBU.js +569 -0
  119. data/public/masks-assets/assets/manage-DR9qQiBU.js.map +1 -0
  120. data/version.txt +1 -1
  121. metadata +14 -9
  122. data/app/views/masks/server/application/_person.html.erb +0 -27
  123. data/public/masks-assets/assets/app-DoQZrM_J.css +0 -2
  124. data/public/masks-assets/assets/login-CNs1UpxJ.js +0 -4
  125. data/public/masks-assets/assets/login-CNs1UpxJ.js.map +0 -1
  126. data/public/masks-assets/assets/manage-isLCrWiU.js +0 -567
  127. data/public/masks-assets/assets/manage-isLCrWiU.js.map +0 -1
@@ -72,7 +72,7 @@
72
72
 
73
73
  <% if own.owner? %>
74
74
  <p class="item-meta">
75
- <%= account_text("organizations.people", count: joined) %>
75
+ <%= account_text("organizations.member_count", count: joined) %>
76
76
  · <%= account_text("organizations.owners", count: owners) %>
77
77
  <% if waiting.positive? %>
78
78
  · <%= account_text("organizations.waiting_count", count: waiting) %>
@@ -81,8 +81,8 @@
81
81
 
82
82
  <div class="items">
83
83
  <% members.each do |member| %>
84
- <% person = member.actor %>
85
- <% yourself = person.id == own.actor_id %>
84
+ <% actor = member.actor %>
85
+ <% yourself = actor.id == own.actor_id %>
86
86
  <% label = Masks::Server::Members.label(member) || account_text("organizations.invited_by_manager") %>
87
87
  <div class="item item-member">
88
88
  <span class="item-name">
@@ -111,7 +111,7 @@
111
111
  class: "control control-sm", id: "role-#{organization.key}-#{member.id}",
112
112
  disabled: yourself && alone,
113
113
  data: { autosubmit: true },
114
- aria: { label: account_text("organizations.role_of", person: label) } %>
114
+ aria: { label: account_text("organizations.role_of", name: label) } %>
115
115
  <button type="submit" class="action action-quiet action-sm" data-autosubmitted <%= "disabled" if yourself && alone %>>
116
116
  <%= account_text("organizations.set_role") %>
117
117
  </button>
@@ -31,7 +31,7 @@
31
31
 
32
32
  <%= render "masks/server/account/apps", apps: @apps, connections: @connections, linkable: @linkable %>
33
33
 
34
- <%= render "masks/server/account/info", actor: @actor, directed: @directed %>
34
+ <%= render "masks/server/account/info", actor: @actor, directed: @directed, fresh: @fresh %>
35
35
 
36
36
  <%= render "masks/server/account/activity", events: @events %>
37
37
 
@@ -0,0 +1,27 @@
1
+ <% sign_out = local_assigns.fetch(:sign_out, false) %>
2
+ <% details = actor.display_details %>
3
+
4
+ <div class="actor">
5
+ <%= avatar_tag actor, size: 44, class: "actor-avatar" %>
6
+
7
+ <div class="actor-who">
8
+ <span class="actor-name"><%= actor.display_name %></span>
9
+
10
+ <% if details.any? || actor.email_unconfirmed? %>
11
+ <span class="actor-sub">
12
+ <%= details.join(" · ") %>
13
+ <% if actor.email_unconfirmed? %>
14
+ <span class="actor-note"><%= local_assigns[:unconfirmed] || t("application.actor.unconfirmed") %></span>
15
+ <% end %>
16
+ </span>
17
+ <% end %>
18
+
19
+ <% if actor.manages? %>
20
+ <span class="actor-role"><%= t("application.actor.manager") %></span>
21
+ <% end %>
22
+ </div>
23
+
24
+ <% if sign_out %>
25
+ <%= button_to t("application.actor.sign_out"), logout_path, class: "textlink", form_class: "signout" %>
26
+ <% end %>
27
+ </div>
@@ -4,9 +4,9 @@
4
4
  <div id="authorize-error" class="flow" data-error="<%= @error_code %>">
5
5
  <span class="state state-bad"><%= t(".stopped") %></span>
6
6
 
7
- <h1 class="prompt-title"><%= t(".heading") %></h1>
7
+ <h1 class="prompt-title"><%= @refused ? t(".refused") : t(".heading") %></h1>
8
8
 
9
9
  <p class="said"><%= @error_code %> — <%= @error_description %></p>
10
10
 
11
- <p class="prompt-lede"><%= t(".contact") %></p>
11
+ <p class="prompt-lede"><%= @refused ? t(".nothing_shared") : t(".contact") %></p>
12
12
  </div>
@@ -6,7 +6,7 @@
6
6
  <h1 class="prompt-title"><%= t(".title") %></h1>
7
7
 
8
8
  <% if current_actor %>
9
- <%= render "masks/server/application/person", actor: current_actor, sign_out: true %>
9
+ <%= render "masks/server/application/actor", actor: current_actor, sign_out: true %>
10
10
  <% end %>
11
11
 
12
12
  <p class="said"><%= @description %></p>
@@ -43,7 +43,7 @@
43
43
 
44
44
  <div class="handshake-as">
45
45
  <span class="handshake-caption"><%= t(".signed_in_as") %></span>
46
- <%= render "masks/server/application/person", actor: current_actor, sign_out: true, unconfirmed: t(".unconfirmed") %>
46
+ <%= render "masks/server/application/actor", actor: current_actor, sign_out: true, unconfirmed: t(".unconfirmed") %>
47
47
  </div>
48
48
 
49
49
  <div class="slab handshake-plain">
@@ -4,7 +4,7 @@
4
4
  title: client ? t(".title_to", client: client) : t(".title"),
5
5
  lede: t(".lede") %>
6
6
 
7
- <%= render "masks/server/application/person", actor: login.actor, sign_out: true if login.actor %>
7
+ <%= render "masks/server/application/actor", actor: login.actor, sign_out: true if login.actor %>
8
8
 
9
9
  <div class="providers">
10
10
  <% (login.as_json["organizations"] || []).each do |organization| %>
@@ -14,7 +14,7 @@
14
14
 
15
15
  <%= render "masks/server/logins/head", title: t(".title", client: login.client&.name) %>
16
16
 
17
- <%= render "masks/server/application/person", actor: login.actor, sign_out: true if login.actor %>
17
+ <%= render "masks/server/application/actor", actor: login.actor, sign_out: true if login.actor %>
18
18
 
19
19
  <div class="slab">
20
20
  <div class="ledger-row">
@@ -12,7 +12,7 @@
12
12
  </p>
13
13
  </div>
14
14
 
15
- <%= render "masks/server/application/person", actor: current_actor %>
15
+ <%= render "masks/server/application/actor", actor: current_actor %>
16
16
 
17
17
  <p class="aside"><%= t(".scope") %></p>
18
18
 
@@ -155,7 +155,7 @@ de:
155
155
  lede_owner: "Als Eigentümer entscheiden Sie, wer dazugehört und welche Rolle jede Person hat. Apps, die Ihre Organisation anfordern, sehen die Rolle."
156
156
  lede_member: "Apps, die Ihre Organisation anfordern, sehen, dass Sie dazugehören, und Ihre Rolle."
157
157
  members: "Mitglieder"
158
- people:
158
+ member_count:
159
159
  one: "1 Mitglied"
160
160
  other: "%{count} Mitglieder"
161
161
  owners:
@@ -182,7 +182,7 @@ de:
182
182
  decline: "Ablehnen"
183
183
  confirm_decline: "Die Einladung zu %{organization} ablehnen? Ein Eigentümer muss Sie erneut einladen."
184
184
  set_role: "Rolle festlegen"
185
- role_of: "Rolle von %{person}"
185
+ role_of: "Rolle von %{name}"
186
186
  remove: "Entfernen"
187
187
  withdraw: "Zurückziehen"
188
188
  resend: "Erneut senden"
@@ -251,6 +251,10 @@ de:
251
251
  lede: "Alles hier ist aktiv, bis Sie es deaktivieren. Diese Nachrichten kommen, sobald etwas passiert, und auf keine kann geantwortet werden."
252
252
  silent: "Es wird nichts gesendet, weil diese Nachrichten nur an eine bestätigte E-Mail-Adresse gehen."
253
253
  submit: "Speichern"
254
+ kept: "Ein geändertes oder zurückgesetztes Passwort und eine riskante Anmeldung werden immer gemeldet."
255
+ always: "Immer"
256
+ again: "Ihre letzte Anmeldung ist eine Weile her, daher werden Sie zuerst gebeten, sich erneut anzumelden."
257
+ submit_again: "Erneut anmelden"
254
258
 
255
259
  export:
256
260
  heading: "Ihr Konto herunterladen"
@@ -6,3 +6,5 @@ de:
6
6
  attributes:
7
7
  base:
8
8
  unnamed: "Ein Konto braucht einen Spitznamen oder eine E-Mail-Adresse."
9
+ nickname:
10
+ held: "wurde vor Kurzem freigegeben und kann noch nicht übernommen werden"
@@ -1,6 +1,6 @@
1
1
  de:
2
2
  application:
3
- person:
3
+ actor:
4
4
  manager: "Verwalter"
5
5
  unconfirmed: "unbestätigt"
6
6
  sign_out: "Abmelden"
@@ -5,3 +5,5 @@ de:
5
5
  stopped: "Angehalten"
6
6
  heading: "Die App hat etwas angefordert, das dieser Server nicht tut."
7
7
  contact: "Es wurde nichts geteilt. Die App muss das beheben."
8
+ refused: "Diese Anmeldung wurde abgelehnt."
9
+ nothing_shared: "Mit der App wurde nichts geteilt. Sie können diese Seite schließen."
@@ -6,6 +6,8 @@ de:
6
6
  ended: "Abgemeldet"
7
7
  revoked: "Sitzung widerrufen"
8
8
  expired: "Sitzung abgelaufen"
9
+ notifications:
10
+ changed: "Benachrichtigungen geändert"
9
11
  logout:
10
12
  undelivered: "Abmeldung nicht an eine App zugestellt"
11
13
  login:
@@ -94,14 +96,14 @@ de:
94
96
  refused: "Token-Tausch abgelehnt"
95
97
  actor:
96
98
  approved: "Konto genehmigt"
97
- created: "Person hinzugefügt"
98
- provisioned: "Person von einem Anbieter hinzugefügt"
99
+ created: "Konto hinzugefügt"
100
+ provisioned: "Konto von einem Anbieter hinzugefügt"
99
101
  updated: "Profil geändert"
100
- deleted: "Person gelöscht"
102
+ deleted: "Konto gelöscht"
101
103
  scopes_changed: "Scopes geändert"
102
104
  signed_out: "Überall abgemeldet"
103
- suspended: "Person gesperrt"
104
- restored: "Person wiederhergestellt"
105
+ suspended: "Konto gesperrt"
106
+ restored: "Konto wiederhergestellt"
105
107
  idle_warned: "Inaktives Konto gewarnt"
106
108
  client:
107
109
  created: "App hinzugefügt"
@@ -129,6 +129,7 @@ de:
129
129
  directed: "Das Verzeichnis Ihrer Organisation verwaltet Ihren Namen."
130
130
  invalid: "%{errors}"
131
131
  updated: "Ihre Angaben wurden gespeichert."
132
+ again: "Melden Sie sich erneut an, um Ihren Spitznamen zu ändern. Ihre letzte Anmeldung ist eine Weile her."
132
133
 
133
134
  verifications:
134
135
  too_many_requests: "Zu viele Anfragen. Warten Sie einige Minuten."
@@ -238,6 +238,7 @@ de:
238
238
  too-many-attempts: "Zu viele Versuche. Warten Sie einige Minuten."
239
239
  too-many-attempts-for-account: "Zu viele Versuche für dieses Konto."
240
240
  too-many-codes: "An diese Adresse wurden zu viele Codes gesendet. Warten Sie einige Minuten."
241
+ too-many-texts: "An diese Nummer wurden zu viele Codes gesendet. Warten Sie einige Minuten."
241
242
  prove-email-first: "Geben Sie zuerst den an diese Adresse gesendeten Code ein."
242
243
  no-account-for-email: "Kein Konto hier verwendet diese Adresse."
243
244
  invalid-setup-token: "Dieses Einrichtungstoken ist falsch."
@@ -115,6 +115,8 @@ de:
115
115
  sector_placeholder: "nötig, wenn seine Redirect-URIs mehrere Hosts umfassen"
116
116
  unattended: "Meldet sich als er selbst an (client_credentials)"
117
117
  rotate: "Secret rotieren"
118
+ secret_expires: "Das Secret läuft am %{day} ab."
119
+ secret_expired: "Das Secret ist am %{day} abgelaufen. Rotieren Sie es, sonst kann sich nichts mehr damit anmelden."
118
120
  archive: "Archivieren"
119
121
  saml:
120
122
  title: "SAML"
@@ -146,6 +148,7 @@ de:
146
148
  consent: "Akteure um Zustimmung bitten"
147
149
  access: "Access-Tokens gelten (Minuten, leer für eine Stunde)"
148
150
  refresh: "Refresh-Tokens gelten ungenutzt (Tage, leer für 30)"
151
+ refresh_absolute: "Refresh-Tokens enden nach der Anmeldung (Tage, leer für 90)"
149
152
  consent_lifetime: "Zustimmung gilt (Tage, leer bis zum Widerruf)"
150
153
  logout: "Back-Channel-Logout-URI"
151
154
  logout_session: "Sein Logout-Token benennt die Sitzung (sid)"
@@ -6,7 +6,7 @@ de:
6
6
  added: "%{name} ist bereit. Fügen Sie Akteure auf deren eigenen Seiten hinzu."
7
7
  delete_confirm: "%{name} löschen? Clients, die darauf beschränkt sind, lehnen ihre Akteure ab."
8
8
  deleted: "%{name} ist gelöscht."
9
- people:
9
+ actors:
10
10
  one: "%{count} Akteur"
11
11
  other: "%{count} Akteure"
12
12
  delete: "%{name} löschen"
@@ -17,6 +17,7 @@ de:
17
17
  address: "Adresse"
18
18
  port: "Port %{port}"
19
19
  ldaps: "Port %{port}, LDAPS"
20
+ local_only: "Ohne Zertifikat antwortet das Verzeichnis nur auf dem eigenen Rechner dieses Servers, damit kein Passwort unverschlüsselt über das Netz geht. Setzen Sie MASKS_LDAP_CERT und MASKS_LDAP_KEY, um LDAPS auf jeder Adresse anzubieten, oder MASKS_LDAP_PLAINTEXT=true in einem privaten Netz, dem Sie vertrauen."
20
21
  label: "Bezeichnung"
21
22
  issue: "Zugang ausstellen"
22
23
  shown_once: "Dieses Geheimnis wird nur einmal angezeigt. Kopieren Sie es jetzt."
@@ -66,7 +66,7 @@ de:
66
66
  invite: "Einladen"
67
67
  cancel: "Abbrechen"
68
68
  hint: "Die Eingeladenen treten bei, sobald sie von der eingeladenen Adresse aus annehmen. Wer noch kein Akteur ist, erhält eine Einladung zur Registrierung."
69
- person: "Akteur"
69
+ actor: "Akteur"
70
70
  empty:
71
71
  invited: "Es gibt keine offenen Einladungen."
72
72
  owners: "Diese Organisation hat keinen Eigentümer. Machen Sie ein Mitglied zum Eigentümer, damit jemand sie verwalten kann."
@@ -5,6 +5,7 @@ de:
5
5
 
6
6
  notifications:
7
7
  saved: "Gespeichert."
8
+ again: "Melden Sie sich erneut an, um zu ändern, welche E-Mails Sie erhalten. Ihre letzte Anmeldung ist eine Weile her."
8
9
 
9
10
  groups:
10
11
  password: "Passwort"
@@ -155,7 +155,7 @@ en:
155
155
  lede_owner: "As an owner, you decide who belongs here and what role each person holds. Apps that ask for your organization see the role."
156
156
  lede_member: "Apps that ask for your organization see that you belong here, and your role."
157
157
  members: "Members"
158
- people:
158
+ member_count:
159
159
  one: "1 member"
160
160
  other: "%{count} members"
161
161
  owners:
@@ -182,7 +182,7 @@ en:
182
182
  decline: "Decline"
183
183
  confirm_decline: "Decline the invitation to %{organization}? An owner has to invite you again."
184
184
  set_role: "Set role"
185
- role_of: "Role of %{person}"
185
+ role_of: "Role of %{name}"
186
186
  remove: "Remove"
187
187
  withdraw: "Withdraw"
188
188
  resend: "Send again"
@@ -251,6 +251,10 @@ en:
251
251
  lede: "Everything here is on until you turn it off. These arrive as they happen, and none of them can be replied to."
252
252
  silent: "Nothing is being sent, because these only go to a confirmed email address."
253
253
  submit: "Save"
254
+ kept: "A changed or reset password and a risky sign-in are always announced."
255
+ always: "Always"
256
+ again: "You signed in a while ago, so you will be asked to sign in again first."
257
+ submit_again: "Sign in again"
254
258
 
255
259
  export:
256
260
  heading: "Download your account"
@@ -6,3 +6,5 @@ en:
6
6
  attributes:
7
7
  base:
8
8
  unnamed: "An account needs a nickname or an email address."
9
+ nickname:
10
+ held: "was given up recently and cannot be taken yet"
@@ -1,6 +1,6 @@
1
1
  en:
2
2
  application:
3
- person:
3
+ actor:
4
4
  manager: "Manager"
5
5
  unconfirmed: "unconfirmed"
6
6
  sign_out: "Sign out"
@@ -5,3 +5,5 @@ en:
5
5
  stopped: "Stopped"
6
6
  heading: "The app asked for something this server will not do."
7
7
  contact: "Nothing was shared. The app has to fix this."
8
+ refused: "This sign-in was refused."
9
+ nothing_shared: "Nothing was shared with the app. You can close this page."
@@ -6,6 +6,8 @@ en:
6
6
  ended: "Signed out"
7
7
  revoked: "Session revoked"
8
8
  expired: "Session timed out"
9
+ notifications:
10
+ changed: "Notifications changed"
9
11
  logout:
10
12
  undelivered: "Sign-out not delivered to an app"
11
13
  login:
@@ -94,14 +96,14 @@ en:
94
96
  refused: "Token exchange refused"
95
97
  actor:
96
98
  approved: "Account approved"
97
- created: "Person added"
98
- provisioned: "Person added by a provider"
99
+ created: "Account added"
100
+ provisioned: "Account added by a provider"
99
101
  updated: "Profile changed"
100
- deleted: "Person deleted"
102
+ deleted: "Account deleted"
101
103
  scopes_changed: "Scopes changed"
102
104
  signed_out: "Signed out everywhere"
103
- suspended: "Person suspended"
104
- restored: "Person restored"
105
+ suspended: "Account suspended"
106
+ restored: "Account restored"
105
107
  idle_warned: "Idle account warned"
106
108
  client:
107
109
  created: "Client added"
@@ -129,6 +129,7 @@ en:
129
129
  directed: "Your organization's directory manages your name."
130
130
  invalid: "%{errors}"
131
131
  updated: "Your details have been saved."
132
+ again: "Sign in again to change your nickname. It has been a while since you did."
132
133
 
133
134
  verifications:
134
135
  too_many_requests: "Too many requests. Wait a few minutes."
@@ -238,6 +238,7 @@ en:
238
238
  too-many-attempts: "Too many attempts. Wait a few minutes."
239
239
  too-many-attempts-for-account: "Too many attempts for that account."
240
240
  too-many-codes: "Too many codes have gone to that address. Wait a few minutes."
241
+ too-many-texts: "Too many codes have gone to that number. Wait a few minutes."
241
242
  prove-email-first: "Enter the code sent to that address first."
242
243
  no-account-for-email: "No account here uses that address."
243
244
  invalid-setup-token: "That setup token is wrong."
@@ -115,6 +115,8 @@ en:
115
115
  sector_placeholder: "needed when its redirect URIs span several hosts"
116
116
  unattended: "Signs in as itself (client_credentials)"
117
117
  rotate: "Rotate secret"
118
+ secret_expires: "The secret expires on %{day}."
119
+ secret_expired: "The secret expired on %{day}. Rotate it, or nothing can sign in with it."
118
120
  archive: "Archive"
119
121
  saml:
120
122
  title: "SAML"
@@ -146,6 +148,7 @@ en:
146
148
  consent: "Ask actors to consent"
147
149
  access: "Access tokens last (minutes, blank for an hour)"
148
150
  refresh: "Refresh tokens last unused (days, blank for 30)"
151
+ refresh_absolute: "Refresh tokens stop after a sign-in (days, blank for 90)"
149
152
  consent_lifetime: "Consent lasts (days, blank until revoked)"
150
153
  logout: "Back-channel logout URI"
151
154
  logout_session: "Its logout token names the session (sid)"
@@ -6,7 +6,7 @@ en:
6
6
  added: "%{name} is ready. Add actors from their own pages."
7
7
  delete_confirm: "Delete %{name}? Clients limited to it refuse its actors."
8
8
  deleted: "%{name} is deleted."
9
- people:
9
+ actors:
10
10
  one: "%{count} actor"
11
11
  other: "%{count} actors"
12
12
  delete: "Delete %{name}"
@@ -17,6 +17,7 @@ en:
17
17
  address: "Address"
18
18
  port: "Port %{port}"
19
19
  ldaps: "Port %{port}, LDAPS"
20
+ local_only: "Without a certificate, the directory answers only on this server's own machine, so no password crosses the network in the clear. Set MASKS_LDAP_CERT and MASKS_LDAP_KEY to serve LDAPS on every address, or MASKS_LDAP_PLAINTEXT=true on a private network you trust."
20
21
  label: "Label"
21
22
  issue: "Issue a credential"
22
23
  shown_once: "This secret is shown once. Copy it now."
@@ -66,7 +66,7 @@ en:
66
66
  invite: "Invite"
67
67
  cancel: "Cancel"
68
68
  hint: "They join once they accept, from the address you invite. Somebody who is not an actor yet gets an invitation to sign up."
69
- person: "Actor"
69
+ actor: "Actor"
70
70
  empty:
71
71
  invited: "No invitations are open."
72
72
  owners: "Nobody owns this organization. Make a member an owner so someone can manage it."
@@ -5,6 +5,7 @@ en:
5
5
 
6
6
  notifications:
7
7
  saved: "Saved."
8
+ again: "Sign in again to change which emails you get. It has been a while since you did."
8
9
 
9
10
  groups:
10
11
  password: "Password"
@@ -155,7 +155,7 @@ es:
155
155
  lede_owner: "Como propietario, decides quién pertenece aquí y qué rol tiene cada persona. Las aplicaciones que piden tu organización ven el rol."
156
156
  lede_member: "Las aplicaciones que piden tu organización ven que perteneces a ella y tu rol."
157
157
  members: "Miembros"
158
- people:
158
+ member_count:
159
159
  one: "1 miembro"
160
160
  other: "%{count} miembros"
161
161
  owners:
@@ -182,7 +182,7 @@ es:
182
182
  decline: "Rechazar"
183
183
  confirm_decline: "¿Rechazar la invitación a %{organization}? Un propietario tendrá que volver a invitarte."
184
184
  set_role: "Establecer rol"
185
- role_of: "Rol de %{person}"
185
+ role_of: "Rol de %{name}"
186
186
  remove: "Eliminar"
187
187
  withdraw: "Retirar"
188
188
  resend: "Volver a enviar"
@@ -251,6 +251,10 @@ es:
251
251
  lede: "Todo lo de aquí está activado hasta que lo desactives. Llegan en el momento en que ocurre y no se puede responder a ninguno."
252
252
  silent: "No se envía nada, porque solo van a una dirección de correo confirmada."
253
253
  submit: "Guardar"
254
+ kept: "Una contraseña cambiada o restablecida y un inicio de sesión de riesgo se avisan siempre."
255
+ always: "Siempre"
256
+ again: "Hace tiempo que iniciaste sesión, así que primero se te pedirá que vuelvas a iniciarla."
257
+ submit_again: "Volver a iniciar sesión"
254
258
 
255
259
  export:
256
260
  heading: "Descargar tu cuenta"
@@ -6,3 +6,5 @@ es:
6
6
  attributes:
7
7
  base:
8
8
  unnamed: "Una cuenta necesita un apodo o una dirección de correo."
9
+ nickname:
10
+ held: "se liberó hace poco y todavía no se puede usar"
@@ -1,6 +1,6 @@
1
1
  es:
2
2
  application:
3
- person:
3
+ actor:
4
4
  manager: "Gestor"
5
5
  unconfirmed: "sin confirmar"
6
6
  sign_out: "Cerrar sesión"
@@ -5,3 +5,5 @@ es:
5
5
  stopped: "Detenida"
6
6
  heading: "La aplicación pidió algo que este servidor no hará."
7
7
  contact: "No se compartió nada. La aplicación tiene que corregirlo."
8
+ refused: "Este inicio de sesión fue rechazado."
9
+ nothing_shared: "No se compartió nada con la aplicación. Puede cerrar esta página."
@@ -6,6 +6,8 @@ es:
6
6
  ended: "Cerró sesión"
7
7
  revoked: "Sesión revocada"
8
8
  expired: "Sesión caducada"
9
+ notifications:
10
+ changed: "Notificaciones cambiadas"
9
11
  logout:
10
12
  undelivered: "Cierre de sesión no entregado a una aplicación"
11
13
  login:
@@ -94,14 +96,14 @@ es:
94
96
  refused: "Intercambio de token rechazado"
95
97
  actor:
96
98
  approved: "Cuenta aprobada"
97
- created: "Persona añadida"
98
- provisioned: "Persona añadida por un proveedor"
99
+ created: "Cuenta añadida"
100
+ provisioned: "Cuenta añadida por un proveedor"
99
101
  updated: "Perfil cambiado"
100
- deleted: "Persona eliminada"
102
+ deleted: "Cuenta eliminada"
101
103
  scopes_changed: "Alcances cambiados"
102
104
  signed_out: "Sesión cerrada en todas partes"
103
- suspended: "Persona suspendida"
104
- restored: "Persona restaurada"
105
+ suspended: "Cuenta suspendida"
106
+ restored: "Cuenta restaurada"
105
107
  idle_warned: "Aviso de cuenta inactiva"
106
108
  client:
107
109
  created: "Aplicación añadida"
@@ -129,6 +129,7 @@ es:
129
129
  directed: "El directorio de tu organización gestiona tu nombre."
130
130
  invalid: "%{errors}"
131
131
  updated: "Se guardaron tus datos."
132
+ again: "Vuelve a iniciar sesión para cambiar tu apodo. Hace tiempo que no lo haces."
132
133
 
133
134
  verifications:
134
135
  too_many_requests: "Demasiadas solicitudes. Espera unos minutos."
@@ -238,6 +238,7 @@ es:
238
238
  too-many-attempts: "Demasiados intentos. Espera unos minutos."
239
239
  too-many-attempts-for-account: "Demasiados intentos para esa cuenta."
240
240
  too-many-codes: "Se enviaron demasiados códigos a esa dirección. Espera unos minutos."
241
+ too-many-texts: "Se enviaron demasiados códigos a ese número. Espera unos minutos."
241
242
  prove-email-first: "Primero escribe el código enviado a esa dirección."
242
243
  no-account-for-email: "Ninguna cuenta de aquí usa esa dirección."
243
244
  invalid-setup-token: "Ese token de configuración no es correcto."
@@ -115,6 +115,8 @@ es:
115
115
  sector_placeholder: "necesario cuando sus URI de redirección abarcan varios hosts"
116
116
  unattended: "Inicia sesión por sí mismo (client_credentials)"
117
117
  rotate: "Rotar secreto"
118
+ secret_expires: "El secreto caduca el %{day}."
119
+ secret_expired: "El secreto caducó el %{day}. Rótalo, o nada podrá iniciar sesión con él."
118
120
  archive: "Archivar"
119
121
  saml:
120
122
  title: "SAML"
@@ -146,6 +148,7 @@ es:
146
148
  consent: "Pedir el consentimiento de los actores"
147
149
  access: "Los tokens de acceso duran (minutos, vacío para una hora)"
148
150
  refresh: "Los tokens de actualización duran sin usarse (días, vacío para 30)"
151
+ refresh_absolute: "Los tokens de actualización terminan tras el inicio de sesión (días, vacío para 90)"
149
152
  consent_lifetime: "El consentimiento dura (días, vacío hasta que se revoque)"
150
153
  logout: "URI de cierre de sesión por back-channel"
151
154
  logout_session: "Su token de cierre de sesión nombra la sesión (sid)"
@@ -6,7 +6,7 @@ es:
6
6
  added: "%{name} está listo. Añade actores desde sus propias páginas."
7
7
  delete_confirm: "¿Eliminar %{name}? Los clientes limitados a él rechazan a sus actores."
8
8
  deleted: "%{name} se eliminó."
9
- people:
9
+ actors:
10
10
  one: "%{count} actor"
11
11
  other: "%{count} actores"
12
12
  delete: "Eliminar %{name}"
@@ -17,6 +17,7 @@ es:
17
17
  address: "Dirección"
18
18
  port: "Puerto %{port}"
19
19
  ldaps: "Puerto %{port}, LDAPS"
20
+ local_only: "Sin certificado, el directorio responde solo en la propia máquina de este servidor, para que ninguna contraseña cruce la red sin cifrar. Defina MASKS_LDAP_CERT y MASKS_LDAP_KEY para servir LDAPS en todas las direcciones, o MASKS_LDAP_PLAINTEXT=true en una red privada de confianza."
20
21
  label: "Etiqueta"
21
22
  issue: "Emitir una credencial"
22
23
  shown_once: "Este secreto se muestra una sola vez. Cópialo ahora."
@@ -66,7 +66,7 @@ es:
66
66
  invite: "Invitar"
67
67
  cancel: "Cancelar"
68
68
  hint: "Se une cuando acepta, desde la dirección a la que invitas. Quien aún no es un actor recibe una invitación para registrarse."
69
- person: "Actor"
69
+ actor: "Actor"
70
70
  empty:
71
71
  invited: "No hay invitaciones abiertas."
72
72
  owners: "Nadie es propietario de esta organización. Haz propietario a un miembro para que alguien pueda gestionarla."
@@ -5,6 +5,7 @@ es:
5
5
 
6
6
  notifications:
7
7
  saved: "Guardado."
8
+ again: "Vuelve a iniciar sesión para cambiar qué correos recibes. Hace tiempo que no lo haces."
8
9
 
9
10
  groups:
10
11
  password: "Contraseña"