acsi-core 1.2.32 → 1.2.35

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.
@@ -29,6 +29,7 @@ import { init as init$1, replayIntegration } from '@sentry/react';
29
29
  import { FaCaretDown } from 'react-icons/fa';
30
30
  import CreatableSelect from 'react-select/creatable';
31
31
  import moment$1 from 'moment-timezone';
32
+ import DOMPurify from 'dompurify';
32
33
 
33
34
  var setLoading = createAction("common/setLoading");
34
35
  var setLoadingPage = createAction("common/setLoadingPage");
@@ -88,6 +89,7 @@ var COLORS = {
88
89
  var ORGANIZATION_TENANT = "ORGANIZATION_TENANT";
89
90
  var ORGANIZATION_TEAM = "ORGANIZATION_TEAM";
90
91
  var TIMEZONE_ID = "TIMEZONE_ID";
92
+ var UID_TENANT = "uid";
91
93
 
92
94
  var styleGlobal = {"signup_wrap":"_1KLz9","box-signin":"_2Jo1o","signin_title":"_3egBO","signup_link":"_1DoIT","google_button":"_34hK_","microsoft_button":"_19ESb","box-field":"_2e9xO","box-input":"_3zXRp","box-text":"_8NJga","box-button-email":"_21FPk","box-signin-container":"_1QERu","box-signin-text":"_2-znH","box-signin-logo":"_1aB2m","box-right":"_3qndF","image-slideshow":"_1aM7m","active":"_Vx1zf","box-right-body":"_JzdCr","box-right-footer":"_19aCA","pr-30":"_2HB5r","width-400":"_4ehXP"};
93
95
 
@@ -1721,6 +1723,7 @@ var apiUpload = axios.create({
1721
1723
  [api, apiUpload].forEach(function (i) {
1722
1724
  return i.interceptors.request.use(function (config) {
1723
1725
  var token = getAccessToken();
1726
+ var organizationTenant = localStorage.getItem(ORGANIZATION_TENANT);
1724
1727
  if (token) {
1725
1728
  config.headers.Authorization = "Bearer " + token;
1726
1729
  localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
@@ -1729,9 +1732,8 @@ var apiUpload = axios.create({
1729
1732
  if (imPersonate) {
1730
1733
  config.headers.ImPersonate = imPersonate;
1731
1734
  }
1732
- var tenantId = localStorage.getItem(ORGANIZATION_TENANT);
1733
- if (tenantId) {
1734
- config.headers["X-TenantID"] = tenantId;
1735
+ if (organizationTenant) {
1736
+ config.headers["X-Tenant-ID"] = organizationTenant;
1735
1737
  }
1736
1738
  return config;
1737
1739
  }, function (error) {
@@ -1742,10 +1744,7 @@ var apiUpload = axios.create({
1742
1744
  return i.interceptors.response.use(function (response) {
1743
1745
  return response;
1744
1746
  }, function (error) {
1745
- if (error.response.status === 401) {
1746
- window.location.href = "/login";
1747
- }
1748
- if (error.response.status == 403) {
1747
+ if ((error.response.status == 403 || error.response.status == 401) && window.location.pathname !== '/login') {
1749
1748
  var hostname = window.location.hostname;
1750
1749
  var parts = hostname.split('.');
1751
1750
  var domain = parts.slice(-2).join('.');
@@ -1753,6 +1752,7 @@ var apiUpload = axios.create({
1753
1752
  localStorage.removeItem(ORGANIZATION_TENANT);
1754
1753
  localStorage.removeItem(TIMEZONE_ID);
1755
1754
  localStorage.removeItem(ORGANIZATION_TEAM);
1755
+ localStorage.removeItem(UID_TENANT);
1756
1756
  Cookies.remove('auth', {
1757
1757
  path: '/',
1758
1758
  domain: "." + domain
@@ -1839,8 +1839,8 @@ var msalConfig = function msalConfig(clientId, redirectUri) {
1839
1839
  };
1840
1840
 
1841
1841
  var BlockLogin = function BlockLogin(_ref) {
1842
- var _ref$role = _ref.role,
1843
- role = _ref$role === void 0 ? "LandingPage" : _ref$role,
1842
+ var onNavigate = _ref.onNavigate,
1843
+ role = _ref.role,
1844
1844
  hiddenSignup = _ref.hiddenSignup,
1845
1845
  email = _ref.email,
1846
1846
  setEmail = _ref.setEmail,
@@ -1920,7 +1920,7 @@ var BlockLogin = function BlockLogin(_ref) {
1920
1920
  };
1921
1921
  dispatch(setLoading(true));
1922
1922
  return Promise.resolve(apiLoginGoogle(infoLogin)).then(function (authResult) {
1923
- var _authResult$data, _authResult$data2, _authResult$data2$rol, _authResult$data3;
1923
+ var _authResult$data;
1924
1924
  if (((_authResult$data = authResult.data) === null || _authResult$data === void 0 ? void 0 : _authResult$data.id) == null) {
1925
1925
  dispatch(setLoading(false));
1926
1926
  alert("Please contact admin.");
@@ -1938,16 +1938,27 @@ var BlockLogin = function BlockLogin(_ref) {
1938
1938
  timestamp: new Date().toISOString()
1939
1939
  }
1940
1940
  });
1941
- CookieService.setAuthCookie({
1942
- token: tokenJWT,
1943
- expiresAt: Date.now() + 24 * 60 * 60 * 1000
1944
- });
1945
- localStorage.setItem(ACCESS_TOKEN, tokenJWT);
1946
- var domain = "/teacher";
1947
- if ((_authResult$data2 = authResult.data) !== null && _authResult$data2 !== void 0 && (_authResult$data2$rol = _authResult$data2.roles) !== null && _authResult$data2$rol !== void 0 && _authResult$data2$rol.includes("Admin") || ((_authResult$data3 = authResult.data) === null || _authResult$data3 === void 0 ? void 0 : _authResult$data3.role) === "Admin") {
1948
- domain = "/admin";
1941
+ if (role === "LandingPage") {
1942
+ CookieService.setAuthCookie({
1943
+ token: tokenJWT,
1944
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000
1945
+ });
1946
+ var getRedirectUrl = function getRedirectUrl(role) {
1947
+ switch (role) {
1948
+ case "Admin":
1949
+ return ADMIN_ORIGIN;
1950
+ case "Teacher":
1951
+ return TEACHER_ORIGIN;
1952
+ default:
1953
+ return role + "." + REQUEST_ORIGIN;
1954
+ }
1955
+ };
1956
+ var redirectUrl = getRedirectUrl(authResult.data.role);
1957
+ window.location.href = redirectUrl + "/dashboard";
1958
+ dispatch(setLoading(false));
1949
1959
  }
1950
- window.location.href = domain + "/dashboard";
1960
+ localStorage.setItem(ACCESS_TOKEN, tokenJWT);
1961
+ onNavigate("/dashboard");
1951
1962
  dispatch(setLoading(false));
1952
1963
  });
1953
1964
  }
@@ -1996,8 +2007,8 @@ var BlockLogin = function BlockLogin(_ref) {
1996
2007
  };
1997
2008
  dispatch(setLoading(true));
1998
2009
  return Promise.resolve(apiLoginGoogle(infoLogin)).then(function (authResult) {
1999
- var _authResult$data4, _authResult$data5, _authResult$data5$rol, _authResult$data6;
2000
- if (((_authResult$data4 = authResult.data) === null || _authResult$data4 === void 0 ? void 0 : _authResult$data4.id) == null) {
2010
+ var _authResult$data2;
2011
+ if (((_authResult$data2 = authResult.data) === null || _authResult$data2 === void 0 ? void 0 : _authResult$data2.id) == null) {
2001
2012
  dispatch(setLoading(false));
2002
2013
  alert("Please contact admin.");
2003
2014
  return;
@@ -2014,16 +2025,27 @@ var BlockLogin = function BlockLogin(_ref) {
2014
2025
  timestamp: new Date().toISOString()
2015
2026
  }
2016
2027
  });
2017
- CookieService.setAuthCookie({
2018
- token: tokenJWT,
2019
- expiresAt: Date.now() + 24 * 60 * 60 * 1000
2020
- });
2021
- localStorage.setItem(ACCESS_TOKEN, tokenJWT);
2022
- var domain = "/teacher";
2023
- if ((_authResult$data5 = authResult.data) !== null && _authResult$data5 !== void 0 && (_authResult$data5$rol = _authResult$data5.roles) !== null && _authResult$data5$rol !== void 0 && _authResult$data5$rol.includes("Admin") || ((_authResult$data6 = authResult.data) === null || _authResult$data6 === void 0 ? void 0 : _authResult$data6.role) === "Admin") {
2024
- domain = "/admin";
2028
+ if (role === "LandingPage") {
2029
+ CookieService.setAuthCookie({
2030
+ token: tokenJWT,
2031
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000
2032
+ });
2033
+ var getRedirectUrl = function getRedirectUrl(role) {
2034
+ switch (role) {
2035
+ case "Admin":
2036
+ return ADMIN_ORIGIN;
2037
+ case "Teacher":
2038
+ return TEACHER_ORIGIN;
2039
+ default:
2040
+ return role + "." + REQUEST_ORIGIN;
2041
+ }
2042
+ };
2043
+ var redirectUrl = getRedirectUrl(authResult.data.role);
2044
+ window.location.href = redirectUrl + "/dashboard";
2045
+ dispatch(setLoading(false));
2025
2046
  }
2026
- window.location.href = domain + "/dashboard";
2047
+ localStorage.setItem(ACCESS_TOKEN, tokenJWT);
2048
+ onNavigate("/dashboard");
2027
2049
  dispatch(setLoading(false));
2028
2050
  });
2029
2051
  }
@@ -2399,7 +2421,7 @@ var defaultInfo = {
2399
2421
  rememberMe: false
2400
2422
  };
2401
2423
  var minutes = 15;
2402
- var useLogin = function useLogin(_onNavigate, trackEvent) {
2424
+ var useLogin = function useLogin(onNavigate, trackEvent) {
2403
2425
  var _useState = useState(false),
2404
2426
  openLogin = _useState[0],
2405
2427
  setOpenLogin = _useState[1];
@@ -2466,7 +2488,6 @@ var useLogin = function useLogin(_onNavigate, trackEvent) {
2466
2488
  })).then(function (res) {
2467
2489
  var data = res.data;
2468
2490
  if (data.success) {
2469
- var _data$data$roles;
2470
2491
  localStorage.clear();
2471
2492
  var tokenJWT = data.data.token;
2472
2493
  localStorage.setItem(ACCESS_TOKEN, tokenJWT);
@@ -2478,15 +2499,21 @@ var useLogin = function useLogin(_onNavigate, trackEvent) {
2478
2499
  timestamp: new Date().toISOString()
2479
2500
  }
2480
2501
  });
2481
- CookieService.setAuthCookie({
2482
- token: tokenJWT,
2483
- expiresAt: Date.now() + 24 * 60 * 60 * 1000
2484
- });
2485
- var domain = "/teacher";
2486
- if ((_data$data$roles = data.data.roles) !== null && _data$data$roles !== void 0 && _data$data$roles.includes("Admin") || data.data.role === "Admin") {
2487
- domain = "/admin";
2502
+ var isRootDomain = window.location.hostname === REQUEST_ORIGIN || window.location.hostname === "www." + REQUEST_ORIGIN;
2503
+ if (isRootDomain) {
2504
+ var _data$data$roles;
2505
+ CookieService.setAuthCookie({
2506
+ token: tokenJWT,
2507
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000
2508
+ });
2509
+ var domain = TEACHER_ORIGIN;
2510
+ if ((_data$data$roles = data.data.roles) !== null && _data$data$roles !== void 0 && _data$data$roles.includes("Admin")) {
2511
+ domain = ADMIN_ORIGIN;
2512
+ }
2513
+ window.location.href = domain + "/dashboard";
2514
+ } else {
2515
+ onNavigate("/dashboard");
2488
2516
  }
2489
- window.location.href = domain + "/dashboard";
2490
2517
  } else {
2491
2518
  toast.error("The code is not correct. Please check again.");
2492
2519
  }
@@ -3598,7 +3625,57 @@ var timeSpanToUtc = (function (time, timezone, format) {
3598
3625
  }
3599
3626
  });
3600
3627
 
3628
+ var sanitizeSrc = function sanitizeSrc(url) {
3629
+ if (!url || typeof url !== 'string') {
3630
+ return '';
3631
+ }
3632
+ url = url.trim().replace(/[\s\n\r\t]+/g, '');
3633
+ if (url.length > 2048) {
3634
+ return '';
3635
+ }
3636
+ var dangerousProtocols = ['javascript:', 'data:text/html', 'vbscript:', 'file:', 'about:', 'blob:'];
3637
+ var lowerUrl = url.toLowerCase();
3638
+ for (var _i = 0, _dangerousProtocols = dangerousProtocols; _i < _dangerousProtocols.length; _i++) {
3639
+ var protocol = _dangerousProtocols[_i];
3640
+ if (lowerUrl.startsWith(protocol)) {
3641
+ return '';
3642
+ }
3643
+ }
3644
+ var decoded = decodeURIComponent(url);
3645
+ var decodedLower = decoded.toLowerCase();
3646
+ for (var _i2 = 0, _dangerousProtocols2 = dangerousProtocols; _i2 < _dangerousProtocols2.length; _i2++) {
3647
+ var _protocol = _dangerousProtocols2[_i2];
3648
+ if (decodedLower.includes(_protocol)) {
3649
+ return '';
3650
+ }
3651
+ }
3652
+ try {
3653
+ if (url.startsWith('data:')) {
3654
+ if (/^data:image\/(png|jpeg|jpg|gif|webp|bmp|ico);base64,[A-Za-z0-9+/]+=*$/.test(url)) {
3655
+ return url;
3656
+ }
3657
+ return '';
3658
+ }
3659
+ var parsed = new URL(url, window.location.origin);
3660
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
3661
+ return '';
3662
+ }
3663
+ if (parsed.username || parsed.password) {
3664
+ return '';
3665
+ }
3666
+ return parsed.href;
3667
+ } catch (error) {
3668
+ return '';
3669
+ }
3670
+ };
3671
+
3672
+ var sanitizeHTMLText = function sanitizeHTMLText(text) {
3673
+ var _DOMPurify$sanitize;
3674
+ if (!text) return "";
3675
+ return (_DOMPurify$sanitize = DOMPurify.sanitize(text)) != null ? _DOMPurify$sanitize : "";
3676
+ };
3677
+
3601
3678
  var historyCore = createBrowserHistory();
3602
3679
 
3603
- export { ACCESS_TOKEN, AmplitudeEvent, BASE_URL, CommonDialog, ConfirmDialog, CoreButton, CoreInput$1 as CoreCheckbox, CoreError, CoreInput, CoreInputCompact, CoreModal, CoreRadio, CoreRange, CoreSearch, CoreSelect, CoreSelectCompact, CoreTextArea, CoreTitleInput, CoreTooltip, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_TIME_MIN_VALUE, LayoutContext, Loading, Login, MarkdownRenderer as MarkdownLatexRender, NotFound, OPENSALT_BASE_URL, ORGANIZATION_TEAM, ORGANIZATION_TENANT, RichContentRenderer, Role, TIMEZONE_ID, api, apiUpload, firstCheckToken, getAccessToken, getErrorMessage, getImageUrl, getTimeZoneId, historyCore, initSentry, initializeAmplitude, setAddTenant, setAlert, setIsFirstCalendar, setIsRefetchSidebar, setLoading, setLoadingPage, setMenuCollapse, setTeam, setTenant, setUser, store, timeSpanToLocalMoment, timeSpanToUtc, useAmplitude, useGoogleSignOut, utcToLocalTime };
3680
+ export { ACCESS_TOKEN, AmplitudeEvent, BASE_URL, CommonDialog, ConfirmDialog, CoreButton, CoreInput$1 as CoreCheckbox, CoreError, CoreInput, CoreInputCompact, CoreModal, CoreRadio, CoreRange, CoreSearch, CoreSelect, CoreSelectCompact, CoreTextArea, CoreTitleInput, CoreTooltip, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_TIME_MIN_VALUE, LayoutContext, Loading, Login, MarkdownRenderer as MarkdownLatexRender, NotFound, OPENSALT_BASE_URL, ORGANIZATION_TEAM, ORGANIZATION_TENANT, RichContentRenderer, Role, TIMEZONE_ID, UID_TENANT, api, apiUpload, firstCheckToken, getAccessToken, getErrorMessage, getImageUrl, getTimeZoneId, historyCore, initSentry, initializeAmplitude, sanitizeHTMLText, sanitizeSrc, setAddTenant, setAlert, setIsFirstCalendar, setIsRefetchSidebar, setLoading, setLoadingPage, setMenuCollapse, setTeam, setTenant, setUser, store, timeSpanToLocalMoment, timeSpanToUtc, useAmplitude, useGoogleSignOut, utcToLocalTime };
3604
3681
  //# sourceMappingURL=index.modern.js.map