strapi-plugin-oidc 1.9.2 → 1.9.4

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.
package/README.md CHANGED
@@ -32,7 +32,7 @@ module.exports = ({ env }) => ({
32
32
  enabled: true,
33
33
  config: {
34
34
  // Required
35
- OIDC_DISCOVERY_URL: env('OIDC_DISCOVERY_URL'), // https://your-provider/.well-known/openid-configuration
35
+ OIDC_ISSUER: env('OIDC_ISSUER'), // https://your-provider or https://your-provider/realms/your-realm
36
36
  OIDC_CLIENT_ID: env('OIDC_CLIENT_ID'),
37
37
  OIDC_CLIENT_SECRET: env('OIDC_CLIENT_SECRET'),
38
38
  OIDC_REDIRECT_URI: env('OIDC_REDIRECT_URI'), // https://your-strapi.com/strapi-plugin-oidc/oidc/callback
@@ -55,7 +55,7 @@ module.exports = ({ env }) => ({
55
55
  });
56
56
  ```
57
57
 
58
- `OIDC_DISCOVERY_URL` is the URL of your provider's OpenID Connect discovery document (`/.well-known/openid-configuration`). The plugin fetches it at startup and automatically configures all endpoints, JWKS URI, and issuer.
58
+ `OIDC_ISSUER` is your provider's issuer URL (e.g. `https://auth.example.com` or `https://auth.example.com/realms/myrealm`). The plugin appends `/.well-known/openid-configuration` automatically if not present, and fetches the discovery document at startup to configure all endpoints, JWKS URI, and canonical issuer.
59
59
 
60
60
  ### Security features
61
61
 
@@ -76,10 +76,10 @@ function LogoutOverlay() {
76
76
  }
77
77
  const en = {
78
78
  "global.plugins.strapi-plugin-oidc": "OIDC Plugin",
79
- "page.title": "Configure OIDC default role(s) and access controls.",
79
+ "page.title": "Configure Admin OIDC Login Settings and View Logs",
80
80
  "roles.notes": "Select the default role(s) assigned to new users upon their first login. This setting does not affect existing users.",
81
- "page.save": "Save Changes",
82
- "page.save.success": "Updated settings",
81
+ "page.save": "Save changes",
82
+ "page.save.success": "Settings updated",
83
83
  "page.save.error": "Update failed.",
84
84
  "page.add": "Add",
85
85
  "page.cancel": "Cancel",
@@ -98,7 +98,7 @@ const en = {
98
98
  "pagination.next": "Go to next page",
99
99
  "whitelist.table.no": "No.",
100
100
  "whitelist.table.email": "Email",
101
- "whitelist.table.created": "Created At",
101
+ "whitelist.table.created": "Created at",
102
102
  "whitelist.delete.title": "Confirmation",
103
103
  "whitelist.delete.description": "Are you sure you want to delete:",
104
104
  "whitelist.delete.note": "This will not delete the user account in Strapi.",
@@ -118,9 +118,9 @@ const en = {
118
118
  "pagination.total": "{count, plural, one {# entry} other {# entries}}",
119
119
  "whitelist.import": "Import",
120
120
  "button.export": "Export",
121
- "button.clear": "Clear",
121
+ "button.deleteAll": "Delete all",
122
122
  "whitelist.delete.all.title": "Delete All Entries",
123
- "whitelist.delete.all.description": "This will permanently remove all {count, plural, one {# entry} other {# entries}} from the whitelist. Unsaved changes will be lost.",
123
+ "whitelist.delete.all.description": "This will permanently remove {count, plural, one {# entry} other {# entries}} from the whitelist. Unsaved changes will be lost.",
124
124
  "whitelist.import.error": "Invalid file — expected a JSON array of objects with an email field.",
125
125
  "whitelist.import.success": "Imported {count, plural, one {# new entry} other {# new entries}}.",
126
126
  "whitelist.import.none": "No new entries — all emails are already in the whitelist.",
@@ -135,7 +135,7 @@ const en = {
135
135
  "auditlog.table.ip": "IP",
136
136
  "auditlog.table.details": "Details",
137
137
  "auditlog.table.empty": "No audit log entries",
138
- "auditlog.clear.title": "Clear All Logs",
138
+ "auditlog.clear.title": "Delete All Logs",
139
139
  "auditlog.clear.description": "This will permanently delete all {count, plural, one {# audit log entry} other {# audit log entries}}. This action cannot be undone.",
140
140
  "auditlog.clear.success": "Audit logs cleared",
141
141
  "auditlog.clear.error": "Failed to clear audit logs",
@@ -170,7 +170,7 @@ const en = {
170
170
  "auth.page.authenticating.noscript.heading": "JavaScript Required",
171
171
  "auth.page.authenticating.noscript.body": "JavaScript must be enabled for authentication to complete.",
172
172
  "auth.page.error.title": "Authentication Failed",
173
- "auth.page.error.returnToLogin": "Return to Login",
173
+ "auth.page.error.returnToLogin": "Return to login",
174
174
  "user.missing_code": "Authorisation code was not received from the OIDC provider.",
175
175
  "user.invalid_state": "State parameter mismatch. Please restart the login flow.",
176
176
  "user.signInError": "Authentication failed. Please try again.",
@@ -211,7 +211,7 @@ const index = {
211
211
  id: "settings.configuration",
212
212
  defaultMessage: "Configuration"
213
213
  },
214
- Component: () => Promise.resolve().then(() => require("./index-Qa2oPzAm.js")),
214
+ Component: () => Promise.resolve().then(() => require("./index-F7EShzfg.js")),
215
215
  permissions: [{ action: PERMISSIONS.READ, subject: null }]
216
216
  };
217
217
  app.addSettingsLink(
@@ -73,10 +73,10 @@ function LogoutOverlay() {
73
73
  }
74
74
  const en = {
75
75
  "global.plugins.strapi-plugin-oidc": "OIDC Plugin",
76
- "page.title": "Configure OIDC default role(s) and access controls.",
76
+ "page.title": "Configure Admin OIDC Login Settings and View Logs",
77
77
  "roles.notes": "Select the default role(s) assigned to new users upon their first login. This setting does not affect existing users.",
78
- "page.save": "Save Changes",
79
- "page.save.success": "Updated settings",
78
+ "page.save": "Save changes",
79
+ "page.save.success": "Settings updated",
80
80
  "page.save.error": "Update failed.",
81
81
  "page.add": "Add",
82
82
  "page.cancel": "Cancel",
@@ -95,7 +95,7 @@ const en = {
95
95
  "pagination.next": "Go to next page",
96
96
  "whitelist.table.no": "No.",
97
97
  "whitelist.table.email": "Email",
98
- "whitelist.table.created": "Created At",
98
+ "whitelist.table.created": "Created at",
99
99
  "whitelist.delete.title": "Confirmation",
100
100
  "whitelist.delete.description": "Are you sure you want to delete:",
101
101
  "whitelist.delete.note": "This will not delete the user account in Strapi.",
@@ -115,9 +115,9 @@ const en = {
115
115
  "pagination.total": "{count, plural, one {# entry} other {# entries}}",
116
116
  "whitelist.import": "Import",
117
117
  "button.export": "Export",
118
- "button.clear": "Clear",
118
+ "button.deleteAll": "Delete all",
119
119
  "whitelist.delete.all.title": "Delete All Entries",
120
- "whitelist.delete.all.description": "This will permanently remove all {count, plural, one {# entry} other {# entries}} from the whitelist. Unsaved changes will be lost.",
120
+ "whitelist.delete.all.description": "This will permanently remove {count, plural, one {# entry} other {# entries}} from the whitelist. Unsaved changes will be lost.",
121
121
  "whitelist.import.error": "Invalid file — expected a JSON array of objects with an email field.",
122
122
  "whitelist.import.success": "Imported {count, plural, one {# new entry} other {# new entries}}.",
123
123
  "whitelist.import.none": "No new entries — all emails are already in the whitelist.",
@@ -132,7 +132,7 @@ const en = {
132
132
  "auditlog.table.ip": "IP",
133
133
  "auditlog.table.details": "Details",
134
134
  "auditlog.table.empty": "No audit log entries",
135
- "auditlog.clear.title": "Clear All Logs",
135
+ "auditlog.clear.title": "Delete All Logs",
136
136
  "auditlog.clear.description": "This will permanently delete all {count, plural, one {# audit log entry} other {# audit log entries}}. This action cannot be undone.",
137
137
  "auditlog.clear.success": "Audit logs cleared",
138
138
  "auditlog.clear.error": "Failed to clear audit logs",
@@ -167,7 +167,7 @@ const en = {
167
167
  "auth.page.authenticating.noscript.heading": "JavaScript Required",
168
168
  "auth.page.authenticating.noscript.body": "JavaScript must be enabled for authentication to complete.",
169
169
  "auth.page.error.title": "Authentication Failed",
170
- "auth.page.error.returnToLogin": "Return to Login",
170
+ "auth.page.error.returnToLogin": "Return to login",
171
171
  "user.missing_code": "Authorisation code was not received from the OIDC provider.",
172
172
  "user.invalid_state": "State parameter mismatch. Please restart the login flow.",
173
173
  "user.signInError": "Authentication failed. Please try again.",
@@ -208,7 +208,7 @@ const index = {
208
208
  id: "settings.configuration",
209
209
  defaultMessage: "Configuration"
210
210
  },
211
- Component: () => import("./index-Mxu0cp9m.mjs"),
211
+ Component: () => import("./index-vkwBXPXn.mjs"),
212
212
  permissions: [{ action: PERMISSIONS.READ, subject: null }]
213
213
  };
214
214
  app.addSettingsLink(
@@ -7,7 +7,7 @@ const React = require("react");
7
7
  const designSystem = require("@strapi/design-system");
8
8
  const icons = require("@strapi/icons");
9
9
  const reactIntl = require("react-intl");
10
- const index = require("./index-2waQ9WnG.js");
10
+ const index = require("./index-BUuwz71P.js");
11
11
  const styled = require("styled-components");
12
12
  const lucideReact = require("lucide-react");
13
13
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
@@ -1001,14 +1001,14 @@ function Whitelist({
1001
1001
  variant: "danger-light",
1002
1002
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {}),
1003
1003
  disabled: users.length === 0,
1004
- children: formatMessage(index.getTrad("button.clear"))
1004
+ children: formatMessage(index.getTrad("button.deleteAll"))
1005
1005
  }
1006
1006
  ),
1007
1007
  title: formatMessage(index.getTrad("whitelist.delete.all.title")),
1008
1008
  body: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", textAlign: "center", children: formatMessage(index.getTrad("whitelist.delete.all.description"), {
1009
1009
  count: users.length
1010
1010
  }) }) }),
1011
- confirmLabel: formatMessage(index.getTrad("button.clear")),
1011
+ confirmLabel: formatMessage(index.getTrad("button.deleteAll")),
1012
1012
  onConfirm: onDeleteAll
1013
1013
  }
1014
1014
  )
@@ -3925,14 +3925,14 @@ function AuditLog({ title } = {}) {
3925
3925
  variant: "danger-light",
3926
3926
  startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {}),
3927
3927
  disabled: pagination.total === 0,
3928
- children: formatMessage(index.getTrad("button.clear"))
3928
+ children: formatMessage(index.getTrad("button.deleteAll"))
3929
3929
  }
3930
3930
  ),
3931
3931
  title: formatMessage(index.getTrad("auditlog.clear.title")),
3932
3932
  body: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", textAlign: "center", children: formatMessage(index.getTrad("auditlog.clear.description"), {
3933
3933
  count: pagination.total
3934
3934
  }) }) }),
3935
- confirmLabel: formatMessage(index.getTrad("button.clear")),
3935
+ confirmLabel: formatMessage(index.getTrad("button.deleteAll")),
3936
3936
  onConfirm: handleClearAll
3937
3937
  }
3938
3938
  )
@@ -5,7 +5,7 @@ import { useState, useRef, useId, useEffect, useCallback, useReducer, useMemo, m
5
5
  import { Typography, Flex, Box, MultiSelect, MultiSelectOption, Button, Dialog, Table, Pagination, PreviousLink, NextLink, PageLink, Field, Divider, Thead, Tr, Th, Tbody, Td, IconButton, Loader, Tooltip, Alert } from "@strapi/design-system";
6
6
  import { Cross, WarningCircle, Plus, Download, Upload, Trash, Calendar, Mail, Information } from "@strapi/icons";
7
7
  import { useIntl } from "react-intl";
8
- import { g as getTrad, E as EMAIL_REGEX, e as en, A as AUDIT_LOG_DEFAULTS, U as UI_DEFAULTS } from "./index-BYXb1t00.mjs";
8
+ import { g as getTrad, E as EMAIL_REGEX, e as en, A as AUDIT_LOG_DEFAULTS, U as UI_DEFAULTS } from "./index-CUVEK5GT.mjs";
9
9
  import styled from "styled-components";
10
10
  import { Filter, ClipboardList, Server } from "lucide-react";
11
11
  function Role({ oidcRoles, roles, onChangeRole }) {
@@ -997,14 +997,14 @@ function Whitelist({
997
997
  variant: "danger-light",
998
998
  startIcon: /* @__PURE__ */ jsx(Trash, {}),
999
999
  disabled: users.length === 0,
1000
- children: formatMessage(getTrad("button.clear"))
1000
+ children: formatMessage(getTrad("button.deleteAll"))
1001
1001
  }
1002
1002
  ),
1003
1003
  title: formatMessage(getTrad("whitelist.delete.all.title")),
1004
1004
  body: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", textAlign: "center", children: formatMessage(getTrad("whitelist.delete.all.description"), {
1005
1005
  count: users.length
1006
1006
  }) }) }),
1007
- confirmLabel: formatMessage(getTrad("button.clear")),
1007
+ confirmLabel: formatMessage(getTrad("button.deleteAll")),
1008
1008
  onConfirm: onDeleteAll
1009
1009
  }
1010
1010
  )
@@ -3921,14 +3921,14 @@ function AuditLog({ title } = {}) {
3921
3921
  variant: "danger-light",
3922
3922
  startIcon: /* @__PURE__ */ jsx(Trash, {}),
3923
3923
  disabled: pagination.total === 0,
3924
- children: formatMessage(getTrad("button.clear"))
3924
+ children: formatMessage(getTrad("button.deleteAll"))
3925
3925
  }
3926
3926
  ),
3927
3927
  title: formatMessage(getTrad("auditlog.clear.title")),
3928
3928
  body: /* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", textAlign: "center", children: formatMessage(getTrad("auditlog.clear.description"), {
3929
3929
  count: pagination.total
3930
3930
  }) }) }),
3931
- confirmLabel: formatMessage(getTrad("button.clear")),
3931
+ confirmLabel: formatMessage(getTrad("button.deleteAll")),
3932
3932
  onConfirm: handleClearAll
3933
3933
  }
3934
3934
  )
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const index = require("./index-2waQ9WnG.js");
3
+ const index = require("./index-BUuwz71P.js");
4
4
  require("react");
5
5
  require("react-dom/client");
6
6
  exports.default = index.index;
@@ -1,4 +1,4 @@
1
- import { i } from "./index-BYXb1t00.mjs";
1
+ import { i } from "./index-CUVEK5GT.mjs";
2
2
  import "react";
3
3
  import "react-dom/client";
4
4
  export {