strapi-plugin-oidc 1.8.5 → 1.9.1

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.
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { randomBytes, randomUUID, createHash } from "node:crypto";
2
3
  import pkceChallenge from "pkce-challenge";
3
4
  import { jwtVerify, errors, createRemoteJWKSet } from "jose";
@@ -15,7 +16,8 @@ const errorCodes = {
15
16
  USER_CREATION_FAILED: "USER_CREATION_FAILED",
16
17
  WHITELIST_CHECK_FAILED: "WHITELIST_CHECK_FAILED",
17
18
  EMAIL_NOT_VERIFIED: "EMAIL_NOT_VERIFIED",
18
- ID_TOKEN_INVALID: "ID_TOKEN_INVALID"
19
+ ID_TOKEN_INVALID: "ID_TOKEN_INVALID",
20
+ PROVIDER_RESPONSE_INVALID: "PROVIDER_RESPONSE_INVALID"
19
21
  };
20
22
  const ERROR_DETAIL_TEMPLATES = {
21
23
  token_exchange_failed: "Token exchange failed with HTTP status {status}",
@@ -28,6 +30,7 @@ const ERROR_DETAIL_TEMPLATES = {
28
30
  email_not_verified: "Email address has not been verified by the OIDC provider",
29
31
  id_token_invalid: "ID token verification failed: {error}",
30
32
  whitelist_not_present: "Email not present in whitelist",
33
+ provider_response_invalid: "Provider returned an unexpected response: {error}",
31
34
  session_manager_unsupported: "sessionManager is not supported. Please upgrade to Strapi v5.24.1 or later."
32
35
  };
33
36
  function interpolate$1(template, params) {
@@ -48,6 +51,7 @@ const errorMessages = {
48
51
  EMAIL_NOT_VERIFIED: "Email address has not been verified by the OIDC provider",
49
52
  ID_TOKEN_INVALID: "ID token verification failed",
50
53
  WHITELIST_NOT_PRESENT: "Not present in whitelist",
54
+ PROVIDER_RESPONSE_INVALID: "Unexpected response from OIDC provider",
51
55
  SESSION_MANAGER_UNSUPPORTED: "sessionManager is not supported. Please upgrade to Strapi v5.24.1 or later.",
52
56
  JWKS_URI_NOT_CONFIGURED: "[OIDC] OIDC_JWKS_URI is not configured — ID token signature verification is disabled. Set OIDC_JWKS_URI and OIDC_ISSUER from your provider's discovery document.",
53
57
  ENFORCE_MIDDLEWARE_ERROR: "Error checking OIDC enforcement in middleware:",
@@ -56,7 +60,10 @@ const errorMessages = {
56
60
  AUDIT_LOG_CLEANUP_ERROR: "[strapi-plugin-oidc] Audit log cleanup failed:",
57
61
  AUDIT_LOG_EXPORT_ERROR: "NDJSON export stream failed",
58
62
  DISCOVERY_FETCH_ERROR: (url, reason) => `[strapi-plugin-oidc] Failed to fetch OIDC discovery document from ${url}: ${reason}`,
59
- MISSING_CONFIG: (keys) => `Missing required config keys: ${keys}`
63
+ MISSING_CONFIG: (keys) => `Missing required config keys: ${keys}`,
64
+ WHITELIST_INVALID_EMAIL: "Please enter a valid email address",
65
+ WHITELIST_INVALID_REQUEST: "Invalid request body",
66
+ WHITELIST_IMPORT_INVALID: "Expected { users: [{email}] }"
60
67
  };
61
68
  function getEnforceOIDCConfig(strapi2) {
62
69
  const config2 = strapi2.config.get("plugin::strapi-plugin-oidc");
@@ -72,10 +79,96 @@ function resolveEnforceOIDC(strapi2, dbValue) {
72
79
  if (configValue !== null) return configValue;
73
80
  return dbValue ?? false;
74
81
  }
82
+ function toBoolCoerced(v) {
83
+ if (typeof v === "boolean") return v;
84
+ if (v === "true" || v === "1") return true;
85
+ if (v === "false" || v === "0") return false;
86
+ return v;
87
+ }
88
+ const coerceBool = (defaultVal) => z.preprocess(toBoolCoerced, z.boolean().default(defaultVal));
89
+ const coerceBoolNullable = z.preprocess(
90
+ (v) => {
91
+ if (v === null || v === void 0 || v === "null") return null;
92
+ const coerced = toBoolCoerced(v);
93
+ return typeof coerced === "boolean" ? coerced : null;
94
+ },
95
+ z.union([z.boolean(), z.null()]).default(null)
96
+ );
97
+ const pluginConfigSchema = z.object({
98
+ REMEMBER_ME: coerceBool(false),
99
+ OIDC_DISCOVERY_URL: z.string().default(""),
100
+ OIDC_REDIRECT_URI: z.string().default(""),
101
+ OIDC_CLIENT_ID: z.string().default(""),
102
+ OIDC_CLIENT_SECRET: z.string().default(""),
103
+ OIDC_SCOPE: z.string().default("openid profile email"),
104
+ OIDC_AUTHORIZATION_ENDPOINT: z.string().default(""),
105
+ OIDC_TOKEN_ENDPOINT: z.string().default(""),
106
+ OIDC_USERINFO_ENDPOINT: z.string().default(""),
107
+ OIDC_FAMILY_NAME_FIELD: z.string().default("family_name"),
108
+ OIDC_GIVEN_NAME_FIELD: z.string().default("given_name"),
109
+ OIDC_END_SESSION_ENDPOINT: z.string().default(""),
110
+ OIDC_SSO_BUTTON_TEXT: z.string().default("Sign in with OIDC"),
111
+ OIDC_ENFORCE: coerceBoolNullable,
112
+ AUDIT_LOG_RETENTION_DAYS: z.number().default(90),
113
+ OIDC_GROUP_FIELD: z.string().default("groups"),
114
+ OIDC_GROUP_ROLE_MAP: z.union([z.string(), z.record(z.string(), z.array(z.string()))]).default("{}"),
115
+ OIDC_REQUIRE_EMAIL_VERIFIED: coerceBool(true),
116
+ OIDC_TRUSTED_IP_HEADER: z.string().default(""),
117
+ OIDC_JWKS_URI: z.string().default(""),
118
+ OIDC_ISSUER: z.string().default(""),
119
+ OIDC_FORCE_SECURE_COOKIES: coerceBool(false)
120
+ });
121
+ function parseGroupRoleMap(raw) {
122
+ if (typeof raw !== "string") {
123
+ if (raw !== null && typeof raw === "object" && !Array.isArray(raw)) {
124
+ return raw;
125
+ }
126
+ return {};
127
+ }
128
+ try {
129
+ return JSON.parse(raw);
130
+ } catch {
131
+ return {};
132
+ }
133
+ }
75
134
  const PLUGIN_UID = "plugin::strapi-plugin-oidc";
135
+ const CONTENT_TYPES = {
136
+ AUDIT_LOG: `${PLUGIN_UID}.audit-log`,
137
+ ROLES: `${PLUGIN_UID}.roles`,
138
+ WHITELIST: `${PLUGIN_UID}.whitelists`
139
+ };
140
+ const PERMISSIONS = {
141
+ WHITELIST_READ: `${PLUGIN_UID}.whitelist.read`,
142
+ WHITELIST_WRITE: `${PLUGIN_UID}.whitelist.write`,
143
+ WHITELIST_DELETE: `${PLUGIN_UID}.whitelist.delete`,
144
+ AUDIT_READ: `${PLUGIN_UID}.audit.read`,
145
+ AUDIT_DELETE: `${PLUGIN_UID}.audit.delete`
146
+ };
147
+ const COOKIE_MAX_AGE_MS = 3e5;
148
+ const PKCE_COOKIE_MAX_AGE_MS = 6e5;
149
+ const LOGOUT_USERINFO_TIMEOUT_MS = 1500;
150
+ const AUDIT_LOG_DEFAULTS = {
151
+ PAGE_SIZE: 25,
152
+ MAX_PAGE_SIZE: 100,
153
+ EXPORT_PAGE_SIZE: 500,
154
+ BATCH_DELETE_SIZE: 1e3
155
+ };
156
+ const RATE_LIMIT = {
157
+ WINDOW_MS: 6e4,
158
+ MAX_REQUESTS: 1e3,
159
+ MAX_MAP_SIZE: 1e4,
160
+ PRUNE_THRESHOLD: 1e3
161
+ };
162
+ const CACHE_TTL = {
163
+ SETTINGS_MS: 5 * 60 * 1e3
164
+ // 5 minutes
165
+ };
76
166
  const DEFAULT_RETENTION_DAYS = 90;
167
+ const DAY_MS = 864e5;
168
+ const DISCOVERY_TIMEOUT_MS = 5e3;
169
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
77
170
  function getPluginConfig() {
78
- return strapi.config.get(PLUGIN_UID);
171
+ return pluginConfigSchema.parse(strapi.config.get("plugin::strapi-plugin-oidc") ?? {});
79
172
  }
80
173
  function getRetentionDays() {
81
174
  const config2 = getPluginConfig();
@@ -90,7 +183,14 @@ const getRoleService = () => strapi.plugin(PLUGIN_NAME).service("role");
90
183
  const getWhitelistService = () => strapi.plugin(PLUGIN_NAME).service("whitelist");
91
184
  const getAuditLogService = () => strapi.plugin(PLUGIN_NAME).service("auditLog");
92
185
  const getAdminUserService = () => strapi.service("admin::user");
93
- const DISCOVERY_TIMEOUT_MS = 5e3;
186
+ const discoveryDocumentSchema = z.object({
187
+ issuer: z.string().optional(),
188
+ authorization_endpoint: z.string().optional(),
189
+ token_endpoint: z.string().optional(),
190
+ userinfo_endpoint: z.string().optional(),
191
+ end_session_endpoint: z.string().optional(),
192
+ jwks_uri: z.string().optional()
193
+ }).passthrough();
94
194
  const FIELD_MAP = [
95
195
  ["issuer", "OIDC_ISSUER"],
96
196
  ["authorization_endpoint", "OIDC_AUTHORIZATION_ENDPOINT"],
@@ -107,7 +207,9 @@ async function applyDiscovery(strapi2) {
107
207
  try {
108
208
  const res = await fetch(discoveryUrl, { signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS) });
109
209
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
110
- doc = await res.json();
210
+ const parseResult = discoveryDocumentSchema.safeParse(await res.json());
211
+ if (!parseResult.success) throw new Error("malformed discovery document");
212
+ doc = parseResult.data;
111
213
  } catch (e) {
112
214
  strapi2.log.error(
113
215
  errorMessages.DISCOVERY_FETCH_ERROR(discoveryUrl, e instanceof Error ? e.message : String(e))
@@ -125,6 +227,44 @@ async function applyDiscovery(strapi2) {
125
227
  strapi2.log.info(`[strapi-plugin-oidc] Discovery applied: ${Object.keys(updates).join(", ")}`);
126
228
  }
127
229
  }
230
+ const COOKIE_NAMES = {
231
+ state: "oidc_state",
232
+ codeVerifier: "oidc_code_verifier",
233
+ nonce: "oidc_nonce",
234
+ accessToken: "oidc_access_token",
235
+ userEmail: "oidc_user_email",
236
+ adminRefresh: "strapi_admin_refresh",
237
+ authenticated: "oidc_authenticated"
238
+ };
239
+ function shouldMarkSecure(strapi2, ctx) {
240
+ const isProduction = strapi2.config.get("environment") === "production";
241
+ if (!isProduction) return false;
242
+ const config2 = getPluginConfig();
243
+ if (config2.OIDC_FORCE_SECURE_COOKIES === true) return true;
244
+ if (ctx.request.secure) return true;
245
+ const proxyTrusted = ctx.app?.proxy === true;
246
+ if (proxyTrusted && ctx.get("x-forwarded-proto") === "https") return true;
247
+ return false;
248
+ }
249
+ function getExpiredCookieOptions(strapi2, ctx) {
250
+ return {
251
+ httpOnly: true,
252
+ secure: shouldMarkSecure(strapi2, ctx),
253
+ path: strapi2.config.get("admin.auth.cookie.path", "/admin"),
254
+ domain: strapi2.config.get("admin.auth.cookie.domain") || strapi2.config.get("admin.auth.domain"),
255
+ sameSite: strapi2.config.get("admin.auth.cookie.sameSite", "lax"),
256
+ maxAge: 0,
257
+ expires: /* @__PURE__ */ new Date(0)
258
+ };
259
+ }
260
+ function clearAuthCookies(strapi2, ctx) {
261
+ const options2 = getExpiredCookieOptions(strapi2, ctx);
262
+ ctx.cookies.set(COOKIE_NAMES.adminRefresh, "", options2);
263
+ const rootPathOptions = { ...options2, path: "/" };
264
+ ctx.cookies.set(COOKIE_NAMES.authenticated, "", rootPathOptions);
265
+ ctx.cookies.set(COOKIE_NAMES.accessToken, "", rootPathOptions);
266
+ ctx.cookies.set(COOKIE_NAMES.userEmail, "", rootPathOptions);
267
+ }
128
268
  const AUTH_ROUTES = ["login", "register", "register-admin", "forgot-password", "reset-password"];
129
269
  async function bootstrap({ strapi: strapi2 }) {
130
270
  await applyDiscovery(strapi2);
@@ -153,7 +293,7 @@ async function bootstrap({ strapi: strapi2 }) {
153
293
  };
154
294
  return;
155
295
  }
156
- if (enforceOIDC && isTokenRefresh && !ctx.cookies.get("oidc_authenticated")) {
296
+ if (enforceOIDC && isTokenRefresh && !ctx.cookies.get(COOKIE_NAMES.authenticated)) {
157
297
  ctx.status = 401;
158
298
  ctx.body = {
159
299
  data: null,
@@ -183,11 +323,11 @@ async function bootstrap({ strapi: strapi2 }) {
183
323
  ];
184
324
  await strapi2.admin.services.permission.actionProvider.registerMany(actions);
185
325
  const contentApiScopeUids = [
186
- "plugin::strapi-plugin-oidc.whitelist.read",
187
- "plugin::strapi-plugin-oidc.whitelist.write",
188
- "plugin::strapi-plugin-oidc.whitelist.delete",
189
- "plugin::strapi-plugin-oidc.audit.read",
190
- "plugin::strapi-plugin-oidc.audit.delete"
326
+ PERMISSIONS.WHITELIST_READ,
327
+ PERMISSIONS.WHITELIST_WRITE,
328
+ PERMISSIONS.WHITELIST_DELETE,
329
+ PERMISSIONS.AUDIT_READ,
330
+ PERMISSIONS.AUDIT_DELETE
191
331
  ];
192
332
  for (const uid of contentApiScopeUids) {
193
333
  strapi2.contentAPI.permissions.providers.action.register(uid, { uid });
@@ -208,11 +348,11 @@ async function bootstrap({ strapi: strapi2 }) {
208
348
  }
209
349
  }
210
350
  try {
211
- const oidcRoleCount = await strapi2.query("plugin::strapi-plugin-oidc.roles").count({ where: { oauth_type: "4" } });
351
+ const oidcRoleCount = await strapi2.query(CONTENT_TYPES.ROLES).count({ where: { oauth_type: "4" } });
212
352
  if (oidcRoleCount === 0) {
213
353
  const defaultRole = await strapi2.query("admin::role").findOne({ where: { code: "strapi-editor" } }) ?? await strapi2.query("admin::role").findOne({});
214
354
  if (defaultRole) {
215
- await strapi2.query("plugin::strapi-plugin-oidc.roles").create({
355
+ await strapi2.query(CONTENT_TYPES.ROLES).create({
216
356
  data: { oauth_type: "4", roles: [String(defaultRole.id)] }
217
357
  });
218
358
  }
@@ -310,35 +450,6 @@ const contentTypes = {
310
450
  whitelists,
311
451
  "audit-log": auditLog$1
312
452
  };
313
- function shouldMarkSecure(strapi2, ctx) {
314
- const isProduction = strapi2.config.get("environment") === "production";
315
- if (!isProduction) return false;
316
- const config2 = strapi2.config.get("plugin::strapi-plugin-oidc") ?? {};
317
- if (config2.OIDC_FORCE_SECURE_COOKIES === true) return true;
318
- if (ctx.request.secure) return true;
319
- const proxyTrusted = ctx.app?.proxy === true;
320
- if (proxyTrusted && ctx.get("x-forwarded-proto") === "https") return true;
321
- return false;
322
- }
323
- function getExpiredCookieOptions(strapi2, ctx) {
324
- return {
325
- httpOnly: true,
326
- secure: shouldMarkSecure(strapi2, ctx),
327
- path: strapi2.config.get("admin.auth.cookie.path", "/admin"),
328
- domain: strapi2.config.get("admin.auth.cookie.domain") || strapi2.config.get("admin.auth.domain"),
329
- sameSite: strapi2.config.get("admin.auth.cookie.sameSite", "lax"),
330
- maxAge: 0,
331
- expires: /* @__PURE__ */ new Date(0)
332
- };
333
- }
334
- function clearAuthCookies(strapi2, ctx) {
335
- const options2 = getExpiredCookieOptions(strapi2, ctx);
336
- ctx.cookies.set("strapi_admin_refresh", "", options2);
337
- const rootPathOptions = { ...options2, path: "/" };
338
- for (const name of ["oidc_authenticated", "oidc_access_token", "oidc_user_email"]) {
339
- ctx.cookies.set(name, "", rootPathOptions);
340
- }
341
- }
342
453
  class OidcError extends Error {
343
454
  kind;
344
455
  cause;
@@ -390,6 +501,11 @@ const OIDC_ERROR_DISPATCH = {
390
501
  code: errorCodes.ID_TOKEN_INVALID,
391
502
  key: "id_token_invalid"
392
503
  },
504
+ provider_response_invalid: {
505
+ action: "login_failure",
506
+ code: errorCodes.PROVIDER_RESPONSE_INVALID,
507
+ key: "provider_response_invalid"
508
+ },
393
509
  unknown: {
394
510
  action: "login_failure",
395
511
  code: errorCodes.TOKEN_EXCHANGE_FAILED,
@@ -455,34 +571,454 @@ function configValidation() {
455
571
  }
456
572
  throw new Error(errorMessages.MISSING_CONFIG(missing.join(", ")));
457
573
  }
458
- async function oidcSignIn(ctx) {
459
- const { OIDC_CLIENT_ID, OIDC_REDIRECT_URI, OIDC_SCOPE, OIDC_AUTHORIZATION_ENDPOINT } = configValidation();
460
- const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge();
461
- const state = randomBytes(32).toString("base64url");
462
- const nonce = randomBytes(32).toString("base64url");
463
- const cookieOptions = {
464
- httpOnly: true,
465
- maxAge: 6e5,
466
- secure: shouldMarkSecure(strapi, ctx),
467
- sameSite: "lax"
468
- };
469
- ctx.cookies.set("oidc_code_verifier", codeVerifier, cookieOptions);
470
- ctx.cookies.set("oidc_state", state, cookieOptions);
471
- ctx.cookies.set("oidc_nonce", nonce, cookieOptions);
472
- const params = new URLSearchParams({
473
- response_type: "code",
474
- client_id: OIDC_CLIENT_ID,
475
- redirect_uri: OIDC_REDIRECT_URI,
476
- scope: OIDC_SCOPE,
477
- code_challenge: codeChallenge,
478
- code_challenge_method: "S256",
479
- state,
480
- nonce
481
- });
482
- const authorizationUrl = `${OIDC_AUTHORIZATION_ENDPOINT}?${params.toString()}`;
483
- ctx.set("Location", authorizationUrl);
484
- return ctx.send({}, 302);
485
- }
574
+ const ar = {
575
+ "global.plugins.strapi-plugin-oidc": "وحدة OIDC الإضافية",
576
+ "page.title": "تكوين الأدوار الافتراضية OIDC وإعدادات التحكم بالوصول.",
577
+ "roles.notes": "حدد الدور (الأدوار) الافتراضي المخصص للمستخدمين الجدد عند أول تسجيل دخول لهم. لا يؤثر هذا الإعداد على المستخدمين الحاليين.",
578
+ "page.save": "حفظ التغييرات",
579
+ "page.save.success": "تم تحديث الإعدادات",
580
+ "page.save.error": "فشل التحديث.",
581
+ "page.add": "إضافة",
582
+ "page.cancel": "إلغاء",
583
+ "common.remove": "إزالة {label}",
584
+ "page.ok": "موافق",
585
+ "roles.title": "الدور (الأدوار) الافتراضي",
586
+ "roles.placeholder": "اختر الدور (الأدوار) الافتراضي",
587
+ "whitelist.title": "القائمة البيضاء",
588
+ "whitelist.error.unique": "عنوان البريد الإلكتروني مسجل بالفعل.",
589
+ "whitelist.description": "تقييد المصادقة OIDC على عناوين بريد إلكتروني محددة. يتلقى المستخدمون الأدوار من تعيين دور OIDC الافتراضي أو مجموعتهم في OIDC.",
590
+ "alert.title.success": "نجاح",
591
+ "alert.title.error": "خطأ",
592
+ "alert.title.info": "معلومات",
593
+ "pagination.previous": "الانتقال إلى الصفحة السابقة",
594
+ "pagination.page": "الانتقال إلى صفحة {page}",
595
+ "pagination.next": "الانتقال إلى الصفحة التالية",
596
+ "whitelist.table.no": "الرقم",
597
+ "whitelist.table.email": "البريد الإلكتروني",
598
+ "whitelist.table.created": "تاريخ الإنشاء",
599
+ "whitelist.delete.title": "تأكيد",
600
+ "whitelist.delete.description": "هل أنت متأكد من أنك تريد الحذف:",
601
+ "whitelist.delete.note": "لن يؤدي هذا إلى حذف حساب المستخدم في Strapi.",
602
+ "whitelist.toggle.enabled": "مفعّل",
603
+ "whitelist.toggle.disabled": "معطّل",
604
+ "whitelist.email.placeholder": "عنوان البريد الإلكتروني",
605
+ "whitelist.table.empty": "لا توجد عناوين بريد إلكتروني",
606
+ "whitelist.delete.label": "حذف",
607
+ "page.title.oidc": "OIDC",
608
+ "enforce.title": "فرض تسجيل الدخول عبر OIDC",
609
+ "enforce.toggle.enabled": "مفعّل",
610
+ "enforce.toggle.disabled": "معطّل",
611
+ "enforce.warning": "تأكد من إعداد OIDC بشكل صحيح قبل حفظ التغييرات، لن تتمكن من تسجيل الدخول بشكل طبيعي.",
612
+ "enforce.config.info": "يتم التحكم في التنفيذ بواسطة متغير التكوين OIDC_ENFORCE ولا يمكن تغييره هنا.",
613
+ "login.settings.title": "إعدادات تسجيل الدخول",
614
+ "login.sso": "تسجيل الدخول عبر SSO",
615
+ "pagination.total": "{count, plural, one {# عنصر} other {# عناصر}}",
616
+ "whitelist.import": "استيراد",
617
+ "whitelist.export": "تصدير",
618
+ "whitelist.delete.all.label": "حذف الكل",
619
+ "whitelist.delete.all.title": "حذف جميع الإدخالات",
620
+ "whitelist.delete.all.description": "سيؤدي هذا إلى إزالة نهائيًا لجميع {count, plural, one {# عنصر} other {# عناصر}} من القائمة البيضاء. سيتم فقدان التغييرات غير المحفوظة.",
621
+ "whitelist.import.error": "ملف غير صالح — كان من المتوقع مصفوفة JSON من الكائنات مع حقل البريد الإلكتروني.",
622
+ "whitelist.import.success": "تم استيراد {count, plural, one {# عنصر جديد} other {# عناصر جديدة}}.",
623
+ "whitelist.import.none": "لا توجد إدخالات جديدة — جميع رسائل البريد الإلكتروني موجودة بالفعل في القائمة البيضاء.",
624
+ "unsaved.title": "تغييرات غير محفوظة",
625
+ "unsaved.description": "لديك تغييرات غير محفوظة سيتم فقدانها إذا غادرت. هل تريد المتابعة؟",
626
+ "unsaved.confirm": "مغادرة",
627
+ "unsaved.cancel": "البقاء",
628
+ "auditlog.title": "سجلات التدقيق",
629
+ "auditlog.export": "تنزيل",
630
+ "auditlog.table.timestamp": "الطابع الزمني",
631
+ "auditlog.table.action": "الإجراء",
632
+ "auditlog.table.email": "البريد الإلكتروني",
633
+ "auditlog.table.ip": "عنوان IP",
634
+ "auditlog.table.details": "التفاصيل",
635
+ "auditlog.table.empty": "لا توجد إدخالات في سجل التدقيق",
636
+ "auditlog.clear": "مسح السجلات",
637
+ "auditlog.clear.title": "مسح جميع السجلات",
638
+ "auditlog.clear.description": "سيؤدي هذا إلى حذف نهائيًا لجميع {count, plural, one {# إدخال} other {# إدخالات}} سجل التدقيق. لا يمكن التراجع عن هذا الإجراء.",
639
+ "auditlog.clear.success": "تم مسح سجلات التدقيق",
640
+ "auditlog.clear.error": "فشل مسح سجلات التدقيق",
641
+ "auditlog.export.error": "فشل تصدير سجلات التدقيق",
642
+ "auditlog.filters": "المرشحات",
643
+ "auditlog.filters.action": "الإجراء",
644
+ "auditlog.filters.email": "البريد الإلكتروني",
645
+ "auditlog.filters.ip": "عنوان IP",
646
+ "auditlog.filters.createdAt": "التاريخ",
647
+ "auditlog.filters.clear": "مسح المرشحات",
648
+ "auditlog.filters.empty": "لا توجد إدخالات تطابق المرشحات الحالية",
649
+ "auditlog.calendar.prevMonth": "الشهر السابق",
650
+ "auditlog.calendar.nextMonth": "الشهر التالي",
651
+ "auditlog.calendar.state.today": "اليوم",
652
+ "auditlog.calendar.state.selected": "محدد",
653
+ "auditlog.calendar.state.alreadyAdded": "تمت إضافته بالفعل",
654
+ "auditlog.calendar.state.future": "غير متوفر، تاريخ مستقبلي",
655
+ "auditlog.calendar.dayWithState": "{date}، {state}",
656
+ "auditlog.action.login_success": "تم مصادقة المستخدم بنجاح عبر OIDC ومنح الوصول.",
657
+ "auditlog.action.user_created": "تم إنشاء حساب مسؤول Strapi جديد لهذا المستخدم عند أول تسجيل دخول له عبر OIDC.",
658
+ "auditlog.action.logout": "تسجيل خروج المستخدم وإنهاء جلسة OIDC الخاصة به.",
659
+ "auditlog.action.session_expired": "انتهت صلاحية رمز وصول OIDC وقت تسجيل خروج المستخدم، لذلك لم يتمكن من إنهاء جلسة المزود عن بُعد.",
660
+ "auditlog.action.login_failure": "حدث خطأ غير متوقع أثناء تدفق تسجيل الدخول عبر OIDC.",
661
+ "auditlog.action.missing_code": "تم استلام رد اتصال OIDC بدون رمز التفويض. قد يشير هذا إلى مزود مكون بشكل خاطئ أو طلب تالف.",
662
+ "auditlog.action.state_mismatch": "لم يتطابق معامل الحالة في رد الاتصال مع quello المخزن في الجلسة. قد يشير هذا إلى محاولة CSRF أو جلسة تسجيل دخول منتهية الصلاحية.",
663
+ "auditlog.action.nonce_mismatch": "لم يتطابق الـ nonce في رمز الهوية مع الذي تم إنشاؤه عند تسجيل الدخول. قد يشير هذا إلى هجوم إعادة تشغيل الرمز.",
664
+ "auditlog.action.token_exchange_failed": "تعذر استبدال رمز التفويض برموز. رفض مزود OIDC الطلب.",
665
+ "auditlog.action.whitelist_rejected": "عنوان البريد الإلكتروني للمستخدم غير موجود في القائمة البيضاء. تم رفض الوصول.",
666
+ "auditlog.action.email_not_verified": "لم يؤكد مزود OIDC عنوان البريد الإلكتروني للمستخدم على أنه تم التحقق منه. تم رفض الوصول.",
667
+ "auditlog.action.id_token_invalid": "فشل رمز الهوية في التحقق من التوقيع أو المصدر أو الجمهور أو انتهاء الصلاحية. تم رفض الوصول.",
668
+ "auth.page.authenticating.title": "جارٍ المصادقة...",
669
+ "auth.page.authenticating.noscript.heading": "JavaScript مطلوب",
670
+ "auth.page.authenticating.noscript.body": "يجب تمكين JavaScript لإكمال المصادقة.",
671
+ "auth.page.error.title": "فشلت المصادقة",
672
+ "auth.page.error.returnToLogin": "العودة إلى تسجيل الدخول",
673
+ "user.missing_code": "لم يتم استلام رمز التفويض من مزود OIDC.",
674
+ "user.invalid_state": "عدم تطابق معامل الحالة. يرجى إعادة بدء تدفق تسجيل الدخول.",
675
+ "user.signInError": "فشلت المصادقة. يرجى المحاولة مرة أخرى.",
676
+ "settings.section": "OIDC",
677
+ "settings.configuration": "التكوين",
678
+ "audit.login_failure": "خطأ: {message}",
679
+ "audit.roles_updated": "تم تحديث الأدوار إلى: {roles}",
680
+ "audit.user_created": "تم تعيين الأدوار: {roles}"
681
+ };
682
+ const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
683
+ __proto__: null,
684
+ default: ar
685
+ }, Symbol.toStringTag, { value: "Module" }));
686
+ const cs = {
687
+ "global.plugins.strapi-plugin-oidc": "OIDC Plugin",
688
+ "page.title": "Konfigurace výchozí role OIDC a řízení přístupu.",
689
+ "roles.notes": "Vyberte výchozí roli (role) přiřazené novým uživatelům při jejich prvním přihlášení. Toto nastavení nemá vliv na stávající uživatele.",
690
+ "page.save": "Uložit změny",
691
+ "page.save.success": "Nastavení aktualizováno",
692
+ "page.save.error": "Aktualizace selhala.",
693
+ "page.add": "Přidat",
694
+ "page.cancel": "Zrušit",
695
+ "common.remove": "Odstranit {label}",
696
+ "page.ok": "OK",
697
+ "roles.title": "Výchozí role",
698
+ "roles.placeholder": "Vyberte výchozí roli (role)",
699
+ "whitelist.title": "Whitelist",
700
+ "whitelist.error.unique": "E-mailová adresa je již zaregistrována.",
701
+ "whitelist.description": "Omezte ověřování OIDC na konkrétní e-mailové adresy. Uživatelé obdrží role z výchozího mapování rolí OIDC nebo ze své skupiny OIDC.",
702
+ "alert.title.success": "Úspěch",
703
+ "alert.title.error": "Chyba",
704
+ "alert.title.info": "Info",
705
+ "pagination.previous": "Přejít na předchozí stránku",
706
+ "pagination.page": "Přejít na stránku {page}",
707
+ "pagination.next": "Přejít na další stránku",
708
+ "whitelist.table.no": "Č.",
709
+ "whitelist.table.email": "E-mail",
710
+ "whitelist.table.created": "Vytvořeno",
711
+ "whitelist.delete.title": "Potvrzení",
712
+ "whitelist.delete.description": "Opravdu chcete smazat:",
713
+ "whitelist.delete.note": "Tím se neodstraní uživatelský účet ve Strapi.",
714
+ "whitelist.toggle.enabled": "Povoleno",
715
+ "whitelist.toggle.disabled": "Zakázáno",
716
+ "whitelist.email.placeholder": "E-mailová adresa",
717
+ "whitelist.table.empty": "Žádné e-mailové adresy",
718
+ "whitelist.delete.label": "Smazat",
719
+ "page.title.oidc": "OIDC",
720
+ "enforce.title": "Vynutit přihlášení přes OIDC",
721
+ "enforce.toggle.enabled": "Povoleno",
722
+ "enforce.toggle.disabled": "Zakázáno",
723
+ "enforce.warning": "Před uložením změn se ujistěte, že je OIDC správně nastaven, jinak se nebudete moci normálně přihlásit.",
724
+ "enforce.config.info": "Vynucování je řízeno konfigurační proměnnou OIDC_ENFORCE a nelze jej zde změnit.",
725
+ "login.settings.title": "Nastavení přihlášení",
726
+ "login.sso": "Přihlášení přes SSO",
727
+ "pagination.total": "{count, plural, one {# položka} few {# položky} other {# položek}}",
728
+ "whitelist.import": "Importovat",
729
+ "whitelist.export": "Exportovat",
730
+ "whitelist.delete.all.label": "Smazat vše",
731
+ "whitelist.delete.all.title": "Smazat všechny položky",
732
+ "whitelist.delete.all.description": "Tímto se trvale odstraní všech {count, plural, one {# položka} few {# položky} other {# položek}} z whitelistu. Neuložené změny budou ztraceny.",
733
+ "whitelist.import.error": "Neplatný soubor — očekávána JSON pole objektů s polem e-mailu.",
734
+ "whitelist.import.success": "Importováno {count, plural, one {# nová položka} few {# nové položky} other {# nových položek}}.",
735
+ "whitelist.import.none": "Žádné nové položky — všechny e-maily jsou již na whitelistu.",
736
+ "unsaved.title": "Neuložené změny",
737
+ "unsaved.description": "Máte neuložené změny, které budou ztraceny, pokud odejdete. Chcete pokračovat?",
738
+ "unsaved.confirm": "Odejít",
739
+ "unsaved.cancel": "Zůstat",
740
+ "auditlog.title": "Auditní protokoly",
741
+ "auditlog.export": "Stáhnout",
742
+ "auditlog.table.timestamp": "Časové razítko",
743
+ "auditlog.table.action": "Akce",
744
+ "auditlog.table.email": "E-mail",
745
+ "auditlog.table.ip": "IP",
746
+ "auditlog.table.details": "Podrobnosti",
747
+ "auditlog.table.empty": "Žádné položky auditního protokolu",
748
+ "auditlog.clear": "Vymazat protokoly",
749
+ "auditlog.clear.title": "Vymazat všechny protokoly",
750
+ "auditlog.clear.description": "Tímto se trvale odstraní všech {count, plural, one {# položka auditního protokolu} few {# položky auditního protokolu} other {# položek auditního protokolu}}. Tuto akci nelze vrátit zpět.",
751
+ "auditlog.clear.success": "Auditní protokoly vymazány",
752
+ "auditlog.clear.error": "Nepodařilo se vymazat auditní protokoly",
753
+ "auditlog.export.error": "Nepodařilo se exportovat auditní protokoly",
754
+ "auditlog.filters": "Filtry",
755
+ "auditlog.filters.action": "Akce",
756
+ "auditlog.filters.email": "E-mail",
757
+ "auditlog.filters.ip": "IP adresa",
758
+ "auditlog.filters.createdAt": "Datum",
759
+ "auditlog.filters.clear": "Vymazat filtry",
760
+ "auditlog.filters.empty": "Žádné položky neodpovídají aktuálním filtrům",
761
+ "auditlog.calendar.prevMonth": "Předchozí měsíc",
762
+ "auditlog.calendar.nextMonth": "Další měsíc",
763
+ "auditlog.calendar.state.today": "dnes",
764
+ "auditlog.calendar.state.selected": "vybráno",
765
+ "auditlog.calendar.state.alreadyAdded": "již přidáno",
766
+ "auditlog.calendar.state.future": "nedostupné, budoucí datum",
767
+ "auditlog.calendar.dayWithState": "{date}, {state}",
768
+ "auditlog.action.login_success": "Uživatel byl úspěšně ověřen prostřednictvím OIDC a byl mu udělen přístup.",
769
+ "auditlog.action.user_created": "Při prvním OIDC přihlášení byl pro tohoto uživatele vytvořen nový účet správce Strapi.",
770
+ "auditlog.action.logout": "Uživatel se odhlásil a jeho relace OIDC byla ukončena.",
771
+ "auditlog.action.session_expired": "Platnost přístupového tokenu OIDC vypršela v době, kdy se uživatel odhlásil, takže relace poskytovatele nemohla být vzdáleně ukončena.",
772
+ "auditlog.action.login_failure": "Během toku přihlášení OIDC došlo k neočekávané chybě.",
773
+ "auditlog.action.missing_code": "OIDC callback byl přijat bez autorizačního kódu. To může naznačovat nesprávně nakonfigurovaného poskytovatele nebo poškozený požadavek.",
774
+ "auditlog.action.state_mismatch": "Parametr stavu v callbacku se neshodoval s tím uloženým v relaci. To může naznačovat pokus o CSRF nebo vypršelou relaci přihlášení.",
775
+ "auditlog.action.nonce_mismatch": "Nonce v ID tokenu se neshodovala s tou, která byla generována při přihlášení. To může naznačovat útok replay tokenu.",
776
+ "auditlog.action.token_exchange_failed": "Autorizační kód nemohl být vyměněn za tokeny. Poskytovatel OIDC požadavek odmítl.",
777
+ "auditlog.action.whitelist_rejected": "E-mailová adresa uživatele není na whitelistu. Přístup byl odepřen.",
778
+ "auditlog.action.email_not_verified": "Poskytovatel OIDC nepotvrdil e-mailovou adresu uživatele jako ověřenou. Přístup byl odepřen.",
779
+ "auditlog.action.id_token_invalid": "ID token selhal při ověření podpisu, vydavatele, publika nebo vypršení platnosti. Přístup byl odepřen.",
780
+ "auth.page.authenticating.title": "Ověřování...",
781
+ "auth.page.authenticating.noscript.heading": "Vyžadován JavaScript",
782
+ "auth.page.authenticating.noscript.body": "Pro dokončení ověřování musí být povolen JavaScript.",
783
+ "auth.page.error.title": "Ověření selhalo",
784
+ "auth.page.error.returnToLogin": "Zpět na přihlášení",
785
+ "user.missing_code": "Autorizační kód nebyl od poskytovatele OIDC přijat.",
786
+ "user.invalid_state": "Neshoda parametru stavu. Restartujte prosím tok přihlášení.",
787
+ "user.signInError": "Ověření selhalo. Zkuste to prosím znovu.",
788
+ "settings.section": "OIDC",
789
+ "settings.configuration": "Konfigurace",
790
+ "audit.login_failure": "Chyba: {message}",
791
+ "audit.roles_updated": "Role aktualizovány na: {roles}",
792
+ "audit.user_created": "Přiřazené role: {roles}"
793
+ };
794
+ const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
795
+ __proto__: null,
796
+ default: cs
797
+ }, Symbol.toStringTag, { value: "Module" }));
798
+ const de = {
799
+ "global.plugins.strapi-plugin-oidc": "OIDC-Plugin",
800
+ "page.title": "Konfigurieren Sie die Standardrolle(s) und Zugriffskontrollen für OIDC.",
801
+ "roles.notes": "Wählen Sie die Standardrolle(n), die neuen Benutzern bei ihrer ersten Anmeldung zugewiesen werden. Diese Einstellung betrifft keine bestehenden Benutzer.",
802
+ "page.save": "Änderungen speichern",
803
+ "page.save.success": "Einstellungen aktualisiert",
804
+ "page.save.error": "Aktualisierung fehlgeschlagen.",
805
+ "page.add": "Hinzufügen",
806
+ "page.cancel": "Abbrechen",
807
+ "common.remove": "{label} entfernen",
808
+ "page.ok": "OK",
809
+ "roles.title": "Standardrolle(n)",
810
+ "roles.placeholder": "Standardrolle(n) auswählen",
811
+ "whitelist.title": "Whitelist",
812
+ "whitelist.error.unique": "E-Mail-Adresse bereits registriert.",
813
+ "whitelist.description": "Beschränken Sie die OIDC-Authentifizierung auf bestimmte E-Mail-Adressen. Benutzer erhalten Rollen aus der Standard-OIDC-Rollenzuordnung oder ihrer OIDC-Gruppe.",
814
+ "alert.title.success": "Erfolg",
815
+ "alert.title.error": "Fehler",
816
+ "alert.title.info": "Info",
817
+ "pagination.previous": "Zur vorherigen Seite",
818
+ "pagination.page": "Zur Seite {page}",
819
+ "pagination.next": "Zur nächsten Seite",
820
+ "whitelist.table.no": "Nr.",
821
+ "whitelist.table.email": "E-Mail",
822
+ "whitelist.table.created": "Erstellt am",
823
+ "whitelist.delete.title": "Bestätigung",
824
+ "whitelist.delete.description": "Sind Sie sicher, dass Sie löschen möchten:",
825
+ "whitelist.delete.note": "Dies löscht nicht das Benutzerkonto in Strapi.",
826
+ "whitelist.toggle.enabled": "Aktiviert",
827
+ "whitelist.toggle.disabled": "Deaktiviert",
828
+ "whitelist.email.placeholder": "E-Mail-Adresse",
829
+ "whitelist.table.empty": "Keine E-Mail-Adressen",
830
+ "whitelist.delete.label": "Löschen",
831
+ "page.title.oidc": "OIDC",
832
+ "enforce.title": "OIDC-Anmeldung erzwingen",
833
+ "enforce.toggle.enabled": "Aktiviert",
834
+ "enforce.toggle.disabled": "Deaktiviert",
835
+ "enforce.warning": "Stellen Sie sicher, dass OIDC korrekt eingerichtet ist, bevor Sie Änderungen speichern. Sie können sich nicht normal anmelden.",
836
+ "enforce.config.info": "Die Durchsetzung wird durch die OIDC_ENFORCE-Konfigurationsvariable gesteuert und kann hier nicht geändert werden.",
837
+ "login.settings.title": "Anmeldeeinstellungen",
838
+ "login.sso": "Über SSO anmelden",
839
+ "pagination.total": "{count, plural, one {# Eintrag} other {# Einträge}}",
840
+ "whitelist.import": "Importieren",
841
+ "whitelist.export": "Exportieren",
842
+ "whitelist.delete.all.label": "Alle löschen",
843
+ "whitelist.delete.all.title": "Alle Einträge löschen",
844
+ "whitelist.delete.all.description": "Dies entfernt dauerhaft alle {count, plural, one {# Eintrag} other {# Einträge}} aus der Whitelist. Nicht gespeicherte Änderungen gehen verloren.",
845
+ "whitelist.import.error": "Ungültige Datei — erwartet wurde ein JSON-Array von Objekten mit einem E-Mail-Feld.",
846
+ "whitelist.import.success": "{count, plural, one {# neuer Eintrag} other {# neue Einträge}} importiert.",
847
+ "whitelist.import.none": "Keine neuen Einträge — alle E-Mails sind bereits in der Whitelist.",
848
+ "unsaved.title": "Ungespeicherte Änderungen",
849
+ "unsaved.description": "Sie haben ungespeicherte Änderungen, die verloren gehen, wenn Sie die Seite verlassen. Möchten Sie fortfahren?",
850
+ "unsaved.confirm": "Verlassen",
851
+ "unsaved.cancel": "Bleiben",
852
+ "auditlog.title": "Audit-Logs",
853
+ "auditlog.export": "Herunterladen",
854
+ "auditlog.table.timestamp": "Zeitstempel",
855
+ "auditlog.table.action": "Aktion",
856
+ "auditlog.table.email": "E-Mail",
857
+ "auditlog.table.ip": "IP",
858
+ "auditlog.table.details": "Details",
859
+ "auditlog.table.empty": "Keine Audit-Log-Einträge",
860
+ "auditlog.clear": "Logs löschen",
861
+ "auditlog.clear.title": "Alle Logs löschen",
862
+ "auditlog.clear.description": "Dies löscht dauerhaft alle {count, plural, one {# Audit-Log-Eintrag} other {# Audit-Log-Einträge}}. Diese Aktion kann nicht rückgängig gemacht werden.",
863
+ "auditlog.clear.success": "Audit-Logs gelöscht",
864
+ "auditlog.clear.error": "Audit-Logs konnten nicht gelöscht werden",
865
+ "auditlog.export.error": "Audit-Logs konnten nicht exportiert werden",
866
+ "auditlog.filters": "Filter",
867
+ "auditlog.filters.action": "Aktion",
868
+ "auditlog.filters.email": "E-Mail",
869
+ "auditlog.filters.ip": "IP-Adresse",
870
+ "auditlog.filters.createdAt": "Datum",
871
+ "auditlog.filters.clear": "Filter löschen",
872
+ "auditlog.filters.empty": "Keine Einträge entsprechen den aktuellen Filtern",
873
+ "auditlog.calendar.prevMonth": "Vorheriger Monat",
874
+ "auditlog.calendar.nextMonth": "Nächster Monat",
875
+ "auditlog.calendar.state.today": "heute",
876
+ "auditlog.calendar.state.selected": "ausgewählt",
877
+ "auditlog.calendar.state.alreadyAdded": "bereits hinzugefügt",
878
+ "auditlog.calendar.state.future": "nicht verfügbar, zukünftiges Datum",
879
+ "auditlog.calendar.dayWithState": "{date}, {state}",
880
+ "auditlog.action.login_success": "Benutzer wurde erfolgreich über OIDC authentifiziert und erhielt Zugang.",
881
+ "auditlog.action.user_created": "Bei seiner ersten OIDC-Anmeldung wurde ein neues Strapi-Admin-Konto für diesen Benutzer erstellt.",
882
+ "auditlog.action.logout": "Benutzer hat sich abgemeldet und seine OIDC-Sitzung wurde beendet.",
883
+ "auditlog.action.session_expired": "Das OIDC-Zugriffstoken war zum Zeitpunkt der Abmeldung des Benutzers abgelaufen, sodass die Provider-Sitzung nicht remote beendet werden konnte.",
884
+ "auditlog.action.login_failure": "Bei der OIDC-Anmeldung ist ein unerwarteter Fehler aufgetreten.",
885
+ "auditlog.action.missing_code": "Der OIDC-Callback wurde ohne Autorisierungscode empfangen. Dies kann auf einen falsch konfigurierten Anbieter oder eine manipulierte Anfrage hinweisen.",
886
+ "auditlog.action.state_mismatch": "Der Statusparameter im Callback stimmte nicht mit dem in der Sitzung gespeicherten überein. Dies kann auf einen CSRF-Versuch oder eine abgelaufene Anmeldesitzung hinweisen.",
887
+ "auditlog.action.nonce_mismatch": "Die Nonce in der ID-Token stimmte nicht mit der bei der Anmeldung generierten überein. Dies kann auf einen Token-Replay-Angriff hinweisen.",
888
+ "auditlog.action.token_exchange_failed": "Der Autorisierungscode konnte nicht gegen Tokens eingetauscht werden. Der OIDC-Anbieter lehnte die Anfrage ab.",
889
+ "auditlog.action.whitelist_rejected": "Die E-Mail-Adresse des Benutzers ist nicht auf der Whitelist. Zugriff wurde verweigert.",
890
+ "auditlog.action.email_not_verified": "Der OIDC-Anbieter hat die E-Mail-Adresse des Benutzers nicht als verifiziert bestätigt. Zugriff wurde verweigert.",
891
+ "auditlog.action.id_token_invalid": "Die ID-Token-Überprüfung von Signatur, Aussteller, Zielgruppe oder Ablauf ist fehlgeschlagen. Zugriff wurde verweigert.",
892
+ "auth.page.authenticating.title": "Authentifizierung...",
893
+ "auth.page.authenticating.noscript.heading": "JavaScript erforderlich",
894
+ "auth.page.authenticating.noscript.body": "JavaScript muss aktiviert sein, damit die Authentifizierung abgeschlossen werden kann.",
895
+ "auth.page.error.title": "Authentifizierung fehlgeschlagen",
896
+ "auth.page.error.returnToLogin": "Zurück zur Anmeldung",
897
+ "user.missing_code": "Autorisierungscode wurde nicht vom OIDC-Anbieter empfangen.",
898
+ "user.invalid_state": "Statusparameter stimmt nicht überein. Bitte starten Sie den Anmeldeablauf erneut.",
899
+ "user.signInError": "Authentifizierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
900
+ "settings.section": "OIDC",
901
+ "settings.configuration": "Konfiguration",
902
+ "audit.login_failure": "Fehler: {message}",
903
+ "audit.roles_updated": "Rollen aktualisiert zu: {roles}",
904
+ "audit.user_created": "Zugewiesene Rollen: {roles}"
905
+ };
906
+ const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
907
+ __proto__: null,
908
+ default: de
909
+ }, Symbol.toStringTag, { value: "Module" }));
910
+ const dk = {
911
+ "global.plugins.strapi-plugin-oidc": "OIDC Plugin",
912
+ "page.title": "Konfigurer OIDC standardroller og adgangskontroller.",
913
+ "roles.notes": "Vælg den eller de standardroller, der tildeles nye brugere ved deres første login. Denne indstilling påvirker ikke eksisterende brugere.",
914
+ "page.save": "Gem ændringer",
915
+ "page.save.success": "Indstillinger opdateret",
916
+ "page.save.error": "Opdatering mislykkedes.",
917
+ "page.add": "Tilføj",
918
+ "page.cancel": "Annuller",
919
+ "common.remove": "Fjern {label}",
920
+ "page.ok": "OK",
921
+ "roles.title": "Standardrolle(r)",
922
+ "roles.placeholder": "Vælg standardrolle(r)",
923
+ "whitelist.title": "Whitelist",
924
+ "whitelist.error.unique": "E-mailadresse allerede registreret.",
925
+ "whitelist.description": "Begræns OIDC-godkendelse til specifikke e-mailadresser. Brugere modtager roller fra standard OIDC-rolletilknytning eller deres OIDC-gruppe.",
926
+ "alert.title.success": "Succes",
927
+ "alert.title.error": "Fejl",
928
+ "alert.title.info": "Info",
929
+ "pagination.previous": "Gå til forrige side",
930
+ "pagination.page": "Gå til side {page}",
931
+ "pagination.next": "Gå til næste side",
932
+ "whitelist.table.no": "Nr.",
933
+ "whitelist.table.email": "E-mail",
934
+ "whitelist.table.created": "Oprettet den",
935
+ "whitelist.delete.title": "Bekræftelse",
936
+ "whitelist.delete.description": "Er du sikker på, at du vil slette:",
937
+ "whitelist.delete.note": "Dette sletter ikke brugerkontoen i Strapi.",
938
+ "whitelist.toggle.enabled": "Aktiveret",
939
+ "whitelist.toggle.disabled": "Deaktiveret",
940
+ "whitelist.email.placeholder": "E-mailadresse",
941
+ "whitelist.table.empty": "Ingen e-mailadresser",
942
+ "whitelist.delete.label": "Slet",
943
+ "page.title.oidc": "OIDC",
944
+ "enforce.title": "Gennemtving OIDC-login",
945
+ "enforce.toggle.enabled": "Aktiveret",
946
+ "enforce.toggle.disabled": "Deaktiveret",
947
+ "enforce.warning": "Sørg for, at OIDC er konfigureret korrekt, før du gemmer ændringer. Du vil ikke kunne logge ind normalt.",
948
+ "enforce.config.info": "Gennemtvingelse styres af OIDC_ENFORCE-konfigurationsvariablen og kan ikke ændres her.",
949
+ "login.settings.title": "Login-indstillinger",
950
+ "login.sso": "Log ind via SSO",
951
+ "pagination.total": "{count, plural, one {# post} other {# poster}}",
952
+ "whitelist.import": "Importer",
953
+ "whitelist.export": "Eksporter",
954
+ "whitelist.delete.all.label": "Slet alle",
955
+ "whitelist.delete.all.title": "Slet alle poster",
956
+ "whitelist.delete.all.description": "Dette vil permanent fjerne alle {count, plural, one {# post} other {# poster}} fra whitelisten. Ikke-gemte ændringer vil gå tabt.",
957
+ "whitelist.import.error": "Ugyldig fil — forventede et JSON-array af objekter med et e-mail-felt.",
958
+ "whitelist.import.success": "Importeret {count, plural, one {# ny post} other {# nye poster}}.",
959
+ "whitelist.import.none": "Ingen nye poster — alle e-mails er allerede på whitelisten.",
960
+ "unsaved.title": "Ikke-gemte ændringer",
961
+ "unsaved.description": "Du har ikke-gemte ændringer, der vil gå tabt, hvis du forlader siden. Vil du fortsætte?",
962
+ "unsaved.confirm": "Forlad",
963
+ "unsaved.cancel": "Bliv",
964
+ "auditlog.title": "Audit Logs",
965
+ "auditlog.export": "Download",
966
+ "auditlog.table.timestamp": "Tidsstempel",
967
+ "auditlog.table.action": "Handling",
968
+ "auditlog.table.email": "E-mail",
969
+ "auditlog.table.ip": "IP",
970
+ "auditlog.table.details": "Detaljer",
971
+ "auditlog.table.empty": "Ingen audit log-poster",
972
+ "auditlog.clear": "Ryd logs",
973
+ "auditlog.clear.title": "Ryd alle logs",
974
+ "auditlog.clear.description": "Dette vil permanent slette alle {count, plural, one {# audit log-post} other {# audit log-poster}}. Denne handling kan ikke fortrydes.",
975
+ "auditlog.clear.success": "Audit logs ryddet",
976
+ "auditlog.clear.error": "Kunne ikke rydde audit logs",
977
+ "auditlog.export.error": "Kunne ikke eksportere audit logs",
978
+ "auditlog.filters": "Filtre",
979
+ "auditlog.filters.action": "Handling",
980
+ "auditlog.filters.email": "E-mail",
981
+ "auditlog.filters.ip": "IP-adresse",
982
+ "auditlog.filters.createdAt": "Dato",
983
+ "auditlog.filters.clear": "Ryd filtre",
984
+ "auditlog.filters.empty": "Ingen poster matcher de aktuelle filtre",
985
+ "auditlog.calendar.prevMonth": "Forrige måned",
986
+ "auditlog.calendar.nextMonth": "Næste måned",
987
+ "auditlog.calendar.state.today": "i dag",
988
+ "auditlog.calendar.state.selected": "valgt",
989
+ "auditlog.calendar.state.alreadyAdded": "allerede tilføjet",
990
+ "auditlog.calendar.state.future": "utilgængelig, fremtidig dato",
991
+ "auditlog.calendar.dayWithState": "{date}, {state}",
992
+ "auditlog.action.login_success": "Bruger blev succesfuldt autentificeret via OIDC og fik adgang.",
993
+ "auditlog.action.user_created": "Der blev oprettet en ny Strapi-admin-konto til denne bruger ved deres første OIDC-login.",
994
+ "auditlog.action.logout": "Bruger loggede ud, og deres OIDC-session blev afsluttet.",
995
+ "auditlog.action.session_expired": "OIDC-adgangstokenet var udløbet på det tidspunkt, hvor brugeren loggede ud, så providersessionen kunne ikke afsluttes eksternt.",
996
+ "auditlog.action.login_failure": "Der opstod en uventet fejl under OIDC-login-flowet.",
997
+ "auditlog.action.missing_code": "OIDC-callbacket blev modtaget uden en autorisationskode. Dette kan indikere en fejlkonfigureret udbyder eller en manipuleret anmodning.",
998
+ "auditlog.action.state_mismatch": "State-parameteren i callbacket matched ikke den, der var gemt i sessionen. Dette kan indikere et CSRF-forsøg eller en udløbet login-session.",
999
+ "auditlog.action.nonce_mismatch": "Nonce i ID-tokenet matched ikke den, der blev genereret ved login. Dette kan indikere et token-replay-angreb.",
1000
+ "auditlog.action.token_exchange_failed": "Autorisationskoden kunne ikke udveksles med tokens. OIDC-udbyderen afviste anmodningen.",
1001
+ "auditlog.action.whitelist_rejected": "Brugerens e-mailadresse er ikke på whitelisten. Adgang blev nægtet.",
1002
+ "auditlog.action.email_not_verified": "OIDC-udbyderen bekræftede ikke brugerens e-mailadresse som verificeret. Adgang blev nægtet.",
1003
+ "auditlog.action.id_token_invalid": "ID-tokenet bestod ikke signatur-, udsteder-, publikum- eller udløbsvalidering. Adgang blev nægtet.",
1004
+ "auth.page.authenticating.title": "Autentificerer...",
1005
+ "auth.page.authenticating.noscript.heading": "JavaScript påkrævet",
1006
+ "auth.page.authenticating.noscript.body": "JavaScript skal være aktiveret for at autentificeringen kan fuldføres.",
1007
+ "auth.page.error.title": "Autentificering mislykkedes",
1008
+ "auth.page.error.returnToLogin": "Tilbage til login",
1009
+ "user.missing_code": "Autorisationskode blev ikke modtaget fra OIDC-udbyderen.",
1010
+ "user.invalid_state": "State-parameter mismatch. Genstart venligst login-flowet.",
1011
+ "user.signInError": "Autentificering mislykkedes. Prøv venligst igen.",
1012
+ "settings.section": "OIDC",
1013
+ "settings.configuration": "Konfiguration",
1014
+ "audit.login_failure": "Fejl: {message}",
1015
+ "audit.roles_updated": "Roller opdateret til: {roles}",
1016
+ "audit.user_created": "Tildelte roller: {roles}"
1017
+ };
1018
+ const __vite_glob_0_3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1019
+ __proto__: null,
1020
+ default: dk
1021
+ }, Symbol.toStringTag, { value: "Module" }));
486
1022
  const en = {
487
1023
  "global.plugins.strapi-plugin-oidc": "OIDC Plugin",
488
1024
  "page.title": "Configure OIDC default role(s) and access controls.",
@@ -586,13 +1122,2480 @@ const en = {
586
1122
  "user.invalid_state": "State parameter mismatch. Please restart the login flow.",
587
1123
  "user.signInError": "Authentication failed. Please try again.",
588
1124
  "settings.section": "OIDC",
589
- "settings.configuration": "Configuration"
1125
+ "settings.configuration": "Configuration",
1126
+ "audit.login_failure": "Error: {message}",
1127
+ "audit.roles_updated": "Roles updated to: {roles}",
1128
+ "audit.user_created": "Roles assigned: {roles}"
590
1129
  };
591
- const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1130
+ const __vite_glob_0_4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
592
1131
  __proto__: null,
593
1132
  default: en
594
1133
  }, Symbol.toStringTag, { value: "Module" }));
595
- const modules = /* @__PURE__ */ Object.assign({ "../translations/locales/en.json": __vite_glob_0_0 });
1134
+ const es = {
1135
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
1136
+ "page.title": "Configure los roles predeterminados de OIDC y los controles de acceso.",
1137
+ "roles.notes": "Seleccione el rol o roles predeterminados asignados a los nuevos usuarios en su primer inicio de sesión. Esta configuración no afecta a los usuarios existentes.",
1138
+ "page.save": "Guardar cambios",
1139
+ "page.save.success": "Configuración actualizada",
1140
+ "page.save.error": "Error al actualizar.",
1141
+ "page.add": "Añadir",
1142
+ "page.cancel": "Cancelar",
1143
+ "common.remove": "Eliminar {label}",
1144
+ "page.ok": "Aceptar",
1145
+ "roles.title": "Rol(es) predeterminado(s)",
1146
+ "roles.placeholder": "Seleccionar rol(es) predeterminado(s)",
1147
+ "whitelist.title": "Lista blanca",
1148
+ "whitelist.error.unique": "Dirección de correo electrónico ya registrada.",
1149
+ "whitelist.description": "Restrinja la autenticación OIDC a direcciones de correo electrónico específicas. Los usuarios reciben roles del mapeo de roles OIDC predeterminado o de su grupo OIDC.",
1150
+ "alert.title.success": "Éxito",
1151
+ "alert.title.error": "Error",
1152
+ "alert.title.info": "Info",
1153
+ "pagination.previous": "Ir a la página anterior",
1154
+ "pagination.page": "Ir a la página {page}",
1155
+ "pagination.next": "Ir a la página siguiente",
1156
+ "whitelist.table.no": "Nº",
1157
+ "whitelist.table.email": "Correo electrónico",
1158
+ "whitelist.table.created": "Creado el",
1159
+ "whitelist.delete.title": "Confirmación",
1160
+ "whitelist.delete.description": "¿Está seguro de que desea eliminar:",
1161
+ "whitelist.delete.note": "Esto no eliminará la cuenta de usuario en Strapi.",
1162
+ "whitelist.toggle.enabled": "Habilitado",
1163
+ "whitelist.toggle.disabled": "Deshabilitado",
1164
+ "whitelist.email.placeholder": "Dirección de correo electrónico",
1165
+ "whitelist.table.empty": "Sin direcciones de correo electrónico",
1166
+ "whitelist.delete.label": "Eliminar",
1167
+ "page.title.oidc": "OIDC",
1168
+ "enforce.title": "Forzar inicio de sesión OIDC",
1169
+ "enforce.toggle.enabled": "Habilitado",
1170
+ "enforce.toggle.disabled": "Deshabilitado",
1171
+ "enforce.warning": "Asegúrese de que OIDC esté configurado correctamente antes de guardar los cambios; no podrá iniciar sesión normalmente.",
1172
+ "enforce.config.info": "La aplicación se controla mediante la variable de configuración OIDC_ENFORCE y no se puede cambiar aquí.",
1173
+ "login.settings.title": "Configuración de inicio de sesión",
1174
+ "login.sso": "Iniciar sesión a través de SSO",
1175
+ "pagination.total": "{count, plural, one {# entrada} other {# entradas}}",
1176
+ "whitelist.import": "Importar",
1177
+ "whitelist.export": "Exportar",
1178
+ "whitelist.delete.all.label": "Eliminar todo",
1179
+ "whitelist.delete.all.title": "Eliminar todas las entradas",
1180
+ "whitelist.delete.all.description": "Esto eliminará permanentemente todas las {count, plural, one {# entrada} other {# entradas}} de la lista blanca. Se perderán los cambios sin guardar.",
1181
+ "whitelist.import.error": "Archivo no válido — se esperaba un array JSON de objetos con un campo de correo electrónico.",
1182
+ "whitelist.import.success": "Se importaron {count, plural, one {# nueva entrada} other {# nuevas entradas}}.",
1183
+ "whitelist.import.none": "Sin entradas nuevas — todos los correos electrónicos ya están en la lista blanca.",
1184
+ "unsaved.title": "Cambios sin guardar",
1185
+ "unsaved.description": "Tiene cambios sin guardar que se perderán si abandona la página. ¿Desea continuar?",
1186
+ "unsaved.confirm": "Abandonar",
1187
+ "unsaved.cancel": "Quedarse",
1188
+ "auditlog.title": "Registros de auditoría",
1189
+ "auditlog.export": "Descargar",
1190
+ "auditlog.table.timestamp": "Marca de tiempo",
1191
+ "auditlog.table.action": "Acción",
1192
+ "auditlog.table.email": "Correo electrónico",
1193
+ "auditlog.table.ip": "IP",
1194
+ "auditlog.table.details": "Detalles",
1195
+ "auditlog.table.empty": "Sin entradas de registro de auditoría",
1196
+ "auditlog.clear": "Borrar registros",
1197
+ "auditlog.clear.title": "Borrar todos los registros",
1198
+ "auditlog.clear.description": "Esto eliminará permanentemente todas las {count, plural, one {# entrada de registro de auditoría} other {# entradas de registro de auditoría}}. Esta acción no se puede deshacer.",
1199
+ "auditlog.clear.success": "Registros de auditoría borrados",
1200
+ "auditlog.clear.error": "Error al borrar los registros de auditoría",
1201
+ "auditlog.export.error": "Error al exportar los registros de auditoría",
1202
+ "auditlog.filters": "Filtros",
1203
+ "auditlog.filters.action": "Acción",
1204
+ "auditlog.filters.email": "Correo electrónico",
1205
+ "auditlog.filters.ip": "Dirección IP",
1206
+ "auditlog.filters.createdAt": "Fecha",
1207
+ "auditlog.filters.clear": "Borrar filtros",
1208
+ "auditlog.filters.empty": "Ninguna entrada coincide con los filtros actuales",
1209
+ "auditlog.calendar.prevMonth": "Mes anterior",
1210
+ "auditlog.calendar.nextMonth": "Mes siguiente",
1211
+ "auditlog.calendar.state.today": "hoy",
1212
+ "auditlog.calendar.state.selected": "seleccionado",
1213
+ "auditlog.calendar.state.alreadyAdded": "ya añadido",
1214
+ "auditlog.calendar.state.future": "no disponible, fecha futura",
1215
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1216
+ "auditlog.action.login_success": "El usuario se autenticó correctamente a través de OIDC y se le concedió acceso.",
1217
+ "auditlog.action.user_created": "Se creó una nueva cuenta de administrador de Strapi para este usuario en su primer inicio de sesión OIDC.",
1218
+ "auditlog.action.logout": "El usuario cerró la sesión y su sesión OIDC terminó.",
1219
+ "auditlog.action.session_expired": "El token de acceso OIDC había expirado en el momento en que el usuario cerró la sesión, por lo que la sesión del proveedor no pudo terminatearse remotamente.",
1220
+ "auditlog.action.login_failure": "Se produjo un error inesperado durante el flujo de inicio de sesión OIDC.",
1221
+ "auditlog.action.missing_code": "El callback de OIDC se recibió sin un código de autorización. Esto puede indicar un proveedor mal configurado o una solicitud manipulada.",
1222
+ "auditlog.action.state_mismatch": "El parámetro de estado en el callback no coincided con el almacenado en la sesión. Esto puede indicar un intento de CSRF o una sesión de inicio de sesión expirada.",
1223
+ "auditlog.action.nonce_mismatch": "El nonce en el token de ID no coincidió con el generado en el inicio de sesión. Esto puede indicar un ataque de replay de token.",
1224
+ "auditlog.action.token_exchange_failed": "El código de autorización no pudo intercambiarse por tokens. El proveedor de OIDC rechazó la solicitud.",
1225
+ "auditlog.action.whitelist_rejected": "La dirección de correo electrónico del usuario no está en la lista blanca. Se denegó el acceso.",
1226
+ "auditlog.action.email_not_verified": "El proveedor de OIDC no confirmó la dirección de correo electrónico del usuario como verificada. Se denegó el acceso.",
1227
+ "auditlog.action.id_token_invalid": "El token de ID no pasó la validación de firma, emisor, audiencia o expiración. Se denegó el acceso.",
1228
+ "auth.page.authenticating.title": "Autenticando...",
1229
+ "auth.page.authenticating.noscript.heading": "Se requiere JavaScript",
1230
+ "auth.page.authenticating.noscript.body": "JavaScript debe estar habilitado para que la autenticación se complete.",
1231
+ "auth.page.error.title": "Error de autenticación",
1232
+ "auth.page.error.returnToLogin": "Volver al inicio de sesión",
1233
+ "user.missing_code": "No se recibió el código de autorización del proveedor de OIDC.",
1234
+ "user.invalid_state": "Discordancia del parámetro de estado. Reinicie el flujo de inicio de sesión.",
1235
+ "user.signInError": "Error de autenticación. Inténtelo de nuevo.",
1236
+ "settings.section": "OIDC",
1237
+ "settings.configuration": "Configuración",
1238
+ "audit.login_failure": "Error: {message}",
1239
+ "audit.roles_updated": "Roles actualizados a: {roles}",
1240
+ "audit.user_created": "Roles asignados: {roles}"
1241
+ };
1242
+ const __vite_glob_0_5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1243
+ __proto__: null,
1244
+ default: es
1245
+ }, Symbol.toStringTag, { value: "Module" }));
1246
+ const fr = {
1247
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
1248
+ "page.title": "Configurez les rôles par défaut OIDC et les contrôles d'accès.",
1249
+ "roles.notes": "Sélectionnez le(s) rôle(s) par défaut attribué(s) aux nouveaux utilisateurs lors de leur première connexion. Ce paramètre n'affecte pas les utilisateurs existants.",
1250
+ "page.save": "Enregistrer les modifications",
1251
+ "page.save.success": "Paramètres mis à jour",
1252
+ "page.save.error": "Échec de la mise à jour.",
1253
+ "page.add": "Ajouter",
1254
+ "page.cancel": "Annuler",
1255
+ "common.remove": "Supprimer {label}",
1256
+ "page.ok": "OK",
1257
+ "roles.title": "Rôle(s) par défaut",
1258
+ "roles.placeholder": "Sélectionner le(s) rôle(s) par défaut",
1259
+ "whitelist.title": "Liste blanche",
1260
+ "whitelist.error.unique": "Adresse e-mail déjà enregistrée.",
1261
+ "whitelist.description": "Restreindre l'authentification OIDC à des adresses e-mail spécifiques. Les utilisateurs reçoivent des rôles à partir de la mapping de rôles OIDC par défaut ou de leur groupe OIDC.",
1262
+ "alert.title.success": "Succès",
1263
+ "alert.title.error": "Erreur",
1264
+ "alert.title.info": "Info",
1265
+ "pagination.previous": "Aller à la page précédente",
1266
+ "pagination.page": "Aller à la page {page}",
1267
+ "pagination.next": "Aller à la page suivante",
1268
+ "whitelist.table.no": "Nº",
1269
+ "whitelist.table.email": "E-mail",
1270
+ "whitelist.table.created": "Créé le",
1271
+ "whitelist.delete.title": "Confirmation",
1272
+ "whitelist.delete.description": "Êtes-vous sûr de vouloir supprimer :",
1273
+ "whitelist.delete.note": "Cela ne supprimera pas le compte utilisateur dans Strapi.",
1274
+ "whitelist.toggle.enabled": "Activé",
1275
+ "whitelist.toggle.disabled": "Désactivé",
1276
+ "whitelist.email.placeholder": "Adresse e-mail",
1277
+ "whitelist.table.empty": "Aucune adresse e-mail",
1278
+ "whitelist.delete.label": "Supprimer",
1279
+ "page.title.oidc": "OIDC",
1280
+ "enforce.title": "Imposer la connexion OIDC",
1281
+ "enforce.toggle.enabled": "Activé",
1282
+ "enforce.toggle.disabled": "Désactivé",
1283
+ "enforce.warning": "Assurez-vous que OIDC est correctement configuré avant d'enregistrer les modifications. Vous ne pourrez pas vous connecter normalement.",
1284
+ "enforce.config.info": "L'application est contrôlée par la variable de configuration OIDC_ENFORCE et ne peut pas être modifiée ici.",
1285
+ "login.settings.title": "Paramètres de connexion",
1286
+ "login.sso": "Connexion via SSO",
1287
+ "pagination.total": "{count, plural, one {# entrée} other {# entrées}}",
1288
+ "whitelist.import": "Importer",
1289
+ "whitelist.export": "Exporter",
1290
+ "whitelist.delete.all.label": "Tout supprimer",
1291
+ "whitelist.delete.all.title": "Supprimer toutes les entrées",
1292
+ "whitelist.delete.all.description": "Cela supprimera définitivement toutes les {count, plural, one {# entrée} other {# entrées}} de la liste blanche. Les modifications non enregistrées seront perdues.",
1293
+ "whitelist.import.error": "Fichier invalide — attendu un tableau JSON d'objets avec un champ e-mail.",
1294
+ "whitelist.import.success": "{count, plural, one {# nouvelle entrée} other {# nouvelles entrées}} importée(s).",
1295
+ "whitelist.import.none": "Aucune nouvelle entrée — tous les e-mails sont déjà dans la liste blanche.",
1296
+ "unsaved.title": "Modifications non enregistrées",
1297
+ "unsaved.description": "Vous avez des modifications non enregistrées qui seront perdues si vous quittez. Voulez-vous continuer ?",
1298
+ "unsaved.confirm": "Quitter",
1299
+ "unsaved.cancel": "Rester",
1300
+ "auditlog.title": "Journaux d'audit",
1301
+ "auditlog.export": "Télécharger",
1302
+ "auditlog.table.timestamp": "Horodatage",
1303
+ "auditlog.table.action": "Action",
1304
+ "auditlog.table.email": "E-mail",
1305
+ "auditlog.table.ip": "IP",
1306
+ "auditlog.table.details": "Détails",
1307
+ "auditlog.table.empty": "Aucune entrée de journal d'audit",
1308
+ "auditlog.clear": "Effacer les journaux",
1309
+ "auditlog.clear.title": "Effacer tous les journaux",
1310
+ "auditlog.clear.description": "Cela supprimera définitivement toutes les {count, plural, one {# entrée de journal d'audit} other {# entrées de journal d'audit}}. Cette action ne peut pas être annulée.",
1311
+ "auditlog.clear.success": "Journaux d'audit effacés",
1312
+ "auditlog.clear.error": "Échec de l'effacement des journaux d'audit",
1313
+ "auditlog.export.error": "Échec de l'exportation des journaux d'audit",
1314
+ "auditlog.filters": "Filtres",
1315
+ "auditlog.filters.action": "Action",
1316
+ "auditlog.filters.email": "E-mail",
1317
+ "auditlog.filters.ip": "Adresse IP",
1318
+ "auditlog.filters.createdAt": "Date",
1319
+ "auditlog.filters.clear": "Effacer les filtres",
1320
+ "auditlog.filters.empty": "Aucune entrée ne correspond aux filtres actuels",
1321
+ "auditlog.calendar.prevMonth": "Mois précédent",
1322
+ "auditlog.calendar.nextMonth": "Mois suivant",
1323
+ "auditlog.calendar.state.today": "aujourd'hui",
1324
+ "auditlog.calendar.state.selected": "sélectionné",
1325
+ "auditlog.calendar.state.alreadyAdded": "déjà ajouté",
1326
+ "auditlog.calendar.state.future": "indisponible, date future",
1327
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1328
+ "auditlog.action.login_success": "L'utilisateur a été authentifié avec succès via OIDC et s'est vu accorder l'accès.",
1329
+ "auditlog.action.user_created": "Un nouveau compte administrateur Strapi a été créé pour cet utilisateur lors de sa première connexion OIDC.",
1330
+ "auditlog.action.logout": "L'utilisateur s'est déconnecté et sa session OIDC a été terminée.",
1331
+ "auditlog.action.session_expired": "Le jeton d'accès OIDC avait expiré au moment où l'utilisateur s'est déconnecté. La session du fournisseur n'a donc pas pu être terminée à distance.",
1332
+ "auditlog.action.login_failure": "Une erreur inattendue s'est produite lors du flux de connexion OIDC.",
1333
+ "auditlog.action.missing_code": "Le callback OIDC a été reçu sans code d'autorisation. Cela peut indiquer un fournisseur mal configuré ou une demande falsifiée.",
1334
+ "auditlog.action.state_mismatch": "Le paramètre d'état dans le callback ne correspondait pas à celui stocké dans la session. Cela peut indiquer une tentative CSRF ou une session de connexion expirée.",
1335
+ "auditlog.action.nonce_mismatch": "Le nonce dans le jeton d'ID ne correspondait pas à celui généré lors de la connexion. Cela peut indiquer une attaque par rejeu de jeton.",
1336
+ "auditlog.action.token_exchange_failed": "Le code d'autorisation n'a pas pu être échangé contre des jetons. Le fournisseur OIDC a rejeté la demande.",
1337
+ "auditlog.action.whitelist_rejected": "L'adresse e-mail de l'utilisateur n'est pas sur la liste blanche. L'accès a été refusé.",
1338
+ "auditlog.action.email_not_verified": "Le fournisseur OIDC n'a pas confirmé l'adresse e-mail de l'utilisateur comme vérifiée. L'accès a été refusé.",
1339
+ "auditlog.action.id_token_invalid": "Le jeton d'ID n'a pas réussi la validation de la signature, de l'émetteur, du public ou de l'expiration. L'accès a été refusé.",
1340
+ "auth.page.authenticating.title": "Authentification...",
1341
+ "auth.page.authenticating.noscript.heading": "JavaScript requis",
1342
+ "auth.page.authenticating.noscript.body": "JavaScript doit être activé pour que l'authentification se termine.",
1343
+ "auth.page.error.title": "Échec de l'authentification",
1344
+ "auth.page.error.returnToLogin": "Retour à la connexion",
1345
+ "user.missing_code": "Le code d'autorisation n'a pas été reçu du fournisseur OIDC.",
1346
+ "user.invalid_state": "Incohérence du paramètre d'état. Veuillez redémarrer le flux de connexion.",
1347
+ "user.signInError": "Échec de l'authentification. Veuillez réessayer.",
1348
+ "settings.section": "OIDC",
1349
+ "settings.configuration": "Configuration",
1350
+ "audit.login_failure": "Erreur : {message}",
1351
+ "audit.roles_updated": "Rôles mis à jour vers : {roles}",
1352
+ "audit.user_created": "Rôles attribués : {roles}"
1353
+ };
1354
+ const __vite_glob_0_6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1355
+ __proto__: null,
1356
+ default: fr
1357
+ }, Symbol.toStringTag, { value: "Module" }));
1358
+ const he = {
1359
+ "global.plugins.strapi-plugin-oidc": "תוסף OIDC",
1360
+ "page.title": "קבע את תפקידי ברירת המחדל של OIDC ואת פקדי הגישה.",
1361
+ "roles.notes": "בחר את תפקיד (התפקידים) ברירת המחדל שיוקצו למשתמשים חדשים בהתחברותם הראשונה. הגדרה זו אינה משפיעה על משתמשים קיימים.",
1362
+ "page.save": "שמור שינויים",
1363
+ "page.save.success": "ההגדרות עודכנו",
1364
+ "page.save.error": "העדכון נכשל.",
1365
+ "page.add": "הוסף",
1366
+ "page.cancel": "ביטול",
1367
+ "common.remove": "הסר {label}",
1368
+ "page.ok": "אישור",
1369
+ "roles.title": "תפקיד (תפקידים) ברירת מחדל",
1370
+ "roles.placeholder": "בחר תפקיד (תפקידים) ברירת מחדל",
1371
+ "whitelist.title": "רשימה לבנה",
1372
+ "whitelist.error.unique": 'כתובת הדוא"ל כבר רשומה.',
1373
+ "whitelist.description": 'הגבל את האימות של OIDC לכתובות דוא"ל ספציפיות. משתמשים מקבלים תפקידים ממיפוי תפקידי ברירת המחדל של OIDC או מקבוצת ה-OIDC שלהם.',
1374
+ "alert.title.success": "הצלחה",
1375
+ "alert.title.error": "שגיאה",
1376
+ "alert.title.info": "מידע",
1377
+ "pagination.previous": "עבור לדף הקודם",
1378
+ "pagination.page": "עבור לדף {page}",
1379
+ "pagination.next": "עבור לדף הבא",
1380
+ "whitelist.table.no": "מס.",
1381
+ "whitelist.table.email": 'דוא"ל',
1382
+ "whitelist.table.created": "נוצר ב",
1383
+ "whitelist.delete.title": "אישור",
1384
+ "whitelist.delete.description": "האם אתה בטוח שברצונך למחוק:",
1385
+ "whitelist.delete.note": "פעולה זו לא תמחק את חשבון המשתמש ב-Strapi.",
1386
+ "whitelist.toggle.enabled": "מופעל",
1387
+ "whitelist.toggle.disabled": "מושבת",
1388
+ "whitelist.email.placeholder": 'כתובת דוא"ל',
1389
+ "whitelist.table.empty": 'אין כתובות דוא"ל',
1390
+ "whitelist.delete.label": "מחק",
1391
+ "page.title.oidc": "OIDC",
1392
+ "enforce.title": "אכוף התחברות OIDC",
1393
+ "enforce.toggle.enabled": "מופעל",
1394
+ "enforce.toggle.disabled": "מושבת",
1395
+ "enforce.warning": "ודא ש-OIDC הוגדר כהלכה לפני שמירת השינויים, לא תוכל להתחבר באופן רגיל.",
1396
+ "enforce.config.info": "האכיפה נשלטת על ידי משתנה התצורה OIDC_ENFORCE ולא ניתן לשנות אותה כאן.",
1397
+ "login.settings.title": "הגדרות התחברות",
1398
+ "login.sso": "התחבר דרך SSO",
1399
+ "pagination.total": "{count, plural, one {# פריט} other {# פריטים}}",
1400
+ "whitelist.import": "ייבוא",
1401
+ "whitelist.export": "ייצוא",
1402
+ "whitelist.delete.all.label": "מחק הכל",
1403
+ "whitelist.delete.all.title": "מחק את כל הרשומות",
1404
+ "whitelist.delete.all.description": "פעולה זו תסיר לצמיתות את כל {count, plural, one {# הפריט} other {# הפריטים}} מהרשימה הלבנה. שינויים שלא נשמרו יאבדו.",
1405
+ "whitelist.import.error": 'קובץ לא חוקי — צפוי מערך JSON של אובייקטים עם שדה דוא"ל.',
1406
+ "whitelist.import.success": "יובאו {count, plural, one {# פריט חדש} other {# פריטים חדשים}}.",
1407
+ "whitelist.import.none": 'אין פריטים חדשים — כל הדוא"לים כבר נמצאים ברשימה הלבנה.',
1408
+ "unsaved.title": "שינויים שלא נשמרו",
1409
+ "unsaved.description": "יש לך שינויים שלא נשמרו שיאבדו אם תעזוב. האם ברצונך להמשיך?",
1410
+ "unsaved.confirm": "צא",
1411
+ "unsaved.cancel": "השאר",
1412
+ "auditlog.title": "יומני ביקורת",
1413
+ "auditlog.export": "הורד",
1414
+ "auditlog.table.timestamp": "חותם זמן",
1415
+ "auditlog.table.action": "פעולה",
1416
+ "auditlog.table.email": 'דוא"ל',
1417
+ "auditlog.table.ip": "IP",
1418
+ "auditlog.table.details": "פרטים",
1419
+ "auditlog.table.empty": "אין רשומות ביומן הביקורת",
1420
+ "auditlog.clear": "נקה יומנים",
1421
+ "auditlog.clear.title": "נקה את כל היומנים",
1422
+ "auditlog.clear.description": "פעולה זו תמחק לצמיתות את כל {count, plural, one {# רשומת יומן ביקורת} other {# רשומות יומן ביקורת}}. לא ניתן לבטל פעולה זו.",
1423
+ "auditlog.clear.success": "יומני הביקורת נוקו",
1424
+ "auditlog.clear.error": "נכשל לנקות את יומני הביקורת",
1425
+ "auditlog.export.error": "נכשל לייצא את יומני הביקורת",
1426
+ "auditlog.filters": "מסננים",
1427
+ "auditlog.filters.action": "פעולה",
1428
+ "auditlog.filters.email": 'דוא"ל',
1429
+ "auditlog.filters.ip": "כתובת IP",
1430
+ "auditlog.filters.createdAt": "תאריך",
1431
+ "auditlog.filters.clear": "נקה מסננים",
1432
+ "auditlog.filters.empty": "אין רשומות התואמות למסננים הנוכחיים",
1433
+ "auditlog.calendar.prevMonth": "חודש קודם",
1434
+ "auditlog.calendar.nextMonth": "חודש הבא",
1435
+ "auditlog.calendar.state.today": "היום",
1436
+ "auditlog.calendar.state.selected": "נבחר",
1437
+ "auditlog.calendar.state.alreadyAdded": "כבר נוסף",
1438
+ "auditlog.calendar.state.future": "לא זמין, תאריך עתידי",
1439
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1440
+ "auditlog.action.login_success": "המשתמש אומת בהצלחה דרך OIDC והוענק לו גישה.",
1441
+ "auditlog.action.user_created": "חשבון מנהל Strapi חדש נוצר עבור משתמש זה בהתחברותו הראשונה של OIDC.",
1442
+ "auditlog.action.logout": "המשתמש התנתק והשאפה של OIDC שלו הסתיימה.",
1443
+ "auditlog.action.session_expired": "אסימון הגישה של OIDC פג תוקף בזמן שהמשתמש התנתק, כך שלא ניתן היה לסיים את השאפה של הספק מרחוק.",
1444
+ "auditlog.action.login_failure": "אירעה שגיאה בלתי צפויה במהלך זרימת ההתחברות של OIDC.",
1445
+ "auditlog.action.missing_code": "קריאת החזרה של OIDC התקבלה ללא קוד הרשאה. הדבר עשוי להצביע על ספק שהוגדר באופן שגוי או על בקשה מזויפת.",
1446
+ "auditlog.action.state_mismatch": "פרמטר המדינה בקריאת החזרה לא התאים לזה שמור בהשאפה. הדבר עשוי להצביע על ניסיון CSRF או השאפת התחברות שפג תוקף.",
1447
+ "auditlog.action.nonce_mismatch": "ה-nonce באסימון ה-ID לא התאים לזה שנוצר בהתחברות. הדבר עשוי להצביע על התקפת replay של אסימון.",
1448
+ "auditlog.action.token_exchange_failed": "לא ניתן היה להחליף את קוד ההרשאה באסימונים. ספק OIDC דחה את הבקשה.",
1449
+ "auditlog.action.whitelist_rejected": 'כתובת הדוא"ל של המשתמש אינה ברשימה הלבנה. הגישה נדחית.',
1450
+ "auditlog.action.email_not_verified": 'ספק OIDC לא אישר את כתובת הדוא"ל של המשתמש כמאומתת. הגישה נדחית.',
1451
+ "auditlog.action.id_token_invalid": "אסימון ה-ID לא עבר את אימות החתימה, המנפיק, הקהל או תוקף התפוגה. הגישה נדחית.",
1452
+ "auth.page.authenticating.title": "מאמת...",
1453
+ "auth.page.authenticating.noscript.heading": "נדרש JavaScript",
1454
+ "auth.page.authenticating.noscript.body": "יש להפעיל JavaScript כדי שהאימות יושלם.",
1455
+ "auth.page.error.title": "האימות נכשל",
1456
+ "auth.page.error.returnToLogin": "חזרה להתחברות",
1457
+ "user.missing_code": "קוד הרשאה לא התקבל מספק OIDC.",
1458
+ "user.invalid_state": "חוסר התאמה של פרמטר המדינה. אנא הפעל מחדש את זרימת ההתחברות.",
1459
+ "user.signInError": "האימות נכשל. אנא נסה שוב.",
1460
+ "settings.section": "OIDC",
1461
+ "settings.configuration": "תצורה",
1462
+ "audit.login_failure": "שגיאה: {message}",
1463
+ "audit.roles_updated": "תפקידים עודכנו ל: {roles}",
1464
+ "audit.user_created": "תפקידים שהוקצו: {roles}"
1465
+ };
1466
+ const __vite_glob_0_7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1467
+ __proto__: null,
1468
+ default: he
1469
+ }, Symbol.toStringTag, { value: "Module" }));
1470
+ const id = {
1471
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
1472
+ "page.title": "Konfigurasikan peran default OIDC dan kontrol akses.",
1473
+ "roles.notes": "Pilih peran default yang ditetapkan kepada pengguna baru saat pertama kali login. Pengaturan ini tidak mempengaruhi pengguna yang sudah ada.",
1474
+ "page.save": "Simpan Perubahan",
1475
+ "page.save.success": "Pengaturan diperbarui",
1476
+ "page.save.error": "Pembaruan gagal.",
1477
+ "page.add": "Tambah",
1478
+ "page.cancel": "Batal",
1479
+ "common.remove": "Hapus {label}",
1480
+ "page.ok": "OK",
1481
+ "roles.title": "Peran Default",
1482
+ "roles.placeholder": "Pilih peran default",
1483
+ "whitelist.title": "Whitelist",
1484
+ "whitelist.error.unique": "Alamat email sudah terdaftar.",
1485
+ "whitelist.description": "Batasi autentikasi OIDC ke alamat email tertentu. Pengguna menerima peran dari pemetaan peran OIDC default atau grup OIDC mereka.",
1486
+ "alert.title.success": "Berhasil",
1487
+ "alert.title.error": "Kesalahan",
1488
+ "alert.title.info": "Info",
1489
+ "pagination.previous": "Ke halaman sebelumnya",
1490
+ "pagination.page": "Ke halaman {page}",
1491
+ "pagination.next": "Ke halaman berikutnya",
1492
+ "whitelist.table.no": "No.",
1493
+ "whitelist.table.email": "Email",
1494
+ "whitelist.table.created": "Dibuat pada",
1495
+ "whitelist.delete.title": "Konfirmasi",
1496
+ "whitelist.delete.description": "Apakah Anda yakin ingin menghapus:",
1497
+ "whitelist.delete.note": "Ini tidak akan menghapus akun pengguna di Strapi.",
1498
+ "whitelist.toggle.enabled": "Aktif",
1499
+ "whitelist.toggle.disabled": "Nonaktif",
1500
+ "whitelist.email.placeholder": "Alamat email",
1501
+ "whitelist.table.empty": "Tidak ada alamat email",
1502
+ "whitelist.delete.label": "Hapus",
1503
+ "page.title.oidc": "OIDC",
1504
+ "enforce.title": "Paksa Login OIDC",
1505
+ "enforce.toggle.enabled": "Aktif",
1506
+ "enforce.toggle.disabled": "Nonaktif",
1507
+ "enforce.warning": "Pastikan OIDC dikonfigurasi dengan benar sebelum menyimpan perubahan, Anda tidak akan dapat login secara normal.",
1508
+ "enforce.config.info": "Penegakan dikontrol oleh variabel konfigurasi OIDC_ENFORCE dan tidak dapat diubah di sini.",
1509
+ "login.settings.title": "Pengaturan Login",
1510
+ "login.sso": "Login melalui SSO",
1511
+ "pagination.total": "{count, plural, other {# entri}}",
1512
+ "whitelist.import": "Impor",
1513
+ "whitelist.export": "Ekspor",
1514
+ "whitelist.delete.all.label": "Hapus Semua",
1515
+ "whitelist.delete.all.title": "Hapus Semua Entri",
1516
+ "whitelist.delete.all.description": "Ini akan menghapus secara permanen semua {count, plural, other {# entri}} dari whitelist. Perubahan yang tidak disimpan akan hilang.",
1517
+ "whitelist.import.error": "File tidak valid — diharapkan array JSON dari objek dengan kolom email.",
1518
+ "whitelist.import.success": "{count, plural, other {# entri baru}} diimpor.",
1519
+ "whitelist.import.none": "Tidak ada entri baru — semua email sudah ada di whitelist.",
1520
+ "unsaved.title": "Perubahan Belum Tersimpan",
1521
+ "unsaved.description": "Anda memiliki perubahan yang belum tersimpan yang akan hilang jika Anda pergi. Apakah Anda ingin melanjutkan?",
1522
+ "unsaved.confirm": "Pergi",
1523
+ "unsaved.cancel": "Tetap",
1524
+ "auditlog.title": "Log Audit",
1525
+ "auditlog.export": "Unduh",
1526
+ "auditlog.table.timestamp": "Timestamp",
1527
+ "auditlog.table.action": "Aksi",
1528
+ "auditlog.table.email": "Email",
1529
+ "auditlog.table.ip": "IP",
1530
+ "auditlog.table.details": "Detail",
1531
+ "auditlog.table.empty": "Tidak ada entri log audit",
1532
+ "auditlog.clear": "Hapus Log",
1533
+ "auditlog.clear.title": "Hapus Semua Log",
1534
+ "auditlog.clear.description": "Ini akan menghapus secara permanen semua {count, plural, other {# entri log audit}}. Tindakan ini tidak dapat dibatalkan.",
1535
+ "auditlog.clear.success": "Log audit dihapus",
1536
+ "auditlog.clear.error": "Gagal menghapus log audit",
1537
+ "auditlog.export.error": "Gagal mengekspor log audit",
1538
+ "auditlog.filters": "Filter",
1539
+ "auditlog.filters.action": "Aksi",
1540
+ "auditlog.filters.email": "Email",
1541
+ "auditlog.filters.ip": "Alamat IP",
1542
+ "auditlog.filters.createdAt": "Tanggal",
1543
+ "auditlog.filters.clear": "Hapus filter",
1544
+ "auditlog.filters.empty": "Tidak ada entri yang cocok dengan filter saat ini",
1545
+ "auditlog.calendar.prevMonth": "Bulan sebelumnya",
1546
+ "auditlog.calendar.nextMonth": "Bulan berikutnya",
1547
+ "auditlog.calendar.state.today": "hari ini",
1548
+ "auditlog.calendar.state.selected": "dipilih",
1549
+ "auditlog.calendar.state.alreadyAdded": "sudah ditambahkan",
1550
+ "auditlog.calendar.state.future": "tidak tersedia, tanggal mendatang",
1551
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1552
+ "auditlog.action.login_success": "Pengguna berhasil diautentikasi melalui OIDC dan diberi akses.",
1553
+ "auditlog.action.user_created": "Akun admin Strapi baru dibuat untuk pengguna ini pada login OIDC pertama mereka.",
1554
+ "auditlog.action.logout": "Pengguna keluar dan sesi OIDC mereka berakhir.",
1555
+ "auditlog.action.session_expired": "Token akses OIDC telah kedaluwarsa pada saat pengguna keluar, sehingga sesi provider tidak dapat diakhiri dari jauh.",
1556
+ "auditlog.action.login_failure": "Terjadi kesalahan tak terduga selama alur login OIDC.",
1557
+ "auditlog.action.missing_code": "Callback OIDC diterima tanpa kode otorisasi. Ini mungkin menunjukkan provider yang salah dikonfigurasi atau permintaan yang dirusak.",
1558
+ "auditlog.action.state_mismatch": "Parameter status dalam callback tidak cocok dengan yang tersimpan dalam sesi. Ini mungkin menunjukkan upaya CSRF atau sesi login yang kedaluwarsa.",
1559
+ "auditlog.action.nonce_mismatch": "Nonce dalam token ID tidak cocok dengan yang dibuat saat login. Ini mungkin menunjukkan serangan replay token.",
1560
+ "auditlog.action.token_exchange_failed": "Kode otorisasi tidak dapat ditukar dengan token. Provider OIDC menolak permintaan.",
1561
+ "auditlog.action.whitelist_rejected": "Alamat email pengguna tidak ada di whitelist. Akses ditolak.",
1562
+ "auditlog.action.email_not_verified": "Provider OIDC tidak mengonfirmasi alamat email pengguna sebagai terverifikasi. Akses ditolak.",
1563
+ "auditlog.action.id_token_invalid": "Token ID gagal dalam validasi tanda tangan, issuer, audience, atau kedaluwarsa. Akses ditolak.",
1564
+ "auth.page.authenticating.title": "Mengautentikasi...",
1565
+ "auth.page.authenticating.noscript.heading": "JavaScript Diperlukan",
1566
+ "auth.page.authenticating.noscript.body": "JavaScript harus diaktifkan agar autentikasi selesai.",
1567
+ "auth.page.error.title": "Autentikasi Gagal",
1568
+ "auth.page.error.returnToLogin": "Kembali ke Login",
1569
+ "user.missing_code": "Kode otorisasi tidak diterima dari provider OIDC.",
1570
+ "user.invalid_state": "Ketidakcocokan parameter status. Harap mulai ulang alur login.",
1571
+ "user.signInError": "Autentikasi gagal. Silakan coba lagi.",
1572
+ "settings.section": "OIDC",
1573
+ "settings.configuration": "Konfigurasi",
1574
+ "audit.login_failure": "Kesalahan: {message}",
1575
+ "audit.roles_updated": "Peran diperbarui ke: {roles}",
1576
+ "audit.user_created": "Peran ditugaskan: {roles}"
1577
+ };
1578
+ const __vite_glob_0_8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1579
+ __proto__: null,
1580
+ default: id
1581
+ }, Symbol.toStringTag, { value: "Module" }));
1582
+ const it = {
1583
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
1584
+ "page.title": "Configura i ruoli predefiniti OIDC e i controlli di accesso.",
1585
+ "roles.notes": "Seleziona il ruolo o i ruoli predefiniti assegnati ai nuovi utenti al primo accesso. Questa impostazione non influenza gli utenti esistenti.",
1586
+ "page.save": "Salva modifiche",
1587
+ "page.save.success": "Impostazioni aggiornate",
1588
+ "page.save.error": "Aggiornamento fallito.",
1589
+ "page.add": "Aggiungi",
1590
+ "page.cancel": "Annulla",
1591
+ "common.remove": "Rimuovi {label}",
1592
+ "page.ok": "OK",
1593
+ "roles.title": "Ruolo(i) predefinito(i)",
1594
+ "roles.placeholder": "Seleziona ruolo(i) predefinito(i)",
1595
+ "whitelist.title": "Whitelist",
1596
+ "whitelist.error.unique": "Indirizzo email già registrato.",
1597
+ "whitelist.description": "Limita l'autenticazione OIDC a indirizzi email specifici. Gli utenti ricevono i ruoli dalla mappatura dei ruoli OIDC predefinita o dal loro gruppo OIDC.",
1598
+ "alert.title.success": "Successo",
1599
+ "alert.title.error": "Errore",
1600
+ "alert.title.info": "Info",
1601
+ "pagination.previous": "Vai alla pagina precedente",
1602
+ "pagination.page": "Vai alla pagina {page}",
1603
+ "pagination.next": "Vai alla pagina successiva",
1604
+ "whitelist.table.no": "N.",
1605
+ "whitelist.table.email": "Email",
1606
+ "whitelist.table.created": "Creato il",
1607
+ "whitelist.delete.title": "Conferma",
1608
+ "whitelist.delete.description": "Sei sicuro di voler eliminare:",
1609
+ "whitelist.delete.note": "Questo non eliminerà l'account utente in Strapi.",
1610
+ "whitelist.toggle.enabled": "Abilitato",
1611
+ "whitelist.toggle.disabled": "Disabilitato",
1612
+ "whitelist.email.placeholder": "Indirizzo email",
1613
+ "whitelist.table.empty": "Nessun indirizzo email",
1614
+ "whitelist.delete.label": "Elimina",
1615
+ "page.title.oidc": "OIDC",
1616
+ "enforce.title": "Applica accesso OIDC",
1617
+ "enforce.toggle.enabled": "Abilitato",
1618
+ "enforce.toggle.disabled": "Disabilitato",
1619
+ "enforce.warning": "Assicurati che OIDC sia configurato correttamente prima di salvare le modifiche, non potrai accedere normalmente.",
1620
+ "enforce.config.info": "L'applicazione è controllata dalla variabile di configurazione OIDC_ENFORCE e non può essere modificata qui.",
1621
+ "login.settings.title": "Impostazioni di accesso",
1622
+ "login.sso": "Accedi tramite SSO",
1623
+ "pagination.total": "{count, plural, one {# voce} other {# voci}}",
1624
+ "whitelist.import": "Importa",
1625
+ "whitelist.export": "Esporta",
1626
+ "whitelist.delete.all.label": "Elimina tutto",
1627
+ "whitelist.delete.all.title": "Elimina tutte le voci",
1628
+ "whitelist.delete.all.description": "Questo rimuoverà permanentemente tutte le {count, plural, one {# voce} other {# voci}} dalla whitelist. Le modifiche non salvate andranno perse.",
1629
+ "whitelist.import.error": "File non valido — previsto un array JSON di oggetti con un campo email.",
1630
+ "whitelist.import.success": "{count, plural, one {# nuova voce} other {# nuove voci}} importate.",
1631
+ "whitelist.import.none": "Nessuna nuova voce — tutte le email sono già nella whitelist.",
1632
+ "unsaved.title": "Modifiche non salvate",
1633
+ "unsaved.description": "Hai modifiche non salvate che andranno perse se esci. Vuoi continuare?",
1634
+ "unsaved.confirm": "Esci",
1635
+ "unsaved.cancel": "Resta",
1636
+ "auditlog.title": "Log di audit",
1637
+ "auditlog.export": "Scarica",
1638
+ "auditlog.table.timestamp": "Timestamp",
1639
+ "auditlog.table.action": "Azione",
1640
+ "auditlog.table.email": "Email",
1641
+ "auditlog.table.ip": "IP",
1642
+ "auditlog.table.details": "Dettagli",
1643
+ "auditlog.table.empty": "Nessuna voce nel log di audit",
1644
+ "auditlog.clear": "Cancella log",
1645
+ "auditlog.clear.title": "Cancella tutti i log",
1646
+ "auditlog.clear.description": "Questo eliminerà permanentemente tutte le {count, plural, one {# voce di log di audit} other {# voci di log di audit}}. Questa azione non può essere annullata.",
1647
+ "auditlog.clear.success": "Log di audit cancellati",
1648
+ "auditlog.clear.error": "Impossibile cancellare i log di audit",
1649
+ "auditlog.export.error": "Impossibile esportare i log di audit",
1650
+ "auditlog.filters": "Filtri",
1651
+ "auditlog.filters.action": "Azione",
1652
+ "auditlog.filters.email": "Email",
1653
+ "auditlog.filters.ip": "Indirizzo IP",
1654
+ "auditlog.filters.createdAt": "Data",
1655
+ "auditlog.filters.clear": "Cancella filtri",
1656
+ "auditlog.filters.empty": "Nessuna voce corrisponde ai filtri correnti",
1657
+ "auditlog.calendar.prevMonth": "Mese precedente",
1658
+ "auditlog.calendar.nextMonth": "Mese successivo",
1659
+ "auditlog.calendar.state.today": "oggi",
1660
+ "auditlog.calendar.state.selected": "selezionato",
1661
+ "auditlog.calendar.state.alreadyAdded": "già aggiunto",
1662
+ "auditlog.calendar.state.future": "non disponibile, data futura",
1663
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1664
+ "auditlog.action.login_success": "L'utente è stato autenticato con successo tramite OIDC e gli è stato concesso l'accesso.",
1665
+ "auditlog.action.user_created": "Un nuovo account admin Strapi è stato creato per questo utente al suo primo accesso OIDC.",
1666
+ "auditlog.action.logout": "L'utente si è disconnesso e la sua sessione OIDC è terminata.",
1667
+ "auditlog.action.session_expired": "Il token di accesso OIDC era scaduto al momento della disconnessione dell'utente, quindi la sessione del provider non può essere terminata da remoto.",
1668
+ "auditlog.action.login_failure": "Si è verificato un errore imprevisto durante il flusso di accesso OIDC.",
1669
+ "auditlog.action.missing_code": "Il callback OIDC è stato ricevuto senza un codice di autorizzazione. Questo può indicare un provider mal configurato o una richiesta manomessa.",
1670
+ "auditlog.action.state_mismatch": "Il parametro stato nel callback non corrispondeva a quello memorizzato nella sessione. Questo può indicare un tentativo CSRF o una sessione di accesso scaduta.",
1671
+ "auditlog.action.nonce_mismatch": "Il nonce nel token ID non corrispondeva a quello generato all'accesso. Questo può indicare un attacco replay del token.",
1672
+ "auditlog.action.token_exchange_failed": "Il codice di autorizzazione non può essere scambiato con i token. Il provider OIDC ha rifiutato la richiesta.",
1673
+ "auditlog.action.whitelist_rejected": "L'indirizzo email dell'utente non è nella whitelist. Accesso negato.",
1674
+ "auditlog.action.email_not_verified": "Il provider OIDC non ha confermato l'indirizzo email dell'utente come verificato. Accesso negato.",
1675
+ "auditlog.action.id_token_invalid": "Il token ID non ha superato la validazione della firma, dell'issuer, del pubblico o della scadenza. Accesso negato.",
1676
+ "auth.page.authenticating.title": "Autenticazione...",
1677
+ "auth.page.authenticating.noscript.heading": "JavaScript richiesto",
1678
+ "auth.page.authenticating.noscript.body": "JavaScript deve essere abilitato per completare l'autenticazione.",
1679
+ "auth.page.error.title": "Autenticazione fallita",
1680
+ "auth.page.error.returnToLogin": "Torna all'accesso",
1681
+ "user.missing_code": "Codice di autorizzazione non ricevuto dal provider OIDC.",
1682
+ "user.invalid_state": "Mancata corrispondenza del parametro stato. Riavvia il flusso di accesso.",
1683
+ "user.signInError": "Autenticazione fallita. Riprova.",
1684
+ "settings.section": "OIDC",
1685
+ "settings.configuration": "Configurazione",
1686
+ "audit.login_failure": "Errore: {message}",
1687
+ "audit.roles_updated": "Ruoli aggiornati a: {roles}",
1688
+ "audit.user_created": "Ruoli assegnati: {roles}"
1689
+ };
1690
+ const __vite_glob_0_9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1691
+ __proto__: null,
1692
+ default: it
1693
+ }, Symbol.toStringTag, { value: "Module" }));
1694
+ const ja = {
1695
+ "global.plugins.strapi-plugin-oidc": "OIDCプラグイン",
1696
+ "page.title": "OIDCのデフォルトロールとアクセス制御を設定します。",
1697
+ "roles.notes": "最初のログイン時に新しいユーザーに割り当てられるデフォルトのロールを選択してください。この設定は既存のユーザーには影響しません。",
1698
+ "page.save": "変更を保存",
1699
+ "page.save.success": "設定が更新されました",
1700
+ "page.save.error": "更新に失敗しました。",
1701
+ "page.add": "追加",
1702
+ "page.cancel": "キャンセル",
1703
+ "common.remove": "{label}を削除",
1704
+ "page.ok": "OK",
1705
+ "roles.title": "デフォルトロール",
1706
+ "roles.placeholder": "デフォルトロールを選択",
1707
+ "whitelist.title": "ホワイトリスト",
1708
+ "whitelist.error.unique": "メールアドレスは既に登録されています。",
1709
+ "whitelist.description": "OIDC認証を特定のメールアドレスに制限します。ユーザーはデフォルトのOIDCロールマッピングまたはOIDCグループからロールを受け取るか。",
1710
+ "alert.title.success": "成功",
1711
+ "alert.title.error": "エラー",
1712
+ "alert.title.info": "情報",
1713
+ "pagination.previous": "前のページへ",
1714
+ "pagination.page": "{page}ページへ",
1715
+ "pagination.next": "次のページへ",
1716
+ "whitelist.table.no": "番号",
1717
+ "whitelist.table.email": "メールアドレス",
1718
+ "whitelist.table.created": "作成日",
1719
+ "whitelist.delete.title": "確認",
1720
+ "whitelist.delete.description": "削除してもよろしいですか:",
1721
+ "whitelist.delete.note": "Strapiのユーザーアカウントは削除されません。",
1722
+ "whitelist.toggle.enabled": "有効",
1723
+ "whitelist.toggle.disabled": "無効",
1724
+ "whitelist.email.placeholder": "メールアドレス",
1725
+ "whitelist.table.empty": "メールアドレスがありません",
1726
+ "whitelist.delete.label": "削除",
1727
+ "page.title.oidc": "OIDC",
1728
+ "enforce.title": "OIDCログインを強制",
1729
+ "enforce.toggle.enabled": "有効",
1730
+ "enforce.toggle.disabled": "無効",
1731
+ "enforce.warning": "変更を保存する前にOIDCが正しく設定されていることを確認してください。通常ログインできなくなります。",
1732
+ "enforce.config.info": "強制はOIDC_ENFORCE設定変数によって制御されており、ここでは変更できません。",
1733
+ "login.settings.title": "ログイン設定",
1734
+ "login.sso": "SSOでログイン",
1735
+ "pagination.total": "{count, plural, other {#件}}",
1736
+ "whitelist.import": "インポート",
1737
+ "whitelist.export": "エクスポート",
1738
+ "whitelist.delete.all.label": "すべて削除",
1739
+ "whitelist.delete.all.title": "すべてのエントリを削除",
1740
+ "whitelist.delete.all.description": "これにより、ホワイトリストからすべての{count, plural, other {#件のエントリ}}が完全に削除されます。保存されていない変更は失われます。",
1741
+ "whitelist.import.error": "無効なファイル — メールフィールドを持つJSONオブジェクトの配列が期待されていました。",
1742
+ "whitelist.import.success": "{count, plural, other {#件の新しいエントリ}}をインポートしました。",
1743
+ "whitelist.import.none": "新しいエントリはありません — すべてのメールは既にホワイトリストにあります。",
1744
+ "unsaved.title": "未保存の変更",
1745
+ "unsaved.description": "未保存の変更があり、このまま退出すると失われます。続行しますか?",
1746
+ "unsaved.confirm": "退出",
1747
+ "unsaved.cancel": "留下",
1748
+ "auditlog.title": "監査ログ",
1749
+ "auditlog.export": "ダウンロード",
1750
+ "auditlog.table.timestamp": "タイムスタンプ",
1751
+ "auditlog.table.action": "アクション",
1752
+ "auditlog.table.email": "メールアドレス",
1753
+ "auditlog.table.ip": "IP",
1754
+ "auditlog.table.details": "詳細",
1755
+ "auditlog.table.empty": "監査ログエントリがありません",
1756
+ "auditlog.clear": "ログをクリア",
1757
+ "auditlog.clear.title": "すべてのログをクリア",
1758
+ "auditlog.clear.description": "これにより、すべての{count, plural, other {#件の監査ログエントリ}}が完全に削除されます。この操作は元に戻せません。",
1759
+ "auditlog.clear.success": "監査ログがクリアされました",
1760
+ "auditlog.clear.error": "監査ログのクリアに失敗しました",
1761
+ "auditlog.export.error": "監査ログのエクスポートに失敗しました",
1762
+ "auditlog.filters": "フィルター",
1763
+ "auditlog.filters.action": "アクション",
1764
+ "auditlog.filters.email": "メールアドレス",
1765
+ "auditlog.filters.ip": "IPアドレス",
1766
+ "auditlog.filters.createdAt": "日付",
1767
+ "auditlog.filters.clear": "フィルターをクリア",
1768
+ "auditlog.filters.empty": "現在のフィルターに一致するエントリがありません",
1769
+ "auditlog.calendar.prevMonth": "前月",
1770
+ "auditlog.calendar.nextMonth": "翌月",
1771
+ "auditlog.calendar.state.today": "今日",
1772
+ "auditlog.calendar.state.selected": "選択済み",
1773
+ "auditlog.calendar.state.alreadyAdded": "既に追加済み",
1774
+ "auditlog.calendar.state.future": "利用不可、未来の日付",
1775
+ "auditlog.calendar.dayWithState": "{date}、{state}",
1776
+ "auditlog.action.login_success": "ユーザーはOIDCを通じて正常に認証され、アクセスが許可されました。",
1777
+ "auditlog.action.user_created": "このユーザーの最初のOIDCログイン時に、新しいStrapi管理者アカウントが作成されました。",
1778
+ "auditlog.action.logout": "ユーザーがログアウトし、OIDCセッションが終了しました。",
1779
+ "auditlog.action.session_expired": "ユーザーがログアウトした時点でOIDCアクセストークンの有効期限が切れていたため、プロバイダーセッションをリモートで終了できませんでした。",
1780
+ "auditlog.action.login_failure": "OIDCログインフロ中に予期しないエラーが発生しました。",
1781
+ "auditlog.action.missing_code": "OIDCコールバックが認証コードなしで受信されました。これは、設定ミスのプロバイダーまたは改ざんされたリクエストを示している可能性があります。",
1782
+ "auditlog.action.state_mismatch": "コールバックの状態パラメータが、セッションに保存されているものと一致しませんでした。これはCSRF攻撃または期限切れのログインセッションを示している可能性があります。",
1783
+ "auditlog.action.nonce_mismatch": "IDトークンのノンスが、ログイン時に生成されたものと一致しませんでした。これはトークンリプレイ攻撃を示している可能性があります。",
1784
+ "auditlog.action.token_exchange_failed": "認証コードをトークンと交換できませんでした。OIDCプロバイダーがリクエストを拒否しました。",
1785
+ "auditlog.action.whitelist_rejected": "ユーザーのメールアドレスはホワイトリストにありません。アクセスは拒否されました。",
1786
+ "auditlog.action.email_not_verified": "OIDCプロバイダーはユーザーのメールアドレスが確認済みであることを確認しませんでした。アクセスは拒否されました。",
1787
+ "auditlog.action.id_token_invalid": "IDトークンが署名、发注者、対象者、または有効期限の検証に失敗しました。アクセスは拒否されました。",
1788
+ "auth.page.authenticating.title": "認証中...",
1789
+ "auth.page.authenticating.noscript.heading": "JavaScriptが必要",
1790
+ "auth.page.authenticating.noscript.body": "認証を完了するにはJavaScriptを有効にする必要があります。",
1791
+ "auth.page.error.title": "認証に失敗しました",
1792
+ "auth.page.error.returnToLogin": "ログインに戻る",
1793
+ "user.missing_code": "OIDCプロバイダーから認証コードを受信しませんでした。",
1794
+ "user.invalid_state": "状態パラメータが一致しません。ログインフローを再開してください。",
1795
+ "user.signInError": "認証に失敗しました。もう一度お試しください。",
1796
+ "settings.section": "OIDC",
1797
+ "settings.configuration": "設定",
1798
+ "audit.login_failure": "エラー: {message}",
1799
+ "audit.roles_updated": "ロールが更新されました: {roles}",
1800
+ "audit.user_created": "割り当てられたロール: {roles}"
1801
+ };
1802
+ const __vite_glob_0_10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1803
+ __proto__: null,
1804
+ default: ja
1805
+ }, Symbol.toStringTag, { value: "Module" }));
1806
+ const ko = {
1807
+ "global.plugins.strapi-plugin-oidc": "OIDC 플러그인",
1808
+ "page.title": "OIDC 기본 역할 및 접근 제어 구성.",
1809
+ "roles.notes": "첫 로그인 시 새 사용자에게 할당될 기본 역할을 선택하세요. 이 설정은 기존 사용자에게 영향을 주지 않습니다.",
1810
+ "page.save": "변경 사항 저장",
1811
+ "page.save.success": "설정이 업데이트되었습니다",
1812
+ "page.save.error": "업데이트 실패.",
1813
+ "page.add": "추가",
1814
+ "page.cancel": "취소",
1815
+ "common.remove": "{label} 제거",
1816
+ "page.ok": "확인",
1817
+ "roles.title": "기본 역할",
1818
+ "roles.placeholder": "기본 역할 선택",
1819
+ "whitelist.title": "화이트리스트",
1820
+ "whitelist.error.unique": "이미 등록된 이메일 주소입니다.",
1821
+ "whitelist.description": "OIDC 인증을 특정 이메일 주소로 제한합니다. 사용자는 기본 OIDC 역할 매핑 또는 OIDC 그룹에서 역할을 수신합니다.",
1822
+ "alert.title.success": "성공",
1823
+ "alert.title.error": "오류",
1824
+ "alert.title.info": "정보",
1825
+ "pagination.previous": "이전 페이지로",
1826
+ "pagination.page": "{page}페이지로",
1827
+ "pagination.next": "다음 페이지로",
1828
+ "whitelist.table.no": "번호",
1829
+ "whitelist.table.email": "이메일",
1830
+ "whitelist.table.created": "생성일",
1831
+ "whitelist.delete.title": "확인",
1832
+ "whitelist.delete.description": "정말 삭제하시겠습니까:",
1833
+ "whitelist.delete.note": "이렇게 해도 Strapi의 사용자 계정은 삭제되지 않습니다.",
1834
+ "whitelist.toggle.enabled": "활성화",
1835
+ "whitelist.toggle.disabled": "비활성화",
1836
+ "whitelist.email.placeholder": "이메일 주소",
1837
+ "whitelist.table.empty": "이메일 주소 없음",
1838
+ "whitelist.delete.label": "삭제",
1839
+ "page.title.oidc": "OIDC",
1840
+ "enforce.title": "OIDC 로그인 강제",
1841
+ "enforce.toggle.enabled": "활성화",
1842
+ "enforce.toggle.disabled": "비활성화",
1843
+ "enforce.warning": "변경 사항을 저장하기 전에 OIDC가 올바르게 설정되었는지 확인하세요. 정상적으로 로그인할 수 없게 됩니다.",
1844
+ "enforce.config.info": "적용은 OIDC_ENFORCE 구성 변수로 제어되며 여기서 변경할 수 없습니다.",
1845
+ "login.settings.title": "로그인 설정",
1846
+ "login.sso": "SSO로 로그인",
1847
+ "pagination.total": "{count, plural, other {#개 항목}}",
1848
+ "whitelist.import": "가져오기",
1849
+ "whitelist.export": "내보내기",
1850
+ "whitelist.delete.all.label": "모두 삭제",
1851
+ "whitelist.delete.all.title": "모든 항목 삭제",
1852
+ "whitelist.delete.all.description": "화이트리스트에서 모든 {count, plural, other {#개 항목}}을 영구히 제거합니다. 저장되지 않은 변경 사항은 손실됩니다.",
1853
+ "whitelist.import.error": "잘못된 파일 — 이메일 필드가 있는 JSON 객체 배열이 필요합니다.",
1854
+ "whitelist.import.success": "{count, plural, other {#개 새 항목}}을(를) 가져왔습니다.",
1855
+ "whitelist.import.none": "새 항목 없음 — 모든 이메일이 이미 화이트리스트에 있습니다.",
1856
+ "unsaved.title": "저장되지 않은 변경 사항",
1857
+ "unsaved.description": "저장되지 않은 변경 사항이 있으며 떠나면 손실됩니다. 계속하시겠습니까?",
1858
+ "unsaved.confirm": "떠나기",
1859
+ "unsaved.cancel": "留下来",
1860
+ "auditlog.title": "감사 로그",
1861
+ "auditlog.export": "다운로드",
1862
+ "auditlog.table.timestamp": "타임스탬프",
1863
+ "auditlog.table.action": "작업",
1864
+ "auditlog.table.email": "이메일",
1865
+ "auditlog.table.ip": "IP",
1866
+ "auditlog.table.details": "세부정보",
1867
+ "auditlog.table.empty": "감사 로그 항목 없음",
1868
+ "auditlog.clear": "로그 지우기",
1869
+ "auditlog.clear.title": "모든 로그 지우기",
1870
+ "auditlog.clear.description": "모든 {count, plural, other {#개의 감사 로그 항목}}을 영구히 삭제합니다. 이 작업은 취소할 수 없습니다.",
1871
+ "auditlog.clear.success": "감사 로그가 지워졌습니다",
1872
+ "auditlog.clear.error": "감사 로그 지우기 실패",
1873
+ "auditlog.export.error": "감사 로그 내보내기 실패",
1874
+ "auditlog.filters": "필터",
1875
+ "auditlog.filters.action": "작업",
1876
+ "auditlog.filters.email": "이메일",
1877
+ "auditlog.filters.ip": "IP 주소",
1878
+ "auditlog.filters.createdAt": "날짜",
1879
+ "auditlog.filters.clear": "필터 지우기",
1880
+ "auditlog.filters.empty": "현재 필터와 일치하는 항목 없음",
1881
+ "auditlog.calendar.prevMonth": "이전 달",
1882
+ "auditlog.calendar.nextMonth": "다음 달",
1883
+ "auditlog.calendar.state.today": "오늘",
1884
+ "auditlog.calendar.state.selected": "선택됨",
1885
+ "auditlog.calendar.state.alreadyAdded": "이미 추가됨",
1886
+ "auditlog.calendar.state.future": "사용 불가, 미래 날짜",
1887
+ "auditlog.calendar.dayWithState": "{date}, {state}",
1888
+ "auditlog.action.login_success": "사용자가 OIDC를 통해 성공적으로 인증되었으며 액세스가 허용되었습니다.",
1889
+ "auditlog.action.user_created": "이 사용자의 첫 OIDC 로그인 시 새로운 Strapi 관리자 계정이 생성되었습니다.",
1890
+ "auditlog.action.logout": "사용자가 로그아웃하고 OIDC 세션이 종료되었습니다.",
1891
+ "auditlog.action.session_expired": "사용자가 로그아웃할 때 OIDC 액세스 토큰이 만료되어 공급자 세션을 원격으로 종료할 수 없었습니다.",
1892
+ "auditlog.action.login_failure": "OIDC 로그인 흐름 중 예상치 못한 오류가 발생했습니다.",
1893
+ "auditlog.action.missing_code": "OIDC 콜백이 인증 코드 없이 수신되었습니다. 이는 잘못 구성된 공급자 또는 변조된 요청을 나타낼 수 있습니다.",
1894
+ "auditlog.action.state_mismatch": "콜백의 상태 매개변수가 세션에 저장된ものと 일치하지 않았습니다. 이는 CSRF 시도 또는 만료된 로그인 세션을 나타낼 수 있습니다.",
1895
+ "auditlog.action.nonce_mismatch": "ID 토큰의 nonce가 로그인 시 생성されたものと 일치하지 않았습니다. 이는 토큰 재생 공격을 나타낼 수 있습니다.",
1896
+ "auditlog.action.token_exchange_failed": "인증 코드를 토큰으로 교환할 수 없었습니다. OIDC 공급자가 요청을 거부했습니다.",
1897
+ "auditlog.action.whitelist_rejected": "사용자의 이메일 주소가 화이트리스트에 없습니다. 접근이 거부되었습니다.",
1898
+ "auditlog.action.email_not_verified": "OIDC 공급자가 사용자의 이메일 주소를 확인된 것으로 확인하지 않았습니다. 접근이 거부되었습니다.",
1899
+ "auditlog.action.id_token_invalid": "ID 토큰이 서명, 발급자, 대상자 또는 만료 검증에 실패했습니다. 접근이 거부되었습니다.",
1900
+ "auth.page.authenticating.title": "인증 중...",
1901
+ "auth.page.authenticating.noscript.heading": "JavaScript 필요",
1902
+ "auth.page.authenticating.noscript.body": "인증을 완료하려면 JavaScript를 활성화해야 합니다.",
1903
+ "auth.page.error.title": "인증 실패",
1904
+ "auth.page.error.returnToLogin": "로그인으로 돌아가기",
1905
+ "user.missing_code": "OIDC 공급자로부터 인증 코드를 받지 못했습니다.",
1906
+ "user.invalid_state": "상태 매개변수 불일치. 로그인 흐름을 다시 시작하세요.",
1907
+ "user.signInError": "인증에 실패했습니다. 다시 시도해 주세요.",
1908
+ "settings.section": "OIDC",
1909
+ "settings.configuration": "구성",
1910
+ "audit.login_failure": "오류: {message}",
1911
+ "audit.roles_updated": "역할이 다음으로 업데이트됨: {roles}",
1912
+ "audit.user_created": "할당된 역할: {roles}"
1913
+ };
1914
+ const __vite_glob_0_11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1915
+ __proto__: null,
1916
+ default: ko
1917
+ }, Symbol.toStringTag, { value: "Module" }));
1918
+ const ms = {
1919
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
1920
+ "page.title": "Konfigurasiperanan dan kawalan akses lalai OIDC.",
1921
+ "roles.notes": "Pilihperanan lalai yang ditugaskan kepada pengguna baharu semasa log masuk pertama mereka. Tetapan ini tidak mempengaruhi pengguna sedia ada.",
1922
+ "page.save": "Simpan Perubahan",
1923
+ "page.save.success": "Tetapan dikemas kini",
1924
+ "page.save.error": "Kemaskini gagal.",
1925
+ "page.add": "Tambah",
1926
+ "page.cancel": "Batal",
1927
+ "common.remove": "Alih keluar {label}",
1928
+ "page.ok": "OK",
1929
+ "roles.title": "Peranan Lalai",
1930
+ "roles.placeholder": "Pilih peranan lalai",
1931
+ "whitelist.title": "Senarai Putih",
1932
+ "whitelist.error.unique": "Alamat e-mel sudah berdaftar.",
1933
+ "whitelist.description": "Hadkan pengesahan OIDC kepada alamat e-mel tertentu. Pengguna menerima peranan daripada pemetaan peranan OIDC lalai atau kumpulan OIDC mereka.",
1934
+ "alert.title.success": "Berjaya",
1935
+ "alert.title.error": "Ralat",
1936
+ "alert.title.info": "Maklumat",
1937
+ "pagination.previous": "Pergi ke halaman sebelumnya",
1938
+ "pagination.page": "Pergi ke halaman {page}",
1939
+ "pagination.next": "Pergi ke halaman seterusnya",
1940
+ "whitelist.table.no": "Bil.",
1941
+ "whitelist.table.email": "E-mel",
1942
+ "whitelist.table.created": "Dicipta pada",
1943
+ "whitelist.delete.title": "Pengesahan",
1944
+ "whitelist.delete.description": "Adakah anda pasti ingin memadamkan:",
1945
+ "whitelist.delete.note": "Ini tidak akan memadamkan akaun pengguna dalam Strapi.",
1946
+ "whitelist.toggle.enabled": "Dihidupkan",
1947
+ "whitelist.toggle.disabled": "Dimatikan",
1948
+ "whitelist.email.placeholder": "Alamat e-mel",
1949
+ "whitelist.table.empty": "Tiada alamat e-mel",
1950
+ "whitelist.delete.label": "Padam",
1951
+ "page.title.oidc": "OIDC",
1952
+ "enforce.title": "Paksa Log Masuk OIDC",
1953
+ "enforce.toggle.enabled": "Dihidupkan",
1954
+ "enforce.toggle.disabled": "Dimatikan",
1955
+ "enforce.warning": "Pastikan OIDC dikonfigurasi dengan betul sebelum menyimpan perubahan, anda tidak akan dapat log masuk secara normal.",
1956
+ "enforce.config.info": "Penguatkuasaan dikawal oleh pembolehubah konfigurasi OIDC_ENFORCE dan tidak boleh ditukar di sini.",
1957
+ "login.settings.title": "Tetapan Log Masuk",
1958
+ "login.sso": "Log Masuk melalui SSO",
1959
+ "pagination.total": "{count, plural, other {# entri}}",
1960
+ "whitelist.import": "Import",
1961
+ "whitelist.export": "Export",
1962
+ "whitelist.delete.all.label": "Padam Semua",
1963
+ "whitelist.delete.all.title": "Padam Semua Entri",
1964
+ "whitelist.delete.all.description": "Ini akan mengalih keluar secara kekal semua {count, plural, other {# entri}} daripada senarai putih. Perubahan yang tidak disimpan akan hilang.",
1965
+ "whitelist.import.error": "Fail tidak sah — dijangkakan tatasusunan JSON bagi objek dengan medan e-mel.",
1966
+ "whitelist.import.success": "{count, plural, other {# entri baharu}} diimport.",
1967
+ "whitelist.import.none": "Tiada entri baharu — semua e-mel sudah berada dalam senarai putih.",
1968
+ "unsaved.title": "Perubahan Belum Disimpan",
1969
+ "unsaved.description": "Anda mempunyai perubahan yang belum disimpan yang akan hilang jika anda keluar. Adakah anda ingin teruskan?",
1970
+ "unsaved.confirm": "Keluar",
1971
+ "unsaved.cancel": "Tinggal",
1972
+ "auditlog.title": "Log Audit",
1973
+ "auditlog.export": "Muat Turun",
1974
+ "auditlog.table.timestamp": "Cap Masa",
1975
+ "auditlog.table.action": "Tindakan",
1976
+ "auditlog.table.email": "E-mel",
1977
+ "auditlog.table.ip": "IP",
1978
+ "auditlog.table.details": "Butiran",
1979
+ "auditlog.table.empty": "Tiada entri log audit",
1980
+ "auditlog.clear": "Padam Log",
1981
+ "auditlog.clear.title": "Padam Semua Log",
1982
+ "auditlog.clear.description": "Ini akan memadamkan secara kekal semua {count, plural, other {# entri log audit}}. Tindakan ini tidak boleh dibatalkan.",
1983
+ "auditlog.clear.success": "Log audit dipadamkan",
1984
+ "auditlog.clear.error": "Gagal memadamkan log audit",
1985
+ "auditlog.export.error": "Gagal mengeksport log audit",
1986
+ "auditlog.filters": "Penapis",
1987
+ "auditlog.filters.action": "Tindakan",
1988
+ "auditlog.filters.email": "E-mel",
1989
+ "auditlog.filters.ip": "Alamat IP",
1990
+ "auditlog.filters.createdAt": "Tarikh",
1991
+ "auditlog.filters.clear": "Padam penapis",
1992
+ "auditlog.filters.empty": "Tiada entri yang sepadan dengan penapis semasa",
1993
+ "auditlog.calendar.prevMonth": "Bulan sebelumnya",
1994
+ "auditlog.calendar.nextMonth": "Bulan hadapan",
1995
+ "auditlog.calendar.state.today": "hari ini",
1996
+ "auditlog.calendar.state.selected": "dipilih",
1997
+ "auditlog.calendar.state.alreadyAdded": "sudah ditambah",
1998
+ "auditlog.calendar.state.future": "tidak tersedia, tarikh hadapan",
1999
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2000
+ "auditlog.action.login_success": "Pengguna berjaya disahkan melalui OIDC dan diberikan akses.",
2001
+ "auditlog.action.user_created": "Akaun admin Strapi baharu dicipta untuk pengguna ini pada log masuk OIDC pertama mereka.",
2002
+ "auditlog.action.logout": "Pengguna log keluar dan sesi OIDC mereka ditamatkan.",
2003
+ "auditlog.action.session_expired": "Token akses OIDC telah tamat tempoh pada masa pengguna log keluar, jadi sesi pembekal tidak boleh ditamatkan dari jauh.",
2004
+ "auditlog.action.login_failure": "Ralat yang tidak dijangka berlaku semasa aliran log masuk OIDC.",
2005
+ "auditlog.action.missing_code": "Panggilan balik OIDC diterima tanpa kod kebenaran. Ini mungkin menunjukkan pembekal yang salah konfigurasi atau permintaan yang rosak.",
2006
+ "auditlog.action.state_mismatch": "Parameter keadaan dalam panggilan balik tidak sepadan dengan yang disimpan dalam sesi. Ini mungkin menunjukkan percubaan CSRF atau sesi log masuk yang tamat tempoh.",
2007
+ "auditlog.action.nonce_mismatch": "Nonce dalam token ID tidak sepadan dengan yang dijana semasa log masuk. Ini mungkin menunjukkan serangan replay token.",
2008
+ "auditlog.action.token_exchange_failed": "Kod kebenaran tidak boleh ditukar dengan token. Pembekal OIDC menolak permintaan.",
2009
+ "auditlog.action.whitelist_rejected": "Alamat e-mel pengguna tidak terdapat dalam senarai putih. Akses ditolak.",
2010
+ "auditlog.action.email_not_verified": "Pembekal OIDC tidak mengesahkan alamat e-mel pengguna sebagai disahkan. Akses ditolak.",
2011
+ "auditlog.action.id_token_invalid": "Token ID gagal dalam pengesahan tandatangan, penerbit, audiens, atau tamat tempoh. Akses ditolak.",
2012
+ "auth.page.authenticating.title": "Mengesahkan...",
2013
+ "auth.page.authenticating.noscript.heading": "JavaScript Diperlukan",
2014
+ "auth.page.authenticating.noscript.body": "JavaScript mestilah diaktifkan untuk pengesahan selesai.",
2015
+ "auth.page.error.title": "Pengesahan Gagal",
2016
+ "auth.page.error.returnToLogin": "Kembali ke Log Masuk",
2017
+ "user.missing_code": "Kod kebenaran tidak diterima daripada pembekal OIDC.",
2018
+ "user.invalid_state": "Ketidakpadanan parameter keadaan. Sila mulakan semula aliran log masuk.",
2019
+ "user.signInError": "Pengesahan gagal. Sila cuba lagi.",
2020
+ "settings.section": "OIDC",
2021
+ "settings.configuration": "Konfigurasi",
2022
+ "audit.login_failure": "Ralat: {message}",
2023
+ "audit.roles_updated": "Peranan dikemas kini kepada: {roles}",
2024
+ "audit.user_created": "Peranan yang ditugaskan: {roles}"
2025
+ };
2026
+ const __vite_glob_0_12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2027
+ __proto__: null,
2028
+ default: ms
2029
+ }, Symbol.toStringTag, { value: "Module" }));
2030
+ const nl = {
2031
+ "global.plugins.strapi-plugin-oidc": "OIDC-plugin",
2032
+ "page.title": "Configureer de standaard OIDC-rollen en toegangscontroles.",
2033
+ "roles.notes": "Selecteer de standaardrol(len) die aan nieuwe gebruikers worden toegewezen bij hun eerste login. Deze instelling heeft geen invloed op bestaande gebruikers.",
2034
+ "page.save": "Wijzigingen opslaan",
2035
+ "page.save.success": "Instellingen bijgewerkt",
2036
+ "page.save.error": "Bijwerken mislukt.",
2037
+ "page.add": "Toevoegen",
2038
+ "page.cancel": "Annuleren",
2039
+ "common.remove": "{label} verwijderen",
2040
+ "page.ok": "OK",
2041
+ "roles.title": "Standaardrol(len)",
2042
+ "roles.placeholder": "Selecteer standaardrol(len)",
2043
+ "whitelist.title": "Whitelist",
2044
+ "whitelist.error.unique": "E-mailadres is al geregistreerd.",
2045
+ "whitelist.description": "Beperk OIDC-authenticatie tot specifieke e-mailadressen. Gebruikers ontvangen rollen van de standaard OIDC-roltoewijzing of hun OIDC-groep.",
2046
+ "alert.title.success": "Succes",
2047
+ "alert.title.error": "Fout",
2048
+ "alert.title.info": "Info",
2049
+ "pagination.previous": "Ga naar vorige pagina",
2050
+ "pagination.page": "Ga naar pagina {page}",
2051
+ "pagination.next": "Ga naar volgende pagina",
2052
+ "whitelist.table.no": "Nr.",
2053
+ "whitelist.table.email": "E-mail",
2054
+ "whitelist.table.created": "Gemaakt op",
2055
+ "whitelist.delete.title": "Bevestiging",
2056
+ "whitelist.delete.description": "Weet u zeker dat u wilt verwijderen:",
2057
+ "whitelist.delete.note": "Dit verwijdert het gebruikersaccount niet in Strapi.",
2058
+ "whitelist.toggle.enabled": "Ingeschakeld",
2059
+ "whitelist.toggle.disabled": "Uitgeschakeld",
2060
+ "whitelist.email.placeholder": "E-mailadres",
2061
+ "whitelist.table.empty": "Geen e-mailadressen",
2062
+ "whitelist.delete.label": "Verwijderen",
2063
+ "page.title.oidc": "OIDC",
2064
+ "enforce.title": "OIDC-login afdwingen",
2065
+ "enforce.toggle.enabled": "Ingeschakeld",
2066
+ "enforce.toggle.disabled": "Uitgeschakeld",
2067
+ "enforce.warning": "Zorg ervoor dat OIDC correct is ingesteld voordat u de wijzigingen opslaat, u kunt niet normaal inloggen.",
2068
+ "enforce.config.info": "Afdwinging wordt beheerd door de OIDC_ENFORCE-configuratievariabele en kan hier niet worden gewijzigd.",
2069
+ "login.settings.title": "Login-instellingen",
2070
+ "login.sso": "Inloggen via SSO",
2071
+ "pagination.total": "{count, plural, one {# item} other {# items}}",
2072
+ "whitelist.import": "Importeren",
2073
+ "whitelist.export": "Exporteren",
2074
+ "whitelist.delete.all.label": "Alles verwijderen",
2075
+ "whitelist.delete.all.title": "Alle items verwijderen",
2076
+ "whitelist.delete.all.description": "Hiermee worden alle {count, plural, one {# item} other {# items}} permanent van de whitelist verwijderd. Niet-opgeslagen wijzigingen gaan verloren.",
2077
+ "whitelist.import.error": "Ongeldig bestand — verwacht werd een JSON-array van objecten met een e-mailveld.",
2078
+ "whitelist.import.success": "{count, plural, one {# nieuw item} other {# nieuwe items}} geïmporteerd.",
2079
+ "whitelist.import.none": "Geen nieuwe items — alle e-mails staan al op de whitelist.",
2080
+ "unsaved.title": "Niet-opgeslagen wijzigingen",
2081
+ "unsaved.description": "U hebt niet-opgeslagen wijzigingen die verloren gaan als u weggaat. Wilt u doorgaan?",
2082
+ "unsaved.confirm": "Vertrekken",
2083
+ "unsaved.cancel": "Blijven",
2084
+ "auditlog.title": "Auditlogboeken",
2085
+ "auditlog.export": "Downloaden",
2086
+ "auditlog.table.timestamp": "Tijdstempel",
2087
+ "auditlog.table.action": "Actie",
2088
+ "auditlog.table.email": "E-mail",
2089
+ "auditlog.table.ip": "IP",
2090
+ "auditlog.table.details": "Details",
2091
+ "auditlog.table.empty": "Geen auditlogboekitems",
2092
+ "auditlog.clear": "Logboeken wissen",
2093
+ "auditlog.clear.title": "Alle logboeken wissen",
2094
+ "auditlog.clear.description": "Hiermee worden alle {count, plural, one {# auditlogboekitem} other {# auditlogboekitems}} permanent verwijderd. Deze actie kan niet ongedaan worden gemaakt.",
2095
+ "auditlog.clear.success": "Auditlogboeken gewist",
2096
+ "auditlog.clear.error": "Kan auditlogboeken niet wissen",
2097
+ "auditlog.export.error": "Kan auditlogboeken niet exporteren",
2098
+ "auditlog.filters": "Filters",
2099
+ "auditlog.filters.action": "Actie",
2100
+ "auditlog.filters.email": "E-mail",
2101
+ "auditlog.filters.ip": "IP-adres",
2102
+ "auditlog.filters.createdAt": "Datum",
2103
+ "auditlog.filters.clear": "Filters wissen",
2104
+ "auditlog.filters.empty": "Geen items komen overeen met de huidige filters",
2105
+ "auditlog.calendar.prevMonth": "Vorige maand",
2106
+ "auditlog.calendar.nextMonth": "Volgende maand",
2107
+ "auditlog.calendar.state.today": "vandaag",
2108
+ "auditlog.calendar.state.selected": "geselecteerd",
2109
+ "auditlog.calendar.state.alreadyAdded": "reeds toegevoegd",
2110
+ "auditlog.calendar.state.future": "niet beschikbaar, toekomstige datum",
2111
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2112
+ "auditlog.action.login_success": "Gebruiker is succesvol geverifieerd via OIDC en heeft toegang gekregen.",
2113
+ "auditlog.action.user_created": "Er is een nieuw Strapi-adminaccount aangemaakt voor deze gebruiker bij hun eerste OIDC-login.",
2114
+ "auditlog.action.logout": "Gebruiker is uitgelogd en hun OIDC-sessie is beëindigd.",
2115
+ "auditlog.action.session_expired": "Het OIDC-toegangstoken was verlopen op het moment dat de gebruiker uitlogde, dus de providersessie kon niet op afstand worden beëindigd.",
2116
+ "auditlog.action.login_failure": "Er is een onverwachte fout opgetreden tijdens de OIDC-loginstroom.",
2117
+ "auditlog.action.missing_code": "De OIDC-callback is ontvangen zonder autorisatiecode. Dit kan wijzen op een verkeerd geconfigureerde provider of een gemanipuleerd verzoek.",
2118
+ "auditlog.action.state_mismatch": "De statusparameter in de callback kwam niet overeen met de in de sessie opgeslagen. Dit kan wijzen op een CSRF-poging of een verlopen loginsessie.",
2119
+ "auditlog.action.nonce_mismatch": "De nonce in het ID-token kwam niet overeen met de bij het inloggen gegenereerde. Dit kan wijzen op een token-replay-aanval.",
2120
+ "auditlog.action.token_exchange_failed": "De autorisatiecode kon niet worden uitgewisseld voor tokens. De OIDC-provider wees het verzoek af.",
2121
+ "auditlog.action.whitelist_rejected": "Het e-mailadres van de gebruiker staat niet op de whitelist. Toegang geweigerd.",
2122
+ "auditlog.action.email_not_verified": "De OIDC-provider heeft het e-mailadres van de gebruiker niet bevestigd als geverifieerd. Toegang geweigerd.",
2123
+ "auditlog.action.id_token_invalid": "Het ID-token is niet geslaagd voor handtekening-, issuer-, audience- of verlooptijdvalidatie. Toegang geweigerd.",
2124
+ "auth.page.authenticating.title": "Verifiëren...",
2125
+ "auth.page.authenticating.noscript.heading": "JavaScript vereist",
2126
+ "auth.page.authenticating.noscript.body": "JavaScript moet zijn ingeschakeld om de verificatie te voltooien.",
2127
+ "auth.page.error.title": "Verificatie mislukt",
2128
+ "auth.page.error.returnToLogin": "Terug naar inloggen",
2129
+ "user.missing_code": "Autorisatiecode is niet ontvangen van de OIDC-provider.",
2130
+ "user.invalid_state": "Statusparameter niet overeen. Start de inlogstroom opnieuw.",
2131
+ "user.signInError": "Verificatie mislukt. Probeer het opnieuw.",
2132
+ "settings.section": "OIDC",
2133
+ "settings.configuration": "Configuratie",
2134
+ "audit.login_failure": "Fout: {message}",
2135
+ "audit.roles_updated": "Rollen bijgewerkt naar: {roles}",
2136
+ "audit.user_created": "Toegewezen rollen: {roles}"
2137
+ };
2138
+ const __vite_glob_0_13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2139
+ __proto__: null,
2140
+ default: nl
2141
+ }, Symbol.toStringTag, { value: "Module" }));
2142
+ const no = {
2143
+ "global.plugins.strapi-plugin-oidc": "OIDC-plugin",
2144
+ "page.title": "Konfigurer standard OIDC-roller og tilgangskontroller.",
2145
+ "roles.notes": "Velg standardrollen(e) som tildeles nye brukere ved første pålogging. Denne innstillingen påvirker ikke eksisterende brukere.",
2146
+ "page.save": "Lagre endringer",
2147
+ "page.save.success": "Innstillinger oppdatert",
2148
+ "page.save.error": "Oppdatering mislyktes.",
2149
+ "page.add": "Legg til",
2150
+ "page.cancel": "Avbryt",
2151
+ "common.remove": "Fjern {label}",
2152
+ "page.ok": "OK",
2153
+ "roles.title": "Standardrolle(r)",
2154
+ "roles.placeholder": "Velg standardrolle(r)",
2155
+ "whitelist.title": "Whitelist",
2156
+ "whitelist.error.unique": "E-postadressen er allerede registrert.",
2157
+ "whitelist.description": "Begrens OIDC-autentisering til bestemte e-postadresser. Brukere mottar roller fra standard OIDC-roltilordning eller sin OIDC-gruppe.",
2158
+ "alert.title.success": "Suksess",
2159
+ "alert.title.error": "Feil",
2160
+ "alert.title.info": "Info",
2161
+ "pagination.previous": "Gå til forrige side",
2162
+ "pagination.page": "Gå til side {page}",
2163
+ "pagination.next": "Gå til neste side",
2164
+ "whitelist.table.no": "Nr.",
2165
+ "whitelist.table.email": "E-post",
2166
+ "whitelist.table.created": "Opprettet",
2167
+ "whitelist.delete.title": "Bekreftelse",
2168
+ "whitelist.delete.description": "Er du sikker på at du vil slette:",
2169
+ "whitelist.delete.note": "Dette vil ikke slette brukerkontoen i Strapi.",
2170
+ "whitelist.toggle.enabled": "Aktivert",
2171
+ "whitelist.toggle.disabled": "Deaktivert",
2172
+ "whitelist.email.placeholder": "E-postadresse",
2173
+ "whitelist.table.empty": "Ingen e-postadresser",
2174
+ "whitelist.delete.label": "Slett",
2175
+ "page.title.oidc": "OIDC",
2176
+ "enforce.title": "Håndhev OIDC-pålogging",
2177
+ "enforce.toggle.enabled": "Aktivert",
2178
+ "enforce.toggle.disabled": "Deaktivert",
2179
+ "enforce.warning": "Sørg for at OIDC er konfigurert riktig før du lagrer endringer, du vil ikke kunne logge på normalt.",
2180
+ "enforce.config.info": "Håndheving kontrolleres av OIDC_ENFORCE-konfigurasjonsvariabelen og kan ikke endres her.",
2181
+ "login.settings.title": "Påloggingsinnstillinger",
2182
+ "login.sso": "Logg inn via SSO",
2183
+ "pagination.total": "{count, plural, one {# oppføring} other {# oppføringer}}",
2184
+ "whitelist.import": "Importer",
2185
+ "whitelist.export": "Eksporter",
2186
+ "whitelist.delete.all.label": "Slett alle",
2187
+ "whitelist.delete.all.title": "Slett alle oppføringer",
2188
+ "whitelist.delete.all.description": "Dette vil permanent fjerne alle {count, plural, one {# oppføring} other {# oppføringer}} fra whitelist. Ikke-lagrede endringer vil gå tapt.",
2189
+ "whitelist.import.error": "Ugyldig fil — forventet en JSON-matrise av objekter med et e-postfelt.",
2190
+ "whitelist.import.success": "{count, plural, one {# ny oppføring} other {# nye oppføringer}} importert.",
2191
+ "whitelist.import.none": "Ingen nye oppføringer — alle e-postadresser er allerede på whitelist.",
2192
+ "unsaved.title": "Ikke-lagrede endringer",
2193
+ "unsaved.description": "Du har ikke-lagrede endringer som vil gå tapt hvis du forlater. Vil du fortsette?",
2194
+ "unsaved.confirm": "Forlat",
2195
+ "unsaved.cancel": "Bli",
2196
+ "auditlog.title": "Revisjonslogger",
2197
+ "auditlog.export": "Last ned",
2198
+ "auditlog.table.timestamp": "Tidsstempel",
2199
+ "auditlog.table.action": "Handling",
2200
+ "auditlog.table.email": "E-post",
2201
+ "auditlog.table.ip": "IP",
2202
+ "auditlog.table.details": "Detaljer",
2203
+ "auditlog.table.empty": "Ingen revisjonsloggoppføringer",
2204
+ "auditlog.clear": "Slett logger",
2205
+ "auditlog.clear.title": "Slett alle logger",
2206
+ "auditlog.clear.description": "Dette vil slette alle {count, plural, one {# revisjonsloggoppføring} other {# revisjonsloggoppføringer}} permanent. Denne handlingen kan ikke angres.",
2207
+ "auditlog.clear.success": "Revisjonslogger slettet",
2208
+ "auditlog.clear.error": "Kunne ikke slette revisjonslogger",
2209
+ "auditlog.export.error": "Kunne ikke eksportere revisjonslogger",
2210
+ "auditlog.filters": "Filtre",
2211
+ "auditlog.filters.action": "Handling",
2212
+ "auditlog.filters.email": "E-post",
2213
+ "auditlog.filters.ip": "IP-adresse",
2214
+ "auditlog.filters.createdAt": "Dato",
2215
+ "auditlog.filters.clear": "Slett filtre",
2216
+ "auditlog.filters.empty": "Ingen oppføringer matcher de nåværende filtrene",
2217
+ "auditlog.calendar.prevMonth": "Forrige måned",
2218
+ "auditlog.calendar.nextMonth": "Neste måned",
2219
+ "auditlog.calendar.state.today": "i dag",
2220
+ "auditlog.calendar.state.selected": "valgt",
2221
+ "auditlog.calendar.state.alreadyAdded": "allerede lagt til",
2222
+ "auditlog.calendar.state.future": "utilgjengelig, fremtidig dato",
2223
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2224
+ "auditlog.action.login_success": "Brukeren ble vellykket autentisert via OIDC og ble innvilget tilgang.",
2225
+ "auditlog.action.user_created": "En ny Strapi-admin-konto ble opprettet for denne brukeren ved deres første OIDC-pålogging.",
2226
+ "auditlog.action.logout": "Brukeren logget ut og deres OIDC-økt ble avsluttet.",
2227
+ "auditlog.action.session_expired": "OIDC-aksessokenet hadde utløpt på tidspunktet brukeren logget ut, så leverandørøkten kunne ikke avsluttes eksternt.",
2228
+ "auditlog.action.login_failure": "Det oppstod en uventet feil under OIDC-påloggingsflyten.",
2229
+ "auditlog.action.missing_code": "OIDC-callbacken ble mottatt uten en autorisasjonskode. Dette kan indikere en feilkonfigurert leverandør eller en manipulert forespørsel.",
2230
+ "auditlog.action.state_mismatch": "Tilstandsparameteren i callbacken samsvarte ikke med den som er lagret i økten. Dette kan indikere et CSRF-forsøk eller en utløpt påloggingsøkt.",
2231
+ "auditlog.action.nonce_mismatch": "Nonce i ID-tokenet samsvarte ikke med den som ble generert ved pålogging. Dette kan indikere et token-replay-angrep.",
2232
+ "auditlog.action.token_exchange_failed": "Autorisasjonskoden kunne ikke byttes mot tokens. OIDC-leverandøren avviste forespørselen.",
2233
+ "auditlog.action.whitelist_rejected": "Brukerens e-postadresse er ikke på whitelist. Tilgang ble nektet.",
2234
+ "auditlog.action.email_not_verified": "OIDC-leverandøren bekreftet ikke brukerens e-postadresse som verifisert. Tilgang ble nektet.",
2235
+ "auditlog.action.id_token_invalid": "ID-tokenet klarte ikke signatur-, utsteder-, målgruppe- eller utløpsvalidering. Tilgang ble nektet.",
2236
+ "auth.page.authenticating.title": "Autentiserer...",
2237
+ "auth.page.authenticating.noscript.heading": "JavaScript påkrevd",
2238
+ "auth.page.authenticating.noscript.body": "JavaScript må være aktivert for at autentiseringen skal fullføres.",
2239
+ "auth.page.error.title": "Autentisering mislyktes",
2240
+ "auth.page.error.returnToLogin": "Tilbake til pålogging",
2241
+ "user.missing_code": "Autorisasjonskode ble ikke mottatt fra OIDC-leverandøren.",
2242
+ "user.invalid_state": "TilstandsparameterMismatch. Start påloggingsflyten på nytt.",
2243
+ "user.signInError": "Autentisering mislyktes. Prøv igjen.",
2244
+ "settings.section": "OIDC",
2245
+ "settings.configuration": "Konfigurasjon",
2246
+ "audit.login_failure": "Feil: {message}",
2247
+ "audit.roles_updated": "Roller oppdatert til: {roles}",
2248
+ "audit.user_created": "Tildelte roller: {roles}"
2249
+ };
2250
+ const __vite_glob_0_14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2251
+ __proto__: null,
2252
+ default: no
2253
+ }, Symbol.toStringTag, { value: "Module" }));
2254
+ const pl = {
2255
+ "global.plugins.strapi-plugin-oidc": "Wtyczka OIDC",
2256
+ "page.title": "Konfiguruj domyślne role OIDC i kontrolki dostępu.",
2257
+ "roles.notes": "Wybierz domyślną(e) rolę(e) przypisane nowym użytkownikom przy pierwszym logowaniu. To ustawienie nie ma wpływu na istniejących użytkowników.",
2258
+ "page.save": "Zapisz zmiany",
2259
+ "page.save.success": "Ustawienia zaktualizowane",
2260
+ "page.save.error": "Aktualizacja nieudana.",
2261
+ "page.add": "Dodaj",
2262
+ "page.cancel": "Anuluj",
2263
+ "common.remove": "Usuń {label}",
2264
+ "page.ok": "OK",
2265
+ "roles.title": "Domyślna(e) rola(e)",
2266
+ "roles.placeholder": "Wybierz domyślną(e) rolę(e)",
2267
+ "whitelist.title": "Biała lista",
2268
+ "whitelist.error.unique": "Adres e-mail jest już zarejestrowany.",
2269
+ "whitelist.description": "Ogranicz uwierzytelnianie OIDC do określonych adresów e-mail. Użytkownicy otrzymują role z domyślnego mapowania ról OIDC lub swojej grupy OIDC.",
2270
+ "alert.title.success": "Sukces",
2271
+ "alert.title.error": "Błąd",
2272
+ "alert.title.info": "Informacja",
2273
+ "pagination.previous": "Przejdź do poprzedniej strony",
2274
+ "pagination.page": "Przejdź do strony {page}",
2275
+ "pagination.next": "Przejdź do następnej strony",
2276
+ "whitelist.table.no": "Nr",
2277
+ "whitelist.table.email": "E-mail",
2278
+ "whitelist.table.created": "Utworzono",
2279
+ "whitelist.delete.title": "Potwierdzenie",
2280
+ "whitelist.delete.description": "Czy na pewno chcesz usunąć:",
2281
+ "whitelist.delete.note": "Nie spowoduje to usunięcia konta użytkownika w Strapi.",
2282
+ "whitelist.toggle.enabled": "Włączone",
2283
+ "whitelist.toggle.disabled": "Wyłączone",
2284
+ "whitelist.email.placeholder": "Adres e-mail",
2285
+ "whitelist.table.empty": "Brak adresów e-mail",
2286
+ "whitelist.delete.label": "Usuń",
2287
+ "page.title.oidc": "OIDC",
2288
+ "enforce.title": "Wymuszaj logowanie OIDC",
2289
+ "enforce.toggle.enabled": "Włączone",
2290
+ "enforce.toggle.disabled": "Wyłączone",
2291
+ "enforce.warning": "Upewnij się, że OIDC jest poprawnie skonfigurowany przed zapisaniem zmian, nie będziesz mógł normalnie się zalogować.",
2292
+ "enforce.config.info": "Wymuszanie jest kontrolowane przez zmienną konfiguracyjną OIDC_ENFORCE i nie można tego tutaj zmienić.",
2293
+ "login.settings.title": "Ustawienia logowania",
2294
+ "login.sso": "Zaloguj się przez SSO",
2295
+ "pagination.total": "{count, plural, one {# wpis} few {# wpisy} many {# wpisów} other {# wpisów}}",
2296
+ "whitelist.import": "Importuj",
2297
+ "whitelist.export": "Eksportuj",
2298
+ "whitelist.delete.all.label": "Usuń wszystko",
2299
+ "whitelist.delete.all.title": "Usuń wszystkie wpisy",
2300
+ "whitelist.delete.all.description": "To trwale usunie wszystkie {count, plural, one {# wpis} few {# wpisy} many {# wpisów} other {# wpisów}} z białej listy. Niezapisane zmiany zostaną utracone.",
2301
+ "whitelist.import.error": "Nieprawidłowy plik — oczekiwano tablicy JSON obiektów z polem e-mail.",
2302
+ "whitelist.import.success": "Zaimportowano {count, plural, one {# nowy wpis} few {# nowe wpisy} many {# nowych wpisów} other {# nowych wpisów}}.",
2303
+ "whitelist.import.none": "Brak nowych wpisów — wszystkie e-maile są już na białej liście.",
2304
+ "unsaved.title": "Niezapisane zmiany",
2305
+ "unsaved.description": "Masz niezapisane zmiany, które zostaną utracone, jeśli opuścisz stronę. Czy chcesz kontynuować?",
2306
+ "unsaved.confirm": "Opuść",
2307
+ "unsaved.cancel": "Zostań",
2308
+ "auditlog.title": "Dzienniki audytu",
2309
+ "auditlog.export": "Pobierz",
2310
+ "auditlog.table.timestamp": "Znacznik czasu",
2311
+ "auditlog.table.action": "Akcja",
2312
+ "auditlog.table.email": "E-mail",
2313
+ "auditlog.table.ip": "IP",
2314
+ "auditlog.table.details": "Szczegóły",
2315
+ "auditlog.table.empty": "Brak wpisów dziennika audytu",
2316
+ "auditlog.clear": "Wyczyść dzienniki",
2317
+ "auditlog.clear.title": "Wyczyść wszystkie dzienniki",
2318
+ "auditlog.clear.description": "To trwale usunie wszystkie {count, plural, one {# wpis dziennika audytu} few {# wpisy dziennika audytu} many {# wpisów dziennika audytu} other {# wpisów dziennika audytu}}. Ta akcja nie może być cofnięta.",
2319
+ "auditlog.clear.success": "Dzienniki audytu wyczyszczone",
2320
+ "auditlog.clear.error": "Nie udało się wyczyścić dzienników audytu",
2321
+ "auditlog.export.error": "Nie udało się wyeksportować dzienników audytu",
2322
+ "auditlog.filters": "Filtry",
2323
+ "auditlog.filters.action": "Akcja",
2324
+ "auditlog.filters.email": "E-mail",
2325
+ "auditlog.filters.ip": "Adres IP",
2326
+ "auditlog.filters.createdAt": "Data",
2327
+ "auditlog.filters.clear": "Wyczyść filtry",
2328
+ "auditlog.filters.empty": "Żadne wpisy nie odpowiadają bieżącym filtrom",
2329
+ "auditlog.calendar.prevMonth": "Poprzedni miesiąc",
2330
+ "auditlog.calendar.nextMonth": "Następny miesiąc",
2331
+ "auditlog.calendar.state.today": "dzisiaj",
2332
+ "auditlog.calendar.state.selected": "wybrano",
2333
+ "auditlog.calendar.state.alreadyAdded": "już dodano",
2334
+ "auditlog.calendar.state.future": "niedostępna, przyszła data",
2335
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2336
+ "auditlog.action.login_success": "Użytkownik został pomyślnie uwierzytelniony przez OIDC i otrzymał dostęp.",
2337
+ "auditlog.action.user_created": "Nowe konto administratora Strapi zostało utworzone dla tego użytkownika podczas jego pierwszego logowania OIDC.",
2338
+ "auditlog.action.logout": "Użytkownik wylogował się, a jego sesja OIDC została zakończona.",
2339
+ "auditlog.action.session_expired": "Token dostępu OIDC wygasł w momencie wylogowania użytkownika, więc sesja dostawcy nie mogła zostać zakończona zdalnie.",
2340
+ "auditlog.action.login_failure": "Wystąpił nieoczekiwany błąd podczas przepływu logowania OIDC.",
2341
+ "auditlog.action.missing_code": "Wywołanie zwrotne OIDC zostało odebrane bez kodu autoryzacji. Może to wskazywać na błędnie skonfigurowanego dostawcę lub zmodyfikowane żądanie.",
2342
+ "auditlog.action.state_mismatch": "Parametr stanu w wywołaniu zwrotnym nie odpowiadał temu przechowywanemu w sesji. Może to wskazywać na próbę CSRF lub wygasłą sesję logowania.",
2343
+ "auditlog.action.nonce_mismatch": "Nonce w tokenie ID nie odpowiadało temu wygenerowanemu podczas logowania. Może to wskazywać na atak typu replay tokena.",
2344
+ "auditlog.action.token_exchange_failed": "Kod autoryzacji nie mógł zostać wymieniony na tokeny. Dostawca OIDC odrzucił żądanie.",
2345
+ "auditlog.action.whitelist_rejected": "Adres e-mail użytkownika nie znajduje się na białej liście. Odmówiono dostępu.",
2346
+ "auditlog.action.email_not_verified": "Dostawca OIDC nie potwierdził adresu e-mail użytkownika jako zweryfikowanego. Odmówiono dostępu.",
2347
+ "auditlog.action.id_token_invalid": "Token ID nie przeszedł weryfikacji podpisu, wystawcy, odbiorcy lub wygaśnięcia. Odmówiono dostępu.",
2348
+ "auth.page.authenticating.title": "Uwierzytelnianie...",
2349
+ "auth.page.authenticating.noscript.heading": "Wymagany JavaScript",
2350
+ "auth.page.authenticating.noscript.body": "JavaScript musi być włączony, aby uwierzytelnianie zostało zakończone.",
2351
+ "auth.page.error.title": "Uwierzytelnianie nie powiodło się",
2352
+ "auth.page.error.returnToLogin": "Powrót do logowania",
2353
+ "user.missing_code": "Nie otrzymano kodu autoryzacji od dostawcy OIDC.",
2354
+ "user.invalid_state": "Niezgodność parametru stanu. Uruchom ponownie przepływ logowania.",
2355
+ "user.signInError": "Uwierzytelnianie nie powiodło się. Spróbuj ponownie.",
2356
+ "settings.section": "OIDC",
2357
+ "settings.configuration": "Konfiguracja",
2358
+ "audit.login_failure": "Błąd: {message}",
2359
+ "audit.roles_updated": "Role zaktualizowane do: {roles}",
2360
+ "audit.user_created": "Przypisane role: {roles}"
2361
+ };
2362
+ const __vite_glob_0_15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2363
+ __proto__: null,
2364
+ default: pl
2365
+ }, Symbol.toStringTag, { value: "Module" }));
2366
+ const ptBR = {
2367
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
2368
+ "page.title": "Configure as funções padrão do OIDC e os controles de acesso.",
2369
+ "roles.notes": "Selecione a(s) função(ões) padrão atribuída(s) aos novos usuários em seu primeiro login. Esta configuração não afeta os usuários existentes.",
2370
+ "page.save": "Salvar alterações",
2371
+ "page.save.success": "Configurações atualizadas",
2372
+ "page.save.error": "Falha na atualização.",
2373
+ "page.add": "Adicionar",
2374
+ "page.cancel": "Cancelar",
2375
+ "common.remove": "Remover {label}",
2376
+ "page.ok": "OK",
2377
+ "roles.title": "Função(ões) padrão",
2378
+ "roles.placeholder": "Selecione a(s) função(ões) padrão",
2379
+ "whitelist.title": "Lista de permissões",
2380
+ "whitelist.error.unique": "Endereço de e-mail já registrado.",
2381
+ "whitelist.description": "Restrinja a autenticação OIDC a endereços de e-mail específicos. Os usuários recebem funções do mapeamento de funções OIDC padrão ou do grupo OIDC deles.",
2382
+ "alert.title.success": "Sucesso",
2383
+ "alert.title.error": "Erro",
2384
+ "alert.title.info": "Info",
2385
+ "pagination.previous": "Ir para a página anterior",
2386
+ "pagination.page": "Ir para a página {page}",
2387
+ "pagination.next": "Ir para a próxima página",
2388
+ "whitelist.table.no": "Nº",
2389
+ "whitelist.table.email": "E-mail",
2390
+ "whitelist.table.created": "Criado em",
2391
+ "whitelist.delete.title": "Confirmação",
2392
+ "whitelist.delete.description": "Tem certeza de que deseja excluir:",
2393
+ "whitelist.delete.note": "Isso não excluirá a conta do usuário no Strapi.",
2394
+ "whitelist.toggle.enabled": "Habilitado",
2395
+ "whitelist.toggle.disabled": "Desabilitado",
2396
+ "whitelist.email.placeholder": "Endereço de e-mail",
2397
+ "whitelist.table.empty": "Nenhum endereço de e-mail",
2398
+ "whitelist.delete.label": "Excluir",
2399
+ "page.title.oidc": "OIDC",
2400
+ "enforce.title": "Impor login OIDC",
2401
+ "enforce.toggle.enabled": "Habilitado",
2402
+ "enforce.toggle.disabled": "Desabilitado",
2403
+ "enforce.warning": "Certifique-se de que o OIDC esteja configurado corretamente antes de salvar as alterações; você não poderá fazer login normalmente.",
2404
+ "enforce.config.info": "A imposição é controlada pela variável de configuração OIDC_ENFORCE e não pode ser alterada aqui.",
2405
+ "login.settings.title": "Configurações de login",
2406
+ "login.sso": "Login via SSO",
2407
+ "pagination.total": "{count, plural, one {# entrada} other {# entradas}}",
2408
+ "whitelist.import": "Importar",
2409
+ "whitelist.export": "Exportar",
2410
+ "whitelist.delete.all.label": "Excluir tudo",
2411
+ "whitelist.delete.all.title": "Excluir todas as entradas",
2412
+ "whitelist.delete.all.description": "Isso removerá permanentemente todas as {count, plural, one {# entrada} other {# entradas}} da lista de permissões. As alterações não salvas serão perdidas.",
2413
+ "whitelist.import.error": "Arquivo inválido — esperava um array JSON de objetos com um campo de e-mail.",
2414
+ "whitelist.import.success": "{count, plural, one {# nova entrada} other {# novas entradas}} importada(s).",
2415
+ "whitelist.import.none": "Nenhuma nova entrada — todos os e-mails já estão na lista de permissões.",
2416
+ "unsaved.title": "Alterações não salvas",
2417
+ "unsaved.description": "Você tem alterações não salvas que serão perdidas se sair. Deseja continuar?",
2418
+ "unsaved.confirm": "Sair",
2419
+ "unsaved.cancel": "Ficar",
2420
+ "auditlog.title": "Logs de auditoria",
2421
+ "auditlog.export": "Baixar",
2422
+ "auditlog.table.timestamp": "Carimbo de data/hora",
2423
+ "auditlog.table.action": "Ação",
2424
+ "auditlog.table.email": "E-mail",
2425
+ "auditlog.table.ip": "IP",
2426
+ "auditlog.table.details": "Detalhes",
2427
+ "auditlog.table.empty": "Nenhuma entrada de log de auditoria",
2428
+ "auditlog.clear": "Limpar logs",
2429
+ "auditlog.clear.title": "Limpar todos os logs",
2430
+ "auditlog.clear.description": "Isso excluirá permanentemente todas as {count, plural, one {# entrada de log de auditoria} other {# entradas de log de auditoria}}. Esta ação não pode ser desfeita.",
2431
+ "auditlog.clear.success": "Logs de auditoria limpos",
2432
+ "auditlog.clear.error": "Falha ao limpar os logs de auditoria",
2433
+ "auditlog.export.error": "Falha ao exportar os logs de auditoria",
2434
+ "auditlog.filters": "Filtros",
2435
+ "auditlog.filters.action": "Ação",
2436
+ "auditlog.filters.email": "E-mail",
2437
+ "auditlog.filters.ip": "Endereço IP",
2438
+ "auditlog.filters.createdAt": "Data",
2439
+ "auditlog.filters.clear": "Limpar filtros",
2440
+ "auditlog.filters.empty": "Nenhuma entrada corresponde aos filtros atuais",
2441
+ "auditlog.calendar.prevMonth": "Mês anterior",
2442
+ "auditlog.calendar.nextMonth": "Próximo mês",
2443
+ "auditlog.calendar.state.today": "hoje",
2444
+ "auditlog.calendar.state.selected": "selecionado",
2445
+ "auditlog.calendar.state.alreadyAdded": "já adicionado",
2446
+ "auditlog.calendar.state.future": "indisponível, data futura",
2447
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2448
+ "auditlog.action.login_success": "O usuário foi autenticado com sucesso via OIDC e recebeu acesso.",
2449
+ "auditlog.action.user_created": "Uma nova conta de administrador Strapi foi criada para este usuário em seu primeiro login OIDC.",
2450
+ "auditlog.action.logout": "O usuário fez logout e sua sessão OIDC foi encerrada.",
2451
+ "auditlog.action.session_expired": "O token de acesso OIDC havia expirado no momento em que o usuário fez logout, então a sessão do provedor não pôde ser encerrada remotamente.",
2452
+ "auditlog.action.login_failure": "Ocorreu um erro inesperado durante o fluxo de login OIDC.",
2453
+ "auditlog.action.missing_code": "O callback OIDC foi recebido sem um código de autorização. Isso pode indicar um provedor mal configurado ou uma solicitação adulterada.",
2454
+ "auditlog.action.state_mismatch": "O parâmetro de estado no callback não correspondeu ao armazenado na sessão. Isso pode indicar uma tentativa de CSRF ou uma sessão de login expirada.",
2455
+ "auditlog.action.nonce_mismatch": "O nonce no token de ID não correspondeu ao gerado no login. Isso pode indicar um ataque de replay de token.",
2456
+ "auditlog.action.token_exchange_failed": "O código de autorização não pôde ser trocado por tokens. O provedor OIDC rejeitou a solicitação.",
2457
+ "auditlog.action.whitelist_rejected": "O endereço de e-mail do usuário não está na lista de permissões. Acesso negado.",
2458
+ "auditlog.action.email_not_verified": "O provedor OIDC não confirmou o endereço de e-mail do usuário como verificado. Acesso negado.",
2459
+ "auditlog.action.id_token_invalid": "O token de ID falhou na validação de assinatura, emissor, audiência ou expiração. Acesso negado.",
2460
+ "auth.page.authenticating.title": "Autenticando...",
2461
+ "auth.page.authenticating.noscript.heading": "JavaScript necessário",
2462
+ "auth.page.authenticating.noscript.body": "JavaScript deve estar habilitado para a autenticação ser concluída.",
2463
+ "auth.page.error.title": "Falha na autenticação",
2464
+ "auth.page.error.returnToLogin": "Voltar para login",
2465
+ "user.missing_code": "Código de autorização não foi recebido do provedor OIDC.",
2466
+ "user.invalid_state": "Parâmetro de estado inválido. Reinicie o fluxo de login.",
2467
+ "user.signInError": "Falha na autenticação. Tente novamente.",
2468
+ "settings.section": "OIDC",
2469
+ "settings.configuration": "Configuração",
2470
+ "audit.login_failure": "Erro: {message}",
2471
+ "audit.roles_updated": "Funções atualizadas para: {roles}",
2472
+ "audit.user_created": "Funções atribuídas: {roles}"
2473
+ };
2474
+ const __vite_glob_0_16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2475
+ __proto__: null,
2476
+ default: ptBR
2477
+ }, Symbol.toStringTag, { value: "Module" }));
2478
+ const pt = {
2479
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
2480
+ "page.title": "Configure as funções predefinidas do OIDC e os controlos de acesso.",
2481
+ "roles.notes": "Selecione a(s) função(ões) predefinida(s) atribuída(s) aos novos utilizadores no primeiro início de sessão. Esta definição não afeta os utilizadores existentes.",
2482
+ "page.save": "Guardar alterações",
2483
+ "page.save.success": "Definições atualizadas",
2484
+ "page.save.error": "Falha na atualização.",
2485
+ "page.add": "Adicionar",
2486
+ "page.cancel": "Cancelar",
2487
+ "common.remove": "Remover {label}",
2488
+ "page.ok": "OK",
2489
+ "roles.title": "Função(ões) predefinida(s)",
2490
+ "roles.placeholder": "Selecionar função(ões) predefinida(s)",
2491
+ "whitelist.title": "Lista branca",
2492
+ "whitelist.error.unique": "Endereço de e-mail já registado.",
2493
+ "whitelist.description": "Restrinja a autenticação OIDC a endereços de e-mail específicos. Os utilizadores recebem funções do mapeamento de funções OIDC predefinido ou do grupo OIDC deles.",
2494
+ "alert.title.success": "Sucesso",
2495
+ "alert.title.error": "Erro",
2496
+ "alert.title.info": "Info",
2497
+ "pagination.previous": "Ir para a página anterior",
2498
+ "pagination.page": "Ir para a página {page}",
2499
+ "pagination.next": "Ir para a página seguinte",
2500
+ "whitelist.table.no": "N.º",
2501
+ "whitelist.table.email": "E-mail",
2502
+ "whitelist.table.created": "Criado em",
2503
+ "whitelist.delete.title": "Confirmação",
2504
+ "whitelist.delete.description": "Tem a certeza de que deseja eliminar:",
2505
+ "whitelist.delete.note": "Isto não eliminará a conta de utilizador no Strapi.",
2506
+ "whitelist.toggle.enabled": "Ativado",
2507
+ "whitelist.toggle.disabled": "Desativado",
2508
+ "whitelist.email.placeholder": "Endereço de e-mail",
2509
+ "whitelist.table.empty": "Nenhum endereço de e-mail",
2510
+ "whitelist.delete.label": "Eliminar",
2511
+ "page.title.oidc": "OIDC",
2512
+ "enforce.title": "Impor início de sessão OIDC",
2513
+ "enforce.toggle.enabled": "Ativado",
2514
+ "enforce.toggle.disabled": "Desativado",
2515
+ "enforce.warning": "Certifique-se de que o OIDC está configurado corretamente antes de guardar as alterações; não poderá iniciar sessão normalmente.",
2516
+ "enforce.config.info": "A imposição é controlada pela variável de configuração OIDC_ENFORCE e não pode ser alterada aqui.",
2517
+ "login.settings.title": "Definições de início de sessão",
2518
+ "login.sso": "Iniciar sessão via SSO",
2519
+ "pagination.total": "{count, plural, one {# entrada} other {# entradas}}",
2520
+ "whitelist.import": "Importar",
2521
+ "whitelist.export": "Exportar",
2522
+ "whitelist.delete.all.label": "Eliminar tudo",
2523
+ "whitelist.delete.all.title": "Eliminar todas as entradas",
2524
+ "whitelist.delete.all.description": "Isto removerá permanentemente todas as {count, plural, one {# entrada} other {# entradas}} da lista branca. As alterações não guardadas serão perdidas.",
2525
+ "whitelist.import.error": "Ficheiro inválido — esperava uma matriz JSON de objetos com um campo de e-mail.",
2526
+ "whitelist.import.success": "{count, plural, one {# nova entrada} other {# novas entradas}} importada(s).",
2527
+ "whitelist.import.none": "Nenhuma nova entrada — todos os e-mails já estão na lista branca.",
2528
+ "unsaved.title": "Alterações não guardadas",
2529
+ "unsaved.description": "Tem alterações não guardadas que serão perdidas se sair. Deseja continuar?",
2530
+ "unsaved.confirm": "Sair",
2531
+ "unsaved.cancel": "Ficar",
2532
+ "auditlog.title": "Registos de auditoria",
2533
+ "auditlog.export": "Descarregar",
2534
+ "auditlog.table.timestamp": "Carimbo de data/hora",
2535
+ "auditlog.table.action": "Ação",
2536
+ "auditlog.table.email": "E-mail",
2537
+ "auditlog.table.ip": "IP",
2538
+ "auditlog.table.details": "Detalhes",
2539
+ "auditlog.table.empty": "Nenhuma entrada de registo de auditoria",
2540
+ "auditlog.clear": "Limpar registos",
2541
+ "auditlog.clear.title": "Limpar todos os registos",
2542
+ "auditlog.clear.description": "Isto eliminará permanentemente todas as {count, plural, one {# entrada de registo de auditoria} other {# entradas de registo de auditoria}}. Esta ação não pode ser desfeita.",
2543
+ "auditlog.clear.success": "Registos de auditoria limpos",
2544
+ "auditlog.clear.error": "Falha ao limpar os registos de auditoria",
2545
+ "auditlog.export.error": "Falha ao exportar os registos de auditoria",
2546
+ "auditlog.filters": "Filtros",
2547
+ "auditlog.filters.action": "Ação",
2548
+ "auditlog.filters.email": "E-mail",
2549
+ "auditlog.filters.ip": "Endereço IP",
2550
+ "auditlog.filters.createdAt": "Data",
2551
+ "auditlog.filters.clear": "Limpar filtros",
2552
+ "auditlog.filters.empty": "Nenhuma entrada corresponde aos filtros atuais",
2553
+ "auditlog.calendar.prevMonth": "Mês anterior",
2554
+ "auditlog.calendar.nextMonth": "Mês seguinte",
2555
+ "auditlog.calendar.state.today": "hoje",
2556
+ "auditlog.calendar.state.selected": "selecionado",
2557
+ "auditlog.calendar.state.alreadyAdded": "já adicionado",
2558
+ "auditlog.calendar.state.future": "indisponível, data futura",
2559
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2560
+ "auditlog.action.login_success": "O utilizador foi autenticado com sucesso via OIDC e recebeu acesso.",
2561
+ "auditlog.action.user_created": "Uma nova conta de administrador Strapi foi criada para este utilizador no primeiro início de sessão OIDC.",
2562
+ "auditlog.action.logout": "O utilizador terminou a sessão e a sessão OIDC foi encerrada.",
2563
+ "auditlog.action.session_expired": "O token de acesso OIDC tinha expirado no momento em que o utilizador terminou a sessão, pelo que a sessão do fornecedor não pôde ser encerrada remotamente.",
2564
+ "auditlog.action.login_failure": "Ocorreu um erro inesperado durante o fluxo de início de sessão OIDC.",
2565
+ "auditlog.action.missing_code": "O callback OIDC foi recebido sem um código de autorização. Isto pode indicar um fornecedor mal configurado ou um pedido adulterado.",
2566
+ "auditlog.action.state_mismatch": "O parâmetro de estado no callback não correspondeu ao armazenado na sessão. Isto pode indicar uma tentativa de CSRF ou uma sessão de início de sessão expirada.",
2567
+ "auditlog.action.nonce_mismatch": "O nonce no token de ID não correspondeu ao gerado no início de sessão. Isto pode indicar um ataque de replay de token.",
2568
+ "auditlog.action.token_exchange_failed": "O código de autorização não pôde ser trocado por tokens. O fornecedor OIDC rejeitou o pedido.",
2569
+ "auditlog.action.whitelist_rejected": "O endereço de e-mail do utilizador não está na lista branca. Acesso negado.",
2570
+ "auditlog.action.email_not_verified": "O fornecedor OIDC não confirmou o endereço de e-mail do utilizador como verificado. Acesso negado.",
2571
+ "auditlog.action.id_token_invalid": "O token de ID falhou na validação de assinatura, emissor, audiência ou expiração. Acesso negado.",
2572
+ "auth.page.authenticating.title": "A autenticar...",
2573
+ "auth.page.authenticating.noscript.heading": "JavaScript necessário",
2574
+ "auth.page.authenticating.noscript.body": "JavaScript deve estar ativado para a autenticação ser concluída.",
2575
+ "auth.page.error.title": "Falha na autenticação",
2576
+ "auth.page.error.returnToLogin": "Voltar ao início de sessão",
2577
+ "user.missing_code": "Código de autorização não foi recebido do fornecedor OIDC.",
2578
+ "user.invalid_state": "Parâmetro de estado inválido. Reinicie o fluxo de início de sessão.",
2579
+ "user.signInError": "Falha na autenticação. Tente novamente.",
2580
+ "settings.section": "OIDC",
2581
+ "settings.configuration": "Configuração",
2582
+ "audit.login_failure": "Erro: {message}",
2583
+ "audit.roles_updated": "Funções atualizadas para: {roles}",
2584
+ "audit.user_created": "Funções atribuídas: {roles}"
2585
+ };
2586
+ const __vite_glob_0_17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2587
+ __proto__: null,
2588
+ default: pt
2589
+ }, Symbol.toStringTag, { value: "Module" }));
2590
+ const ru = {
2591
+ "global.plugins.strapi-plugin-oidc": "Плагин OIDC",
2592
+ "page.title": "Настройте роли OIDC по умолчанию и элементы управления доступом.",
2593
+ "roles.notes": "Выберите роль (роли) по умолчанию, назначаемую новым пользователям при первом входе. Этот параметр не влияет на существующих пользователей.",
2594
+ "page.save": "Сохранить изменения",
2595
+ "page.save.success": "Настройки обновлены",
2596
+ "page.save.error": "Ошибка обновления.",
2597
+ "page.add": "Добавить",
2598
+ "page.cancel": "Отмена",
2599
+ "common.remove": "Удалить {label}",
2600
+ "page.ok": "ОК",
2601
+ "roles.title": "Роль(и) по умолчанию",
2602
+ "roles.placeholder": "Выберите роль(и) по умолчанию",
2603
+ "whitelist.title": "Белый список",
2604
+ "whitelist.error.unique": "Адрес электронной почты уже зарегистрирован.",
2605
+ "whitelist.description": "Ограничьте аутентификацию OIDC конкретными адресами электронной почты. Пользователи получают роли из сопоставления ролей OIDC по умолчанию или из своей группы OIDC.",
2606
+ "alert.title.success": "Успех",
2607
+ "alert.title.error": "Ошибка",
2608
+ "alert.title.info": "Информация",
2609
+ "pagination.previous": "Перейти на предыдущую страницу",
2610
+ "pagination.page": "Перейти на страницу {page}",
2611
+ "pagination.next": "Перейти на следующую страницу",
2612
+ "whitelist.table.no": "№",
2613
+ "whitelist.table.email": "Электронная почта",
2614
+ "whitelist.table.created": "Создано",
2615
+ "whitelist.delete.title": "Подтверждение",
2616
+ "whitelist.delete.description": "Вы уверены, что хотите удалить:",
2617
+ "whitelist.delete.note": "Это не приведет к удалению учетной записи пользователя в Strapi.",
2618
+ "whitelist.toggle.enabled": "Включено",
2619
+ "whitelist.toggle.disabled": "Отключено",
2620
+ "whitelist.email.placeholder": "Адрес электронной почты",
2621
+ "whitelist.table.empty": "Нет адресов электронной почты",
2622
+ "whitelist.delete.label": "Удалить",
2623
+ "page.title.oidc": "OIDC",
2624
+ "enforce.title": "Обязательный вход через OIDC",
2625
+ "enforce.toggle.enabled": "Включено",
2626
+ "enforce.toggle.disabled": "Отключено",
2627
+ "enforce.warning": "Убедитесь, что OIDC настроен правильно, перед сохранением изменений, иначе вы не сможете войти обычным способом.",
2628
+ "enforce.config.info": "Принудительное применение контролируется переменной конфигурации OIDC_ENFORCE и не может быть изменено здесь.",
2629
+ "login.settings.title": "Настройки входа",
2630
+ "login.sso": "Вход через SSO",
2631
+ "pagination.total": "{count, plural, one {# запись} few {# записи} many {# записей} other {# записей}}",
2632
+ "whitelist.import": "Импорт",
2633
+ "whitelist.export": "Экспорт",
2634
+ "whitelist.delete.all.label": "Удалить все",
2635
+ "whitelist.delete.all.title": "Удалить все записи",
2636
+ "whitelist.delete.all.description": "Это навсегда удалит все {count, plural, one {# запись} few {# записи} many {# записей} other {# записей}} из белого списка. Несохраненные изменения будут потеряны.",
2637
+ "whitelist.import.error": "Неверный файл — ожидался массив JSON объектов с полем электронной почты.",
2638
+ "whitelist.import.success": "Импортировано {count, plural, one {# новая запись} few {# новые записи} many {# новых записей} other {# новых записей}}.",
2639
+ "whitelist.import.none": "Нет новых записей — все электронные письма уже есть в белом списке.",
2640
+ "unsaved.title": "Несохраненные изменения",
2641
+ "unsaved.description": "У вас есть несохраненные изменения, которые будут потеряны при выходе. Хотите продолжить?",
2642
+ "unsaved.confirm": "Выйти",
2643
+ "unsaved.cancel": "Остаться",
2644
+ "auditlog.title": "Журналы аудита",
2645
+ "auditlog.export": "Скачать",
2646
+ "auditlog.table.timestamp": "Временная метка",
2647
+ "auditlog.table.action": "Действие",
2648
+ "auditlog.table.email": "Электронная почта",
2649
+ "auditlog.table.ip": "IP",
2650
+ "auditlog.table.details": "Подробности",
2651
+ "auditlog.table.empty": "Нет записей в журнале аудита",
2652
+ "auditlog.clear": "Очистить журналы",
2653
+ "auditlog.clear.title": "Очистить все журналы",
2654
+ "auditlog.clear.description": "Это навсегда удалит все {count, plural, one {# запись журнала аудита} few {# записи журнала аудита} many {# записей журнала аудита} other {# записей журнала аудита}}. Это действие нельзя отменить.",
2655
+ "auditlog.clear.success": "Журналы аудита очищены",
2656
+ "auditlog.clear.error": "Не удалось очистить журналы аудита",
2657
+ "auditlog.export.error": "Не удалось экспортировать журналы аудита",
2658
+ "auditlog.filters": "Фильтры",
2659
+ "auditlog.filters.action": "Действие",
2660
+ "auditlog.filters.email": "Электронная почта",
2661
+ "auditlog.filters.ip": "IP-адрес",
2662
+ "auditlog.filters.createdAt": "Дата",
2663
+ "auditlog.filters.clear": "Очистить фильтры",
2664
+ "auditlog.filters.empty": "Нет записей, соответствующих текущим фильтрам",
2665
+ "auditlog.calendar.prevMonth": "Предыдущий месяц",
2666
+ "auditlog.calendar.nextMonth": "Следующий месяц",
2667
+ "auditlog.calendar.state.today": "сегодня",
2668
+ "auditlog.calendar.state.selected": "выбрано",
2669
+ "auditlog.calendar.state.alreadyAdded": "уже добавлено",
2670
+ "auditlog.calendar.state.future": "недоступно, будущая дата",
2671
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2672
+ "auditlog.action.login_success": "Пользователь успешно прошел аутентификацию через OIDC и получил доступ.",
2673
+ "auditlog.action.user_created": "Новая учетная запись администратора Strapi была создана для этого пользователя при его первом входе через OIDC.",
2674
+ "auditlog.action.logout": "Пользователь вышел из системы, и его сеанс OIDC был завершен.",
2675
+ "auditlog.action.session_expired": "Срок действия токена доступа OIDC истек на момент выхода пользователя из системы, поэтому сеанс провайдера не мог быть завершен удаленно.",
2676
+ "auditlog.action.login_failure": "Во время потока входа в OIDC произошла непредвиденная ошибка.",
2677
+ "auditlog.action.missing_code": "Обратный вызов OIDC был получен без кода авторизации. Это может указывать на неправильно настроенного провайдера или поддельный запрос.",
2678
+ "auditlog.action.state_mismatch": "Параметр состояния в обратном вызове не соответствовал сохраненному в сеансе. Это может указывать на попытку CSRF или истекший сеанс входа.",
2679
+ "auditlog.action.nonce_mismatch": "Nonce в токене ID не соответствовал созданному при входе. Это может указывать на атаку воспроизведения токена.",
2680
+ "auditlog.action.token_exchange_failed": "Код авторизации не удалось обменять на токены. Провайдер OIDC отклонил запрос.",
2681
+ "auditlog.action.whitelist_rejected": "Адрес электронной почты пользователя отсутствует в белом списке. Доступ запрещен.",
2682
+ "auditlog.action.email_not_verified": "Провайдер OIDC не подтвердил адрес электронной почты пользователя как проверенный. Доступ запрещен.",
2683
+ "auditlog.action.id_token_invalid": "Токен ID не прошел проверку подписи, издателя, аудитории или срока действия. Доступ запрещен.",
2684
+ "auth.page.authenticating.title": "Аутентификация...",
2685
+ "auth.page.authenticating.noscript.heading": "Требуется JavaScript",
2686
+ "auth.page.authenticating.noscript.body": "Для завершения аутентификации должен быть включен JavaScript.",
2687
+ "auth.page.error.title": "Ошибка аутентификации",
2688
+ "auth.page.error.returnToLogin": "Вернуться ко входу",
2689
+ "user.missing_code": "Код авторизации не был получен от провайдера OIDC.",
2690
+ "user.invalid_state": "Несоответствие параметра состояния. Пожалуйста, перезапустите поток входа.",
2691
+ "user.signInError": "Ошибка аутентификации. Пожалуйста, попробуйте еще раз.",
2692
+ "settings.section": "OIDC",
2693
+ "settings.configuration": "Конфигурация",
2694
+ "audit.login_failure": "Ошибка: {message}",
2695
+ "audit.roles_updated": "Роли обновлены до: {roles}",
2696
+ "audit.user_created": "Назначенные роли: {roles}"
2697
+ };
2698
+ const __vite_glob_0_18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2699
+ __proto__: null,
2700
+ default: ru
2701
+ }, Symbol.toStringTag, { value: "Module" }));
2702
+ const sk = {
2703
+ "global.plugins.strapi-plugin-oidc": "OIDC plugin",
2704
+ "page.title": "Konfigurujte predvolené roly OIDC a ovládacie prvky prístupu.",
2705
+ "roles.notes": "Vyberte predvolenú/é rolú/roli priradenú/é novým používateľom pri ich prvom prihlásení. Toto nastavenie neovplyvňuje existujúcich používateľov.",
2706
+ "page.save": "Uložiť zmeny",
2707
+ "page.save.success": "Nastavenia aktualizované",
2708
+ "page.save.error": "Aktualizácia zlyhala.",
2709
+ "page.add": "Pridať",
2710
+ "page.cancel": "Zrušiť",
2711
+ "common.remove": "Odstrániť {label}",
2712
+ "page.ok": "OK",
2713
+ "roles.title": "Predvolená/é rola/roly",
2714
+ "roles.placeholder": "Vyberte predvolenú/é rolú/roly",
2715
+ "whitelist.title": "Whitelist",
2716
+ "whitelist.error.unique": "E-mailová adresa je už zaregistrovaná.",
2717
+ "whitelist.description": "Obmedzte overovanie OIDC na konkrétne e-mailové adresy. Používatelia dostanú roly z predvoleného mapovania rolí OIDC alebo zo svojej skupiny OIDC.",
2718
+ "alert.title.success": "Úspech",
2719
+ "alert.title.error": "Chyba",
2720
+ "alert.title.info": "Info",
2721
+ "pagination.previous": "Prejsť na predchádzajúcu stránku",
2722
+ "pagination.page": "Prejsť na stránku {page}",
2723
+ "pagination.next": "Prejsť na ďalšiu stránku",
2724
+ "whitelist.table.no": "Č.",
2725
+ "whitelist.table.email": "E-mail",
2726
+ "whitelist.table.created": "Vytvorené",
2727
+ "whitelist.delete.title": "Potvrdenie",
2728
+ "whitelist.delete.description": "Ste si istí, že chcete vymazať:",
2729
+ "whitelist.delete.note": "Tým sa neodstráni používateľský účet v Strapi.",
2730
+ "whitelist.toggle.enabled": "Povolené",
2731
+ "whitelist.toggle.disabled": "Zakázané",
2732
+ "whitelist.email.placeholder": "E-mailová adresa",
2733
+ "whitelist.table.empty": "Žiadne e-mailové adresy",
2734
+ "whitelist.delete.label": "Vymazať",
2735
+ "page.title.oidc": "OIDC",
2736
+ "enforce.title": "Vynútiť prihlásenie OIDC",
2737
+ "enforce.toggle.enabled": "Povolené",
2738
+ "enforce.toggle.disabled": "Zakázané",
2739
+ "enforce.warning": "Pred uložením zmien sa uistite, že OIDC je správne nakonfigurovaný, nebudete sa môcť normálne prihlásiť.",
2740
+ "enforce.config.info": "Vynucovanie je riadené konfiguračnou premennou OIDC_ENFORCE a nemožno ho tu zmeniť.",
2741
+ "login.settings.title": "Nastavenia prihlásenia",
2742
+ "login.sso": "Prihlásiť sa cez SSO",
2743
+ "pagination.total": "{count, plural, one {# položka} few {# položky} other {# položiek}}",
2744
+ "whitelist.import": "Importovať",
2745
+ "whitelist.export": "Exportovať",
2746
+ "whitelist.delete.all.label": "Vymazať všetko",
2747
+ "whitelist.delete.all.title": "Vymazať všetky položky",
2748
+ "whitelist.delete.all.description": "Tým sa trvalo odstránia všetky {count, plural, one {# položka} few {# položky} other {# položiek}} z whitelistu. Neuložené zmeny sa stratia.",
2749
+ "whitelist.import.error": "Neplatný súbor — očakávané pole JSON objektov s poľom e-mailu.",
2750
+ "whitelist.import.success": "Importované {count, plural, one {# nová položka} few {# nové položky} other {# nových položiek}}.",
2751
+ "whitelist.import.none": "Žiadne nové položky — všetky e-maily sú už na whitelistu.",
2752
+ "unsaved.title": "Neuložené zmeny",
2753
+ "unsaved.description": "Máte neuložené zmeny, ktoré sa stratia, ak odídete. Chcete pokračovať?",
2754
+ "unsaved.confirm": "Odísť",
2755
+ "unsaved.cancel": "Zostať",
2756
+ "auditlog.title": "Auditné protokoly",
2757
+ "auditlog.export": "Stiahnuť",
2758
+ "auditlog.table.timestamp": "Časová pečiatka",
2759
+ "auditlog.table.action": "Akcia",
2760
+ "auditlog.table.email": "E-mail",
2761
+ "auditlog.table.ip": "IP",
2762
+ "auditlog.table.details": "Podrobnosti",
2763
+ "auditlog.table.empty": "Žiadne položky auditného protokolu",
2764
+ "auditlog.clear": "Vymazať protokoly",
2765
+ "auditlog.clear.title": "Vymazať všetky protokoly",
2766
+ "auditlog.clear.description": "Tým sa trvalo vymažú všetky {count, plural, one {# položka auditného protokolu} few {# položky auditného protokolu} other {# položiek auditného protokolu}}. Túto akciu nemožno vrátiť späť.",
2767
+ "auditlog.clear.success": "Auditné protokoly vymazané",
2768
+ "auditlog.clear.error": "Nepodarilo sa vymazať auditné protokoly",
2769
+ "auditlog.export.error": "Nepodarilo sa exportovať auditné protokoly",
2770
+ "auditlog.filters": "Filtre",
2771
+ "auditlog.filters.action": "Akcia",
2772
+ "auditlog.filters.email": "E-mail",
2773
+ "auditlog.filters.ip": "IP adresa",
2774
+ "auditlog.filters.createdAt": "Dátum",
2775
+ "auditlog.filters.clear": "Vymazať filtre",
2776
+ "auditlog.filters.empty": "Žiadne položky nezodpovedajú aktuálnym filtrom",
2777
+ "auditlog.calendar.prevMonth": "Predchádzajúci mesiac",
2778
+ "auditlog.calendar.nextMonth": "Ďalší mesiac",
2779
+ "auditlog.calendar.state.today": "dnes",
2780
+ "auditlog.calendar.state.selected": "vybrané",
2781
+ "auditlog.calendar.state.alreadyAdded": "už pridané",
2782
+ "auditlog.calendar.state.future": "nedostupné, budúci dátum",
2783
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2784
+ "auditlog.action.login_success": "Používateľ bol úspešne overený prostredníctvom OIDC a bol mu udelený prístup.",
2785
+ "auditlog.action.user_created": "Pri prvom prihlásení OIDC bol pre tohto používateľa vytvorený nový účet správcu Strapi.",
2786
+ "auditlog.action.logout": "Používateľ sa odhlásil a jeho relácia OIDC bola ukončená.",
2787
+ "auditlog.action.session_expired": "Platnosť prístupového tokenu OIDC vypršala v čase, keď sa používateľ odhlásil, takže relácia poskytovateľa nemohla byť ukončená na diaľku.",
2788
+ "auditlog.action.login_failure": "Počas toku prihlásenia OIDC došlo k neočakávanej chybe.",
2789
+ "auditlog.action.missing_code": "OIDC callback bol prijatý bez autorizačného kódu. To môže naznačovať nesprávne nakonfigurovaného poskytovateľa alebo poškodenú požiadavku.",
2790
+ "auditlog.action.state_mismatch": "Parameter stavu v callbacku nezodpovedal tomu uloženému v relácii. To môže naznačovať pokus o CSRF alebo vypršanú reláciu prihlásenia.",
2791
+ "auditlog.action.nonce_mismatch": "Nonce v ID tokene nezodpovedala tej, ktorá bola generovaná pri prihlásení. To môže naznačovať útok replay tokenu.",
2792
+ "auditlog.action.token_exchange_failed": "Autorizačný kód sa nedal vymeniť za tokeny. Poskytovateľ OIDC odmietol požiadavku.",
2793
+ "auditlog.action.whitelist_rejected": "E-mailová adresa používateľa nie je na whitelistu. Prístup bol zamietnutý.",
2794
+ "auditlog.action.email_not_verified": "Poskytovateľ OIDC nepotvrdil e-mailovú adresu používateľa ako overenú. Prístup bol zamietnutý.",
2795
+ "auditlog.action.id_token_invalid": "ID token zlyhal pri overovaní podpisu, vydavateľa, publika alebo exspirácie. Prístup bol zamietnutý.",
2796
+ "auth.page.authenticating.title": "Overovanie...",
2797
+ "auth.page.authenticating.noscript.heading": "Vyžadovaný JavaScript",
2798
+ "auth.page.authenticating.noscript.body": "Na dokončenie overovania musí byť povolený JavaScript.",
2799
+ "auth.page.error.title": "Overenie zlyhalo",
2800
+ "auth.page.error.returnToLogin": "Späť na prihlásenie",
2801
+ "user.missing_code": "Autorizačný kód nebol prijatý od poskytovateľa OIDC.",
2802
+ "user.invalid_state": "Nezhoda parametra stavu. Reštartujte prosím tok prihlásenia.",
2803
+ "user.signInError": "Overenie zlyhalo. Skúste to prosím znova.",
2804
+ "settings.section": "OIDC",
2805
+ "settings.configuration": "Konfigurácia",
2806
+ "audit.login_failure": "Chyba: {message}",
2807
+ "audit.roles_updated": "Role aktualizované na: {roles}",
2808
+ "audit.user_created": "Priradené role: {roles}"
2809
+ };
2810
+ const __vite_glob_0_19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2811
+ __proto__: null,
2812
+ default: sk
2813
+ }, Symbol.toStringTag, { value: "Module" }));
2814
+ const sv = {
2815
+ "global.plugins.strapi-plugin-oidc": "OIDC-plugin",
2816
+ "page.title": "Konfigurera standard OIDC-roller och åtkomstkontroller.",
2817
+ "roles.notes": "Välj standardrollen/rollerna som tilldelas nya användare vid deras första inloggning. Denna inställning påverkar inte befintliga användare.",
2818
+ "page.save": "Spara ändringar",
2819
+ "page.save.success": "Inställningar uppdaterade",
2820
+ "page.save.error": "Uppdatering misslyckades.",
2821
+ "page.add": "Lägg till",
2822
+ "page.cancel": "Avbryt",
2823
+ "common.remove": "Ta bort {label}",
2824
+ "page.ok": "OK",
2825
+ "roles.title": "Standardroll(er)",
2826
+ "roles.placeholder": "Välj standardroll(er)",
2827
+ "whitelist.title": "Vitlista",
2828
+ "whitelist.error.unique": "E-postadressen är redan registrerad.",
2829
+ "whitelist.description": "Begränsa OIDC-autentisering till specifika e-postadresser. Användare får roller från standard OIDC-rolsmappning eller sin OIDC-grupp.",
2830
+ "alert.title.success": "Framgång",
2831
+ "alert.title.error": "Fel",
2832
+ "alert.title.info": "Info",
2833
+ "pagination.previous": "Gå till föregående sida",
2834
+ "pagination.page": "Gå till sida {page}",
2835
+ "pagination.next": "Gå till nästa sida",
2836
+ "whitelist.table.no": "Nr.",
2837
+ "whitelist.table.email": "E-post",
2838
+ "whitelist.table.created": "Skapad",
2839
+ "whitelist.delete.title": "Bekräftelse",
2840
+ "whitelist.delete.description": "Är du säker på att du vill ta bort:",
2841
+ "whitelist.delete.note": "Detta tar inte bort användarkontot i Strapi.",
2842
+ "whitelist.toggle.enabled": "Aktiverad",
2843
+ "whitelist.toggle.disabled": "Inaktiverad",
2844
+ "whitelist.email.placeholder": "E-postadress",
2845
+ "whitelist.table.empty": "Inga e-postadresser",
2846
+ "whitelist.delete.label": "Ta bort",
2847
+ "page.title.oidc": "OIDC",
2848
+ "enforce.title": "Framtvinga OIDC-inloggning",
2849
+ "enforce.toggle.enabled": "Aktiverad",
2850
+ "enforce.toggle.disabled": "Inaktiverad",
2851
+ "enforce.warning": "Se till att OIDC är korrekt konfigurerat innan du sparar ändringar, du kommer inte att kunna logga in normalt.",
2852
+ "enforce.config.info": "Framtvingande styrs av OIDC_ENFORCE-konfigurationsvariabeln och kan inte ändras här.",
2853
+ "login.settings.title": "Inloggningsinställningar",
2854
+ "login.sso": "Logga in via SSO",
2855
+ "pagination.total": "{count, plural, one {# post} other {# poster}}",
2856
+ "whitelist.import": "Importera",
2857
+ "whitelist.export": "Exportera",
2858
+ "whitelist.delete.all.label": "Ta bort alla",
2859
+ "whitelist.delete.all.title": "Ta bort alla poster",
2860
+ "whitelist.delete.all.description": "Detta tar permanent bort alla {count, plural, one {# post} other {# poster}} från vitlistan. Osparade ändringar går förlorade.",
2861
+ "whitelist.import.error": "Ogiltig fil — förväntade en JSON-matris av objekt med ett e-postfält.",
2862
+ "whitelist.import.success": "{count, plural, one {# ny post} other {# nya poster}} importerade.",
2863
+ "whitelist.import.none": "Inga nya poster — alla e-postmeddelanden finns redan i vitlistan.",
2864
+ "unsaved.title": "Osparade ändringar",
2865
+ "unsaved.description": "Du har osparade ändringar som går förlorade om du lämnar. Vill du fortsätta?",
2866
+ "unsaved.confirm": "Lämna",
2867
+ "unsaved.cancel": "Stanna",
2868
+ "auditlog.title": "Granskningsloggar",
2869
+ "auditlog.export": "Ladda ner",
2870
+ "auditlog.table.timestamp": "Tidsstämpel",
2871
+ "auditlog.table.action": "Åtgärd",
2872
+ "auditlog.table.email": "E-post",
2873
+ "auditlog.table.ip": "IP",
2874
+ "auditlog.table.details": "Detaljer",
2875
+ "auditlog.table.empty": "Inga granskningsloggposter",
2876
+ "auditlog.clear": "Rensa loggar",
2877
+ "auditlog.clear.title": "Rensa alla loggar",
2878
+ "auditlog.clear.description": "Detta tar permanent bort alla {count, plural, one {# granskningsloggpost} other {# granskningsloggposter}}. Åtgärden kan inte ångras.",
2879
+ "auditlog.clear.success": "Granskningsloggar rensade",
2880
+ "auditlog.clear.error": "Det gick inte att rensa granskningsloggar",
2881
+ "auditlog.export.error": "Det gick inte att exportera granskningsloggar",
2882
+ "auditlog.filters": "Filter",
2883
+ "auditlog.filters.action": "Åtgärd",
2884
+ "auditlog.filters.email": "E-post",
2885
+ "auditlog.filters.ip": "IP-adress",
2886
+ "auditlog.filters.createdAt": "Datum",
2887
+ "auditlog.filters.clear": "Rensa filter",
2888
+ "auditlog.filters.empty": "Inga poster matchar aktuella filter",
2889
+ "auditlog.calendar.prevMonth": "Föregående månad",
2890
+ "auditlog.calendar.nextMonth": "Nästa månad",
2891
+ "auditlog.calendar.state.today": "idag",
2892
+ "auditlog.calendar.state.selected": "vald",
2893
+ "auditlog.calendar.state.alreadyAdded": "redan tillagd",
2894
+ "auditlog.calendar.state.future": "inte tillgänglig, framtida datum",
2895
+ "auditlog.calendar.dayWithState": "{date}, {state}",
2896
+ "auditlog.action.login_success": "Användaren autentiserades framgångsrikt via OIDC och beviljades åtkomst.",
2897
+ "auditlog.action.user_created": "Ett nytt Strapi-administratörskonto skapades för denna användare vid deras första OIDC-inloggning.",
2898
+ "auditlog.action.logout": "Användaren loggade ut och deras OIDC-session avslutades.",
2899
+ "auditlog.action.session_expired": "OIDC-åtkomsttokenet hade gått ut vid den tidpunkt användaren loggade ut, så leverantörssessionen kunde inte avslutas på distans.",
2900
+ "auditlog.action.login_failure": "Ett oväntat fel uppstod under OIDC-inloggningsflödet.",
2901
+ "auditlog.action.missing_code": "OIDC-callbacken mottogs utan en auktoriseringskod. Detta kan indikera en felkonfigurerad leverantör eller en manipuleras förfrågan.",
2902
+ "auditlog.action.state_mismatch": "Tillståndsparametern i callbacken matchade inte den som lagrades i sessionen. Detta kan indikera ett CSRF-försök eller en utgången inloggningssession.",
2903
+ "auditlog.action.nonce_mismatch": "Nonce i ID-tokenet matchade inte den som genererades vid inloggningen. Detta kan indikera ett token-replay-attack.",
2904
+ "auditlog.action.token_exchange_failed": "Auktoriseringskoden kunde inte exchangas mot token. OIDC-leverantören avslog förfrågan.",
2905
+ "auditlog.action.whitelist_rejected": "Användarens e-postadress finns inte på vitlistan. Åtkomst nekades.",
2906
+ "auditlog.action.email_not_verified": "OIDC-leverantören bekräftade inte användarens e-postadress som verifierad. Åtkomst nekades.",
2907
+ "auditlog.action.id_token_invalid": "ID-tokenet misslyckades med signatur-, issuer-, publik- eller utgångsvalidering. Åtkomst nekades.",
2908
+ "auth.page.authenticating.title": "Autentiserar...",
2909
+ "auth.page.authenticating.noscript.heading": "JavaScript krävs",
2910
+ "auth.page.authenticating.noscript.body": "JavaScript måste vara aktiverat för att autentiseringen ska slutföras.",
2911
+ "auth.page.error.title": "Autentisering misslyckades",
2912
+ "auth.page.error.returnToLogin": "Tillbaka till inloggning",
2913
+ "user.missing_code": "Auktoriseringskod mottogs inte från OIDC-leverantören.",
2914
+ "user.invalid_state": "Tillståndsparameter mismatch. Starta om inloggningsflödet.",
2915
+ "user.signInError": "Autentisering misslyckades. Försök igen.",
2916
+ "settings.section": "OIDC",
2917
+ "settings.configuration": "Konfiguration",
2918
+ "audit.login_failure": "Fel: {message}",
2919
+ "audit.roles_updated": "Roller uppdaterade till: {roles}",
2920
+ "audit.user_created": "Tilldelade roller: {roles}"
2921
+ };
2922
+ const __vite_glob_0_20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2923
+ __proto__: null,
2924
+ default: sv
2925
+ }, Symbol.toStringTag, { value: "Module" }));
2926
+ const th = {
2927
+ "global.plugins.strapi-plugin-oidc": "ปลั๊กอิน OIDC",
2928
+ "page.title": "กำหนดค่าบทบาทเริ่มต้นของ OIDC และการควบคุมการเข้าถึง",
2929
+ "roles.notes": "เลือกบทบาทเริ่มต้นที่กำหนดให้ผู้ใช้ใหม่เมื่อเข้าสู่ระบบครั้งแรก การตั้งค่านี้ไม่ส่งผลกระทบต่อผู้ใช้ที่มีอยู่แล้ว",
2930
+ "page.save": "บันทึกการเปลี่ยนแปลง",
2931
+ "page.save.success": "อัปเดตการตั้งค่าแล้ว",
2932
+ "page.save.error": "การอัปเดตล้มเหลว",
2933
+ "page.add": "เพิ่ม",
2934
+ "page.cancel": "ยกเลิก",
2935
+ "common.remove": "ลบ {label}",
2936
+ "page.ok": "ตกลง",
2937
+ "roles.title": "บทบาทเริ่มต้น",
2938
+ "roles.placeholder": "เลือกบทบาทเริ่มต้น",
2939
+ "whitelist.title": "Whitelist",
2940
+ "whitelist.error.unique": "ที่อยู่อีเมลลงทะเบียนแล้ว",
2941
+ "whitelist.description": "จำกัดการตรวจสอบ OIDC ไปยังที่อยู่อีเมลเฉพาะ ผู้ใช้ได้รับบทบาทจากการแมปบทบาท OIDC เริ่มต้นหรือกลุ่ม OIDC ของตน",
2942
+ "alert.title.success": "สำเร็จ",
2943
+ "alert.title.error": "ข้อผิดพลาด",
2944
+ "alert.title.info": "ข้อมูล",
2945
+ "pagination.previous": "ไปหน้าก่อนหน้า",
2946
+ "pagination.page": "ไปหน้า {page}",
2947
+ "pagination.next": "ไปหน้าถัดไป",
2948
+ "whitelist.table.no": "ลำดับ",
2949
+ "whitelist.table.email": "อีเมล",
2950
+ "whitelist.table.created": "สร้างเมื่อ",
2951
+ "whitelist.delete.title": "ยืนยัน",
2952
+ "whitelist.delete.description": "คุณแน่ใจหรือไม่ที่จะลบ:",
2953
+ "whitelist.delete.note": "สิ่งนี้จะไม่ลบบัญชีผู้ใช้ใน Strapi",
2954
+ "whitelist.toggle.enabled": "เปิดใช้งาน",
2955
+ "whitelist.toggle.disabled": "ปิดใช้งาน",
2956
+ "whitelist.email.placeholder": "ที่อยู่อีเมล",
2957
+ "whitelist.table.empty": "ไม่มีที่อยู่อีเมล",
2958
+ "whitelist.delete.label": "ลบ",
2959
+ "page.title.oidc": "OIDC",
2960
+ "enforce.title": "บังคับเข้าสู่ระบบ OIDC",
2961
+ "enforce.toggle.enabled": "เปิดใช้งาน",
2962
+ "enforce.toggle.disabled": "ปิดใช้งาน",
2963
+ "enforce.warning": "ตรวจสอบให้แน่ใจว่า OIDC ถูกตั้งค่าอย่างถูกต้องก่อนบันทึกการเปลี่ยนแปลง คุณจะไม่สามารถเข้าสู่ระบบตามปกติได้",
2964
+ "enforce.config.info": "การบังคับใช้ถูกควบคุมโดยตัวแปรการกำหนดค่า OIDC_ENFORCE และไม่สามารถเปลี่ยนแปลงได้ที่นี่",
2965
+ "login.settings.title": "การตั้งค่าการเข้าสู่ระบบ",
2966
+ "login.sso": "เข้าสู่ระบบผ่าน SSO",
2967
+ "pagination.total": "{count, plural, other {# รายการ}}",
2968
+ "whitelist.import": "นำเข้า",
2969
+ "whitelist.export": "ส่งออก",
2970
+ "whitelist.delete.all.label": "ลบทั้งหมด",
2971
+ "whitelist.delete.all.title": "ลบรายการทั้งหมด",
2972
+ "whitelist.delete.all.description": "สิ่งนี้จะลบ {count, plural, other {# รายการ}} ออกจาก whitelist อย่างถาวร การเปลี่ยนแปลงที่ยังไม่ได้บันทึกจะสูญหาย",
2973
+ "whitelist.import.error": "ไฟล์ไม่ถูกต้อง — คาดว่าจะเป็นอาร์เรย์ JSON ของออบเจ็กต์ที่มีฟิลด์อีเมล",
2974
+ "whitelist.import.success": "นำเข้า {count, plural, other {# รายการใหม่}}",
2975
+ "whitelist.import.none": "ไม่มีรายการใหม่ — อีเมลทั้งหมดอยู่ใน whitelist แล้ว",
2976
+ "unsaved.title": "การเปลี่ยนแปลงที่ยังไม่ได้บันทึก",
2977
+ "unsaved.description": "คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกซึ่งจะสูญหายหากคุณออก คุณต้องการดำเนินการต่อหรือไม่",
2978
+ "unsaved.confirm": "ออก",
2979
+ "unsaved.cancel": "อยู่",
2980
+ "auditlog.title": "บันทึกการตรวจสอบ",
2981
+ "auditlog.export": "ดาวน์โหลด",
2982
+ "auditlog.table.timestamp": "การประทับเวลา",
2983
+ "auditlog.table.action": "การดำเนินการ",
2984
+ "auditlog.table.email": "อีเมล",
2985
+ "auditlog.table.ip": "IP",
2986
+ "auditlog.table.details": "รายละเอียด",
2987
+ "auditlog.table.empty": "ไม่มีรายการบันทึกการตรวจสอบ",
2988
+ "auditlog.clear": "ล้างบันทึก",
2989
+ "auditlog.clear.title": "ล้างบันทึกทั้งหมด",
2990
+ "auditlog.clear.description": "สิ่งนี้จะลบ {count, plural, other {# รายการบันทึกการตรวจสอบ}} อย่างถาวร การดำเนินการนี้ไม่สามารถเลิกทำได้",
2991
+ "auditlog.clear.success": "ล้างบันทึกการตรวจสอบแล้ว",
2992
+ "auditlog.clear.error": "ไม่สามารถล้างบันทึกการตรวจสอบ",
2993
+ "auditlog.export.error": "ไม่สามารถส่งออกบันทึกการตรวจสอบ",
2994
+ "auditlog.filters": "ตัวกรอง",
2995
+ "auditlog.filters.action": "การดำเนินการ",
2996
+ "auditlog.filters.email": "อีเมล",
2997
+ "auditlog.filters.ip": "ที่อยู่ IP",
2998
+ "auditlog.filters.createdAt": "วันที่",
2999
+ "auditlog.filters.clear": "ล้างตัวกรอง",
3000
+ "auditlog.filters.empty": "ไม่มีรายการที่ตรงกับตัวกรองปัจจุบัน",
3001
+ "auditlog.calendar.prevMonth": "เดือนก่อนหน้า",
3002
+ "auditlog.calendar.nextMonth": "เดือนถัดไป",
3003
+ "auditlog.calendar.state.today": "วันนี้",
3004
+ "auditlog.calendar.state.selected": "เลือกแล้ว",
3005
+ "auditlog.calendar.state.alreadyAdded": "เพิ่มแล้ว",
3006
+ "auditlog.calendar.state.future": "ไม่พร้อมใช้งาน วันที่ในอนาคต",
3007
+ "auditlog.calendar.dayWithState": "{date}, {state}",
3008
+ "auditlog.action.login_success": "ผู้ใช้ได้รับการตรวจสอบสิทธิ์ผ่าน OIDC สำเร็จและได้รับอนุญาตให้เข้าถึง",
3009
+ "auditlog.action.user_created": "บัญชีผู้ดูแลระบบ Strapi ใหม่ถูกสร้างขึ้นสำหรับผู้ใช้รายนี้ในการเข้าสู่ระบบ OIDC ครั้งแรก",
3010
+ "auditlog.action.logout": "ผู้ใช้ออกจากระบบและเซสชัน OIDC ถูกยุติลง",
3011
+ "auditlog.action.session_expired": "โทเค็นการเข้าถึง OIDC หมดอายุแล้วในเวลาที่ผู้ใช้ออกจากระบบ ดังนั้นเซสชันของผู้ให้บริการไม่สามารถยุติจากระยะไกลได้",
3012
+ "auditlog.action.login_failure": "เกิดข้อผิดพลาดที่ไม่คาดคิดระหว่างการเข้าสู่ระบบ OIDC",
3013
+ "auditlog.action.missing_code": "การโทรกลับ OIDC ได้รับโดยไม่มีรหัสการอนุญาต สิ่งนี้อาจบ่งชี้ถึงผู้ให้บริการที่กำหนดค่าผิดหรือคำขอที่ถูกดัดแปลง",
3014
+ "auditlog.action.state_mismatch": "พารามิเตอร์สถานะในการโทรกลับไม่ตรงกับสิ่งที่จัดเก็บในเซสชัน สิ่งนี้อาจบ่งชี้ถึงความพยายาม CSRF หรือเซสชันการเข้าสู่ระบบที่หมดอายุ",
3015
+ "auditlog.action.nonce_mismatch": "Nonce ในโทเค็น ID ไม่ตรงกับที่สร้างไว้เมื่อเข้าสู่ระบบ สิ่งนี้อาจบ่งชี้ถึงการโจมตีแบบ replay โทเค็น",
3016
+ "auditlog.action.token_exchange_failed": "ไม่สามารถแลกเปลี่ยนรหัสการอนุญาตเป็นโทเค็นได้ ผู้ให้บริการ OIDC ปฏิเสธคำขอ",
3017
+ "auditlog.action.whitelist_rejected": "ที่อยู่อีเมลของผู้ใช้ไม่อยู่ใน whitelist การเข้าถึงถูกปฏิเสธ",
3018
+ "auditlog.action.email_not_verified": "ผู้ให้บริการ OIDC ไม่ได้ยืนยันที่อยู่อีเมลของผู้ใช้ว่าได้รับการตรวจสอบแล้ว การเข้าถึงถูกปฏิเสธ",
3019
+ "auditlog.action.id_token_invalid": "โทเค็น ID ไม่ผ่านการตรวจสอบลายเซ็น ผู้ออก ผู้ชม หรือการหมดอายุ การเข้าถึงถูกปฏิเสธ",
3020
+ "auth.page.authenticating.title": "กำลังตรวจสอบสิทธิ์...",
3021
+ "auth.page.authenticating.noscript.heading": "ต้องใช้ JavaScript",
3022
+ "auth.page.authenticating.noscript.body": "ต้องเปิดใช้งาน JavaScript เพื่อให้การตรวจสอบสิทธิ์เสร็จสมบูรณ์",
3023
+ "auth.page.error.title": "การตรวจสอบสิทธิ์ล้มเหลว",
3024
+ "auth.page.error.returnToLogin": "กลับไปที่การเข้าสู่ระบบ",
3025
+ "user.missing_code": "ไม่ได้รับรหัสการอนุญาตจากผู้ให้บริการ OIDC",
3026
+ "user.invalid_state": "พารามิเตอร์สถานะไม่ตรงกัน โปรดเริ่มต้นการเข้าสู่ระบบใหม่",
3027
+ "user.signInError": "การตรวจสอบสิทธิ์ล้มเหลว โปรดลองอีกครั้ง",
3028
+ "settings.section": "OIDC",
3029
+ "settings.configuration": "การกำหนดค่า",
3030
+ "audit.login_failure": "ข้อผิดพลาด: {message}",
3031
+ "audit.roles_updated": "บทบาทอัปเดตเป็น: {roles}",
3032
+ "audit.user_created": "บทบาทที่กำหนด: {roles}"
3033
+ };
3034
+ const __vite_glob_0_21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3035
+ __proto__: null,
3036
+ default: th
3037
+ }, Symbol.toStringTag, { value: "Module" }));
3038
+ const tr = {
3039
+ "global.plugins.strapi-plugin-oidc": "OIDC Eklentisi",
3040
+ "page.title": "Varsayılan OIDC rollerini ve erişim kontrollerini yapılandırın.",
3041
+ "roles.notes": "Yeni kullanıcılara ilk girişlerinde atanan varsayılan rol(leri) seçin. Bu ayar mevcut kullanıcları etkilemez.",
3042
+ "page.save": "Değişiklikleri Kaydet",
3043
+ "page.save.success": "Ayarlar güncellendi",
3044
+ "page.save.error": "Güncelleme başarısız.",
3045
+ "page.add": "Ekle",
3046
+ "page.cancel": "İptal",
3047
+ "common.remove": "{label} Kaldır",
3048
+ "page.ok": "Tamam",
3049
+ "roles.title": "Varsayılan Rol(ler)",
3050
+ "roles.placeholder": "Varsayılan rol(ler) seçin",
3051
+ "whitelist.title": "İzin Listesi",
3052
+ "whitelist.error.unique": "E-posta adresi zaten kayıtlı.",
3053
+ "whitelist.description": "OIDC kimlik doğrulamasını belirli e-posta adresleriyle sınırlayın. Kullanıcılar, varsayılan OIDC rol eşlemesinden veya OIDC gruplarından roller alır.",
3054
+ "alert.title.success": "Başarılı",
3055
+ "alert.title.error": "Hata",
3056
+ "alert.title.info": "Bilgi",
3057
+ "pagination.previous": "Önceki sayfaya git",
3058
+ "pagination.page": "Sayfa {page}'e git",
3059
+ "pagination.next": "Sonraki sayfaya git",
3060
+ "whitelist.table.no": "No",
3061
+ "whitelist.table.email": "E-posta",
3062
+ "whitelist.table.created": "Oluşturuldu",
3063
+ "whitelist.delete.title": "Onay",
3064
+ "whitelist.delete.description": "Silmek istediğinizden emin misiniz:",
3065
+ "whitelist.delete.note": "Bu, Strapi'deki kullanıcı hesabını silmez.",
3066
+ "whitelist.toggle.enabled": "Etkin",
3067
+ "whitelist.toggle.disabled": "Devre Dışı",
3068
+ "whitelist.email.placeholder": "E-posta adresi",
3069
+ "whitelist.table.empty": "E-posta adresi yok",
3070
+ "whitelist.delete.label": "Sil",
3071
+ "page.title.oidc": "OIDC",
3072
+ "enforce.title": "OIDC Girişini Zorla",
3073
+ "enforce.toggle.enabled": "Etkin",
3074
+ "enforce.toggle.disabled": "Devre Dışı",
3075
+ "enforce.warning": "Değişiklikleri kaydetmeden önce OIDC'nin doğru yapılandırıldığından emin olun, normal olarak giriş yapamayacaksınız.",
3076
+ "enforce.config.info": "Zorlama, OIDC_ENFORCE yapılandırma değişkeni tarafından kontrol edilir ve burada değiştirilemez.",
3077
+ "login.settings.title": "Giriş Ayarları",
3078
+ "login.sso": "SSO ile Giriş Yap",
3079
+ "pagination.total": "{count, plural, other {# kayıt}}",
3080
+ "whitelist.import": "İçe Aktar",
3081
+ "whitelist.export": "Dışa Aktar",
3082
+ "whitelist.delete.all.label": "Tümünü Sil",
3083
+ "whitelist.delete.all.title": "Tüm Kayıtları Sil",
3084
+ "whitelist.delete.all.description": "Bu, izin listesindeki tüm {count, plural, other {# kayıtı}} kalıcı olarak kaldıracaktır. Kaydedilmemiş değişiklikler kaybolacaktır.",
3085
+ "whitelist.import.error": "Geçersiz dosya — e-posta alanına sahip JSON nesne dizisi bekleniyordu.",
3086
+ "whitelist.import.success": "{count, plural, other {# yeni kayıt}} içe aktarıldı.",
3087
+ "whitelist.import.none": "Yeni kayıt yok — tüm e-postalar zaten izin listesinde.",
3088
+ "unsaved.title": "Kaydedilmemiş Değişiklikler",
3089
+ "unsaved.description": "Ayrılırsanız kaybolacak kaydedilmemiş değişiklikleriniz var. Devam etmek istiyor musunuz?",
3090
+ "unsaved.confirm": "Ayrıl",
3091
+ "unsaved.cancel": "Kal",
3092
+ "auditlog.title": "Denetim Günlükleri",
3093
+ "auditlog.export": "İndir",
3094
+ "auditlog.table.timestamp": "Zaman Damgası",
3095
+ "auditlog.table.action": "Eylem",
3096
+ "auditlog.table.email": "E-posta",
3097
+ "auditlog.table.ip": "IP",
3098
+ "auditlog.table.details": "Detaylar",
3099
+ "auditlog.table.empty": "Denetim günlüğü kaydı yok",
3100
+ "auditlog.clear": "Günlükleri Temizle",
3101
+ "auditlog.clear.title": "Tüm Günlükleri Temizle",
3102
+ "auditlog.clear.description": "Bu, tüm {count, plural, other {# denetim günlüğü kaydını}} kalıcı olarak silecektir. Bu eylem geri alınamaz.",
3103
+ "auditlog.clear.success": "Denetim günlükleri temizlendi",
3104
+ "auditlog.clear.error": "Denetim günlükleri temizlenemedi",
3105
+ "auditlog.export.error": "Denetim günlükleri dışa aktarılamadı",
3106
+ "auditlog.filters": "Filtreler",
3107
+ "auditlog.filters.action": "Eylem",
3108
+ "auditlog.filters.email": "E-posta",
3109
+ "auditlog.filters.ip": "IP adresi",
3110
+ "auditlog.filters.createdAt": "Tarih",
3111
+ "auditlog.filters.clear": "Filtreleri Temizle",
3112
+ "auditlog.filters.empty": "Mevcut filtrelere uyan kayıt yok",
3113
+ "auditlog.calendar.prevMonth": "Önceki ay",
3114
+ "auditlog.calendar.nextMonth": "Sonraki ay",
3115
+ "auditlog.calendar.state.today": "bugün",
3116
+ "auditlog.calendar.state.selected": "seçildi",
3117
+ "auditlog.calendar.state.alreadyAdded": "zaten eklendi",
3118
+ "auditlog.calendar.state.future": "kullanılamaz, gelecek tarih",
3119
+ "auditlog.calendar.dayWithState": "{date}, {state}",
3120
+ "auditlog.action.login_success": "Kullanıcı OIDC aracılığıyla başarıyla kimlik doğruladı ve erişim yetkisi aldı.",
3121
+ "auditlog.action.user_created": "Bu kullanıcı için ilk OIDC girişinde yeni bir Strapi yönetici hesabı oluşturuldu.",
3122
+ "auditlog.action.logout": "Kullanıcı çıkış yaptı ve OIDC oturumu sonlandırıldı.",
3123
+ "auditlog.action.session_expired": "Kullanıcı çıkış yaptığında OIDC erişim belirtecinin süresi dolmuştu, bu nedenle sağlayıcı oturumu uzaktan sonlandırılamadı.",
3124
+ "auditlog.action.login_failure": "OIDC giriş akışı sırasında beklenmeyen bir hata oluştu.",
3125
+ "auditlog.action.missing_code": "OIDC geri araması, yetkilendirme kodu olmadan alındı. Bu, yanlış yapılandırılmış bir sağlayıcıyı veya kurcalanmış bir isteği gösterebilir.",
3126
+ "auditlog.action.state_mismatch": "Geri aramadaki durum parametresi, oturumda depolananla eşleşmedi. Bu, bir CSRF girişimi veya süresi dolmuş bir giriş oturumunu gösterebilir.",
3127
+ "auditlog.action.nonce_mismatch": "Kimlik belirtecindeki nonce, giriş sırasında oluşturulanla eşleşmedi. Bu, bir belirteç yeniden yürütme saldırısını gösterebilir.",
3128
+ "auditlog.action.token_exchange_failed": "Yetkilendirme kodu belirteçlerle değiştirilemedi. OIDC sağlayıcısı isteği reddetti.",
3129
+ "auditlog.action.whitelist_rejected": "Kullanıcının e-posta adresi izin listesinde değil. Erişim reddedildi.",
3130
+ "auditlog.action.email_not_verified": "OIDC sağlayıcısı, kullanıcının e-posta adresini doğrulanmış olarak onaylamadı. Erişim reddedildi.",
3131
+ "auditlog.action.id_token_invalid": "Kimlik belirteci, imza, ihraççı, hedef kitle veya sona erme doğrulamasını geçemedi. Erişim reddedildi.",
3132
+ "auth.page.authenticating.title": "Kimlik Doğrulama...",
3133
+ "auth.page.authenticating.noscript.heading": "JavaScript Gerekli",
3134
+ "auth.page.authenticating.noscript.body": "Kimlik doğrulamanın tamamlanması için JavaScript'in etkinleştirilmesi gerekir.",
3135
+ "auth.page.error.title": "Kimlik Doğrulama Başarısız",
3136
+ "auth.page.error.returnToLogin": "Girişe Dön",
3137
+ "user.missing_code": "OIDC sağlayıcısından yetkilendirme kodu alınmadı.",
3138
+ "user.invalid_state": "Durum parametresi uyuşmazlığı. Lütfen giriş akışını yeniden başlatın.",
3139
+ "user.signInError": "Kimlik doğrulama başarısız. Lütfen tekrar deneyin.",
3140
+ "settings.section": "OIDC",
3141
+ "settings.configuration": "Yapılandırma",
3142
+ "audit.login_failure": "Hata: {message}",
3143
+ "audit.roles_updated": "Roller şu şekilde güncellendi: {roles}",
3144
+ "audit.user_created": "Atanan roller: {roles}"
3145
+ };
3146
+ const __vite_glob_0_22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3147
+ __proto__: null,
3148
+ default: tr
3149
+ }, Symbol.toStringTag, { value: "Module" }));
3150
+ const uk = {
3151
+ "global.plugins.strapi-plugin-oidc": "Плагін OIDC",
3152
+ "page.title": "Налаштуйте ролі OIDC за замовчуванням та елементи керування доступом.",
3153
+ "roles.notes": "Виберіть роль(і) за замовчуванням, яка буде призначена новим користувачам під час їх першого входу. Це налаштування не впливає на існуючих користувачів.",
3154
+ "page.save": "Зберегти зміни",
3155
+ "page.save.success": "Налаштування оновлено",
3156
+ "page.save.error": "Оновлення не вдалося.",
3157
+ "page.add": "Додати",
3158
+ "page.cancel": "Скасувати",
3159
+ "common.remove": "Видалити {label}",
3160
+ "page.ok": "OK",
3161
+ "roles.title": "Роль(і) за замовчуванням",
3162
+ "roles.placeholder": "Виберіть роль(і) за замовчуванням",
3163
+ "whitelist.title": "Білий список",
3164
+ "whitelist.error.unique": "Адреса електронної пошти вже зареєстрована.",
3165
+ "whitelist.description": "Обмежте автентифікацію OIDC до конкретних адрес електронної пошти. Користувачі отримують ролі зі стандартного зіставлення ролей OIDC або своєї групи OIDC.",
3166
+ "alert.title.success": "Успіх",
3167
+ "alert.title.error": "Помилка",
3168
+ "alert.title.info": "Інформація",
3169
+ "pagination.previous": "Перейти на попередню сторінку",
3170
+ "pagination.page": "Перейти на сторінку {page}",
3171
+ "pagination.next": "Перейти на наступну сторінку",
3172
+ "whitelist.table.no": "№",
3173
+ "whitelist.table.email": "Електронна пошта",
3174
+ "whitelist.table.created": "Створено",
3175
+ "whitelist.delete.title": "Підтвердження",
3176
+ "whitelist.delete.description": "Ви впевнені, що хочете видалити:",
3177
+ "whitelist.delete.note": "Це не призведе до видалення облікового запису користувача в Strapi.",
3178
+ "whitelist.toggle.enabled": "Увімкнено",
3179
+ "whitelist.toggle.disabled": "Вимкнено",
3180
+ "whitelist.email.placeholder": "Адреса електронної пошти",
3181
+ "whitelist.table.empty": "Немає адрес електронної пошти",
3182
+ "whitelist.delete.label": "Видалити",
3183
+ "page.title.oidc": "OIDC",
3184
+ "enforce.title": "Примусовий вхід через OIDC",
3185
+ "enforce.toggle.enabled": "Увімкнено",
3186
+ "enforce.toggle.disabled": "Вимкнено",
3187
+ "enforce.warning": "Переконайтеся, що OIDC налаштовано правильно, перш ніж зберігати зміни, інакше ви не зможете увійти звичайним способом.",
3188
+ "enforce.config.info": "Примусове застосування контролюється змінною конфігурації OIDC_ENFORCE і не може бути змінено тут.",
3189
+ "login.settings.title": "Налаштування входу",
3190
+ "login.sso": "Вхід через SSO",
3191
+ "pagination.total": "{count, plural, one {# запис} few {# записи} many {# записів} other {# записів}}",
3192
+ "whitelist.import": "Імпорт",
3193
+ "whitelist.export": "Експорт",
3194
+ "whitelist.delete.all.label": "Видалити все",
3195
+ "whitelist.delete.all.title": "Видалити всі записи",
3196
+ "whitelist.delete.all.description": "Це назавжди видалить всі {count, plural, one {# запис} few {# записи} many {# записів} other {# записів}} з білого списку. Не保存тені зміни будуть втрачені.",
3197
+ "whitelist.import.error": "Неправильний файл — очікувався масив JSON об'єктів з полем електронної пошти.",
3198
+ "whitelist.import.success": "Імпортовано {count, plural, one {# новий запис} few {# нові записи} many {# нових записів} other {# нових записів}}.",
3199
+ "whitelist.import.none": "Немає нових записів — всі електронні листи вже є в білому списку.",
3200
+ "unsaved.title": "Не збережені зміни",
3201
+ "unsaved.description": "У вас є не збережені зміни, які будуть втрачені, якщо ви вийдете. Бажаєте продовжити?",
3202
+ "unsaved.confirm": "Вийти",
3203
+ "unsaved.cancel": "Залишитись",
3204
+ "auditlog.title": "Журнали аудиту",
3205
+ "auditlog.export": "Завантажити",
3206
+ "auditlog.table.timestamp": "Часова мітка",
3207
+ "auditlog.table.action": "Дія",
3208
+ "auditlog.table.email": "Електронна пошта",
3209
+ "auditlog.table.ip": "IP",
3210
+ "auditlog.table.details": "Деталі",
3211
+ "auditlog.table.empty": "Немає записів журналу аудиту",
3212
+ "auditlog.clear": "Очистити журнали",
3213
+ "auditlog.clear.title": "Очистити всі журнали",
3214
+ "auditlog.clear.description": "Це назавжди видалить всі {count, plural, one {# запис журналу аудиту} few {# записи журналу аудиту} many {# записів журналу аудиту} other {# записів журналу аудиту}}. Цю дію не можна скасувати.",
3215
+ "auditlog.clear.success": "Журнали аудиту очищено",
3216
+ "auditlog.clear.error": "Не вдалося очистити журнали аудиту",
3217
+ "auditlog.export.error": "Не вдалося експортувати журнали аудиту",
3218
+ "auditlog.filters": "Фільтри",
3219
+ "auditlog.filters.action": "Дія",
3220
+ "auditlog.filters.email": "Електронна пошта",
3221
+ "auditlog.filters.ip": "IP-адреса",
3222
+ "auditlog.filters.createdAt": "Дата",
3223
+ "auditlog.filters.clear": "Очистити фільтри",
3224
+ "auditlog.filters.empty": "Немає записів, що відповідають поточним фільтрам",
3225
+ "auditlog.calendar.prevMonth": "Попередній місяць",
3226
+ "auditlog.calendar.nextMonth": "Наступний місяць",
3227
+ "auditlog.calendar.state.today": "сьогодні",
3228
+ "auditlog.calendar.state.selected": "вибрано",
3229
+ "auditlog.calendar.state.alreadyAdded": "вже додано",
3230
+ "auditlog.calendar.state.future": "недоступно, майбутня дата",
3231
+ "auditlog.calendar.dayWithState": "{date}, {state}",
3232
+ "auditlog.action.login_success": "Користувач успішно пройшов автентифікацію через OIDC і отримав доступ.",
3233
+ "auditlog.action.user_created": "Новий обліковий запис адміністратора Strapi був створений для цього користувача під час його першого входу через OIDC.",
3234
+ "auditlog.action.logout": "Користувач вийшов із системи, і його сеанс OIDC був завершений.",
3235
+ "auditlog.action.session_expired": "Токен доступу OIDC стік на момент виходу користувача із системи, тому сеанс провайдера не міг бути завершений віддалено.",
3236
+ "auditlog.action.login_failure": "Під час потоку входу в OIDC сталася несподівана помилка.",
3237
+ "auditlog.action.missing_code": "Зворотний виклик OIDC був отриманий без коду авторизації. Це може вказувати на неправильно налаштованого провайдера або підроблений запит.",
3238
+ "auditlog.action.state_mismatch": "Параметр стану у зворотному виклику не відповідав тому, що зберігався в сеансі. Це може вказувати на спробу CSRF або сеанс входу, що стік.",
3239
+ "auditlog.action.nonce_mismatch": "Nonce в токені ідентифікатора не відповідав тому, що був згенерований під час входу. Це може вказувати на атаку відтворення токена.",
3240
+ "auditlog.action.token_exchange_failed": "Код авторизації не можна обміняти на токени. Провайдер OIDC відхилив запит.",
3241
+ "auditlog.action.whitelist_rejected": "Адреса електронної пошти користувача відсутня в білому списку. У доступі відмовлено.",
3242
+ "auditlog.action.email_not_verified": "Провайдер OIDC не підтвердив адресу електронної пошти користувача як перевірену. У доступі відмовлено.",
3243
+ "auditlog.action.id_token_invalid": "Токен ідентифікатора не пройшов перевірку підпису, видавця, аудиторії або закінчення терміну дії. У доступі відмовлено.",
3244
+ "auth.page.authenticating.title": "Автентифікація...",
3245
+ "auth.page.authenticating.noscript.heading": "Потрібен JavaScript",
3246
+ "auth.page.authenticating.noscript.body": "JavaScript має бути увімкнений для завершення автентифікації.",
3247
+ "auth.page.error.title": "Помилка автентифікації",
3248
+ "auth.page.error.returnToLogin": "Повернутися до входу",
3249
+ "user.missing_code": "Код авторизації не був отриманий від провайдера OIDC.",
3250
+ "user.invalid_state": "Невідповідність параметра стану. Будь ласка, перезапустіть потік входу.",
3251
+ "user.signInError": "Автентифікація не вдалася. Будь ласка, спробуйте ще раз.",
3252
+ "settings.section": "OIDC",
3253
+ "settings.configuration": "Конфігурація",
3254
+ "audit.login_failure": "Помилка: {message}",
3255
+ "audit.roles_updated": "Ролі оновлено до: {roles}",
3256
+ "audit.user_created": "Призначені ролі: {roles}"
3257
+ };
3258
+ const __vite_glob_0_23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3259
+ __proto__: null,
3260
+ default: uk
3261
+ }, Symbol.toStringTag, { value: "Module" }));
3262
+ const vi = {
3263
+ "global.plugins.strapi-plugin-oidc": "Plugin OIDC",
3264
+ "page.title": "Định cấu hình các vai trò OIDC mặc định và kiểm soát truy cập.",
3265
+ "roles.notes": "Chọn vai trò mặc định được chỉ định cho người dùng mới khi đăng nhập lần đầu. Cài đặt này không ảnh hưởng đến người dùng hiện có.",
3266
+ "page.save": "Lưu thay đổi",
3267
+ "page.save.success": "Cài đặt đã được cập nhật",
3268
+ "page.save.error": "Cập nhật thất bại.",
3269
+ "page.add": "Thêm",
3270
+ "page.cancel": "Hủy",
3271
+ "common.remove": "Xóa {label}",
3272
+ "page.ok": "OK",
3273
+ "roles.title": "Vai trò mặc định",
3274
+ "roles.placeholder": "Chọn vai trò mặc định",
3275
+ "whitelist.title": "Danh sách trắng",
3276
+ "whitelist.error.unique": "Địa chỉ email đã được đăng ký.",
3277
+ "whitelist.description": "Giới hạn xác thực OIDC cho các địa chỉ email cụ thể. Người dùng nhận vai trò từ ánh xạ vai trò OIDC mặc định hoặc nhóm OIDC của họ.",
3278
+ "alert.title.success": "Thành công",
3279
+ "alert.title.error": "Lỗi",
3280
+ "alert.title.info": "Thông tin",
3281
+ "pagination.previous": "Đi đến trang trước",
3282
+ "pagination.page": "Đi đến trang {page}",
3283
+ "pagination.next": "Đi đến trang tiếp theo",
3284
+ "whitelist.table.no": "Số",
3285
+ "whitelist.table.email": "Email",
3286
+ "whitelist.table.created": "Đã tạo",
3287
+ "whitelist.delete.title": "Xác nhận",
3288
+ "whitelist.delete.description": "Bạn có chắc chắn muốn xóa:",
3289
+ "whitelist.delete.note": "Điều này sẽ không xóa tài khoản người dùng trong Strapi.",
3290
+ "whitelist.toggle.enabled": "Đã bật",
3291
+ "whitelist.toggle.disabled": "Đã tắt",
3292
+ "whitelist.email.placeholder": "Địa chỉ email",
3293
+ "whitelist.table.empty": "Không có địa chỉ email",
3294
+ "whitelist.delete.label": "Xóa",
3295
+ "page.title.oidc": "OIDC",
3296
+ "enforce.title": "Bắt buộc đăng nhập OIDC",
3297
+ "enforce.toggle.enabled": "Đã bật",
3298
+ "enforce.toggle.disabled": "Đã tắt",
3299
+ "enforce.warning": "Đảm bảo OIDC được thiết lập đúng trước khi lưu thay đổi, bạn sẽ không thể đăng nhập bình thường.",
3300
+ "enforce.config.info": "Việc thực thi được kiểm soát bởi biến cấu hình OIDC_ENFORCE và không thể thay đổi tại đây.",
3301
+ "login.settings.title": "Cài đặt đăng nhập",
3302
+ "login.sso": "Đăng nhập qua SSO",
3303
+ "pagination.total": "{count, plural, other {# mục}}",
3304
+ "whitelist.import": "Nhập",
3305
+ "whitelist.export": "Xuất",
3306
+ "whitelist.delete.all.label": "Xóa tất cả",
3307
+ "whitelist.delete.all.title": "Xóa tất cả các mục",
3308
+ "whitelist.delete.all.description": "Điều này sẽ xóa vĩnh viễn tất cả {count, plural, other {# mục}} khỏi danh sách trắng. Các thay đổi chưa lưu sẽ bị mất.",
3309
+ "whitelist.import.error": "Tệp không hợp lệ — mong đợi một mảng JSON của các đối tượng có trường email.",
3310
+ "whitelist.import.success": "Đã nhập {count, plural, other {# mục mới}}.",
3311
+ "whitelist.import.none": "Không có mục mới — tất cả email đã có trong danh sách trắng.",
3312
+ "unsaved.title": "Thay đổi chưa lưu",
3313
+ "unsaved.description": "Bạn có những thay đổi chưa lưu sẽ bị mất nếu bạn rời đi. Bạn có muốn tiếp tục không?",
3314
+ "unsaved.confirm": "Rời đi",
3315
+ "unsaved.cancel": "Ở lại",
3316
+ "auditlog.title": "Nhật ký kiểm toán",
3317
+ "auditlog.export": "Tải xuống",
3318
+ "auditlog.table.timestamp": "Dấu thời gian",
3319
+ "auditlog.table.action": "Hành động",
3320
+ "auditlog.table.email": "Email",
3321
+ "auditlog.table.ip": "IP",
3322
+ "auditlog.table.details": "Chi tiết",
3323
+ "auditlog.table.empty": "Không có mục nhật ký kiểm toán",
3324
+ "auditlog.clear": "Xóa nhật ký",
3325
+ "auditlog.clear.title": "Xóa tất cả nhật ký",
3326
+ "auditlog.clear.description": "Điều này sẽ xóa vĩnh viễn tất cả {count, plural, other {# mục nhật ký kiểm toán}}. Hành động này không thể hoàn tác.",
3327
+ "auditlog.clear.success": "Đã xóa nhật ký kiểm toán",
3328
+ "auditlog.clear.error": "Không thể xóa nhật ký kiểm toán",
3329
+ "auditlog.export.error": "Không thể xuất nhật ký kiểm toán",
3330
+ "auditlog.filters": "Bộ lọc",
3331
+ "auditlog.filters.action": "Hành động",
3332
+ "auditlog.filters.email": "Email",
3333
+ "auditlog.filters.ip": "Địa chỉ IP",
3334
+ "auditlog.filters.createdAt": "Ngày",
3335
+ "auditlog.filters.clear": "Xóa bộ lọc",
3336
+ "auditlog.filters.empty": "Không có mục nào khớp với bộ lọc hiện tại",
3337
+ "auditlog.calendar.prevMonth": "Tháng trước",
3338
+ "auditlog.calendar.nextMonth": "Tháng sau",
3339
+ "auditlog.calendar.state.today": "hôm nay",
3340
+ "auditlog.calendar.state.selected": "đã chọn",
3341
+ "auditlog.calendar.state.alreadyAdded": "đã thêm rồi",
3342
+ "auditlog.calendar.state.future": "không khả dụng, ngày trong tương lai",
3343
+ "auditlog.calendar.dayWithState": "{date}, {state}",
3344
+ "auditlog.action.login_success": "Người dùng đã được xác thực thành công qua OIDC và được cấp quyền truy cập.",
3345
+ "auditlog.action.user_created": "Một tài khoản quản trị Strapi mới đã được tạo cho người dùng này khi đăng nhập OIDC lần đầu tiên.",
3346
+ "auditlog.action.logout": "Người dùng đã đăng xuất và phiên OIDC của họ đã kết thúc.",
3347
+ "auditlog.action.session_expired": "Mã thông báo truy cập OIDC đã hết hạn vào thời điểm người dùng đăng xuất, vì vậy phiên của nhà cung cấp không thể chấm dứt từ xa.",
3348
+ "auditlog.action.login_failure": "Đã xảy ra lỗi không mong đợi trong luồng đăng nhập OIDC.",
3349
+ "auditlog.action.missing_code": "Đã nhận được callback OIDC mà không có mã ủy quyền. Điều này có thể cho thấy nhà cung cấp được định cấu hình sai hoặc yêu cầu bị giả mạo.",
3350
+ "auditlog.action.state_mismatch": "Tham số trạng thái trong callback không khớp với tham số được lưu trữ trong phiên. Điều này có thể cho thấy nỗ lực CSRF hoặc phiên đăng nhập đã hết hạn.",
3351
+ "auditlog.action.nonce_mismatch": "Nonce trong mã thông báo ID không khớp với nonce được tạo tại thời điểm đăng nhập. Điều này có thể cho thấy một cuộc tấn công phát lại mã thông báo.",
3352
+ "auditlog.action.token_exchange_failed": "Mã ủy quyền không thể được trao đổi lấy mã thông báo. Nhà cung cấp OIDC đã từ chối yêu cầu.",
3353
+ "auditlog.action.whitelist_rejected": "Địa chỉ email của người dùng không có trong danh sách trắng. Quyền truy cập đã bị từ chối.",
3354
+ "auditlog.action.email_not_verified": "Nhà cung cấp OIDC đã không xác nhận địa chỉ email của người dùng là đã được xác minh. Quyền truy cập đã bị từ chối.",
3355
+ "auditlog.action.id_token_invalid": "Mã thông báo ID không đạt được xác minh chữ ký, người phát hành, đối tượng hoặc hết hạn. Quyền truy cập đã bị từ chối.",
3356
+ "auth.page.authenticating.title": "Đang xác thực...",
3357
+ "auth.page.authenticating.noscript.heading": "Yêu cầu JavaScript",
3358
+ "auth.page.authenticating.noscript.body": "JavaScript phải được bật để hoàn tất xác thực.",
3359
+ "auth.page.error.title": "Xác thực thất bại",
3360
+ "auth.page.error.returnToLogin": "Quay lại đăng nhập",
3361
+ "user.missing_code": "Không nhận được mã ủy quyền từ nhà cung cấp OIDC.",
3362
+ "user.invalid_state": "Không khớp tham số trạng thái. Vui lòng khởi động lại luồng đăng nhập.",
3363
+ "user.signInError": "Xác thực thất bại. Vui lòng thử lại.",
3364
+ "settings.section": "OIDC",
3365
+ "settings.configuration": "Cấu hình",
3366
+ "audit.login_failure": "Lỗi: {message}",
3367
+ "audit.roles_updated": "Vai trò đã được cập nhật thành: {roles}",
3368
+ "audit.user_created": "Vai trò được chỉ định: {roles}"
3369
+ };
3370
+ const __vite_glob_0_24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3371
+ __proto__: null,
3372
+ default: vi
3373
+ }, Symbol.toStringTag, { value: "Module" }));
3374
+ const zhHans = {
3375
+ "global.plugins.strapi-plugin-oidc": "OIDC插件",
3376
+ "page.title": "配置OIDC默认角色和访问控制。",
3377
+ "roles.notes": "选择在新用户首次登录时分配的默认角色。此设置不影响现有用户。",
3378
+ "page.save": "保存更改",
3379
+ "page.save.success": "设置已更新",
3380
+ "page.save.error": "更新失败。",
3381
+ "page.add": "添加",
3382
+ "page.cancel": "取消",
3383
+ "common.remove": "删除 {label}",
3384
+ "page.ok": "确定",
3385
+ "roles.title": "默认角色",
3386
+ "roles.placeholder": "选择默认角色",
3387
+ "whitelist.title": "白名单",
3388
+ "whitelist.error.unique": "电子邮件地址已注册。",
3389
+ "whitelist.description": "将OIDC身份验证限制为特定电子邮件地址。用户从默认OIDC角色映射或其OIDC组接收角色。",
3390
+ "alert.title.success": "成功",
3391
+ "alert.title.error": "错误",
3392
+ "alert.title.info": "信息",
3393
+ "pagination.previous": "转到上一页",
3394
+ "pagination.page": "转到第 {page} 页",
3395
+ "pagination.next": "转到下一页",
3396
+ "whitelist.table.no": "编号",
3397
+ "whitelist.table.email": "电子邮件",
3398
+ "whitelist.table.created": "创建于",
3399
+ "whitelist.delete.title": "确认",
3400
+ "whitelist.delete.description": "您确定要删除:",
3401
+ "whitelist.delete.note": "这不会删除Strapi中的用户账户。",
3402
+ "whitelist.toggle.enabled": "已启用",
3403
+ "whitelist.toggle.disabled": "已禁用",
3404
+ "whitelist.email.placeholder": "电子邮件地址",
3405
+ "whitelist.table.empty": "无电子邮件地址",
3406
+ "whitelist.delete.label": "删除",
3407
+ "page.title.oidc": "OIDC",
3408
+ "enforce.title": "强制OIDC登录",
3409
+ "enforce.toggle.enabled": "已启用",
3410
+ "enforce.toggle.disabled": "已禁用",
3411
+ "enforce.warning": "在保存更改之前请确保OIDC正确配置,否则您将无法正常登录。",
3412
+ "enforce.config.info": "强制由OIDC_ENFORCE配置变量控制,无法在此处更改。",
3413
+ "login.settings.title": "登录设置",
3414
+ "login.sso": "通过SSO登录",
3415
+ "pagination.total": "{count, plural, other {# 条目}}",
3416
+ "whitelist.import": "导入",
3417
+ "whitelist.export": "导出",
3418
+ "whitelist.delete.all.label": "删除全部",
3419
+ "whitelist.delete.all.title": "删除所有条目",
3420
+ "whitelist.delete.all.description": "这将永久从白名单中删除所有 {count, plural, other {# 条目}}。未保存的更改将丢失。",
3421
+ "whitelist.import.error": "文件无效 — 期望的是具有电子邮件字段的JSON对象数组。",
3422
+ "whitelist.import.success": "已导入 {count, plural, other {# 条新条目}}。",
3423
+ "whitelist.import.none": "无新条目 — 所有电子邮件都已在白名单中。",
3424
+ "unsaved.title": "未保存的更改",
3425
+ "unsaved.description": "您有未保存的更改,如果离开将会丢失。您要继续吗?",
3426
+ "unsaved.confirm": "离开",
3427
+ "unsaved.cancel": "留下",
3428
+ "auditlog.title": "审计日志",
3429
+ "auditlog.export": "下载",
3430
+ "auditlog.table.timestamp": "时间戳",
3431
+ "auditlog.table.action": "操作",
3432
+ "auditlog.table.email": "电子邮件",
3433
+ "auditlog.table.ip": "IP",
3434
+ "auditlog.table.details": "详情",
3435
+ "auditlog.table.empty": "无审计日志条目",
3436
+ "auditlog.clear": "清除日志",
3437
+ "auditlog.clear.title": "清除所有日志",
3438
+ "auditlog.clear.description": "这将永久删除所有 {count, plural, other {# 条审计日志条目}}。此操作无法撤销。",
3439
+ "auditlog.clear.success": "审计日志已清除",
3440
+ "auditlog.clear.error": "清除审计日志失败",
3441
+ "auditlog.export.error": "导出审计日志失败",
3442
+ "auditlog.filters": "筛选器",
3443
+ "auditlog.filters.action": "操作",
3444
+ "auditlog.filters.email": "电子邮件",
3445
+ "auditlog.filters.ip": "IP地址",
3446
+ "auditlog.filters.createdAt": "日期",
3447
+ "auditlog.filters.clear": "清除筛选器",
3448
+ "auditlog.filters.empty": "没有条目符合当前筛选器",
3449
+ "auditlog.calendar.prevMonth": "上个月",
3450
+ "auditlog.calendar.nextMonth": "下个月",
3451
+ "auditlog.calendar.state.today": "今天",
3452
+ "auditlog.calendar.state.selected": "已选择",
3453
+ "auditlog.calendar.state.alreadyAdded": "已添加",
3454
+ "auditlog.calendar.state.future": "不可用,未来的日期",
3455
+ "auditlog.calendar.dayWithState": "{date},{state}",
3456
+ "auditlog.action.login_success": "用户已通过OIDC成功认证并被授予访问权限。",
3457
+ "auditlog.action.user_created": "在用户首次OIDC登录时,为该用户创建了新的Strapi管理员账户。",
3458
+ "auditlog.action.logout": "用户已登出,其OIDC会话已结束。",
3459
+ "auditlog.action.session_expired": "在用户登出时,OIDC访问令牌已过期,因此无法远程终止提供商会话。",
3460
+ "auditlog.action.login_failure": "在OIDC登录流程中发生意外错误。",
3461
+ "auditlog.action.missing_code": "收到OIDC回调但没有授权码。这可能表示提供者配置错误或请求被篡改。",
3462
+ "auditlog.action.state_mismatch": "回调中的状态参数与存储在会话中的不匹配。这可能表示CSRF尝试或登录会话已过期。",
3463
+ "auditlog.action.nonce_mismatch": "ID令牌中的nonce与登录时生成的不匹配。这可能表示令牌重放攻击。",
3464
+ "auditlog.action.token_exchange_failed": "无法将授权码交换为令牌。OIDC提供者拒绝了请求。",
3465
+ "auditlog.action.whitelist_rejected": "用户的电子邮件地址不在白名单上。访问被拒绝。",
3466
+ "auditlog.action.email_not_verified": "OIDC提供者未确认用户的电子邮件地址已验证。访问被拒绝。",
3467
+ "auditlog.action.id_token_invalid": "ID令牌未通过签名、发行者、受众或过期验证。访问被拒绝。",
3468
+ "auth.page.authenticating.title": "正在认证...",
3469
+ "auth.page.authenticating.noscript.heading": "需要JavaScript",
3470
+ "auth.page.authenticating.noscript.body": "必须启用JavaScript才能完成认证。",
3471
+ "auth.page.error.title": "认证失败",
3472
+ "auth.page.error.returnToLogin": "返回登录",
3473
+ "user.missing_code": "未从OIDC提供者收到授权码。",
3474
+ "user.invalid_state": "状态参数不匹配。请重新启动登录流程。",
3475
+ "user.signInError": "认证失败。请重试。",
3476
+ "settings.section": "OIDC",
3477
+ "settings.configuration": "配置",
3478
+ "audit.login_failure": "错误:{message}",
3479
+ "audit.roles_updated": "角色已更新为:{roles}",
3480
+ "audit.user_created": "分配的角色:{roles}"
3481
+ };
3482
+ const __vite_glob_0_25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3483
+ __proto__: null,
3484
+ default: zhHans
3485
+ }, Symbol.toStringTag, { value: "Module" }));
3486
+ const zh = {
3487
+ "global.plugins.strapi-plugin-oidc": "OIDC 插件",
3488
+ "page.title": "設定OIDC預設角色和存取控制。",
3489
+ "roles.notes": "選擇首次登入時分配給新使用者的預設角色。此設定不影響現有使用者。",
3490
+ "page.save": "儲存變更",
3491
+ "page.save.success": "設定已更新",
3492
+ "page.save.error": "更新失敗。",
3493
+ "page.add": "新增",
3494
+ "page.cancel": "取消",
3495
+ "common.remove": "移除 {label}",
3496
+ "page.ok": "確定",
3497
+ "roles.title": "預設角色",
3498
+ "roles.placeholder": "選擇預設角色",
3499
+ "whitelist.title": "白名單",
3500
+ "whitelist.error.unique": "電子郵件地址已註冊。",
3501
+ "whitelist.description": "將OIDC驗證限制為特定電子郵件地址。使用者從預設OIDC角色對應或其OIDC群組接收角色。",
3502
+ "alert.title.success": "成功",
3503
+ "alert.title.error": "錯誤",
3504
+ "alert.title.info": "資訊",
3505
+ "pagination.previous": "前往上一頁",
3506
+ "pagination.page": "前往第 {page} 頁",
3507
+ "pagination.next": "前往下一頁",
3508
+ "whitelist.table.no": "編號",
3509
+ "whitelist.table.email": "電子郵件",
3510
+ "whitelist.table.created": "建立於",
3511
+ "whitelist.delete.title": "確認",
3512
+ "whitelist.delete.description": "您確定要刪除:",
3513
+ "whitelist.delete.note": "這不會刪除Strapi中的使用者帳戶。",
3514
+ "whitelist.toggle.enabled": "已啟用",
3515
+ "whitelist.toggle.disabled": "已停用",
3516
+ "whitelist.email.placeholder": "電子郵件地址",
3517
+ "whitelist.table.empty": "無電子郵件地址",
3518
+ "whitelist.delete.label": "刪除",
3519
+ "page.title.oidc": "OIDC",
3520
+ "enforce.title": "強制OIDC登入",
3521
+ "enforce.toggle.enabled": "已啟用",
3522
+ "enforce.toggle.disabled": "已停用",
3523
+ "enforce.warning": "在儲存變更之前請確保OIDC正確設定,否則您將無法正常登入。",
3524
+ "enforce.config.info": "強制由OIDC_ENFORCE設定變數控制,無法在此處變更。",
3525
+ "login.settings.title": "登入設定",
3526
+ "login.sso": "透過SSO登入",
3527
+ "pagination.total": "{count, plural, other {# 項目}}",
3528
+ "whitelist.import": "匯入",
3529
+ "whitelist.export": "匯出",
3530
+ "whitelist.delete.all.label": "刪除全部",
3531
+ "whitelist.delete.all.title": "刪除所有項目",
3532
+ "whitelist.delete.all.description": "這將永久從白名單中移除所有 {count, plural, other {# 項目}}。未儲存的變更將遺失。",
3533
+ "whitelist.import.error": "檔案無效 — 預期的是具有電子郵件欄位的JSON物件陣列。",
3534
+ "whitelist.import.success": "已匯入 {count, plural, other {# 個新項目}}。",
3535
+ "whitelist.import.none": "無新項目 — 所有電子郵件都已在白名單中。",
3536
+ "unsaved.title": "未儲存的變更",
3537
+ "unsaved.description": "您有未儲存的變更,如果離開將會遺失。您要繼續嗎?",
3538
+ "unsaved.confirm": "離開",
3539
+ "unsaved.cancel": "留下",
3540
+ "auditlog.title": "稽核日誌",
3541
+ "auditlog.export": "下載",
3542
+ "auditlog.table.timestamp": "時間戳記",
3543
+ "auditlog.table.action": "操作",
3544
+ "auditlog.table.email": "電子郵件",
3545
+ "auditlog.table.ip": "IP",
3546
+ "auditlog.table.details": "詳情",
3547
+ "auditlog.table.empty": "無稽核日誌項目",
3548
+ "auditlog.clear": "清除日誌",
3549
+ "auditlog.clear.title": "清除所有日誌",
3550
+ "auditlog.clear.description": "這將永久刪除所有 {count, plural, other {# 個稽核日誌項目}}。此動作無法復原。",
3551
+ "auditlog.clear.success": "稽核日誌已清除",
3552
+ "auditlog.clear.error": "清除稽核日誌失敗",
3553
+ "auditlog.export.error": "匯出稽核日誌失敗",
3554
+ "auditlog.filters": "篩選器",
3555
+ "auditlog.filters.action": "操作",
3556
+ "auditlog.filters.email": "電子郵件",
3557
+ "auditlog.filters.ip": "IP 位址",
3558
+ "auditlog.filters.createdAt": "日期",
3559
+ "auditlog.filters.clear": "清除篩選器",
3560
+ "auditlog.filters.empty": "沒有項目符合目前篩選器",
3561
+ "auditlog.calendar.prevMonth": "上個月",
3562
+ "auditlog.calendar.nextMonth": "下個月",
3563
+ "auditlog.calendar.state.today": "今天",
3564
+ "auditlog.calendar.state.selected": "已選擇",
3565
+ "auditlog.calendar.state.alreadyAdded": "已新增",
3566
+ "auditlog.calendar.state.future": "不可用,未來的日期",
3567
+ "auditlog.calendar.dayWithState": "{date},{state}",
3568
+ "auditlog.action.login_success": "使用者已透過OIDC成功驗證並被授予存取權限。",
3569
+ "auditlog.action.user_created": "在使用者首次OIDC登入時,為該使用者建立了新的Strapi管理員帳戶。",
3570
+ "auditlog.action.logout": "使用者已登出,其OIDC工作階段已結束。",
3571
+ "auditlog.action.session_expired": "在使用者登出時,OIDC存取權杖已過期,因此無法遠端終止供應商工作階段。",
3572
+ "auditlog.action.login_failure": "在OIDC登入流程中發生意外錯誤。",
3573
+ "auditlog.action.missing_code": "收到OIDC回呼但沒有授權碼。這可能表示供應商設定錯誤或請求被竄改。",
3574
+ "auditlog.action.state_mismatch": "回呼中的狀態參數與儲存在工作階段中的不相符。這可能表示CSRF嘗試或登入工作階段已過期。",
3575
+ "auditlog.action.nonce_mismatch": "ID權杖中的nonce與登入時產生的不相符。這可能表示權杖重放攻擊。",
3576
+ "auditlog.action.token_exchange_failed": "無法將授權碼交換為權杖。OIDC供應商拒絕了請求。",
3577
+ "auditlog.action.whitelist_rejected": "使用者的電子郵件地址不在白名單上。存取被拒絕。",
3578
+ "auditlog.action.email_not_verified": "OIDC供應商未確認使用者的電子郵件地址已驗證。存取被拒絕。",
3579
+ "auditlog.action.id_token_invalid": "ID權杖未通過簽章、發行者、對象或過期驗證。存取被拒絕。",
3580
+ "auth.page.authenticating.title": "正在驗證...",
3581
+ "auth.page.authenticating.noscript.heading": "需要JavaScript",
3582
+ "auth.page.authenticating.noscript.body": "必須啟用JavaScript才能完成驗證。",
3583
+ "auth.page.error.title": "驗證失敗",
3584
+ "auth.page.error.returnToLogin": "返回登入",
3585
+ "user.missing_code": "未從OIDC供應商收到授權碼。",
3586
+ "user.invalid_state": "狀態參數不相符。請重新啟動登入流程。",
3587
+ "user.signInError": "驗證失敗。請重試。",
3588
+ "settings.section": "OIDC",
3589
+ "settings.configuration": "設定",
3590
+ "audit.login_failure": "錯誤:{message}",
3591
+ "audit.roles_updated": "角色已更新為:{roles}",
3592
+ "audit.user_created": "指派的角色:{roles}"
3593
+ };
3594
+ const __vite_glob_0_26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3595
+ __proto__: null,
3596
+ default: zh
3597
+ }, Symbol.toStringTag, { value: "Module" }));
3598
+ const modules = /* @__PURE__ */ Object.assign({ "../translations/locales/ar.json": __vite_glob_0_0, "../translations/locales/cs.json": __vite_glob_0_1, "../translations/locales/de.json": __vite_glob_0_2, "../translations/locales/dk.json": __vite_glob_0_3, "../translations/locales/en.json": __vite_glob_0_4, "../translations/locales/es.json": __vite_glob_0_5, "../translations/locales/fr.json": __vite_glob_0_6, "../translations/locales/he.json": __vite_glob_0_7, "../translations/locales/id.json": __vite_glob_0_8, "../translations/locales/it.json": __vite_glob_0_9, "../translations/locales/ja.json": __vite_glob_0_10, "../translations/locales/ko.json": __vite_glob_0_11, "../translations/locales/ms.json": __vite_glob_0_12, "../translations/locales/nl.json": __vite_glob_0_13, "../translations/locales/no.json": __vite_glob_0_14, "../translations/locales/pl.json": __vite_glob_0_15, "../translations/locales/pt-BR.json": __vite_glob_0_16, "../translations/locales/pt.json": __vite_glob_0_17, "../translations/locales/ru.json": __vite_glob_0_18, "../translations/locales/sk.json": __vite_glob_0_19, "../translations/locales/sv.json": __vite_glob_0_20, "../translations/locales/th.json": __vite_glob_0_21, "../translations/locales/tr.json": __vite_glob_0_22, "../translations/locales/uk.json": __vite_glob_0_23, "../translations/locales/vi.json": __vite_glob_0_24, "../translations/locales/zh-Hans.json": __vite_glob_0_25, "../translations/locales/zh.json": __vite_glob_0_26 });
596
3599
  const locales = Object.fromEntries(
597
3600
  Object.entries(modules).map(([path, mod]) => {
598
3601
  const code = path.match(/\/([^/]+)\.json$/)?.[1];
@@ -620,30 +3623,40 @@ function negotiateLocale(acceptLanguage) {
620
3623
  function t(locale, key, fallback) {
621
3624
  return locales[locale]?.[key] ?? locales[DEFAULT_LOCALE]?.[key] ?? fallback ?? key;
622
3625
  }
623
- const userFacingMessages = (locale) => ({
624
- missing_code: t(
625
- locale,
626
- "user.missing_code",
627
- "Authorisation code was not received from the OIDC provider."
628
- ),
629
- invalid_state: t(
630
- locale,
631
- "user.invalid_state",
632
- "State parameter mismatch. Please restart the login flow."
633
- ),
634
- signInError: t(locale, "user.signInError", "Authentication failed. Please try again.")
635
- });
636
- const authPageMessages = (locale) => ({
637
- authenticatingTitle: t(locale, "auth.page.authenticating.title", "Authenticating..."),
638
- noscriptHeading: t(locale, "auth.page.authenticating.noscript.heading", "JavaScript Required"),
639
- noscriptBody: t(
640
- locale,
641
- "auth.page.authenticating.noscript.body",
642
- "JavaScript must be enabled for authentication to complete."
643
- ),
644
- errorTitle: t(locale, "auth.page.error.title", "Authentication Failed"),
645
- returnToLogin: t(locale, "auth.page.error.returnToLogin", "Return to Login")
646
- });
3626
+ async function oidcSignIn(ctx) {
3627
+ try {
3628
+ const { OIDC_CLIENT_ID, OIDC_REDIRECT_URI, OIDC_SCOPE, OIDC_AUTHORIZATION_ENDPOINT } = configValidation();
3629
+ const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge();
3630
+ const state = randomBytes(32).toString("base64url");
3631
+ const nonce = randomBytes(32).toString("base64url");
3632
+ const cookieOptions = {
3633
+ httpOnly: true,
3634
+ maxAge: PKCE_COOKIE_MAX_AGE_MS,
3635
+ secure: shouldMarkSecure(strapi, ctx),
3636
+ sameSite: "lax"
3637
+ };
3638
+ ctx.cookies.set(COOKIE_NAMES.codeVerifier, codeVerifier, cookieOptions);
3639
+ ctx.cookies.set(COOKIE_NAMES.state, state, cookieOptions);
3640
+ ctx.cookies.set(COOKIE_NAMES.nonce, nonce, cookieOptions);
3641
+ const params = new URLSearchParams({
3642
+ response_type: "code",
3643
+ client_id: OIDC_CLIENT_ID,
3644
+ redirect_uri: OIDC_REDIRECT_URI,
3645
+ scope: OIDC_SCOPE,
3646
+ code_challenge: codeChallenge,
3647
+ code_challenge_method: "S256",
3648
+ state,
3649
+ nonce
3650
+ });
3651
+ const authorizationUrl = `${OIDC_AUTHORIZATION_ENDPOINT}?${params.toString()}`;
3652
+ ctx.set("Location", authorizationUrl);
3653
+ return ctx.send({}, 302);
3654
+ } catch (e) {
3655
+ strapi.log.error({ phase: "oidc_sign_in", message: toMessage(e) });
3656
+ const locale = negotiateLocale(ctx.request.headers["accept-language"]);
3657
+ return ctx.send(getOauthService().renderSignUpError(t(locale, "user.signInError"), locale));
3658
+ }
3659
+ }
647
3660
  const TRUSTED_IP_HEADERS = /* @__PURE__ */ new Set([
648
3661
  "cf-connecting-ip",
649
3662
  "true-client-ip",
@@ -674,7 +3687,6 @@ function getClientIp(ctx) {
674
3687
  }
675
3688
  return ctx.ip;
676
3689
  }
677
- const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
678
3690
  function isValidEmail(email) {
679
3691
  return EMAIL_REGEX.test(email);
680
3692
  }
@@ -682,13 +3694,7 @@ function collectGroupMapRoleNames(userInfo, config2) {
682
3694
  const rawGroups = userInfo[config2.OIDC_GROUP_FIELD];
683
3695
  if (!Array.isArray(rawGroups) || rawGroups.length === 0) return [];
684
3696
  const groups = rawGroups.filter((g) => typeof g === "string");
685
- const raw = config2.OIDC_GROUP_ROLE_MAP;
686
- let groupRoleMap;
687
- try {
688
- groupRoleMap = typeof raw === "string" ? JSON.parse(raw) : raw;
689
- } catch {
690
- return [];
691
- }
3697
+ const groupRoleMap = parseGroupRoleMap(config2.OIDC_GROUP_ROLE_MAP);
692
3698
  const roleNameSet = /* @__PURE__ */ new Set();
693
3699
  for (const group of groups) {
694
3700
  const roleNames = groupRoleMap[group];
@@ -715,7 +3721,7 @@ async function registerNewUser(oauthService2, email, userResponseData, config2,
715
3721
  }
716
3722
  function rolesChanged(current, next) {
717
3723
  if (current.size !== next.size) return true;
718
- return [...next].some((id) => !current.has(id));
3724
+ return [...next].some((id2) => !current.has(id2));
719
3725
  }
720
3726
  async function updateUserRoles(user, currentRoleIds, newRoleIds) {
721
3727
  try {
@@ -732,7 +3738,7 @@ async function updateUserRoles(user, currentRoleIds, newRoleIds) {
732
3738
  userId: user.id,
733
3739
  detail: getErrorDetail("role_update_failed", {
734
3740
  userId: user.id,
735
- error: updateErr.message
3741
+ error: toMessage(updateErr)
736
3742
  })
737
3743
  });
738
3744
  throw updateErr;
@@ -746,8 +3752,8 @@ async function resolveRolesFromGroups(candidateNames) {
746
3752
  const nameToId = new Map(matchedRoles.map((r) => [r.name, String(r.id)]));
747
3753
  const roles2 = [];
748
3754
  for (const name of candidateNames) {
749
- const id = nameToId.get(name);
750
- if (id) roles2.push(id);
3755
+ const id2 = nameToId.get(name);
3756
+ if (id2) roles2.push(id2);
751
3757
  }
752
3758
  return {
753
3759
  roles: roles2,
@@ -844,7 +3850,7 @@ function classifyOidcError(e, userInfo) {
844
3850
  const dispatch = OIDC_ERROR_DISPATCH[kind];
845
3851
  const msg = toMessage(e);
846
3852
  let params;
847
- if (kind === "id_token_parse_failed" || kind === "id_token_invalid" || kind === "unknown") {
3853
+ if (kind === "id_token_parse_failed" || kind === "id_token_invalid" || kind === "provider_response_invalid" || kind === "unknown") {
848
3854
  params = { error: msg };
849
3855
  } else if (kind === "user_creation_failed" && userInfo?.email) {
850
3856
  params = { email: userInfo.email, error: msg };
@@ -874,8 +3880,10 @@ async function handleCallbackError(e, userInfo, auditLog2, oauthService2, ctx) {
874
3880
  email: userInfo?.email
875
3881
  });
876
3882
  const locale = negotiateLocale(ctx.request.headers["accept-language"]);
877
- ctx.send(oauthService2.renderSignUpError(userFacingMessages(locale).signInError, locale));
3883
+ ctx.send(oauthService2.renderSignUpError(t(locale, "user.signInError"), locale));
878
3884
  }
3885
+ const tokenResponseSchema = z.object({ access_token: z.string(), id_token: z.string().optional() }).passthrough();
3886
+ const oidcUserInfoSchema = z.object({ email: z.string().optional() }).passthrough();
879
3887
  async function exchangeTokenAndFetchUserInfo(config2, params, expectedNonce) {
880
3888
  const response = await fetch(config2.OIDC_TOKEN_ENDPOINT, {
881
3889
  method: "POST",
@@ -887,7 +3895,15 @@ async function exchangeTokenAndFetchUserInfo(config2, params, expectedNonce) {
887
3895
  if (!response.ok) {
888
3896
  throw new OidcError("token_exchange_failed", errorMessages.TOKEN_EXCHANGE_FAILED);
889
3897
  }
890
- const tokenData = await response.json();
3898
+ const tokenParseResult = tokenResponseSchema.safeParse(await response.json());
3899
+ if (!tokenParseResult.success) {
3900
+ throw new OidcError(
3901
+ "provider_response_invalid",
3902
+ errorMessages.PROVIDER_RESPONSE_INVALID,
3903
+ tokenParseResult.error
3904
+ );
3905
+ }
3906
+ const tokenData = tokenParseResult.data;
891
3907
  if (tokenData.id_token) {
892
3908
  const verifiedPayload = await verifyIdToken(tokenData.id_token, config2);
893
3909
  try {
@@ -908,16 +3924,24 @@ async function exchangeTokenAndFetchUserInfo(config2, params, expectedNonce) {
908
3924
  if (!userResponse.ok) {
909
3925
  throw new OidcError("userinfo_fetch_failed", errorMessages.USERINFO_FETCH_FAILED);
910
3926
  }
911
- const userInfo = await userResponse.json();
3927
+ const userInfoParseResult = oidcUserInfoSchema.safeParse(await userResponse.json());
3928
+ if (!userInfoParseResult.success) {
3929
+ throw new OidcError(
3930
+ "provider_response_invalid",
3931
+ errorMessages.PROVIDER_RESPONSE_INVALID,
3932
+ userInfoParseResult.error
3933
+ );
3934
+ }
3935
+ const userInfo = userInfoParseResult.data;
912
3936
  return { userInfo, accessToken: tokenData.access_token };
913
3937
  }
914
3938
  function readAndClearPkceCookies(ctx) {
915
- const oidcState = ctx.cookies.get("oidc_state");
916
- const codeVerifier = ctx.cookies.get("oidc_code_verifier");
917
- const oidcNonce = ctx.cookies.get("oidc_nonce");
918
- ctx.cookies.set("oidc_state", null);
919
- ctx.cookies.set("oidc_code_verifier", null);
920
- ctx.cookies.set("oidc_nonce", null);
3939
+ const oidcState = ctx.cookies.get(COOKIE_NAMES.state);
3940
+ const codeVerifier = ctx.cookies.get(COOKIE_NAMES.codeVerifier);
3941
+ const oidcNonce = ctx.cookies.get(COOKIE_NAMES.nonce);
3942
+ ctx.cookies.set(COOKIE_NAMES.state, null);
3943
+ ctx.cookies.set(COOKIE_NAMES.codeVerifier, null);
3944
+ ctx.cookies.set(COOKIE_NAMES.nonce, null);
921
3945
  return { oidcState, codeVerifier, oidcNonce };
922
3946
  }
923
3947
  async function logSuccessfulAuth(auditLog2, ctx, user, userCreated, rolesUpdated, resolvedRoleNames) {
@@ -951,19 +3975,15 @@ async function oidcSignInCallback(ctx) {
951
3975
  const locale = negotiateLocale(ctx.request.headers["accept-language"]);
952
3976
  if (!ctx.query.code) {
953
3977
  await auditLog2.log({ action: "missing_code", ip: getClientIp(ctx) });
954
- return ctx.send(
955
- oauthService2.renderSignUpError(userFacingMessages(locale).missing_code, locale)
956
- );
3978
+ return ctx.send(oauthService2.renderSignUpError(t(locale, "user.missing_code"), locale));
957
3979
  }
958
3980
  const { oidcState, codeVerifier, oidcNonce } = readAndClearPkceCookies(ctx);
959
3981
  if (!ctx.query.state || ctx.query.state !== oidcState) {
960
3982
  await auditLog2.log({ action: "state_mismatch", ip: getClientIp(ctx) });
961
- return ctx.send(
962
- oauthService2.renderSignUpError(userFacingMessages(locale).invalid_state, locale)
963
- );
3983
+ return ctx.send(oauthService2.renderSignUpError(t(locale, "user.invalid_state"), locale));
964
3984
  }
965
3985
  const params = new URLSearchParams({
966
- code: ctx.query.code,
3986
+ code: String(ctx.query.code),
967
3987
  client_id: config2.OIDC_CLIENT_ID,
968
3988
  client_secret: config2.OIDC_CLIENT_SECRET,
969
3989
  redirect_uri: config2.OIDC_REDIRECT_URI,
@@ -975,9 +3995,9 @@ async function oidcSignInCallback(ctx) {
975
3995
  const exchangeResult = await exchangeTokenAndFetchUserInfo(config2, params, oidcNonce ?? "");
976
3996
  userInfo = exchangeResult.userInfo;
977
3997
  const secureFlag = shouldMarkSecure(strapi, ctx);
978
- ctx.cookies.set("oidc_access_token", exchangeResult.accessToken, {
3998
+ ctx.cookies.set(COOKIE_NAMES.accessToken, exchangeResult.accessToken, {
979
3999
  httpOnly: true,
980
- maxAge: 3e5,
4000
+ maxAge: COOKIE_MAX_AGE_MS,
981
4001
  secure: secureFlag,
982
4002
  sameSite: "lax"
983
4003
  });
@@ -990,7 +4010,7 @@ async function oidcSignInCallback(ctx) {
990
4010
  config2,
991
4011
  ctx
992
4012
  );
993
- ctx.cookies.set("oidc_user_email", activateUser.email, {
4013
+ ctx.cookies.set(COOKIE_NAMES.userEmail, activateUser.email, {
994
4014
  httpOnly: true,
995
4015
  path: "/",
996
4016
  secure: secureFlag,
@@ -1011,7 +4031,6 @@ async function oidcSignInCallback(ctx) {
1011
4031
  await handleCallbackError(e, userInfo, auditLog2, oauthService2, ctx);
1012
4032
  }
1013
4033
  }
1014
- const LOGOUT_USERINFO_TIMEOUT_MS = 1500;
1015
4034
  async function isProviderSessionExpired(userinfoEndpoint, accessToken) {
1016
4035
  try {
1017
4036
  const response = await fetch(userinfoEndpoint, {
@@ -1024,14 +4043,14 @@ async function isProviderSessionExpired(userinfoEndpoint, accessToken) {
1024
4043
  }
1025
4044
  }
1026
4045
  async function logout(ctx) {
1027
- const config2 = strapi.config.get("plugin::strapi-plugin-oidc");
4046
+ const config2 = getPluginConfig();
1028
4047
  const auditLog2 = getAuditLogService();
1029
4048
  const logoutUrl = config2.OIDC_END_SESSION_ENDPOINT;
1030
4049
  const adminPanelUrl = strapi.config.get("admin.url", "/admin");
1031
4050
  const loginUrl = `${adminPanelUrl}/auth/login`;
1032
- const isOidcSession = !!ctx.cookies.get("oidc_authenticated");
1033
- const accessToken = ctx.cookies.get("oidc_access_token");
1034
- const userEmail = ctx.cookies.get("oidc_user_email") ?? void 0;
4051
+ const isOidcSession = !!ctx.cookies.get(COOKIE_NAMES.authenticated);
4052
+ const accessToken = ctx.cookies.get(COOKIE_NAMES.accessToken);
4053
+ const userEmail = ctx.cookies.get(COOKIE_NAMES.userEmail) ?? void 0;
1035
4054
  clearAuthCookies(strapi, ctx);
1036
4055
  if (!isOidcSession) {
1037
4056
  return ctx.redirect(loginUrl);
@@ -1040,14 +4059,19 @@ async function logout(ctx) {
1040
4059
  if (logoutUrl && accessToken) {
1041
4060
  const expired = await isProviderSessionExpired(config2.OIDC_USERINFO_ENDPOINT, accessToken);
1042
4061
  if (expired) {
1043
- await logAudit("session_expired");
4062
+ await logAudit("session_expired").catch((err) => {
4063
+ strapi.log.error("[strapi-plugin-oidc] Audit log failed on session expiry:", err);
4064
+ });
1044
4065
  return ctx.redirect(loginUrl);
1045
4066
  }
1046
- logAudit("logout").catch(() => {
4067
+ logAudit("logout").catch((err) => {
4068
+ strapi.log.error("[strapi-plugin-oidc] Audit log failed on logout:", err);
1047
4069
  });
1048
4070
  return ctx.redirect(logoutUrl);
1049
4071
  }
1050
- await logAudit("logout");
4072
+ await logAudit("logout").catch((err) => {
4073
+ strapi.log.error("[strapi-plugin-oidc] Audit log failed on logout:", err);
4074
+ });
1051
4075
  ctx.redirect(logoutUrl || loginUrl);
1052
4076
  }
1053
4077
  const oidc = {
@@ -1055,6 +4079,30 @@ const oidc = {
1055
4079
  oidcSignInCallback,
1056
4080
  logout
1057
4081
  };
4082
+ const updateSettingsSchema = z.object({
4083
+ useWhitelist: z.boolean(),
4084
+ enforceOIDC: z.boolean()
4085
+ });
4086
+ const registerSchema = z.object({
4087
+ email: z.union([z.string(), z.array(z.string())])
4088
+ });
4089
+ const EmailUserSchema = z.object({
4090
+ email: z.string().email()
4091
+ });
4092
+ const importUsersSchema = z.object({
4093
+ users: z.array(z.object({ email: z.string().nullable().optional() }))
4094
+ });
4095
+ const syncUsersSchema = z.object({
4096
+ users: z.array(EmailUserSchema)
4097
+ });
4098
+ const roleUpdateSchema = z.object({
4099
+ roles: z.array(
4100
+ z.object({
4101
+ oauth_type: z.string(),
4102
+ role: z.array(z.number())
4103
+ })
4104
+ )
4105
+ });
1058
4106
  async function find$1(ctx) {
1059
4107
  const roleService2 = getRoleService();
1060
4108
  const roles2 = await roleService2.find();
@@ -1068,13 +4116,19 @@ async function find$1(ctx) {
1068
4116
  ctx.send(oidcConstants);
1069
4117
  }
1070
4118
  async function update(ctx) {
4119
+ const parsed = roleUpdateSchema.safeParse(ctx.request.body);
4120
+ if (!parsed.success) {
4121
+ ctx.status = 400;
4122
+ ctx.body = {};
4123
+ return;
4124
+ }
1071
4125
  try {
1072
- const { roles: roles2 } = ctx.request.body;
4126
+ const { roles: roles2 } = parsed.data;
1073
4127
  const roleService2 = getRoleService();
1074
4128
  await roleService2.update(roles2);
1075
4129
  ctx.send({}, 204);
1076
4130
  } catch (e) {
1077
- strapi.log.error(e);
4131
+ strapi.log.error({ phase: "role_update", message: toMessage(e) });
1078
4132
  ctx.send({}, 400);
1079
4133
  }
1080
4134
  }
@@ -1116,34 +4170,41 @@ async function info(ctx) {
1116
4170
  };
1117
4171
  }
1118
4172
  async function updateSettings(ctx) {
1119
- const body = ctx.request.body;
1120
- const { useWhitelist } = body;
1121
- let { enforceOIDC } = body;
4173
+ const parsed = updateSettingsSchema.safeParse(ctx.request.body);
4174
+ if (!parsed.success) {
4175
+ ctx.status = 400;
4176
+ ctx.body = { error: errorMessages.WHITELIST_INVALID_REQUEST };
4177
+ return;
4178
+ }
4179
+ const { useWhitelist, enforceOIDC } = parsed.data;
4180
+ let enforceOIDCParsed = enforceOIDC;
1122
4181
  const whitelistService2 = getWhitelistService();
1123
- if (useWhitelist && enforceOIDC) {
4182
+ if (useWhitelist && enforceOIDCParsed) {
1124
4183
  const users = await whitelistService2.getUsers();
1125
4184
  if (users.length === 0) {
1126
- enforceOIDC = false;
4185
+ enforceOIDCParsed = false;
1127
4186
  }
1128
4187
  }
1129
- await whitelistService2.setSettings({ useWhitelist, enforceOIDC });
1130
- ctx.body = { useWhitelist, enforceOIDC };
4188
+ await whitelistService2.setSettings({ useWhitelist, enforceOIDC: enforceOIDCParsed });
4189
+ ctx.body = { useWhitelist, enforceOIDC: enforceOIDCParsed };
1131
4190
  }
1132
4191
  async function publicSettings(ctx) {
1133
4192
  const whitelistService2 = getWhitelistService();
1134
4193
  const settings = await whitelistService2.getSettings();
1135
- const config2 = strapi.config.get("plugin::strapi-plugin-oidc");
4194
+ const config2 = getPluginConfig();
1136
4195
  ctx.body = {
1137
4196
  enforceOIDC: resolveEnforceOIDC(strapi, settings.enforceOIDC),
1138
4197
  ssoButtonText: config2.OIDC_SSO_BUTTON_TEXT
1139
4198
  };
1140
4199
  }
1141
4200
  async function register(ctx) {
1142
- const { email } = ctx.request.body;
1143
- if (!email) {
1144
- ctx.body = { message: "Please enter a valid email address" };
4201
+ const parsed = registerSchema.safeParse(ctx.request.body);
4202
+ if (!parsed.success) {
4203
+ ctx.status = 400;
4204
+ ctx.body = { message: errorMessages.WHITELIST_INVALID_EMAIL };
1145
4205
  return;
1146
4206
  }
4207
+ const { email } = parsed.data;
1147
4208
  const rawEmails = Array.isArray(email) ? email : email.split(",");
1148
4209
  const normalized = rawEmails.map((e) => String(e).trim().toLowerCase()).filter(Boolean);
1149
4210
  const rejectedEmails = [];
@@ -1157,7 +4218,7 @@ async function register(ctx) {
1157
4218
  }
1158
4219
  if (validEmails.length === 0) {
1159
4220
  ctx.status = 400;
1160
- ctx.body = { error: "No valid email addresses supplied", rejectedEmails };
4221
+ ctx.body = { message: errorMessages.WHITELIST_INVALID_EMAIL };
1161
4222
  return;
1162
4223
  }
1163
4224
  const whitelistService2 = getWhitelistService();
@@ -1192,13 +4253,14 @@ async function exportWhitelist(ctx) {
1192
4253
  ctx.body = users.map((u) => ({ email: u.email }));
1193
4254
  }
1194
4255
  async function importUsers(ctx) {
1195
- const { users } = ctx.request.body;
1196
- if (!Array.isArray(users)) {
4256
+ const parsed = importUsersSchema.safeParse(ctx.request.body);
4257
+ if (!parsed.success) {
1197
4258
  ctx.status = 400;
1198
- ctx.body = { error: "Expected { users: [{email}] }" };
4259
+ ctx.body = { error: errorMessages.WHITELIST_IMPORT_INVALID };
1199
4260
  return;
1200
4261
  }
1201
- const normalized = users.filter((u) => u?.email).map((u) => String(u.email).trim().toLowerCase()).filter(isValidEmail);
4262
+ const { users } = parsed.data;
4263
+ const normalized = users.map((u) => (u.email ?? "").trim().toLowerCase()).filter(isValidEmail);
1202
4264
  const deduped = [...new Set(normalized)];
1203
4265
  const whitelistService2 = getWhitelistService();
1204
4266
  const existing = await whitelistService2.getUsers();
@@ -1208,8 +4270,14 @@ async function importUsers(ctx) {
1208
4270
  ctx.body = { importedCount: toImport.length };
1209
4271
  }
1210
4272
  async function syncUsers(ctx) {
1211
- const { users: rawUsers } = ctx.request.body;
1212
- const emails = rawUsers.map((u) => String(u.email).toLowerCase()).filter(isValidEmail);
4273
+ const parsed = syncUsersSchema.safeParse(ctx.request.body);
4274
+ if (!parsed.success) {
4275
+ ctx.status = 400;
4276
+ ctx.body = { error: errorMessages.WHITELIST_INVALID_REQUEST };
4277
+ return;
4278
+ }
4279
+ const { users } = parsed.data;
4280
+ const emails = users.map((u) => u.email.toLowerCase()).filter(isValidEmail);
1213
4281
  const whitelistService2 = getWhitelistService();
1214
4282
  const currentUsers = await whitelistService2.getUsers();
1215
4283
  const syncEmailSet = new Set(emails);
@@ -1231,6 +4299,15 @@ const whitelist = {
1231
4299
  importUsers,
1232
4300
  exportWhitelist
1233
4301
  };
4302
+ function interpolate(str, params) {
4303
+ if (!params) return str;
4304
+ return str.replace(/\{(\w+)\}/g, (_, key) => String(params[key] ?? `{${key}}`));
4305
+ }
4306
+ function translateDetails(key, params) {
4307
+ const translation = en[`audit.${key}`];
4308
+ if (!translation) return null;
4309
+ return interpolate(translation, params);
4310
+ }
1234
4311
  const AUDIT_ACTIONS = [
1235
4312
  "login_success",
1236
4313
  "login_failure",
@@ -1245,137 +4322,59 @@ const AUDIT_ACTIONS = [
1245
4322
  "session_expired",
1246
4323
  "user_created"
1247
4324
  ];
1248
- const ISO_UTC_DATETIME = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
1249
- function isIsoUtcDatetime(value) {
1250
- return typeof value === "string" && ISO_UTC_DATETIME.test(value);
1251
- }
1252
- const ALLOWED_FIELDS = /* @__PURE__ */ new Set(["action", "email", "ip", "createdAt"]);
1253
- const STRING_OPERATORS = /* @__PURE__ */ new Set([
1254
- "$eq",
1255
- "$contains",
1256
- "$endsWith",
1257
- "$null",
1258
- "$notNull"
1259
- ]);
1260
- const DATE_OPERATORS = /* @__PURE__ */ new Set(["$gte", "$lt", "$lte", "$between", "$in"]);
1261
- const ENUM_OPERATORS = /* @__PURE__ */ new Set(["$eq", "$in"]);
1262
- function isPlainObject(value) {
1263
- if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
1264
- const proto = Object.getPrototypeOf(value);
1265
- return proto === Object.prototype || proto === null;
1266
- }
1267
- function isStringOperator(op) {
1268
- return STRING_OPERATORS.has(op);
1269
- }
1270
- function isDateOperator(op) {
1271
- return DATE_OPERATORS.has(op);
1272
- }
1273
- function isEnumOperator(op) {
1274
- return ENUM_OPERATORS.has(op);
1275
- }
1276
- function isAuditAction(value) {
1277
- return AUDIT_ACTIONS.includes(value);
1278
- }
1279
4325
  class ValidationError extends Error {
1280
4326
  constructor(message) {
1281
4327
  super(message);
1282
4328
  this.name = "ValidationError";
1283
4329
  }
1284
4330
  }
1285
- function requireType(field, op, value, check, expected) {
1286
- if (!check) {
1287
- throw new ValidationError(`Operator "${op}" for field "${field}" requires ${expected}`);
1288
- }
1289
- return value;
1290
- }
1291
- function parseActionOperator(op, opValue) {
1292
- if (!isEnumOperator(op)) {
1293
- throw new ValidationError(`Unknown operator "${op}" for field "action"`);
1294
- }
1295
- if (op === "$in") {
1296
- requireType("action", op, opValue, Array.isArray(opValue), "an array value");
1297
- for (const v of opValue) {
1298
- if (!isAuditAction(v)) {
1299
- throw new ValidationError(
1300
- `Invalid action value "${v}" — must be one of: ${AUDIT_ACTIONS.join(", ")}`
1301
- );
1302
- }
1303
- }
1304
- return opValue;
1305
- }
1306
- if (!isAuditAction(opValue)) {
1307
- throw new ValidationError(
1308
- `Invalid action value "${opValue}" — must be one of: ${AUDIT_ACTIONS.join(", ")}`
1309
- );
1310
- }
1311
- return opValue;
1312
- }
1313
- function parseCreatedAtOperator(op, opValue) {
1314
- if (!isDateOperator(op)) {
1315
- throw new ValidationError(`Unknown operator "${op}" for field "createdAt"`);
1316
- }
1317
- const expected = 'an ISO-8601 UTC datetime string (e.g. "2024-01-15T00:00:00.000Z")';
1318
- if (op === "$between") {
1319
- const isTuple = Array.isArray(opValue) && opValue.length === 2;
1320
- requireType("createdAt", op, opValue, isTuple, "a tuple [start, end]");
1321
- const [a, b] = opValue;
1322
- requireType("createdAt", op, opValue, isIsoUtcDatetime(a) && isIsoUtcDatetime(b), expected);
1323
- return opValue;
1324
- }
1325
- if (op === "$in") {
1326
- requireType("createdAt", op, opValue, Array.isArray(opValue), "an array value");
1327
- for (const v of opValue) {
1328
- requireType("createdAt", op, v, isIsoUtcDatetime(v), expected);
1329
- }
1330
- return opValue;
1331
- }
1332
- return requireType("createdAt", op, opValue, isIsoUtcDatetime(opValue), expected);
1333
- }
1334
- function parseStringFieldOperator(field, op, opValue) {
1335
- if (!isStringOperator(op)) {
1336
- throw new ValidationError(`Unknown operator "${op}" for field "${field}"`);
1337
- }
1338
- if (op === "$null" || op === "$notNull") {
1339
- return requireType(field, op, opValue, typeof opValue === "boolean", "a boolean value");
1340
- }
1341
- return requireType(field, op, opValue, typeof opValue === "string", "a string value");
1342
- }
1343
- function parseFieldOperators(field, fieldValue) {
1344
- if (!isPlainObject(fieldValue)) {
1345
- throw new ValidationError(
1346
- `Filter field "${field}" must be an object of operators, got ${typeof fieldValue}`
1347
- );
1348
- }
1349
- const parsed = {};
1350
- for (const [op, opValue] of Object.entries(fieldValue)) {
1351
- if (field === "action") parsed[op] = parseActionOperator(op, opValue);
1352
- else if (field === "createdAt") parsed[op] = parseCreatedAtOperator(op, opValue);
1353
- else parsed[op] = parseStringFieldOperator(field, op, opValue);
1354
- }
1355
- return Object.keys(parsed).length > 0 ? parsed : null;
1356
- }
4331
+ const isoUtcDatetime = z.string().regex(
4332
+ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/,
4333
+ 'must be an ISO-8601 UTC datetime (e.g. "2024-01-15T00:00:00.000Z")'
4334
+ );
4335
+ const actionFilterSchema = z.object({
4336
+ $eq: z.enum(AUDIT_ACTIONS).optional(),
4337
+ $in: z.array(z.enum(AUDIT_ACTIONS)).optional()
4338
+ }).strict();
4339
+ const stringFilterSchema = z.object({
4340
+ $eq: z.string().optional(),
4341
+ $contains: z.string().optional(),
4342
+ $endsWith: z.string().optional(),
4343
+ $null: z.boolean().optional(),
4344
+ $notNull: z.boolean().optional()
4345
+ }).strict();
4346
+ const createdAtFilterSchema = z.object({
4347
+ $gte: isoUtcDatetime.optional(),
4348
+ $lt: isoUtcDatetime.optional(),
4349
+ $lte: isoUtcDatetime.optional(),
4350
+ $between: z.tuple([isoUtcDatetime, isoUtcDatetime]).optional(),
4351
+ $in: z.array(isoUtcDatetime).optional()
4352
+ }).strict();
4353
+ const auditLogQuerySchema = z.object({
4354
+ filters: z.object({
4355
+ action: actionFilterSchema.optional(),
4356
+ email: stringFilterSchema.optional(),
4357
+ ip: stringFilterSchema.optional(),
4358
+ createdAt: createdAtFilterSchema.optional()
4359
+ }).strict().optional()
4360
+ }).passthrough();
1357
4361
  function parseAuditLogFilters(query) {
1358
- if (!isPlainObject(query)) return {};
1359
- const result = {};
1360
- const filters = query.filters;
1361
- if (filters === void 0) return result;
1362
- if (!isPlainObject(filters)) {
1363
- throw new ValidationError(`"filters" must be an object, got ${typeof filters}`);
1364
- }
1365
- for (const [field, fieldValue] of Object.entries(filters)) {
1366
- if (!ALLOWED_FIELDS.has(field)) {
1367
- throw new ValidationError(`Unknown filter field: "${field}"`);
1368
- }
1369
- const parsed = parseFieldOperators(field, fieldValue);
1370
- if (parsed) result[field] = parsed;
4362
+ const result = auditLogQuerySchema.safeParse(query);
4363
+ if (!result.success) {
4364
+ const issue = result.error.issues[0];
4365
+ const path = issue.path.length ? ` at "${issue.path.join(".")}"` : "";
4366
+ throw new ValidationError(`${issue.message}${path}`);
1371
4367
  }
1372
- return result;
4368
+ return result.data.filters ?? {};
1373
4369
  }
1374
- const EXPORT_PAGE_SIZE = 500;
1375
4370
  async function* ndjsonRowStream(service, filters) {
1376
4371
  let page = 1;
1377
4372
  while (true) {
1378
- const { results } = await service.find({ page, pageSize: EXPORT_PAGE_SIZE, filters });
4373
+ const { results } = await service.find({
4374
+ page,
4375
+ pageSize: AUDIT_LOG_DEFAULTS.EXPORT_PAGE_SIZE,
4376
+ filters
4377
+ });
1379
4378
  if (results.length === 0) return;
1380
4379
  let chunk = "";
1381
4380
  for (const row of results) {
@@ -1384,11 +4383,11 @@ async function* ndjsonRowStream(service, filters) {
1384
4383
  action: row.action,
1385
4384
  email: row.email ?? null,
1386
4385
  ip: row.ip ?? null,
1387
- details: row.details
4386
+ details: row.detailsKey ? translateDetails(row.detailsKey, row.detailsParams) : null
1388
4387
  }) + "\n";
1389
4388
  }
1390
4389
  yield Buffer.from(chunk, "utf8");
1391
- if (results.length < EXPORT_PAGE_SIZE) return;
4390
+ if (results.length < AUDIT_LOG_DEFAULTS.EXPORT_PAGE_SIZE) return;
1392
4391
  page++;
1393
4392
  }
1394
4393
  }
@@ -1413,7 +4412,10 @@ async function find(ctx) {
1413
4412
  const filters = parseFiltersOr400(ctx);
1414
4413
  if (!filters) return;
1415
4414
  const page = Math.max(1, Number(ctx.query.page) || 1);
1416
- const pageSize = Math.min(100, Math.max(1, Number(ctx.query.pageSize) || 25));
4415
+ const pageSize = Math.min(
4416
+ AUDIT_LOG_DEFAULTS.MAX_PAGE_SIZE,
4417
+ Math.max(1, Number(ctx.query.pageSize) || AUDIT_LOG_DEFAULTS.PAGE_SIZE)
4418
+ );
1417
4419
  ctx.body = await getAuditLogService().find({ page, pageSize, filters });
1418
4420
  }
1419
4421
  async function exportLogs(ctx) {
@@ -1438,12 +4440,8 @@ const controllers = {
1438
4440
  auditLog
1439
4441
  };
1440
4442
  const rateLimitMap = /* @__PURE__ */ new Map();
1441
- const RATE_LIMIT_WINDOW = 6e4;
1442
- const MAX_REQUESTS = 1e3;
1443
- const MAX_MAP_SIZE = 1e4;
1444
- const PRUNE_THRESHOLD = 1e3;
1445
4443
  function pruneExpiredEntries(now) {
1446
- const windowStart = now - RATE_LIMIT_WINDOW;
4444
+ const windowStart = now - RATE_LIMIT.WINDOW_MS;
1447
4445
  for (const [key, stamps] of rateLimitMap) {
1448
4446
  if (stamps.length === 0 || stamps[stamps.length - 1] <= windowStart) {
1449
4447
  rateLimitMap.delete(key);
@@ -1465,18 +4463,18 @@ function getRateLimitKey(ctx) {
1465
4463
  function rateLimitMiddleware(ctx, next) {
1466
4464
  const key = getRateLimitKey(ctx);
1467
4465
  const now = Date.now();
1468
- const windowStart = now - RATE_LIMIT_WINDOW;
1469
- if (rateLimitMap.size > PRUNE_THRESHOLD) {
4466
+ const windowStart = now - RATE_LIMIT.WINDOW_MS;
4467
+ if (rateLimitMap.size > RATE_LIMIT.PRUNE_THRESHOLD) {
1470
4468
  pruneExpiredEntries(now);
1471
4469
  }
1472
4470
  const requestStamps = (rateLimitMap.get(key) ?? []).filter((ts) => ts > windowStart);
1473
- if (requestStamps.length >= MAX_REQUESTS) {
4471
+ if (requestStamps.length >= RATE_LIMIT.MAX_REQUESTS) {
1474
4472
  ctx.status = 429;
1475
4473
  ctx.body = "Too Many Requests";
1476
4474
  return;
1477
4475
  }
1478
4476
  requestStamps.push(now);
1479
- if (!rateLimitMap.has(key) && rateLimitMap.size >= MAX_MAP_SIZE) {
4477
+ if (!rateLimitMap.has(key) && rateLimitMap.size >= RATE_LIMIT.MAX_MAP_SIZE) {
1480
4478
  evictOldestEntry();
1481
4479
  }
1482
4480
  rateLimitMap.set(key, requestStamps);
@@ -1618,171 +4616,171 @@ const routes = {
1618
4616
  method: "GET",
1619
4617
  path: "/whitelist",
1620
4618
  handler: "whitelist.info",
1621
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.read"] } }
4619
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_READ] } }
1622
4620
  },
1623
4621
  {
1624
4622
  method: "POST",
1625
4623
  path: "/whitelist",
1626
4624
  handler: "whitelist.register",
1627
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.write"] } }
4625
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_WRITE] } }
1628
4626
  },
1629
4627
  {
1630
4628
  method: "POST",
1631
4629
  path: "/whitelist/import",
1632
4630
  handler: "whitelist.importUsers",
1633
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.write"] } }
4631
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_WRITE] } }
1634
4632
  },
1635
4633
  {
1636
4634
  method: "DELETE",
1637
4635
  path: "/whitelist/:email",
1638
4636
  handler: "whitelist.removeEmail",
1639
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.delete"] } }
4637
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_DELETE] } }
1640
4638
  },
1641
4639
  {
1642
4640
  method: "DELETE",
1643
4641
  path: "/whitelist",
1644
4642
  handler: "whitelist.deleteAll",
1645
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.delete"] } }
4643
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_DELETE] } }
1646
4644
  },
1647
4645
  {
1648
4646
  method: "GET",
1649
4647
  path: "/whitelist/export",
1650
4648
  handler: "whitelist.exportWhitelist",
1651
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.whitelist.read"] } }
4649
+ config: { auth: { scope: [PERMISSIONS.WHITELIST_READ] } }
1652
4650
  },
1653
4651
  {
1654
4652
  method: "GET",
1655
4653
  path: "/audit-logs",
1656
4654
  handler: "auditLog.find",
1657
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.audit.read"] } }
4655
+ config: { auth: { scope: [PERMISSIONS.AUDIT_READ] } }
1658
4656
  },
1659
4657
  {
1660
4658
  method: "GET",
1661
4659
  path: "/audit-logs/export",
1662
4660
  handler: "auditLog.export",
1663
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.audit.read"] } }
4661
+ config: { auth: { scope: [PERMISSIONS.AUDIT_READ] } }
1664
4662
  },
1665
4663
  {
1666
4664
  method: "DELETE",
1667
4665
  path: "/audit-logs",
1668
4666
  handler: "auditLog.clearAll",
1669
- config: { auth: { scope: ["plugin::strapi-plugin-oidc.audit.delete"] } }
4667
+ config: { auth: { scope: [PERMISSIONS.AUDIT_DELETE] } }
1670
4668
  }
1671
4669
  ]
1672
4670
  }
1673
4671
  };
1674
4672
  const policies = {};
4673
+ const AUTH_PAGE_CSS = `
4674
+ :root {
4675
+ --bg-color: #f6f6f9;
4676
+ --card-bg: #ffffff;
4677
+ --text-color: #32324d;
4678
+ --text-muted: #666687;
4679
+ --btn-bg: #4945ff;
4680
+ --btn-hover: #271fe0;
4681
+ --btn-text: #ffffff;
4682
+ --icon-bg: #fcecea;
4683
+ --icon-color: #d02b20;
4684
+ --success-bg: #eafbe7;
4685
+ --success-color: #328048;
4686
+ --shadow: 0 1px 4 rgba(33, 33, 52, 0.1);
4687
+ }
4688
+ @media (prefers-color-scheme: dark) {
4689
+ :root {
4690
+ --bg-color: #181826;
4691
+ --card-bg: #212134;
4692
+ --text-color: #ffffff;
4693
+ --text-muted: #a5a5ba;
4694
+ --btn-bg: #4945ff;
4695
+ --btn-hover: #7b79ff;
4696
+ --btn-text: #ffffff;
4697
+ --icon-bg: #4a2123;
4698
+ --icon-color: #f23628;
4699
+ --success-bg: #1c3523;
4700
+ --success-color: #55ca76;
4701
+ --shadow: 0 1px 4 rgba(0, 0, 0, 0.5);
4702
+ }
4703
+ }
4704
+ body {
4705
+ margin: 0;
4706
+ padding: 0;
4707
+ display: flex;
4708
+ justify-content: center;
4709
+ align-items: center;
4710
+ height: 100vh;
4711
+ background-color: var(--bg-color);
4712
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
4713
+ color: var(--text-color);
4714
+ }
4715
+ .card {
4716
+ background: var(--card-bg);
4717
+ padding: 32px 40px;
4718
+ border-radius: 8px;
4719
+ box-shadow: var(--shadow);
4720
+ max-width: 400px;
4721
+ width: 100%;
4722
+ text-align: center;
4723
+ box-sizing: border-box;
4724
+ }
4725
+ .icon {
4726
+ width: 48px;
4727
+ height: 48px;
4728
+ background-color: var(--icon-bg);
4729
+ color: var(--icon-color);
4730
+ border-radius: 50%;
4731
+ display: inline-flex;
4732
+ justify-content: center;
4733
+ align-items: center;
4734
+ margin-bottom: 24px;
4735
+ }
4736
+ .icon.success {
4737
+ background-color: var(--success-bg);
4738
+ color: var(--success-color);
4739
+ }
4740
+ .icon svg {
4741
+ width: 24px;
4742
+ height: 24px;
4743
+ stroke: currentColor;
4744
+ stroke-width: 2;
4745
+ stroke-linecap: round;
4746
+ stroke-linejoin: round;
4747
+ fill: none;
4748
+ }
4749
+ h1 {
4750
+ margin: 0 0 12px 0;
4751
+ font-size: 20px;
4752
+ font-weight: 600;
4753
+ color: var(--text-color);
4754
+ }
4755
+ p {
4756
+ margin: 0 0 32px 0;
4757
+ font-size: 14px;
4758
+ line-height: 1.5;
4759
+ color: var(--text-muted);
4760
+ }
4761
+ .btn {
4762
+ display: inline-block;
4763
+ background-color: var(--btn-bg);
4764
+ color: var(--btn-text);
4765
+ padding: 10px 16px;
4766
+ border-radius: 4px;
4767
+ text-decoration: none;
4768
+ font-size: 14px;
4769
+ font-weight: 500;
4770
+ transition: background-color 0.2s;
4771
+ }
4772
+ .btn:hover {
4773
+ background-color: var(--btn-hover);
4774
+ }
4775
+ `;
1675
4776
  function renderHtmlTemplate(title, content, locale = "en") {
1676
- return `
1677
- <!doctype html>
4777
+ return `<!doctype html>
1678
4778
  <html lang="${locale}">
1679
4779
  <head>
1680
4780
  <meta charset="utf-8">
1681
4781
  <meta name="viewport" content="width=device-width, initial-scale=1">
1682
4782
  <title>${title}</title>
1683
- <style>
1684
- :root {
1685
- --bg-color: #f6f6f9;
1686
- --card-bg: #ffffff;
1687
- --text-color: #32324d;
1688
- --text-muted: #666687;
1689
- --btn-bg: #4945ff;
1690
- --btn-hover: #271fe0;
1691
- --btn-text: #ffffff;
1692
- --icon-bg: #fcecea;
1693
- --icon-color: #d02b20;
1694
- --success-bg: #eafbe7;
1695
- --success-color: #328048;
1696
- --shadow: 0 1px 4 rgba(33, 33, 52, 0.1);
1697
- }
1698
- @media (prefers-color-scheme: dark) {
1699
- :root {
1700
- --bg-color: #181826;
1701
- --card-bg: #212134;
1702
- --text-color: #ffffff;
1703
- --text-muted: #a5a5ba;
1704
- --btn-bg: #4945ff;
1705
- --btn-hover: #7b79ff;
1706
- --btn-text: #ffffff;
1707
- --icon-bg: #4a2123;
1708
- --icon-color: #f23628;
1709
- --success-bg: #1c3523;
1710
- --success-color: #55ca76;
1711
- --shadow: 0 1px 4 rgba(0, 0, 0, 0.5);
1712
- }
1713
- }
1714
- body {
1715
- margin: 0;
1716
- padding: 0;
1717
- display: flex;
1718
- justify-content: center;
1719
- align-items: center;
1720
- height: 100vh;
1721
- background-color: var(--bg-color);
1722
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
1723
- color: var(--text-color);
1724
- }
1725
- .card {
1726
- background: var(--card-bg);
1727
- padding: 32px 40px;
1728
- border-radius: 8px;
1729
- box-shadow: var(--shadow);
1730
- max-width: 400px;
1731
- width: 100%;
1732
- text-align: center;
1733
- box-sizing: border-box;
1734
- }
1735
- .icon {
1736
- width: 48px;
1737
- height: 48px;
1738
- background-color: var(--icon-bg);
1739
- color: var(--icon-color);
1740
- border-radius: 50%;
1741
- display: inline-flex;
1742
- justify-content: center;
1743
- align-items: center;
1744
- margin-bottom: 24px;
1745
- }
1746
- .icon.success {
1747
- background-color: var(--success-bg);
1748
- color: var(--success-color);
1749
- }
1750
- .icon svg {
1751
- width: 24px;
1752
- height: 24px;
1753
- stroke: currentColor;
1754
- stroke-width: 2;
1755
- stroke-linecap: round;
1756
- stroke-linejoin: round;
1757
- fill: none;
1758
- }
1759
- h1 {
1760
- margin: 0 0 12px 0;
1761
- font-size: 20px;
1762
- font-weight: 600;
1763
- color: var(--text-color);
1764
- }
1765
- p {
1766
- margin: 0 0 32px 0;
1767
- font-size: 14px;
1768
- line-height: 1.5;
1769
- color: var(--text-muted);
1770
- }
1771
- .btn {
1772
- display: inline-block;
1773
- background-color: var(--btn-bg);
1774
- color: var(--btn-text);
1775
- padding: 10px 16px;
1776
- border-radius: 4px;
1777
- text-decoration: none;
1778
- font-size: 14px;
1779
- font-weight: 500;
1780
- transition: background-color 0.2s;
1781
- }
1782
- .btn:hover {
1783
- background-color: var(--btn-hover);
1784
- }
1785
- </style>
4783
+ <style>${AUTH_PAGE_CSS}</style>
1786
4784
  </head>
1787
4785
  <body>
1788
4786
  ${content}
@@ -1858,7 +4856,6 @@ function oauthService({ strapi: strapi2 }) {
1858
4856
  renderSignUpSuccess(jwtToken, user, nonce, locale = "en") {
1859
4857
  const config2 = strapi2.config.get("plugin::strapi-plugin-oidc");
1860
4858
  const isRememberMe = !!config2?.REMEMBER_ME;
1861
- const messages = authPageMessages(locale);
1862
4859
  const content = `
1863
4860
  <noscript>
1864
4861
  <div class="card">
@@ -1867,8 +4864,8 @@ function oauthService({ strapi: strapi2 }) {
1867
4864
  <path d="M20 6 9 17l-5-5"/>
1868
4865
  </svg>
1869
4866
  </div>
1870
- <h1>${messages.noscriptHeading}</h1>
1871
- <p>${messages.noscriptBody}</p>
4867
+ <h1>${t(locale, "auth.page.authenticating.noscript.heading")}</h1>
4868
+ <p>${t(locale, "auth.page.authenticating.noscript.body")}</p>
1872
4869
  </div>
1873
4870
  </noscript>
1874
4871
  <script nonce="${nonce}">
@@ -1882,10 +4879,10 @@ function oauthService({ strapi: strapi2 }) {
1882
4879
  location.href = '${strapi2.config.admin.url}'
1883
4880
  })
1884
4881
  <\/script>`;
1885
- return renderHtmlTemplate(messages.authenticatingTitle, content, locale);
4882
+ return renderHtmlTemplate(t(locale, "auth.page.authenticating.title"), content, locale);
1886
4883
  },
1887
4884
  renderSignUpError(message, locale = "en") {
1888
- const messages = authPageMessages(locale);
4885
+ const errorTitle = t(locale, "auth.page.error.title");
1889
4886
  const safeMessage = String(message).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
1890
4887
  const content = `
1891
4888
  <div class="card">
@@ -1896,11 +4893,11 @@ function oauthService({ strapi: strapi2 }) {
1896
4893
  <path d="M12 17h.01"/>
1897
4894
  </svg>
1898
4895
  </div>
1899
- <h1>${messages.errorTitle}</h1>
4896
+ <h1>${errorTitle}</h1>
1900
4897
  <p>${safeMessage}</p>
1901
- <a href="${strapi2.config.admin.url}" class="btn">${messages.returnToLogin}</a>
4898
+ <a href="${strapi2.config.admin.url}" class="btn">${t(locale, "auth.page.error.returnToLogin")}</a>
1902
4899
  </div>`;
1903
- return renderHtmlTemplate(messages.errorTitle, content, locale);
4900
+ return renderHtmlTemplate(errorTitle, content, locale);
1904
4901
  },
1905
4902
  async generateToken(user, ctx) {
1906
4903
  const sessionManager = strapi2.sessionManager;
@@ -1937,12 +4934,12 @@ function oauthService({ strapi: strapi2 }) {
1937
4934
  );
1938
4935
  const idleMs = idleLifespanSec * 1e3;
1939
4936
  const absoluteMs = new Date(absoluteExpiresAt).getTime() - Date.now();
1940
- const ms = Math.min(idleMs, absoluteMs);
1941
- cookieOptions.maxAge = ms;
1942
- cookieOptions.expires = new Date(Date.now() + ms);
4937
+ const ms2 = Math.min(idleMs, absoluteMs);
4938
+ cookieOptions.maxAge = ms2;
4939
+ cookieOptions.expires = new Date(Date.now() + ms2);
1943
4940
  }
1944
- ctx.cookies.set("strapi_admin_refresh", refreshToken, cookieOptions);
1945
- ctx.cookies.set("oidc_authenticated", "1", { ...cookieOptions, path: "/" });
4941
+ ctx.cookies.set(COOKIE_NAMES.adminRefresh, refreshToken, cookieOptions);
4942
+ ctx.cookies.set(COOKIE_NAMES.authenticated, "1", { ...cookieOptions, path: "/" });
1946
4943
  const accessResult = await smAdmin.generateAccessToken(refreshToken);
1947
4944
  if ("error" in accessResult) {
1948
4945
  throw new Error(accessResult.error);
@@ -1964,17 +4961,17 @@ function roleService({ strapi: strapi2 }) {
1964
4961
  ];
1965
4962
  },
1966
4963
  async oidcRoles() {
1967
- return strapi2.query("plugin::strapi-plugin-oidc.roles").findOne({
4964
+ return strapi2.query(CONTENT_TYPES.ROLES).findOne({
1968
4965
  where: {
1969
4966
  oauth_type: this.OIDC_TYPE
1970
4967
  }
1971
4968
  });
1972
4969
  },
1973
4970
  async find() {
1974
- return strapi2.query("plugin::strapi-plugin-oidc.roles").findMany();
4971
+ return strapi2.query(CONTENT_TYPES.ROLES).findMany();
1975
4972
  },
1976
4973
  async update(roles2) {
1977
- const query = strapi2.query("plugin::strapi-plugin-oidc.roles");
4974
+ const query = strapi2.query(CONTENT_TYPES.ROLES);
1978
4975
  await Promise.all(
1979
4976
  roles2.map(async (role2) => {
1980
4977
  const oidcRole = await query.findOne({ where: { oauth_type: role2.oauth_type } });
@@ -1996,15 +4993,14 @@ function roleService({ strapi: strapi2 }) {
1996
4993
  }
1997
4994
  };
1998
4995
  }
1999
- const SETTINGS_CACHE_TTL_MS = 5 * 60 * 1e3;
2000
4996
  function whitelistService({ strapi: strapi2 }) {
2001
4997
  let settingsCache = null;
2002
4998
  const getPluginStore = () => strapi2.store({ environment: "", type: "plugin", name: "strapi-plugin-oidc" });
2003
- const getWhitelistQuery = () => strapi2.query("plugin::strapi-plugin-oidc.whitelists");
4999
+ const getWhitelistQuery = () => strapi2.query(CONTENT_TYPES.WHITELIST);
2004
5000
  return {
2005
5001
  async getSettings() {
2006
5002
  const now = Date.now();
2007
- if (settingsCache && now - settingsCache.ts < SETTINGS_CACHE_TTL_MS) {
5003
+ if (settingsCache && now - settingsCache.ts < CACHE_TTL.SETTINGS_MS) {
2008
5004
  return settingsCache.value;
2009
5005
  }
2010
5006
  let settings = await getPluginStore().get({ key: "settings" });
@@ -2046,16 +5042,6 @@ function whitelistService({ strapi: strapi2 }) {
2046
5042
  }
2047
5043
  };
2048
5044
  }
2049
- function interpolate(str, params) {
2050
- if (!params) return str;
2051
- return str.replace(/\{(\w+)\}/g, (_, key) => String(params[key] ?? `{${key}}`));
2052
- }
2053
- function translateDetails(key, params) {
2054
- const translation = en[`audit.${key}`];
2055
- if (!translation) return null;
2056
- return interpolate(translation, params);
2057
- }
2058
- const DAY_MS = 864e5;
2059
5045
  const STRING_OP_MAP = {
2060
5046
  $eq: (v) => v,
2061
5047
  $contains: (v) => ({ $containsi: v }),
@@ -2112,11 +5098,12 @@ function buildWhereClause(filters) {
2112
5098
  if (conditions.length === 1) return conditions[0];
2113
5099
  return { $and: conditions };
2114
5100
  }
5101
+ const BATCH_SIZE = AUDIT_LOG_DEFAULTS.BATCH_DELETE_SIZE;
2115
5102
  function auditLogService({ strapi: strapi2 }) {
2116
5103
  return {
2117
5104
  async log({ action, email, ip, detailsKey, detailsParams }) {
2118
5105
  if (!isAuditLogEnabled()) return;
2119
- await strapi2.db.query("plugin::strapi-plugin-oidc.audit-log").create({
5106
+ await strapi2.db.query(CONTENT_TYPES.AUDIT_LOG).create({
2120
5107
  data: {
2121
5108
  action,
2122
5109
  email: email ?? null,
@@ -2136,11 +5123,11 @@ function auditLogService({ strapi: strapi2 }) {
2136
5123
  },
2137
5124
  async find({
2138
5125
  page = 1,
2139
- pageSize = 25,
5126
+ pageSize = AUDIT_LOG_DEFAULTS.PAGE_SIZE,
2140
5127
  filters
2141
5128
  } = {}) {
2142
5129
  const where = filters ? buildWhereClause(filters) : {};
2143
- const dbQuery = strapi2.db.query("plugin::strapi-plugin-oidc.audit-log");
5130
+ const dbQuery = strapi2.db.query(CONTENT_TYPES.AUDIT_LOG);
2144
5131
  const [rows, total] = await Promise.all([
2145
5132
  dbQuery.findMany({
2146
5133
  where,
@@ -2151,10 +5138,7 @@ function auditLogService({ strapi: strapi2 }) {
2151
5138
  dbQuery.count({ where })
2152
5139
  ]);
2153
5140
  return {
2154
- results: rows.map((row) => ({
2155
- ...row,
2156
- details: row.detailsKey ? translateDetails(row.detailsKey, row.detailsParams) : null
2157
- })),
5141
+ results: rows,
2158
5142
  pagination: {
2159
5143
  page,
2160
5144
  pageSize,
@@ -2164,16 +5148,15 @@ function auditLogService({ strapi: strapi2 }) {
2164
5148
  };
2165
5149
  },
2166
5150
  async clearAll() {
2167
- const BATCH_SIZE = 1e3;
2168
5151
  let deletedCount;
2169
5152
  do {
2170
- const result = await strapi2.db.query("plugin::strapi-plugin-oidc.audit-log").deleteMany({ limit: BATCH_SIZE });
5153
+ const result = await strapi2.db.query(CONTENT_TYPES.AUDIT_LOG).deleteMany({ limit: BATCH_SIZE });
2171
5154
  deletedCount = result.count;
2172
5155
  } while (deletedCount === BATCH_SIZE);
2173
5156
  },
2174
5157
  async cleanup(retentionDays) {
2175
5158
  const cutoff = new Date(Date.now() - retentionDays * DAY_MS);
2176
- await strapi2.db.query("plugin::strapi-plugin-oidc.audit-log").deleteMany({ where: { createdAt: { $lt: cutoff } } });
5159
+ await strapi2.db.query(CONTENT_TYPES.AUDIT_LOG).deleteMany({ where: { createdAt: { $lt: cutoff } } });
2177
5160
  }
2178
5161
  };
2179
5162
  }