strapi-identity 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +2 -1
  2. package/dist/admin/{AdminReset-H453s-DE.mjs → AdminReset-CCGgw-0k.mjs} +2 -2
  3. package/dist/admin/{AdminReset-C0QibZXW.js → AdminReset-QClQP2Il.js} +2 -2
  4. package/dist/admin/{ProfileToggle-BFmIWCrN.js → ProfileToggle-H31GHNDA.js} +299 -39
  5. package/dist/admin/{ProfileToggle-DQeXCx34.mjs → ProfileToggle-gPuH6dGP.mjs} +299 -39
  6. package/dist/admin/{SettingsPage-OwMik_IK.mjs → SettingsPage-DgPikS3m.mjs} +344 -102
  7. package/dist/admin/{SettingsPage-DyF7YbsX.js → SettingsPage-DulEjadb.js} +343 -101
  8. package/dist/admin/{ar-i2eiMZkz.js → ar-BYnI7Tsa.js} +36 -23
  9. package/dist/admin/{ar-BXaam37U.mjs → ar-DwZqj0qM.mjs} +36 -23
  10. package/dist/admin/{ca-DZ9DbEcQ.mjs → ca-aKVVc8iQ.mjs} +36 -23
  11. package/dist/admin/{ca-BVpGzY8r.js → ca-sBRHuaFU.js} +36 -23
  12. package/dist/admin/{cs-Gok16KLy.mjs → cs--prflMHS.mjs} +36 -23
  13. package/dist/admin/{cs-_PZVkwt0.js → cs-gU7KP3Lx.js} +36 -23
  14. package/dist/admin/de-BT25lv_6.mjs +49 -0
  15. package/dist/admin/de-CrlCAUuf.js +49 -0
  16. package/dist/admin/{dk-B7EOsAdU.js → dk-BNC3WUzY.js} +36 -23
  17. package/dist/admin/{dk-CI64Xmli.mjs → dk-Ck3AQYU7.mjs} +36 -23
  18. package/dist/admin/{en-B_vJwdfS.mjs → en-9qzlpde0.mjs} +36 -23
  19. package/dist/admin/{en-D4KP9t1Y.js → en-DBj0AD5g.js} +36 -23
  20. package/dist/admin/{es-CHwF7YK-.js → es-D5Sn41_H.js} +36 -23
  21. package/dist/admin/{es-CqJcXo4j.mjs → es-lh6XoPb7.mjs} +36 -23
  22. package/dist/admin/{eu-D-snytN8.mjs → eu-Cuz6ijBX.mjs} +36 -23
  23. package/dist/admin/{eu-DvdbwE5E.js → eu-Qr3RvDPW.js} +36 -23
  24. package/dist/admin/fr-C4pmkPYn.js +49 -0
  25. package/dist/admin/fr-ChlDcZsG.mjs +49 -0
  26. package/dist/admin/{gu-3wJbbAmw.mjs → gu-B6zyD1bW.mjs} +36 -23
  27. package/dist/admin/{gu-D2LgVfMp.js → gu-BMZL76zM.js} +36 -23
  28. package/dist/admin/{he-Bjv7eygt.mjs → he-C5V-qZCX.mjs} +36 -23
  29. package/dist/admin/{he-DnhYpbvN.js → he-H6iBa45A.js} +36 -23
  30. package/dist/admin/{hi-DDD2E3A3.js → hi-Be8rPk7I.js} +36 -23
  31. package/dist/admin/{hi-CNiDezU7.mjs → hi-czhOWo6-.mjs} +36 -23
  32. package/dist/admin/{hu-C1_YkZHU.js → hu-DKp6kOmc.js} +36 -23
  33. package/dist/admin/{hu-aLaIWmGw.mjs → hu-NbZ3aiYV.mjs} +36 -23
  34. package/dist/admin/{id-u3wVE6Rv.js → id-DO0bwFgY.js} +36 -23
  35. package/dist/admin/{id-C8WRgGm1.mjs → id-NH9PvcR5.mjs} +36 -23
  36. package/dist/admin/{index-BXZI8nMZ.js → index-C9K2h5UC.js} +65 -12
  37. package/dist/admin/{index-D45I6rWF.mjs → index-C_4USMnn.mjs} +65 -12
  38. package/dist/admin/index.js +1 -1
  39. package/dist/admin/index.mjs +1 -1
  40. package/dist/admin/{it-CjoRoJj1.mjs → it-Cmrey6tg.mjs} +36 -23
  41. package/dist/admin/{it-CDw6dG9Z.js → it-Df6-7-M7.js} +36 -23
  42. package/dist/admin/{ja-CewucIUY.mjs → ja-DH3KMqOL.mjs} +36 -23
  43. package/dist/admin/{ja-CbMXy2ym.js → ja-HuAq9ZwT.js} +36 -23
  44. package/dist/admin/{ko-D-kAxDtd.mjs → ko-DPN28RE8.mjs} +36 -23
  45. package/dist/admin/{ko-BEtJPpfJ.js → ko-S9k8KA8K.js} +36 -23
  46. package/dist/admin/{ml-0fR2_MmA.js → ml-Bh9GGqcW.js} +36 -23
  47. package/dist/admin/{ml-DR3AaofF.mjs → ml-MsHNacm6.mjs} +36 -23
  48. package/dist/admin/{ms-COHLS5e5.mjs → ms-TjHAaxTd.mjs} +36 -23
  49. package/dist/admin/{ms-DLvuGSlk.js → ms-hO5YeEg4.js} +36 -23
  50. package/dist/admin/{nl-wj6kn642.js → nl-BF98NBwL.js} +36 -23
  51. package/dist/admin/{nl-DVtHsM2H.mjs → nl-BLILZU8-.mjs} +36 -23
  52. package/dist/admin/{no-D_0yjyCy.mjs → no-BtVZ-siy.mjs} +36 -23
  53. package/dist/admin/{no-DVBgWt8q.js → no-bl1OXlfa.js} +36 -23
  54. package/dist/admin/{pl-C3GNxjVX.mjs → pl-DCSB6LwZ.mjs} +36 -23
  55. package/dist/admin/{pl-B2ghisbC.js → pl-DCnOWIDw.js} +36 -23
  56. package/dist/admin/{pt-BR-BbKV8YoX.mjs → pt-BR-CeLqmj88.mjs} +36 -23
  57. package/dist/admin/{pt-BR-CfgNaB1-.js → pt-BR-D2_UrxTp.js} +36 -23
  58. package/dist/admin/{pt-DKe8rRWa.js → pt-DIu8RT_X.js} +36 -23
  59. package/dist/admin/{pt-z4K3cCjf.mjs → pt-fgjdOyW5.mjs} +36 -23
  60. package/dist/admin/{ru-C85izLFa.mjs → ru-B_hlpAyP.mjs} +36 -23
  61. package/dist/admin/{ru-BFSm68HC.js → ru-BccMCf0l.js} +36 -23
  62. package/dist/admin/{sa-B1XoTTrE.mjs → sa-BtuJ_I1t.mjs} +36 -23
  63. package/dist/admin/{sa-BOPaqylt.js → sa-D3A-fo85.js} +36 -23
  64. package/dist/admin/{sk-C48lUPuC.mjs → sk-mmuTFlCK.mjs} +36 -23
  65. package/dist/admin/{sk-Dd-S1612.js → sk-uSLC6KhO.js} +36 -23
  66. package/dist/admin/{sv-BLma_kJl.mjs → sv-BlaHc5ax.mjs} +36 -23
  67. package/dist/admin/{sv-lg64Cw78.js → sv-CuKk5tE-.js} +36 -23
  68. package/dist/admin/{th-DPbm5NrX.js → th-Bv3NKkYO.js} +36 -23
  69. package/dist/admin/{th-BJEu5n7q.mjs → th-BwyhFaeE.mjs} +36 -23
  70. package/dist/admin/{tokenHelpers-jtoRu0q5.js → tokenHelpers-B54WRTn1.js} +4 -10
  71. package/dist/admin/{tokenHelpers-DagDzpso.mjs → tokenHelpers-CKVyT1sz.mjs} +4 -10
  72. package/dist/admin/{tr-DkIUODKq.mjs → tr-BLocNlbZ.mjs} +36 -23
  73. package/dist/admin/{tr-Bm1QZr4v.js → tr-Bmvs-Hx-.js} +36 -23
  74. package/dist/admin/{uk-FARzIGx4.js → uk-BDxn-EZU.js} +36 -23
  75. package/dist/admin/{uk-D7ArtSe3.mjs → uk-CyZ10xtq.mjs} +36 -23
  76. package/dist/admin/{vi-DS0yslPP.mjs → vi-Bx_UJ8up.mjs} +36 -23
  77. package/dist/admin/{vi-Bi9B6eTY.js → vi-F_mqQCme.js} +36 -23
  78. package/dist/admin/{zh-DkEx28ZA.js → zh-CFZJPG5N.js} +36 -23
  79. package/dist/admin/{zh-DwCvIPSz.mjs → zh-CjJdRa3l.mjs} +36 -23
  80. package/dist/admin/{zh-Hans-BwwKCR6_.js → zh-Hans-4BhSwSQw.js} +36 -23
  81. package/dist/admin/{zh-Hans-DP2xZyda.mjs → zh-Hans-s7G2GUHU.mjs} +36 -23
  82. package/dist/server/index.js +487 -50
  83. package/dist/server/index.mjs +487 -50
  84. package/package.json +5 -4
  85. package/dist/admin/de-BuYn1AYX.mjs +0 -26
  86. package/dist/admin/de-GItli7en.js +0 -26
  87. package/dist/admin/fr-Bt6sS5GX.mjs +0 -26
  88. package/dist/admin/fr-CbCW6hVD.js +0 -26
@@ -6,8 +6,8 @@ const WarningAlert = require("./WarningAlert-DFE5euMk.js");
6
6
  const admin = require("@strapi/strapi/admin");
7
7
  const designSystem = require("@strapi/design-system");
8
8
  const icons = require("@strapi/icons");
9
- const index = require("./index-BXZI8nMZ.js");
10
- const tokenHelpers = require("./tokenHelpers-jtoRu0q5.js");
9
+ const index = require("./index-C9K2h5UC.js");
10
+ const tokenHelpers = require("./tokenHelpers-B54WRTn1.js");
11
11
  const reactIntl = require("react-intl");
12
12
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
13
13
  var lodash$1 = { exports: {} };
@@ -27,7 +27,7 @@ function requireLodash() {
27
27
  (function(module2, exports$1) {
28
28
  (function() {
29
29
  var undefined$1;
30
- var VERSION = "4.17.21";
30
+ var VERSION = "4.17.23";
31
31
  var LARGE_ARRAY_SIZE = 200;
32
32
  var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`";
33
33
  var HASH_UNDEFINED = "__lodash_hash_undefined__";
@@ -1955,8 +1955,28 @@ function requireLodash() {
1955
1955
  }
1956
1956
  function baseUnset(object, path) {
1957
1957
  path = castPath(path, object);
1958
- object = parent(object, path);
1959
- return object == null || delete object[toKey(last(path))];
1958
+ var index2 = -1, length = path.length;
1959
+ if (!length) {
1960
+ return true;
1961
+ }
1962
+ var isRootPrimitive = object == null || typeof object !== "object" && typeof object !== "function";
1963
+ while (++index2 < length) {
1964
+ var key = path[index2];
1965
+ if (typeof key !== "string") {
1966
+ continue;
1967
+ }
1968
+ if (key === "__proto__" && !hasOwnProperty.call(object, "__proto__")) {
1969
+ return false;
1970
+ }
1971
+ if (key === "constructor" && index2 + 1 < length && typeof path[index2 + 1] === "string" && path[index2 + 1] === "prototype") {
1972
+ if (isRootPrimitive && index2 === 0) {
1973
+ continue;
1974
+ }
1975
+ return false;
1976
+ }
1977
+ }
1978
+ var obj = parent(object, path);
1979
+ return obj == null || delete obj[toKey(last(path))];
1960
1980
  }
1961
1981
  function baseUpdate(object, path, updater, customizer) {
1962
1982
  return baseSet(object, path, updater(baseGet(object, path)), customizer);
@@ -5498,12 +5518,76 @@ function requireLodash() {
5498
5518
  return lodash$1.exports;
5499
5519
  }
5500
5520
  var lodashExports = requireLodash();
5501
- const defaultConfig = { enabled: false, enforce: false, issuer: "" };
5521
+ const defaultConfig = {
5522
+ enabled: false,
5523
+ enforce: false,
5524
+ issuer: "Strapi",
5525
+ email_enabled: false,
5526
+ from_email: "",
5527
+ from_name: "",
5528
+ response_email: "",
5529
+ subject: "Your One-Time Password",
5530
+ text: "Your one-time password is: <%= OTP %>",
5531
+ message: `<div style="margin: 0; padding: 0;">
5532
+ <table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#f9f9f9">
5533
+ <tr>
5534
+ <td align="center" style="padding: 40px 10px;">
5535
+ <table border="0" cellpadding="0" cellspacing="0" width="600" bgcolor="#ffffff" style="border: 1px solid #dddddd;">
5536
+ <tr>
5537
+ <td align="center" style="padding: 40px 40px 20px 40px;">
5538
+ <font face="Arial, sans-serif" size="5" color="#333333">
5539
+ <strong>Verify Your Account</strong>
5540
+ </font>
5541
+ </td>
5542
+ </tr>
5543
+ <tr>
5544
+ <td align="center" style="padding: 0 40px 20px 40px;">
5545
+ <font face="Arial, sans-serif" size="3" color="#555555" style="line-height: 24px;">
5546
+ Please use the following one-time password to complete your registration. This code will expire in 10 minutes.
5547
+ </font>
5548
+ </td>
5549
+ </tr>
5550
+ <tr>
5551
+ <td align="center" style="padding: 20px 40px;">
5552
+ <table border="0" cellpadding="0" cellspacing="0">
5553
+ <tr>
5554
+ <td align="center" bgcolor="#f4f4f4" style="padding: 20px 30px; font-family: Courier, monospace; font-size: 36px; color: #2d3436;">
5555
+ <strong><%= OTP %></strong>
5556
+ </td>
5557
+ </tr>
5558
+ </table>
5559
+ </td>
5560
+ </tr>
5561
+ <tr>
5562
+ <td align="center" style="padding: 20px 40px 40px 40px;">
5563
+ <font face="Arial, sans-serif" size="2" color="#888888">
5564
+ If you did not request this code, please ignore this email.
5565
+ </font>
5566
+ </td>
5567
+ </tr>
5568
+ </table>
5569
+ <table border="0" cellpadding="0" cellspacing="0" width="600">
5570
+ <tr>
5571
+ <td align="center" style="padding: 20px;">
5572
+ <font face="Arial, sans-serif" size="1" color="#aaaaaa">
5573
+ &copy; <%= YEAR %> Your Company Name
5574
+ </font>
5575
+ </td>
5576
+ </tr>
5577
+ </table>
5578
+ </td>
5579
+ </tr>
5580
+ </table>
5581
+ </div>`
5582
+ };
5502
5583
  const getConfigFromForm = (formData) => {
5503
5584
  return Array.from(formData.entries()).reduce(
5504
5585
  (acc, [key, value]) => {
5505
- if (key === "enabled" || key === "enforce") acc[key] = value === "on";
5506
- else if (key === "issuer") acc[key] = String(value);
5586
+ if (key === "enabled" || key === "enforce" || key === "email_enabled") {
5587
+ acc[key] = value === "on";
5588
+ } else {
5589
+ acc[key] = String(value);
5590
+ }
5507
5591
  return acc;
5508
5592
  },
5509
5593
  Object.assign({}, defaultConfig)
@@ -5514,22 +5598,30 @@ function SettingsPage() {
5514
5598
  const { formatMessage } = reactIntl.useIntl();
5515
5599
  const { toggleNotification } = admin.useNotification();
5516
5600
  const [showWarning, setShowWarning] = React.useState(false);
5601
+ const [showEmailWarning, setShowEmailWarning] = React.useState(false);
5517
5602
  const [canSave, setCanSave] = React.useState(false);
5518
5603
  const [isSaving, setSaving] = React.useState(false);
5519
5604
  const [isLoading, setLoading] = React.useState(true);
5520
5605
  const [initialConfig, setInitialConfig] = React.useState(null);
5521
5606
  const [enabled, setEnabled] = React.useState(false);
5607
+ const [emailEnabled, setEmailEnabled] = React.useState(false);
5522
5608
  const [enforce, setEnforce] = React.useState(false);
5523
5609
  const handleSubmit = async (event, confirmed) => {
5524
5610
  event?.preventDefault?.();
5525
5611
  setSaving(true);
5526
5612
  const formData = new FormData(event.currentTarget);
5527
5613
  const values = getConfigFromForm(formData);
5614
+ console.log(formData, values);
5528
5615
  if (initialConfig?.enabled && !values.enabled && !confirmed) {
5529
5616
  setShowWarning(true);
5530
5617
  setSaving(false);
5531
5618
  return;
5532
5619
  }
5620
+ if (initialConfig?.email_enabled && !values.email_enabled && !confirmed) {
5621
+ setShowEmailWarning(true);
5622
+ setSaving(false);
5623
+ return;
5624
+ }
5533
5625
  try {
5534
5626
  const token = tokenHelpers.getToken();
5535
5627
  const response = await fetch("/strapi-identity/config", {
@@ -5571,7 +5663,7 @@ function SettingsPage() {
5571
5663
  (async () => {
5572
5664
  try {
5573
5665
  const response = await fetch("/strapi-identity/config", {
5574
- headers: { Authorization: `Bearer ${token}` },
5666
+ headers: { "Content-Type": "application/json", authorization: `Bearer ${token}` },
5575
5667
  signal: ac.signal
5576
5668
  });
5577
5669
  const json = await response.json();
@@ -5580,6 +5672,7 @@ function SettingsPage() {
5580
5672
  if (error) throw new Error(error);
5581
5673
  setInitialConfig(data);
5582
5674
  setEnabled(data.enabled);
5675
+ setEmailEnabled(data.email_enabled);
5583
5676
  setEnforce(data.enforce);
5584
5677
  } catch (error) {
5585
5678
  console.error("Error fetching config:", error);
@@ -5616,74 +5709,155 @@ function SettingsPage() {
5616
5709
  primaryAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { disabled: !canSave, loading: isSaving, type: "submit", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}), children: formatMessage({ id: "global.save", defaultMessage: "Save" }) })
5617
5710
  }
5618
5711
  ),
5619
- /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(
5620
- designSystem.Flex,
5621
- {
5622
- direction: "column",
5623
- alignItems: "stretch",
5624
- gap: 4,
5625
- hasRadius: true,
5626
- background: "neutral0",
5627
- shadow: "tableShadow",
5628
- paddingTop: 6,
5629
- paddingBottom: 6,
5630
- paddingRight: 7,
5631
- paddingLeft: 7,
5632
- children: [
5633
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
5634
- id: index.getTranslation("profile.title"),
5635
- defaultMessage: "Two-Factor Authentication"
5636
- }) }) }),
5637
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 5, tag: "dl", children: [
5638
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5712
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", gap: 6, children: /* @__PURE__ */ jsxRuntime.jsx(admin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: [
5713
+ /* @__PURE__ */ jsxRuntime.jsxs(
5714
+ designSystem.Flex,
5715
+ {
5716
+ direction: "column",
5717
+ alignItems: "stretch",
5718
+ gap: 4,
5719
+ hasRadius: true,
5720
+ background: "neutral0",
5721
+ shadow: "tableShadow",
5722
+ paddingTop: 6,
5723
+ paddingBottom: 6,
5724
+ paddingRight: 7,
5725
+ paddingLeft: 7,
5726
+ children: [
5727
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
5728
+ id: index.getTranslation("profile.title"),
5729
+ defaultMessage: "Two-Factor Authentication"
5730
+ }) }) }),
5731
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 5, tag: "dl", children: [
5732
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5733
+ designSystem.Field.Root,
5734
+ {
5735
+ hint: formatMessage({
5736
+ id: index.getTranslation("settings.enabled_hint"),
5737
+ defaultMessage: "Enable or disable Two-Factor Authentication for all users."
5738
+ }),
5739
+ children: [
5740
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({ id: "global.enabled", defaultMessage: "Enabled" }) }),
5741
+ /* @__PURE__ */ jsxRuntime.jsx(
5742
+ designSystem.Toggle,
5743
+ {
5744
+ name: "enabled",
5745
+ checked: enabled,
5746
+ onChange: ({ target }) => setEnabled(target.checked),
5747
+ offLabel: formatMessage({
5748
+ id: "app.components.ToggleCheckbox.off-label",
5749
+ defaultMessage: "False"
5750
+ }),
5751
+ onLabel: formatMessage({
5752
+ id: "app.components.ToggleCheckbox.on-label",
5753
+ defaultMessage: "True"
5754
+ })
5755
+ }
5756
+ ),
5757
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5758
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5759
+ ]
5760
+ }
5761
+ ) }),
5762
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5763
+ designSystem.Field.Root,
5764
+ {
5765
+ hint: formatMessage({
5766
+ id: index.getTranslation("settings.enforce_hint"),
5767
+ defaultMessage: "Enforce Multi-Factor Authentication for all users. If enabled, users will be required to set up MFA on their next login."
5768
+ }),
5769
+ children: [
5770
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5771
+ id: index.getTranslation("settings.enforce"),
5772
+ defaultMessage: "Enforce MFA"
5773
+ }) }),
5774
+ /* @__PURE__ */ jsxRuntime.jsx(
5775
+ designSystem.Toggle,
5776
+ {
5777
+ name: "enforce",
5778
+ disabled: true,
5779
+ checked: enforce,
5780
+ onChange: ({ target }) => setEnforce(target.checked),
5781
+ offLabel: formatMessage({
5782
+ id: "app.components.ToggleCheckbox.off-label",
5783
+ defaultMessage: "False"
5784
+ }),
5785
+ onLabel: formatMessage({
5786
+ id: "app.components.ToggleCheckbox.on-label",
5787
+ defaultMessage: "True"
5788
+ })
5789
+ }
5790
+ ),
5791
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5792
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5793
+ ]
5794
+ }
5795
+ ) }),
5796
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5797
+ designSystem.Field.Root,
5798
+ {
5799
+ hint: formatMessage({
5800
+ id: index.getTranslation("settings.issuer_hint"),
5801
+ defaultMessage: "Displayed in the MFA app"
5802
+ }),
5803
+ children: [
5804
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5805
+ id: index.getTranslation("settings.issuer"),
5806
+ defaultMessage: "Issuer Name"
5807
+ }) }),
5808
+ /* @__PURE__ */ jsxRuntime.jsx(
5809
+ designSystem.TextInput,
5810
+ {
5811
+ name: "issuer",
5812
+ defaultValue: initialConfig?.issuer,
5813
+ placeholder: formatMessage({
5814
+ id: index.getTranslation("settings.issuer"),
5815
+ defaultMessage: "Issuer Name"
5816
+ })
5817
+ }
5818
+ ),
5819
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5820
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5821
+ ]
5822
+ }
5823
+ ) })
5824
+ ] })
5825
+ ]
5826
+ }
5827
+ ),
5828
+ /* @__PURE__ */ jsxRuntime.jsxs(
5829
+ designSystem.Flex,
5830
+ {
5831
+ direction: "column",
5832
+ alignItems: "stretch",
5833
+ gap: 4,
5834
+ hasRadius: true,
5835
+ background: "neutral0",
5836
+ shadow: "tableShadow",
5837
+ paddingTop: 6,
5838
+ paddingBottom: 6,
5839
+ paddingRight: 7,
5840
+ paddingLeft: 7,
5841
+ children: [
5842
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: formatMessage({
5843
+ id: index.getTranslation("settings.email_title"),
5844
+ defaultMessage: "Email Settings"
5845
+ }) }) }),
5846
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 5, tag: "dl", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5639
5847
  designSystem.Field.Root,
5640
5848
  {
5641
5849
  hint: formatMessage({
5642
- id: index.getTranslation("settings.enabled_hint"),
5643
- defaultMessage: "Enable or disable Two-Factor Authentication for all users."
5850
+ id: index.getTranslation("settings.email_enabled_hint"),
5851
+ defaultMessage: "Enable or disable Email MFA."
5644
5852
  }),
5645
5853
  children: [
5646
5854
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({ id: "global.enabled", defaultMessage: "Enabled" }) }),
5647
5855
  /* @__PURE__ */ jsxRuntime.jsx(
5648
5856
  designSystem.Toggle,
5649
5857
  {
5650
- name: "enabled",
5651
- checked: enabled,
5652
- onChange: ({ target }) => setEnabled(target.checked),
5653
- offLabel: formatMessage({
5654
- id: "app.components.ToggleCheckbox.off-label",
5655
- defaultMessage: "False"
5656
- }),
5657
- onLabel: formatMessage({
5658
- id: "app.components.ToggleCheckbox.on-label",
5659
- defaultMessage: "True"
5660
- })
5661
- }
5662
- ),
5663
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5664
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5665
- ]
5666
- }
5667
- ) }),
5668
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5669
- designSystem.Field.Root,
5670
- {
5671
- hint: formatMessage({
5672
- id: index.getTranslation("settings.enforce_hint"),
5673
- defaultMessage: "Enforce Multi-Factor Authentication for all users. If enabled, users will be required to set up MFA on their next login."
5674
- }),
5675
- children: [
5676
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5677
- id: index.getTranslation("settings.enforce"),
5678
- defaultMessage: "Enforce MFA"
5679
- }) }),
5680
- /* @__PURE__ */ jsxRuntime.jsx(
5681
- designSystem.Toggle,
5682
- {
5683
- name: "enforce",
5684
- disabled: true,
5685
- checked: enforce,
5686
- onChange: ({ target }) => setEnforce(target.checked),
5858
+ name: "email_enabled",
5859
+ checked: emailEnabled,
5860
+ onChange: ({ target }) => setEmailEnabled(target.checked),
5687
5861
  offLabel: formatMessage({
5688
5862
  id: "app.components.ToggleCheckbox.off-label",
5689
5863
  defaultMessage: "False"
@@ -5698,40 +5872,108 @@ function SettingsPage() {
5698
5872
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5699
5873
  ]
5700
5874
  }
5701
- ) }),
5702
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(
5703
- designSystem.Field.Root,
5704
- {
5705
- hint: formatMessage({
5706
- id: index.getTranslation("settings.issuer_hint"),
5707
- defaultMessage: "Displayed in the MFA app"
5708
- }),
5709
- children: [
5710
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5711
- id: index.getTranslation("settings.issuer"),
5712
- defaultMessage: "Issuer Name"
5713
- }) }),
5714
- /* @__PURE__ */ jsxRuntime.jsx(
5715
- designSystem.TextInput,
5716
- {
5717
- name: "issuer",
5718
- defaultValue: initialConfig?.issuer,
5719
- placeholder: formatMessage({
5720
- id: index.getTranslation("settings.issuer"),
5721
- defaultMessage: "Issuer Name"
5722
- })
5723
- }
5724
- ),
5725
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5726
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5727
- ]
5728
- }
5729
- ) })
5730
- ] })
5731
- ]
5732
- }
5733
- ) }) })
5875
+ ) }) }),
5876
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 5, tag: "dl", children: [
5877
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5878
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5879
+ id: "PopUpForm.Email.options.from.name.label",
5880
+ defaultMessage: "Shipper name"
5881
+ }) }),
5882
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { name: "from_name", defaultValue: initialConfig?.from_name || "" }),
5883
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5884
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5885
+ ] }) }),
5886
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5887
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5888
+ id: "PopUpForm.Email.options.from.email.label",
5889
+ defaultMessage: "Shipper email"
5890
+ }) }),
5891
+ /* @__PURE__ */ jsxRuntime.jsx(
5892
+ designSystem.TextInput,
5893
+ {
5894
+ name: "from_email",
5895
+ defaultValue: initialConfig?.from_email || ""
5896
+ }
5897
+ ),
5898
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5899
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5900
+ ] }) }),
5901
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5902
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5903
+ id: "PopUpForm.Email.options.response_email.label",
5904
+ defaultMessage: "Response email"
5905
+ }) }),
5906
+ /* @__PURE__ */ jsxRuntime.jsx(
5907
+ designSystem.TextInput,
5908
+ {
5909
+ name: "response_email",
5910
+ defaultValue: initialConfig?.response_email || ""
5911
+ }
5912
+ ),
5913
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5914
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5915
+ ] }) }),
5916
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5917
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5918
+ id: "PopUpForm.Email.options.object.label",
5919
+ defaultMessage: "Subject"
5920
+ }) }),
5921
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { name: "subject", defaultValue: initialConfig?.subject || "" }),
5922
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5923
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5924
+ ] }) }),
5925
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5926
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5927
+ id: "settings.accessibility_message",
5928
+ defaultMessage: "Accessibility Message"
5929
+ }) }),
5930
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.TextInput, { name: "text", defaultValue: initialConfig?.text || "" }),
5931
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5932
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5933
+ ] }) }),
5934
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 12, xs: 12, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { children: [
5935
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
5936
+ id: index.getTranslation("PopUpForm.Email.options.message.label"),
5937
+ defaultMessage: "Message"
5938
+ }) }),
5939
+ /* @__PURE__ */ jsxRuntime.jsx(
5940
+ designSystem.Textarea,
5941
+ {
5942
+ name: "message",
5943
+ defaultValue: initialConfig?.message || "",
5944
+ rows: 15
5945
+ }
5946
+ ),
5947
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {}),
5948
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
5949
+ ] }) })
5950
+ ] })
5951
+ ]
5952
+ }
5953
+ )
5954
+ ] }) }) })
5734
5955
  ] }) }),
5956
+ /* @__PURE__ */ jsxRuntime.jsxs(
5957
+ WarningAlert.WarningAlert,
5958
+ {
5959
+ open: showEmailWarning,
5960
+ onCancel: () => setShowEmailWarning(false),
5961
+ onConfirm: () => {
5962
+ setShowEmailWarning(false);
5963
+ formRef.current && handleSubmit({ currentTarget: formRef.current }, true);
5964
+ },
5965
+ children: [
5966
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textAlign: "center", children: formatMessage({
5967
+ id: index.getTranslation("settings.email_warning"),
5968
+ defaultMessage: "Turning off Email MFA will disable Email OTP for all users who have it enabled."
5969
+ }) }),
5970
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textAlign: "center", fontWeight: "semiBold", children: formatMessage({
5971
+ id: index.getTranslation("app.confirm.body"),
5972
+ defaultMessage: "Are you sure?"
5973
+ }) })
5974
+ ]
5975
+ }
5976
+ ),
5735
5977
  /* @__PURE__ */ jsxRuntime.jsxs(
5736
5978
  WarningAlert.WarningAlert,
5737
5979
  {
@@ -2,35 +2,48 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const ar = {
4
4
  "plugin.name": "Strapi Identity",
5
- "general.use_verification_code": "استخدام تطبيق المصادقة",
5
+ "admin.subtitle": "إعادة تعيين المصادقة الثنائية للمستخدم.",
6
+ "admin.title": "المصادقة الثنائية",
7
+ "admin.warn-title": "إعادة تعيين 2FA لهذا المستخدم؟",
8
+ "admin.warning": "ستسمح إعادة تعيين المصادقة الثنائية للمستخدم بإعدادها مرة أخرى بواسطة جهاز جديد. هذا الإجراء لا يمكن التراجع عنه.",
9
+ "email_otp.confirm_description": "أدخل الرمز المكون من 6 أرقام المرسل إلى {email}.",
10
+ "email_otp.disable_description": "سنرسل رمز تحقق مكوناً من 6 أرقام إلى {email}. أدخله لتعطيل OTP البريد الإلكتروني.",
11
+ "email_otp.disable_title": "تعطيل OTP البريد الإلكتروني",
12
+ "email_otp.resend_code": "إعادة إرسال الرمز",
13
+ "email_otp.send_code": "إرسال بريد إلكتروني للتحقق",
14
+ "email_otp.setup_description": "سنرسل رمز تحقق مكوناً من 6 أرقام إلى {email}. أدخله لتفعيل OTP البريد الإلكتروني.",
15
+ "email_otp.setup_title": "تفعيل OTP البريد الإلكتروني",
6
16
  "general.use_recovery_code": "استخدام رمز الاسترداد",
7
- "verify_page.title": "تحقق من هويتك",
8
- "verify_page.subtitle": "أدخل رمز التحقق للمتابعة.",
9
- "verify_page.error": "الرمز غير صالح. يرجى المحاولة مرة أخرى.",
10
- "verify_page.submit": "إرسال الرمز",
11
- "profile.title": "المصادقة الثنائية",
12
- "profile.subtitle": "أضف طبقة أمان إضافية إلى حسابك.",
13
- "profile.toggle_label": "تفعيل المصادقة الثنائية",
14
- "profile.setup": "إعداد المصادقة الثنائية",
15
- "profile.recovery_codes": "يرجى حفظ رموز الاسترداد التالية في مكان آمن. يمكن استخدام كل رمز مرة واحدة فقط للوصول إلى حسابك إذا فقدت الوصول إلى تطبيق المصادقة الخاص بك.",
17
+ "general.use_verification_code": "استخدام تطبيق المصادقة",
18
+ "profile.disable_instruction": "أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة لتعطيل المصادقة الثنائية.",
19
+ "profile.disable_title": "تعطيل المصادقة الثنائية",
20
+ "profile.email_otp_disabled_hint": "قم بتعطيل تطبيق المصادقة أولاً لتفعيل OTP البريد الإلكتروني.",
21
+ "profile.email_otp_label": "تفعيل OTP البريد الإلكتروني",
22
+ "profile.enter_otp": "أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة للتأكيد.",
16
23
  "profile.recovery_codes_warning": "إذا فقدت كل من تطبيق المصادقة ورموز الاسترداد، فستحتاج إلى الاتصال بالمسؤول لاستعادة الوصول إلى حسابك.",
24
+ "profile.recovery_codes": "يرجى حفظ رموز الاسترداد التالية في مكان آمن. يمكن استخدام كل رمز مرة واحدة فقط للوصول إلى حسابك إذا فقدت الوصول إلى تطبيق المصادقة الخاص بك.",
17
25
  "profile.scan_qr": "ستحتاج إلى تطبيق مصادقة لمسح رمز الاستجابة السريعة أدناه.",
18
- "profile.enter_otp": "أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة للتأكيد.",
19
- "profile.disable_title": "تعطيل المصادقة الثنائية",
20
- "profile.disable_instruction": "أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة لتعطيل المصادقة الثنائية.",
21
- "settings.title": "إعدادات Strapi Identity",
26
+ "profile.setup": "إعداد المصادقة الثنائية",
27
+ "profile.subtitle": "أضف طبقة أمان إضافية إلى حسابك.",
28
+ "profile.title": "المصادقة الثنائية",
29
+ "profile.toggle_label": "تفعيل المصادقة الثنائية",
30
+ "settings.accessibility_message": "رسالة إمكانية الوصول",
22
31
  "settings.description": "إعدادات المكون الإضافي Strapi Identity، مما يسمح لك بتكوين خيارات المصادقة وإعدادات الأمان.",
23
- "settings.enforced_mfa": "MFA المفروضة",
24
- "settings.name": "Strapi Identity",
25
32
  "settings.enabled_hint": "تمكين أو تعطيل المصادقة الثنائية لجميع المستخدمين.",
26
- "settings.enforce": "فرض المصادقة المتعددة العوامل (MFA)",
27
33
  "settings.enforce_hint": "فرض المصادقة المتعددة العوامل لجميع المستخدمين. في حالة التمكين، سيُطلب من المستخدمين إعداد MFA عند تسجيل الدخول التالي.",
28
- "settings.issuer": "اسم المُصدر",
34
+ "settings.enforce": "فرض المصادقة المتعددة العوامل (MFA)",
35
+ "settings.enforced_mfa": "MFA المفروضة",
29
36
  "settings.issuer_hint": "يتم عرضه في تطبيق MFA",
30
- "admin.title": "المصادقة الثنائية",
31
- "admin.subtitle": "إعادة تعيين المصادقة الثنائية للمستخدم.",
32
- "admin.warn-title": "إعادة تعيين 2FA لهذا المستخدم؟",
33
- "admin.warning": "ستسمح إعادة تعيين المصادقة الثنائية للمستخدم بإعدادها مرة أخرى بواسطة جهاز جديد. هذا الإجراء لا يمكن التراجع عنه.",
34
- "settings.warning": "سيؤثر إيقاف تشغيل MFA على جميع المستخدمين. يرجى مراجعة الإعدادات بعناية قبل الحفظ."
37
+ "settings.issuer": "اسم المُصدر",
38
+ "settings.name": "Strapi Identity",
39
+ "settings.title": "إعدادات Strapi Identity",
40
+ "settings.warning": "سيؤثر إيقاف تشغيل MFA على جميع المستخدمين. يرجى مراجعة الإعدادات بعناية قبل الحفظ.",
41
+ "verify_page.error": "الرمز غير صالح. يرجى المحاولة مرة أخرى.",
42
+ "verify_page.resend_error": "فشل إعادة إرسال الرمز. يرجى المحاولة مرة أخرى.",
43
+ "verify_page.resend_success": "تم إرسال الرمز!",
44
+ "verify_page.submit": "إرسال الرمز",
45
+ "verify_page.subtitle_email": "أدخل الرمز الذي أرسلناه إلى عنوان بريدك الإلكتروني.",
46
+ "verify_page.subtitle": "أدخل رمز التحقق للمتابعة.",
47
+ "verify_page.title": "تحقق من هويتك"
35
48
  };
36
49
  exports.default = ar;