@nibssplc/cams-sdk-react 0.0.1-beta.64 → 0.0.1-beta.66
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/dist/index.cjs.js +52 -25
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +52 -25
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1210,7 +1210,7 @@ function CAMSProviderCore(props) {
|
|
|
1210
1210
|
}, [mode, auth, userProfile]);
|
|
1211
1211
|
var value = useMemo(function () {
|
|
1212
1212
|
return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile, authMode: mode }));
|
|
1213
|
-
}, [auth, userProfile, mode]);
|
|
1213
|
+
}, [auth, userProfile, mode, mode === "MSAL" && "requiresMFA" in auth ? auth.requiresMFA : null]);
|
|
1214
1214
|
return jsxRuntimeExports.jsx(CAMSContext.Provider, { value: value, children: children });
|
|
1215
1215
|
}
|
|
1216
1216
|
function UnifiedCAMSProvider(props) {
|
|
@@ -1462,9 +1462,9 @@ var GenericOTPVerifier = function (_a) {
|
|
|
1462
1462
|
resolver: a$1(Schema),
|
|
1463
1463
|
defaultValues: (_c = {}, _c[fieldName] = "", _c),
|
|
1464
1464
|
});
|
|
1465
|
-
return (jsxRuntimeExports.jsxs(
|
|
1465
|
+
return (jsxRuntimeExports.jsxs("div", { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxRuntimeExports.jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [jsxRuntimeExports.jsx("div", { className: "w-16 h-16 bg-gradient-to-br from-lime-400 via-green-500 to-emerald-600 rounded-xl flex items-center justify-center text-white text-2xl mb-6 group-hover:scale-110 transition-transform duration-300", children: jsxRuntimeExports.jsx(RectangleEllipsis, {}) }), jsxRuntimeExports.jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsxRuntimeExports.jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? 'text-red-600' : 'text-orange-600'), children: isMaxAttemptsReached
|
|
1466
1466
|
? 'Maximum attempts reached. Please try again later.'
|
|
1467
|
-
: "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntimeExports.jsx(
|
|
1467
|
+
: "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntimeExports.jsx("div", { className: "space-y-6", children: jsxRuntimeExports.jsx(Form, __assign({}, form, { children: jsxRuntimeExports.jsx("form", { className: "flex items-center justify-center my-4 ", children: jsxRuntimeExports.jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxRuntimeExports.jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
|
|
1468
1468
|
setValue(authenticationValue);
|
|
1469
1469
|
if (authenticationValue.length === 6 && !isMaxAttemptsReached) {
|
|
1470
1470
|
setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
|
|
@@ -1717,33 +1717,54 @@ var MFAOptions = function (_a) {
|
|
|
1717
1717
|
var _d = useState(false), otpVisible = _d[0], setOtpVisible = _d[1];
|
|
1718
1718
|
var _e = useState(false), showSuccessAnimation = _e[0], setShowSuccessAnimation = _e[1];
|
|
1719
1719
|
var _f = useState(null), authType = _f[0], setAuthType = _f[1];
|
|
1720
|
+
var _g = useState(""), lastOTPCode = _g[0], setLastOTPCode = _g[1];
|
|
1720
1721
|
var context = useCAMSContext();
|
|
1721
|
-
var
|
|
1722
|
+
var _h = context.authMode === "MSAL" && "sendEmailOTP" in context
|
|
1722
1723
|
? context
|
|
1723
|
-
: { sendEmailOTP: null }
|
|
1724
|
+
: { sendEmailOTP: null, completeMFA: null }, sendEmailOTP = _h.sendEmailOTP, completeMFA = _h.completeMFA;
|
|
1724
1725
|
var accessToken = context.authMode === "MSAL" ? context.accessToken : "";
|
|
1725
1726
|
var idToken = context.authMode === "MSAL" ? context.idToken : "";
|
|
1726
|
-
var
|
|
1727
|
+
var _j = useOTPHandler({
|
|
1727
1728
|
accessToken: accessToken || "",
|
|
1728
1729
|
idToken: idToken || "",
|
|
1729
1730
|
provider: "MSAL",
|
|
1730
1731
|
appCode: context.appCode || "",
|
|
1731
1732
|
authenticationType: authType,
|
|
1732
1733
|
MFAEndpoint: MFAEndpoint,
|
|
1733
|
-
onAuthComplete: function (state, data) {
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1734
|
+
onAuthComplete: function (state, data) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1735
|
+
var error_1;
|
|
1736
|
+
return __generator(this, function (_a) {
|
|
1737
|
+
switch (_a.label) {
|
|
1738
|
+
case 0:
|
|
1739
|
+
if (!state) return [3 /*break*/, 5];
|
|
1740
|
+
if (!(completeMFA && authType && lastOTPCode)) return [3 /*break*/, 4];
|
|
1741
|
+
_a.label = 1;
|
|
1742
|
+
case 1:
|
|
1743
|
+
_a.trys.push([1, 3, , 4]);
|
|
1744
|
+
return [4 /*yield*/, completeMFA(lastOTPCode, authType)];
|
|
1745
|
+
case 2:
|
|
1746
|
+
_a.sent();
|
|
1747
|
+
return [3 /*break*/, 4];
|
|
1748
|
+
case 3:
|
|
1749
|
+
error_1 = _a.sent();
|
|
1750
|
+
console.error("Failed to complete MFA:", error_1);
|
|
1751
|
+
return [3 /*break*/, 4];
|
|
1752
|
+
case 4:
|
|
1753
|
+
setShowSuccessAnimation(true);
|
|
1754
|
+
toast.success(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: "Multi-Factor Authentication Successful" })] }));
|
|
1755
|
+
setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(true); }, 2000);
|
|
1756
|
+
return [3 /*break*/, 6];
|
|
1757
|
+
case 5:
|
|
1758
|
+
toast.error(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(ShieldClose, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Invalid code. Please try again." })] }));
|
|
1759
|
+
if (isMaxAttemptsReached) {
|
|
1760
|
+
setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(false); }, 1000);
|
|
1761
|
+
}
|
|
1762
|
+
_a.label = 6;
|
|
1763
|
+
case 6: return [2 /*return*/];
|
|
1743
1764
|
}
|
|
1744
|
-
}
|
|
1745
|
-
},
|
|
1746
|
-
}), handleSubmitOTP =
|
|
1765
|
+
});
|
|
1766
|
+
}); },
|
|
1767
|
+
}), handleSubmitOTP = _j.handleSubmitOTP, loading = _j.loading, setLoading = _j.setLoading, attemptCount = _j.attemptCount, remainingAttempts = _j.remainingAttempts, isMaxAttemptsReached = _j.isMaxAttemptsReached, resetAttempts = _j.resetAttempts;
|
|
1747
1768
|
var handleGoBack = function () {
|
|
1748
1769
|
setAuthType(null);
|
|
1749
1770
|
setOtpVisible(false);
|
|
@@ -1752,9 +1773,9 @@ var MFAOptions = function (_a) {
|
|
|
1752
1773
|
};
|
|
1753
1774
|
// Show success animation if authentication is successful
|
|
1754
1775
|
if (showSuccessAnimation) {
|
|
1755
|
-
return (jsxRuntimeExports.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntimeExports.jsx(AuthSuccessAnimation, { onComplete: function () {
|
|
1756
|
-
|
|
1757
|
-
|
|
1776
|
+
return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntimeExports.jsx(AuthSuccessAnimation, { onComplete: function () {
|
|
1777
|
+
// Animation completed, can add additional logic here if needed
|
|
1778
|
+
} }) }) }));
|
|
1758
1779
|
}
|
|
1759
1780
|
var content = jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
|
|
1760
1781
|
if (!authType) {
|
|
@@ -1786,14 +1807,20 @@ var MFAOptions = function (_a) {
|
|
|
1786
1807
|
}, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntimeExports.jsx(Shield, {}); } }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Authenticator App" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] })] })] }));
|
|
1787
1808
|
}
|
|
1788
1809
|
else if (authType === "EmailOTP") {
|
|
1789
|
-
content = (jsxRuntimeExports.
|
|
1810
|
+
content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
|
|
1790
1811
|
setAuthType(null);
|
|
1791
1812
|
setOtpVisible(false);
|
|
1792
1813
|
setValue("");
|
|
1793
|
-
}, children:
|
|
1814
|
+
}, children: jsxRuntimeExports.jsxs(DialogContent, { className: "space-y-2", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) {
|
|
1815
|
+
setLastOTPCode(code);
|
|
1816
|
+
return handleSubmitOTP(code);
|
|
1817
|
+
}, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
|
|
1794
1818
|
}
|
|
1795
1819
|
else if (authType === "AuthenticatorCode") {
|
|
1796
|
-
content = (jsxRuntimeExports.
|
|
1820
|
+
content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxRuntimeExports.jsxs(DialogContent, { className: "sm:max-w-[425px] space-y-2", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsxRuntimeExports.jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsxRuntimeExports.jsx(LoadingSpinner, {}) })) : (jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) {
|
|
1821
|
+
setLastOTPCode(code);
|
|
1822
|
+
return handleSubmitOTP(code);
|
|
1823
|
+
}, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
|
|
1797
1824
|
}
|
|
1798
1825
|
return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsxs(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: [jsxRuntimeExports.jsxs(CardHeader, { children: [jsxRuntimeExports.jsx("div", { className: "flex justify-center items", children: jsxRuntimeExports.jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 365, height: 365 }) }), jsxRuntimeExports.jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), jsxRuntimeExports.jsx(CardTitle, { className: "text-gray-300 text-base -tracking-wide text-center", children: "Your Microsoft account has been validated. Please complete two-factor authentication to continue." })] }), jsxRuntimeExports.jsx(CardContent, { className: "max-w-[80%]", children: content }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
|
|
1799
1826
|
};
|