strapi-plugin-magic-link-v5 5.5.7 → 5.5.9
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/CHANGELOG.md +14 -0
- package/README.md +28 -47
- package/dist/_chunks/LicenseGuard-CiyjFnrw.js +54 -0
- package/dist/_chunks/LicenseGuard-DJ5fq2UZ.mjs +55 -0
- package/dist/_chunks/{index-PgHpSdc8.js → index-01GHNxSr.js} +6 -35
- package/dist/_chunks/{index-BZFGxKmY.mjs → index-5jsDgD-q.mjs} +1 -1
- package/dist/_chunks/{index-CddEy_As.js → index-BWuj-5WE.js} +2 -2
- package/dist/_chunks/{index-BFzW7Xex.js → index-Bj3H_Z4B.js} +4 -17
- package/dist/_chunks/{index-M5s7QN5m.js → index-CC4Eu9Dm.js} +1 -1
- package/dist/_chunks/{index-ivgYEX37.mjs → index-Csyi13vd.mjs} +9 -141
- package/dist/_chunks/{index-CuXnqVl4.js → index-DJqXiiP1.js} +9 -141
- package/dist/_chunks/{index-34ICAF9_.mjs → index-DQUYFsLT.mjs} +4 -17
- package/dist/_chunks/{index-B8urUtiz.mjs → index-Dufv-daf.mjs} +7 -36
- package/dist/_chunks/{index-CxCULraY.mjs → index-szeYJKpN.mjs} +2 -2
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +224 -773
- package/dist/server/index.mjs +224 -773
- package/package.json +3 -3
- package/dist/_chunks/LicenseGuard-5sMwgS6j.mjs +0 -646
- package/dist/_chunks/LicenseGuard-DqyOwTlf.js +0 -647
- package/dist/_chunks/LicensePage-2M-vOJX8.js +0 -377
- package/dist/_chunks/LicensePage-CCNW2hT6.mjs +0 -375
|
@@ -7,8 +7,8 @@ const reactIntl = require("react-intl");
|
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const icons = require("@strapi/icons");
|
|
9
9
|
const admin = require("@strapi/strapi/admin");
|
|
10
|
-
const index = require("./index-
|
|
11
|
-
const LicenseGuard = require("./LicenseGuard-
|
|
10
|
+
const index = require("./index-Bj3H_Z4B.js");
|
|
11
|
+
const LicenseGuard = require("./LicenseGuard-CiyjFnrw.js");
|
|
12
12
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
13
13
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
14
14
|
const EMAIL_TEMPLATES = {
|
|
@@ -741,28 +741,18 @@ _Falls du diesen Link nicht angefordert hast, ignoriere diese Nachricht._`,
|
|
|
741
741
|
try {
|
|
742
742
|
const licenseRes = await get("/magic-link/license/status");
|
|
743
743
|
if (licenseRes?.data) {
|
|
744
|
-
|
|
745
|
-
const licenseData = licenseRes.data.data || licenseRes.data;
|
|
746
|
-
if (licenseData.features) {
|
|
747
|
-
if (licenseData.features.enterprise) {
|
|
748
|
-
tier = "enterprise";
|
|
749
|
-
} else if (licenseData.features.advanced) {
|
|
750
|
-
tier = "advanced";
|
|
751
|
-
} else if (licenseData.features.premium) {
|
|
752
|
-
tier = "premium";
|
|
753
|
-
}
|
|
754
|
-
}
|
|
744
|
+
const licenseData = licenseRes.data.data || {};
|
|
755
745
|
const enrichedLicenseInfo = {
|
|
756
746
|
...licenseData,
|
|
757
|
-
tier,
|
|
747
|
+
tier: "enterprise",
|
|
758
748
|
valid: licenseRes.data.valid !== false,
|
|
759
|
-
|
|
749
|
+
hasKey: licenseRes.data.hasKey === true
|
|
760
750
|
};
|
|
761
751
|
setLicenseInfo(enrichedLicenseInfo);
|
|
762
|
-
console.log("💎 License Info:", enrichedLicenseInfo);
|
|
763
752
|
}
|
|
764
753
|
} catch (error) {
|
|
765
754
|
console.error("Error loading license info:", error);
|
|
755
|
+
setLicenseInfo({ tier: "enterprise", valid: true, hasKey: false });
|
|
766
756
|
}
|
|
767
757
|
} catch (error) {
|
|
768
758
|
if (error.name !== "AbortError") {
|
|
@@ -821,27 +811,6 @@ _Falls du diesen Link nicht angefordert hast, ignoriere diese Nachricht._`,
|
|
|
821
811
|
setSelectedTemplateKey(templateEntry.value);
|
|
822
812
|
}
|
|
823
813
|
}, [settings.message_html, settings.message_text, selectedTemplateKey]);
|
|
824
|
-
react.useEffect(() => {
|
|
825
|
-
if (!licenseInfo) return;
|
|
826
|
-
const currentTier = licenseInfo.tier || "free";
|
|
827
|
-
let needsUpdate = false;
|
|
828
|
-
let newSettings = { ...settings };
|
|
829
|
-
if (settings.otp_enabled && !["premium", "advanced", "enterprise"].includes(currentTier)) {
|
|
830
|
-
newSettings.otp_enabled = false;
|
|
831
|
-
needsUpdate = true;
|
|
832
|
-
}
|
|
833
|
-
if (settings.mfa_require_totp && !["advanced", "enterprise"].includes(currentTier)) {
|
|
834
|
-
newSettings.mfa_require_totp = false;
|
|
835
|
-
needsUpdate = true;
|
|
836
|
-
}
|
|
837
|
-
if (settings.totp_as_primary_auth && !["advanced", "enterprise"].includes(currentTier)) {
|
|
838
|
-
newSettings.totp_as_primary_auth = false;
|
|
839
|
-
needsUpdate = true;
|
|
840
|
-
}
|
|
841
|
-
if (needsUpdate) {
|
|
842
|
-
setSettings(newSettings);
|
|
843
|
-
}
|
|
844
|
-
}, [licenseInfo, settings]);
|
|
845
814
|
const handleSave = async (e) => {
|
|
846
815
|
e.preventDefault();
|
|
847
816
|
setIsSaving(true);
|
|
@@ -873,31 +842,6 @@ _Falls du diesen Link nicht angefordert hast, ignoriere diese Nachricht._`,
|
|
|
873
842
|
const updateSetting = (key, value) => {
|
|
874
843
|
setSettings({ ...settings, [key]: value });
|
|
875
844
|
};
|
|
876
|
-
const checkLicenseAndSetMode = (mode) => {
|
|
877
|
-
const currentTier = licenseInfo?.tier || "free";
|
|
878
|
-
if (mode === "otp-email" && !["premium", "advanced", "enterprise"].includes(currentTier)) {
|
|
879
|
-
toggleNotification({
|
|
880
|
-
type: "warning",
|
|
881
|
-
message: "💎 Premium License Required: Email OTP requires at least Premium license. Please upgrade your license."
|
|
882
|
-
});
|
|
883
|
-
return false;
|
|
884
|
-
}
|
|
885
|
-
if (mode === "mfa-totp" && !["advanced", "enterprise"].includes(currentTier)) {
|
|
886
|
-
toggleNotification({
|
|
887
|
-
type: "warning",
|
|
888
|
-
message: "⚡ Advanced License Required: MFA with TOTP requires at least Advanced license. Please upgrade your license."
|
|
889
|
-
});
|
|
890
|
-
return false;
|
|
891
|
-
}
|
|
892
|
-
if (mode === "totp-primary" && !["advanced", "enterprise"].includes(currentTier)) {
|
|
893
|
-
toggleNotification({
|
|
894
|
-
type: "warning",
|
|
895
|
-
message: "⚡ Advanced License Required: TOTP-only login requires at least Advanced license. Please upgrade your license."
|
|
896
|
-
});
|
|
897
|
-
return false;
|
|
898
|
-
}
|
|
899
|
-
return true;
|
|
900
|
-
};
|
|
901
845
|
const handleLanguageChange = (newLang) => {
|
|
902
846
|
changeLanguage(newLang);
|
|
903
847
|
};
|
|
@@ -1051,19 +995,6 @@ _Falls du diesen Link nicht angefordert hast, ignoriere diese Nachricht._`,
|
|
|
1051
995
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", fontWeight: "bold", style: { marginBottom: "8px", display: "block", textAlign: "center", color: "var(--colors-neutral700)" }, children: formatMessage({ id: index.getTrad("settings.features.title") }) }),
|
|
1052
996
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { marginBottom: "20px", display: "block", textAlign: "center", fontSize: "12px" }, children: formatMessage({ id: index.getTrad("settings.features.subtitle") }) }),
|
|
1053
997
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { gap: 4, children: [
|
|
1054
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(ToggleCard, { $active: settings.enabled, $statusLabel: settings.enabled ? statusActive : statusInactive, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 3, children: [
|
|
1055
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", alignItems: "center", style: { marginBottom: "8px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1056
|
-
designSystem.Switch,
|
|
1057
|
-
{
|
|
1058
|
-
checked: settings.enabled,
|
|
1059
|
-
onCheckedChange: (checked) => updateSetting("enabled", checked)
|
|
1060
|
-
}
|
|
1061
|
-
) }),
|
|
1062
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
|
|
1063
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { fontSize: "14px", marginBottom: "6px", display: "block", textAlign: "center" }, children: formatMessage({ id: index.getTrad("settings.feature.enabled.title") }) }),
|
|
1064
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", textColor: "neutral600", style: { fontSize: "12px", lineHeight: "1.4", textAlign: "center" }, children: formatMessage({ id: index.getTrad("settings.feature.enabled.description") }) })
|
|
1065
|
-
] })
|
|
1066
|
-
] }) }) }),
|
|
1067
998
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 4, s: 6, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(ToggleCard, { $active: settings.createUserIfNotExists, $statusLabel: settings.createUserIfNotExists ? statusActive : statusInactive, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 3, children: [
|
|
1068
999
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", alignItems: "center", style: { marginBottom: "8px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1069
1000
|
designSystem.Switch,
|
|
@@ -2237,21 +2168,9 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2237
2168
|
border: "2px solid rgba(128, 128, 128, 0.2)"
|
|
2238
2169
|
},
|
|
2239
2170
|
children: [
|
|
2240
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, {
|
|
2241
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2242
|
-
|
|
2243
|
-
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { fontSize: "14px" }, children: [
|
|
2244
|
-
"Current License: ",
|
|
2245
|
-
licenseInfo?.tier ? licenseInfo.tier.charAt(0).toUpperCase() + licenseInfo.tier.slice(1) : "Free"
|
|
2246
|
-
] })
|
|
2247
|
-
] }),
|
|
2248
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { style: {
|
|
2249
|
-
backgroundColor: licenseInfo?.tier === "advanced" || licenseInfo?.tier === "enterprise" ? "#16A34A" : licenseInfo?.tier === "premium" ? "#7C3AED" : "#9CA3AF",
|
|
2250
|
-
color: "white",
|
|
2251
|
-
fontWeight: "600",
|
|
2252
|
-
fontSize: "11px",
|
|
2253
|
-
padding: "4px 12px"
|
|
2254
|
-
}, children: licenseInfo?.tier === "advanced" || licenseInfo?.tier === "enterprise" ? "✓ All Features Unlocked" : licenseInfo?.tier === "premium" ? "Email OTP Available" : "Basic Features Only" })
|
|
2171
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { alignItems: "center", gap: 2, style: { marginBottom: "8px" }, children: [
|
|
2172
|
+
/* @__PURE__ */ jsxRuntime.jsx(icons.Shield, { width: "20px", height: "20px", style: { color: "#16A34A" } }),
|
|
2173
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { fontSize: "14px" }, children: "All authentication modes are available" })
|
|
2255
2174
|
] }),
|
|
2256
2175
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", textColor: "neutral600", style: { fontSize: "12px", lineHeight: "1.5" }, children: [
|
|
2257
2176
|
"💡 ",
|
|
@@ -2336,7 +2255,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2336
2255
|
$active: settings.otp_enabled && !settings.mfa_require_totp && ["premium", "advanced", "enterprise"].includes(licenseInfo?.tier),
|
|
2337
2256
|
$statusLabel: settings.otp_enabled && !settings.mfa_require_totp && ["premium", "advanced", "enterprise"].includes(licenseInfo?.tier) ? "ACTIVE" : !["premium", "advanced", "enterprise"].includes(licenseInfo?.tier) ? "🔒 LOCKED" : "OFF",
|
|
2338
2257
|
onClick: () => {
|
|
2339
|
-
if (!checkLicenseAndSetMode("otp-email")) return;
|
|
2340
2258
|
updateSetting("otp_enabled", true);
|
|
2341
2259
|
updateSetting("mfa_require_totp", false);
|
|
2342
2260
|
updateSetting("totp_as_primary_auth", false);
|
|
@@ -2352,28 +2270,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2352
2270
|
position: "relative"
|
|
2353
2271
|
},
|
|
2354
2272
|
children: [
|
|
2355
|
-
!["premium", "advanced", "enterprise"].includes(licenseInfo?.tier) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2356
|
-
"div",
|
|
2357
|
-
{
|
|
2358
|
-
style: {
|
|
2359
|
-
position: "absolute",
|
|
2360
|
-
top: 0,
|
|
2361
|
-
left: 0,
|
|
2362
|
-
right: 0,
|
|
2363
|
-
bottom: 0,
|
|
2364
|
-
display: "flex",
|
|
2365
|
-
alignItems: "center",
|
|
2366
|
-
justifyContent: "center",
|
|
2367
|
-
zIndex: 10,
|
|
2368
|
-
flexDirection: "column",
|
|
2369
|
-
gap: "8px"
|
|
2370
|
-
},
|
|
2371
|
-
children: [
|
|
2372
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.Lock, { width: "40px", height: "40px", style: { color: "#7C3AED" } }),
|
|
2373
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { color: "#7C3AED", fontSize: "13px" }, children: "Premium Required" })
|
|
2374
|
-
]
|
|
2375
|
-
}
|
|
2376
|
-
),
|
|
2377
2273
|
/* @__PURE__ */ jsxRuntime.jsx(IconWrapper, { $bgColor: "rgba(124, 58, 237, 0.1)", $iconColor: "#7C3AED", children: /* @__PURE__ */ jsxRuntime.jsx(icons.Mail, {}) }),
|
|
2378
2274
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
|
|
2379
2275
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { marginBottom: "8px", display: "block" }, children: "Magic Link + Email OTP" }),
|
|
@@ -2402,7 +2298,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2402
2298
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
2403
2299
|
onClick: async (e) => {
|
|
2404
2300
|
e.stopPropagation();
|
|
2405
|
-
if (!checkLicenseAndSetMode("otp-email")) return;
|
|
2406
2301
|
try {
|
|
2407
2302
|
const newSettings = {
|
|
2408
2303
|
...settings,
|
|
@@ -2437,7 +2332,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2437
2332
|
$active: settings.mfa_require_totp && ["advanced", "enterprise"].includes(licenseInfo?.tier),
|
|
2438
2333
|
$statusLabel: settings.mfa_require_totp && ["advanced", "enterprise"].includes(licenseInfo?.tier) ? "ACTIVE" : !["advanced", "enterprise"].includes(licenseInfo?.tier) ? "🔒 LOCKED" : "OFF",
|
|
2439
2334
|
onClick: () => {
|
|
2440
|
-
if (!checkLicenseAndSetMode("mfa-totp")) return;
|
|
2441
2335
|
updateSetting("otp_enabled", false);
|
|
2442
2336
|
updateSetting("mfa_require_totp", true);
|
|
2443
2337
|
updateSetting("totp_as_primary_auth", false);
|
|
@@ -2453,28 +2347,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2453
2347
|
position: "relative"
|
|
2454
2348
|
},
|
|
2455
2349
|
children: [
|
|
2456
|
-
!["advanced", "enterprise"].includes(licenseInfo?.tier) && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2457
|
-
"div",
|
|
2458
|
-
{
|
|
2459
|
-
style: {
|
|
2460
|
-
position: "absolute",
|
|
2461
|
-
top: 0,
|
|
2462
|
-
left: 0,
|
|
2463
|
-
right: 0,
|
|
2464
|
-
bottom: 0,
|
|
2465
|
-
display: "flex",
|
|
2466
|
-
alignItems: "center",
|
|
2467
|
-
justifyContent: "center",
|
|
2468
|
-
zIndex: 10,
|
|
2469
|
-
flexDirection: "column",
|
|
2470
|
-
gap: "8px"
|
|
2471
|
-
},
|
|
2472
|
-
children: [
|
|
2473
|
-
/* @__PURE__ */ jsxRuntime.jsx(icons.Lightning, { width: "40px", height: "40px", style: { color: "#D97706" } }),
|
|
2474
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { color: "#D97706", fontSize: "13px" }, children: "Advanced Required" })
|
|
2475
|
-
]
|
|
2476
|
-
}
|
|
2477
|
-
),
|
|
2478
2350
|
/* @__PURE__ */ jsxRuntime.jsx(IconWrapper, { $bgColor: "rgba(217, 119, 6, 0.1)", $iconColor: "#D97706", children: /* @__PURE__ */ jsxRuntime.jsx(icons.Lock, {}) }),
|
|
2479
2351
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { children: [
|
|
2480
2352
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", style: { marginBottom: "8px", display: "block" }, children: "Magic Link + TOTP (MFA)" }),
|
|
@@ -2503,7 +2375,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2503
2375
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
2504
2376
|
onClick: async (e) => {
|
|
2505
2377
|
e.stopPropagation();
|
|
2506
|
-
if (!checkLicenseAndSetMode("mfa-totp")) return;
|
|
2507
2378
|
try {
|
|
2508
2379
|
const newSettings = {
|
|
2509
2380
|
...settings,
|
|
@@ -2683,9 +2554,6 @@ ${language === "de" ? "Der Link läuft in 1 Stunde ab." : "The link expires in 1
|
|
|
2683
2554
|
{
|
|
2684
2555
|
checked: settings.totp_as_primary_auth || false,
|
|
2685
2556
|
onCheckedChange: (checked) => {
|
|
2686
|
-
if (checked && !checkLicenseAndSetMode("totp-primary")) {
|
|
2687
|
-
return;
|
|
2688
|
-
}
|
|
2689
2557
|
updateSetting("totp_as_primary_auth", checked);
|
|
2690
2558
|
}
|
|
2691
2559
|
}
|
|
@@ -60,7 +60,7 @@ const index = {
|
|
|
60
60
|
},
|
|
61
61
|
Component: () => import(
|
|
62
62
|
/* webpackChunkName: "magic-link-tokens" */
|
|
63
|
-
"./index-
|
|
63
|
+
"./index-szeYJKpN.mjs"
|
|
64
64
|
),
|
|
65
65
|
permissions: pluginPermissions.access
|
|
66
66
|
});
|
|
@@ -82,7 +82,7 @@ const index = {
|
|
|
82
82
|
to: `${PLUGIN_ID}/config`,
|
|
83
83
|
Component: () => import(
|
|
84
84
|
/* webpackChunkName: "magic-link-settings" */
|
|
85
|
-
"./index-
|
|
85
|
+
"./index-Csyi13vd.mjs"
|
|
86
86
|
),
|
|
87
87
|
permissions: pluginPermissions.readSettings
|
|
88
88
|
},
|
|
@@ -95,20 +95,7 @@ const index = {
|
|
|
95
95
|
to: `${PLUGIN_ID}/license`,
|
|
96
96
|
Component: () => import(
|
|
97
97
|
/* webpackChunkName: "magic-link-license" */
|
|
98
|
-
"./index-
|
|
99
|
-
),
|
|
100
|
-
permissions: pluginPermissions.access
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
intlLabel: {
|
|
104
|
-
id: getTrad("Form.title.Upgrade"),
|
|
105
|
-
defaultMessage: "Upgrade"
|
|
106
|
-
},
|
|
107
|
-
id: "magic-link-upgrade",
|
|
108
|
-
to: `${PLUGIN_ID}/upgrade`,
|
|
109
|
-
Component: () => import(
|
|
110
|
-
/* webpackChunkName: "magic-link-upgrade" */
|
|
111
|
-
"./LicensePage-CCNW2hT6.mjs"
|
|
98
|
+
"./index-Dufv-daf.mjs"
|
|
112
99
|
),
|
|
113
100
|
permissions: pluginPermissions.access
|
|
114
101
|
},
|
|
@@ -121,7 +108,7 @@ const index = {
|
|
|
121
108
|
to: `${PLUGIN_ID}/whatsapp`,
|
|
122
109
|
Component: () => import(
|
|
123
110
|
/* webpackChunkName: "magic-link-whatsapp" */
|
|
124
|
-
"./index-
|
|
111
|
+
"./index-5jsDgD-q.mjs"
|
|
125
112
|
),
|
|
126
113
|
permissions: pluginPermissions.access
|
|
127
114
|
}
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useEffect } from "react";
|
|
3
3
|
import { Loader, Box, Alert, Flex, Typography, Button, Badge, Accordion } from "@strapi/design-system";
|
|
4
4
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
5
|
-
import { ArrowClockwise, Duplicate, Download, User, Shield,
|
|
5
|
+
import { ArrowClockwise, Duplicate, Download, User, Shield, ChartBubble } from "@strapi/icons";
|
|
6
6
|
import styled, { keyframes } from "styled-components";
|
|
7
7
|
const theme = {
|
|
8
8
|
colors: {
|
|
@@ -172,8 +172,8 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
|
172
172
|
if (error) {
|
|
173
173
|
return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx(Box, { padding: 8, children: /* @__PURE__ */ jsx(Alert, { variant: "danger", title: "Error", children: error }) }) });
|
|
174
174
|
}
|
|
175
|
-
const isValid = licenseData?.valid;
|
|
176
|
-
const
|
|
175
|
+
const isValid = licenseData?.valid !== false;
|
|
176
|
+
const hasKey = !!licenseData?.hasKey;
|
|
177
177
|
const data = licenseData?.data || {};
|
|
178
178
|
return /* @__PURE__ */ jsxs(Container, { children: [
|
|
179
179
|
/* @__PURE__ */ jsx(StickySaveBar, { paddingTop: 5, paddingBottom: 5, paddingLeft: 6, paddingRight: 6, children: /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", alignItems: "center", children: [
|
|
@@ -198,7 +198,7 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
|
198
198
|
)
|
|
199
199
|
] }) }),
|
|
200
200
|
/* @__PURE__ */ jsxs(Box, { paddingTop: 6, paddingLeft: 6, paddingRight: 6, paddingBottom: 10, children: [
|
|
201
|
-
|
|
201
|
+
hasKey && isValid ? /* @__PURE__ */ jsx(Alert, { variant: "success", title: "License Active", children: "License key registered. Thanks for supporting the plugin!" }) : hasKey && !isValid ? /* @__PURE__ */ jsx(Alert, { variant: "warning", title: "License Verification", children: "We couldn't reach the license server right now. The plugin keeps working — try Refresh Status later." }) : /* @__PURE__ */ jsx(Alert, { variant: "default", title: "No license key registered", children: 'All Magic Link features are available without activation. If you want to register a license key, use the form below or run "Auto-Activate" to generate one for your admin email.' }),
|
|
202
202
|
data.licenseKey && /* @__PURE__ */ jsx(Box, { marginTop: 6, children: /* @__PURE__ */ jsx(LicenseKeyBanner, { children: /* @__PURE__ */ jsxs(Flex, { justifyContent: "space-between", alignItems: "flex-start", children: [
|
|
203
203
|
/* @__PURE__ */ jsxs(Box, { style: { flex: 1 }, children: [
|
|
204
204
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", style: { color: "rgba(255,255,255,0.8)", marginBottom: "12px", textTransform: "uppercase", fontSize: "11px", letterSpacing: "0.5px", display: "block" }, children: "License Key" }),
|
|
@@ -283,45 +283,16 @@ Generated: ${(/* @__PURE__ */ new Date()).toLocaleString()}
|
|
|
283
283
|
] })
|
|
284
284
|
] }) }) })
|
|
285
285
|
] }),
|
|
286
|
-
/* @__PURE__ */ jsxs(Accordion.Item, { value: "features", children: [
|
|
287
|
-
/* @__PURE__ */ jsx(Accordion.Header, { children: /* @__PURE__ */ jsx(Accordion.Trigger, { icon: Sparkle, children: "Features & Capabilities" }) }),
|
|
288
|
-
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(Box, { padding: 6, children: /* @__PURE__ */ jsxs(Flex, { gap: 8, wrap: "wrap", children: [
|
|
289
|
-
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
290
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Premium Features" }),
|
|
291
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.premium ? "✓ Enabled" : "✗ Disabled" })
|
|
292
|
-
] }),
|
|
293
|
-
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
294
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Advanced Features" }),
|
|
295
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.advanced ? "✓ Enabled" : "✗ Disabled" })
|
|
296
|
-
] }),
|
|
297
|
-
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "180px" }, children: [
|
|
298
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Enterprise Features" }),
|
|
299
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.features?.enterprise ? "✓ Enabled" : "✗ Disabled" })
|
|
300
|
-
] })
|
|
301
|
-
] }) }) })
|
|
302
|
-
] }),
|
|
303
286
|
/* @__PURE__ */ jsxs(Accordion.Item, { value: "status", children: [
|
|
304
287
|
/* @__PURE__ */ jsx(Accordion.Header, { children: /* @__PURE__ */ jsx(Accordion.Trigger, { icon: ChartBubble, children: "System Status" }) }),
|
|
305
288
|
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(Box, { padding: 6, children: /* @__PURE__ */ jsxs(Flex, { gap: 8, wrap: "wrap", children: [
|
|
306
289
|
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
307
290
|
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "License Status" }),
|
|
308
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.isActive ? "Active" : "Inactive" })
|
|
309
|
-
] }),
|
|
310
|
-
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
311
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Connection" }),
|
|
312
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.isOnline ? "Online" : "Offline" })
|
|
313
|
-
] }),
|
|
314
|
-
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
315
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Last Sync" }),
|
|
316
|
-
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: data.lastPingAt ? new Date(data.lastPingAt).toLocaleTimeString() : "Never" })
|
|
291
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: hasKey ? data.isActive ? "Active" : "Inactive" : "No key registered" })
|
|
317
292
|
] }),
|
|
318
293
|
/* @__PURE__ */ jsxs(Box, { style: { flex: "1", minWidth: "150px" }, children: [
|
|
319
|
-
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "
|
|
320
|
-
/* @__PURE__ */
|
|
321
|
-
data.currentDevices || 0,
|
|
322
|
-
" / ",
|
|
323
|
-
data.maxDevices || 1
|
|
324
|
-
] })
|
|
294
|
+
/* @__PURE__ */ jsx(Typography, { variant: "sigma", textColor: "neutral600", textTransform: "uppercase", style: { marginBottom: "8px", display: "block" }, children: "Plugin Mode" }),
|
|
295
|
+
/* @__PURE__ */ jsx(Typography, { variant: "omega", fontWeight: "semiBold", children: "Fully unlocked" })
|
|
325
296
|
] })
|
|
326
297
|
] }) }) })
|
|
327
298
|
] })
|
|
@@ -5,9 +5,9 @@ import styled, { keyframes, css } from "styled-components";
|
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
6
|
import { Box, Flex, Typography, Button, TextInput, Textarea, Checkbox, IconButton, Loader, Searchbar, SingleSelect, SingleSelectOption, Thead, Tr, Th, Tbody, Td, Pagination, PreviousLink, PageLink, NextLink, Table, Badge, VisuallyHidden, Main } from "@strapi/design-system";
|
|
7
7
|
import { Cross, Sparkle, Check, Shield, Clock, Lock, Trash, ArrowClockwise, CaretDown, User, Monitor, Calendar, Plus, Earth, WarningCircle, Server, Eye, Mail, Cog, Key, Link } from "@strapi/icons";
|
|
8
|
-
import { g as getTrad, P as PLUGIN_ID } from "./index-
|
|
8
|
+
import { g as getTrad, P as PLUGIN_ID } from "./index-DQUYFsLT.mjs";
|
|
9
9
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
10
|
-
import { L as LicenseGuard, a as LanguageProvider } from "./LicenseGuard-
|
|
10
|
+
import { L as LicenseGuard, a as LanguageProvider } from "./LicenseGuard-DJ5fq2UZ.mjs";
|
|
11
11
|
const CreateTokenModal = ({ isOpen, onClose, onSubmit, formData, setFormData }) => {
|
|
12
12
|
const { formatMessage } = useIntl();
|
|
13
13
|
const [contextText, setContextText] = useState("");
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED