@nibssplc/cams-sdk-react 0.0.1-beta.19 → 0.0.1-beta.21

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.
@@ -7,6 +7,7 @@ export interface UseCAMSMSALAuthOptions {
7
7
  onMFARequired?: (msalToken: string, account: AccountInfo) => void;
8
8
  scopes?: string[];
9
9
  mfaUrl?: string;
10
+ prompt?: string;
10
11
  }
11
12
  export interface UseCAMSMSALAuthReturn {
12
13
  login: () => Promise<void>;
package/dist/index.cjs.js CHANGED
@@ -16720,77 +16720,71 @@ function useCAMSMSALAuth(options) {
16720
16720
  var isAuthenticated = !!account && !!token && !isMFAPending;
16721
16721
  var scopes = options.scopes || ["openid", "profile", "email"];
16722
16722
  React__default.useEffect(function () {
16723
- if (account && !isMFAPending) {
16724
- // Get token silently
16725
- instance
16726
- .acquireTokenPopup({
16727
- scopes: scopes,
16728
- account: account,
16729
- })
16730
- .then(function (response) {
16731
- var _a, _b;
16732
- if (options.mfaUrl) {
16733
- // Redirect to MFA page
16734
- setIsMFAPending(true);
16735
- (_a = options.onMFARequired) === null || _a === void 0 ? void 0 : _a.call(options, response.accessToken, account);
16736
- window.location.href = "".concat(options.mfaUrl, "?token=").concat(encodeURIComponent(response.accessToken));
16737
- }
16738
- else {
16739
- // Complete auth without MFA
16740
- setToken(response.accessToken);
16741
- setProfile({
16742
- type: "AUTH_SUCCESS",
16743
- userProfile: {
16744
- name: account.name || "",
16745
- email: account.username || "",
16746
- isAuthenticated: true,
16747
- mfaIsEnabled: true,
16748
- message: "Authentication successful",
16749
- userType: "USER",
16750
- tokens: {
16751
- Nonce: "",
16752
- Bearer: response.accessToken,
16753
- },
16754
- },
16755
- });
16756
- (_b = options.onAuthSuccess) === null || _b === void 0 ? void 0 : _b.call(options, response.accessToken);
16757
- }
16758
- })
16759
- .catch(function (err) {
16760
- var _a;
16761
- var camsError = new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "Failed to acquire token silently: " + err);
16762
- setError(camsError);
16763
- (_a = options.onAuthError) === null || _a === void 0 ? void 0 : _a.call(options, camsError);
16723
+ if (account && !token && !isMFAPending) {
16724
+ login().catch(function (err) {
16725
+ // Error is already handled in login function
16726
+ console.error("Failed to automatically log in on mount:", err);
16764
16727
  });
16765
16728
  }
16766
16729
  }, [account, instance, isMFAPending]);
16767
16730
  var login = React__default.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
16768
- var err_1, camsError;
16769
- var _a;
16770
- return __generator(this, function (_b) {
16771
- switch (_b.label) {
16731
+ var loginResponse, tokenResponse, err_1, camsError;
16732
+ var _a, _b, _c;
16733
+ return __generator(this, function (_d) {
16734
+ switch (_d.label) {
16772
16735
  case 0:
16773
16736
  setError(null);
16774
- _b.label = 1;
16737
+ _d.label = 1;
16775
16738
  case 1:
16776
- _b.trys.push([1, 3, , 4]);
16777
- return [4 /*yield*/, instance.loginRedirect({
16739
+ _d.trys.push([1, 5, , 6]);
16740
+ return [4 /*yield*/, instance.loginPopup({
16778
16741
  scopes: scopes,
16779
- prompt: "select_account",
16742
+ prompt: options.prompt || "select_account",
16780
16743
  })];
16781
16744
  case 2:
16782
- _b.sent();
16783
- return [3 /*break*/, 4];
16745
+ loginResponse = _d.sent();
16746
+ if (!loginResponse.account) return [3 /*break*/, 4];
16747
+ return [4 /*yield*/, instance.acquireTokenPopup({
16748
+ scopes: scopes,
16749
+ account: loginResponse.account,
16750
+ })];
16784
16751
  case 3:
16785
- err_1 = _b.sent();
16752
+ tokenResponse = _d.sent();
16753
+ if (options.mfaUrl) {
16754
+ setIsMFAPending(true);
16755
+ (_a = options.onMFARequired) === null || _a === void 0 ? void 0 : _a.call(options, tokenResponse.accessToken, loginResponse.account);
16756
+ }
16757
+ else {
16758
+ setToken(tokenResponse.accessToken);
16759
+ setProfile({
16760
+ type: "AUTH_SUCCESS",
16761
+ userProfile: {
16762
+ name: loginResponse.account.name || "",
16763
+ email: loginResponse.account.username || "",
16764
+ isAuthenticated: true,
16765
+ mfaIsEnabled: true,
16766
+ message: "Authentication successful",
16767
+ userType: "USER",
16768
+ tokens: {
16769
+ Nonce: "",
16770
+ Bearer: tokenResponse.accessToken,
16771
+ },
16772
+ },
16773
+ });
16774
+ (_b = options.onAuthSuccess) === null || _b === void 0 ? void 0 : _b.call(options, tokenResponse.accessToken);
16775
+ }
16776
+ _d.label = 4;
16777
+ case 4: return [3 /*break*/, 6];
16778
+ case 5:
16779
+ err_1 = _d.sent();
16786
16780
  camsError = new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + err_1);
16787
16781
  setError(camsError);
16788
- (_a = options.onAuthError) === null || _a === void 0 ? void 0 : _a.call(options, camsError);
16789
- return [3 /*break*/, 4];
16790
- case 4: return [2 /*return*/];
16782
+ (_c = options.onAuthError) === null || _c === void 0 ? void 0 : _c.call(options, camsError);
16783
+ return [3 /*break*/, 6];
16784
+ case 6: return [2 /*return*/];
16791
16785
  }
16792
16786
  });
16793
- }); }, [instance, scopes]);
16787
+ }); }, [instance, scopes, options]);
16794
16788
  var logout = React__default.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
16795
16789
  var err_2, camsError;
16796
16790
  return __generator(this, function (_a) {