mario-core 2.9.245-release → 2.9.246-multi

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.js CHANGED
@@ -10,14 +10,14 @@ var reactRouterDom = require('react-router-dom');
10
10
  var reactRedux = require('react-redux');
11
11
  var formik = require('formik');
12
12
  var yup = require('yup');
13
- var msalBrowser = require('@azure/msal-browser');
13
+ var reactGoogleRecaptchaV3 = require('react-google-recaptcha-v3');
14
+ var GoogleLogin = _interopDefault(require('react-google-login'));
15
+ var Select = _interopDefault(require('react-select'));
14
16
  var toolkit = require('@reduxjs/toolkit');
15
17
  var axios = _interopDefault(require('axios'));
16
18
  var amplitude = _interopDefault(require('amplitude-js'));
17
19
  var moment = _interopDefault(require('moment'));
18
- var reactGoogleRecaptchaV3 = require('react-google-recaptcha-v3');
19
- var GoogleLogin = _interopDefault(require('react-google-login'));
20
- var Select = _interopDefault(require('react-select'));
20
+ var msalBrowser = require('@azure/msal-browser');
21
21
  var gi = require('react-icons/gi');
22
22
  var react = require('@coreui/react');
23
23
  var cg = require('react-icons/cg');
@@ -43,8 +43,8 @@ require('symbol-observable');
43
43
  var dashboard = "Dashboard";
44
44
  var user = "User";
45
45
  var question_bank = "Question bank";
46
- var email_template = "Email template";
47
- var custom_alert = "Custom alert";
46
+ var email_template = "Email Template";
47
+ var custom_alert = "Custom Alert";
48
48
  var set_up = "Set up";
49
49
  var media_gallery = "Media Gallery";
50
50
  var district_school_list = "District school list";
@@ -3980,8 +3980,8 @@ var lang_us = {
3980
3980
  var dashboard$1 = "Dashboard";
3981
3981
  var user$1 = "User";
3982
3982
  var question_bank$1 = "Question bank";
3983
- var email_template$1 = "Email template";
3984
- var custom_alert$1 = "Custom alert";
3983
+ var email_template$1 = "Email Template";
3984
+ var custom_alert$1 = "Custom Alert";
3985
3985
  var set_up$1 = "Set up";
3986
3986
  var media_gallery$1 = "Media Gallery";
3987
3987
  var district_school_list$1 = "District school list";
@@ -37167,14 +37167,23 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
37167
37167
  return it.next.bind(it);
37168
37168
  }
37169
37169
 
37170
- var getAccessToken = (function () {
37171
- try {
37172
- var isSessionUserBrowser = sessionStorage.getItem(IS_USER_SESSION_BROWSER);
37173
- return !isSessionUserBrowser ? localStorage.getItem(ACCESS_TOKEN) : sessionStorage.getItem(ACCESS_TOKEN);
37174
- } catch (err) {
37175
- return null;
37176
- }
37177
- });
37170
+ var CustomSelector = function CustomSelector(_ref) {
37171
+ var defaultValue = _ref.defaultValue,
37172
+ options = _ref.options,
37173
+ isDisabled = _ref.isDisabled,
37174
+ scrollBottom = _ref.scrollBottom,
37175
+ rest = _objectWithoutPropertiesLoose(_ref, ["defaultValue", "options", "isDisabled", "scrollBottom"]);
37176
+
37177
+ var initValue = defaultValue !== null && typeof defaultValue !== "undefined" ? options.find(function (option) {
37178
+ return option.value === defaultValue;
37179
+ }) || null : null;
37180
+ return React__default.createElement(Select, Object.assign({
37181
+ isDisabled: isDisabled,
37182
+ options: options,
37183
+ value: initValue,
37184
+ menuPlacement: scrollBottom ? "top" : "auto"
37185
+ }, rest));
37186
+ };
37178
37187
 
37179
37188
  var setLoading = toolkit.createAction("common/setLoading");
37180
37189
  var setModal = toolkit.createAction("common/setModal");
@@ -37211,6 +37220,15 @@ var encodeParams = (function (params) {
37211
37220
  }).join('&');
37212
37221
  });
37213
37222
 
37223
+ var getAccessToken = (function () {
37224
+ try {
37225
+ var isSessionUserBrowser = sessionStorage.getItem(IS_USER_SESSION_BROWSER);
37226
+ return !isSessionUserBrowser ? localStorage.getItem(ACCESS_TOKEN) : sessionStorage.getItem(ACCESS_TOKEN);
37227
+ } catch (err) {
37228
+ return null;
37229
+ }
37230
+ });
37231
+
37214
37232
  var api = axios.create({
37215
37233
  baseURL: BASE_URL,
37216
37234
  timeout: 0,
@@ -37344,14 +37362,131 @@ var createPassword = function createPassword(data) {
37344
37362
  return api.post(ACCOUNT_URL + "/createPassword", data);
37345
37363
  };
37346
37364
 
37347
- var SCHOOL_URL = BASE_URL + "/api/school";
37348
- var getSchoolSettings = function getSchoolSettings() {
37349
- return api.get(SCHOOL_URL + "/settings");
37350
- };
37351
- var getInfo$1 = function getInfo() {
37352
- return api.get(SCHOOL_URL + "/info");
37365
+ var BlockSelectTeacher = function BlockSelectTeacher(_ref) {
37366
+ var defaultValue = _ref.defaultValue,
37367
+ isDisabled = _ref.isDisabled,
37368
+ openModal = _ref.openModal,
37369
+ onSubmit = _ref.onSubmit,
37370
+ token = _ref.token,
37371
+ email = _ref.email;
37372
+
37373
+ var _useState = React.useState(false),
37374
+ modal = _useState[0],
37375
+ setModal = _useState[1];
37376
+
37377
+ React.useEffect(function () {
37378
+ setModal(openModal);
37379
+ }, [openModal]);
37380
+ var dispatch = reactRedux.useDispatch();
37381
+
37382
+ var _useState2 = React.useState([]),
37383
+ teachers = _useState2[0],
37384
+ setTeachers = _useState2[1];
37385
+
37386
+ var _useState3 = React.useState(""),
37387
+ searchString = _useState3[0],
37388
+ setSearchString = _useState3[1];
37389
+
37390
+ var _useState4 = React.useState(""),
37391
+ teacherEmail = _useState4[0],
37392
+ setTeacherEmail = _useState4[1];
37393
+
37394
+ var _useState5 = React.useState(false),
37395
+ isLoading = _useState5[0],
37396
+ setLoading = _useState5[1];
37397
+
37398
+ var timeout = React.useRef();
37399
+
37400
+ var toggle = function toggle() {
37401
+ setModal(!modal);
37402
+ dispatch(setIsLoginGoogle(!modal));
37403
+ };
37404
+
37405
+ var loadData = React.useCallback(function () {
37406
+ try {
37407
+ var _temp3 = function _temp3() {
37408
+ setLoading(false);
37409
+ };
37410
+
37411
+ setLoading(true);
37412
+
37413
+ var _temp4 = _catch(function () {
37414
+ var data = {
37415
+ token: token,
37416
+ email: email
37417
+ };
37418
+ return Promise.resolve(getAllLoginTeacher(data)).then(function (res) {
37419
+ setTeachers(res.data);
37420
+ });
37421
+ }, function (err) {
37422
+ var _err$response, _err$response$data;
37423
+
37424
+ dispatch(setAlert({
37425
+ type: "danger",
37426
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
37427
+ }));
37428
+ });
37429
+
37430
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
37431
+ } catch (e) {
37432
+ return Promise.reject(e);
37433
+ }
37434
+ }, [searchString]);
37435
+ React.useEffect(function () {
37436
+ timeout && timeout.current && clearTimeout(timeout.current);
37437
+
37438
+ if (!searchString || searchString.trim().length < 2) {
37439
+ setTeachers([]);
37440
+ } else {
37441
+ timeout.current = setTimeout(loadData, 300);
37442
+ }
37443
+ }, [searchString]);
37444
+ var options = teachers.map(function (teacher) {
37445
+ return {
37446
+ label: teacher.fullName + " (" + teacher.email + ")",
37447
+ value: teacher.teacherId
37448
+ };
37449
+ });
37450
+
37451
+ var onChangeTeacher = function onChangeTeacher(e) {
37452
+ setTeacherEmail(e.value);
37453
+ };
37454
+
37455
+ var customSelector = {
37456
+ control: function control(styles) {
37457
+ return _extends({}, styles, {
37458
+ borderRadius: "10px"
37459
+ });
37460
+ }
37461
+ };
37462
+ return React__default.createElement(reactstrap.Modal, {
37463
+ isOpen: modal
37464
+ }, React__default.createElement(reactstrap.ModalHeader, null, " Sign in "), React__default.createElement(reactstrap.ModalBody, null, React__default.createElement("h6", null, "You are logging in as a student, please select teacher"), React__default.createElement(CustomSelector, {
37465
+ styles: customSelector,
37466
+ options: options,
37467
+ inputValue: searchString,
37468
+ onInputChange: function onInputChange(inputValue) {
37469
+ return setSearchString(inputValue);
37470
+ },
37471
+ isLoading: isLoading,
37472
+ placeholder: "Type 2 characters to search",
37473
+ value: defaultValue,
37474
+ onChange: onChangeTeacher,
37475
+ isDisabled: isDisabled
37476
+ })), React__default.createElement(reactstrap.ModalFooter, null, React__default.createElement(reactstrap.Button, {
37477
+ color: "primary",
37478
+ onClick: function onClick() {
37479
+ onSubmit(teacherEmail);
37480
+ toggle();
37481
+ }
37482
+ }, "Finish"), ' ', React__default.createElement(reactstrap.Button, {
37483
+ color: "secondary",
37484
+ onClick: toggle
37485
+ }, "Cancel")));
37353
37486
  };
37354
37487
 
37488
+ var BlockSelectTeacher$1 = React.forwardRef(BlockSelectTeacher);
37489
+
37355
37490
  var TypeLogin;
37356
37491
 
37357
37492
  (function (TypeLogin) {
@@ -37368,65 +37503,217 @@ var LoginType;
37368
37503
  LoginType[LoginType["Impersonate"] = 2] = "Impersonate";
37369
37504
  })(LoginType || (LoginType = {}));
37370
37505
 
37371
- var msalConfig = {
37372
- auth: {
37373
- clientId: "90c6897c-f17b-475e-a7a8-9a19651e0060",
37374
- authority: "https://login.microsoftonline.com/common",
37375
- redirectUri: window.location.origin + "/login"
37376
- },
37377
- cache: {
37378
- cacheLocation: "sessionStorage",
37379
- storeAuthStateInCookie: false
37380
- },
37381
- system: {
37382
- loggerOptions: {
37383
- loggerCallback: function loggerCallback(level, message, containsPii) {
37384
- if (containsPii) {
37385
- return;
37386
- }
37506
+ var schema = yup.object({
37507
+ email: yup.string().email("Email is invalid").required("Email is required"),
37508
+ password: yup.string().required("Password is required"),
37509
+ rememberMe: yup.boolean()
37510
+ });
37387
37511
 
37388
- switch (level) {
37389
- case msalBrowser.LogLevel.Error:
37390
- console.error(message);
37391
- return;
37512
+ var BlockLogin = function BlockLogin(_ref) {
37513
+ var defaultInfo = _ref.defaultInfo,
37514
+ userLogin = _ref.userLogin,
37515
+ school = _ref.school,
37516
+ isShowPassword = _ref.isShowPassword,
37517
+ setIsShowPassword = _ref.setIsShowPassword,
37518
+ fnIsCheckLogin = _ref.fnIsCheckLogin,
37519
+ isLoginGoogle = _ref.isLoginGoogle,
37520
+ submitLogin = _ref.submitLogin,
37521
+ infoUser = _ref.infoUser,
37522
+ googleClientId = _ref.googleClientId;
37392
37523
 
37393
- case msalBrowser.LogLevel.Info:
37394
- console.info(message);
37395
- return;
37524
+ var togglePasswordVisible = function togglePasswordVisible() {
37525
+ return setIsShowPassword(!isShowPassword);
37526
+ };
37396
37527
 
37397
- case msalBrowser.LogLevel.Verbose:
37398
- console.debug(message);
37399
- return;
37528
+ var dispatch = reactRedux.useDispatch();
37400
37529
 
37401
- case msalBrowser.LogLevel.Warning:
37402
- console.warn(message);
37403
- return;
37530
+ var _useGoogleReCaptcha = reactGoogleRecaptchaV3.useGoogleReCaptcha(),
37531
+ executeRecaptcha = _useGoogleReCaptcha.executeRecaptcha;
37404
37532
 
37405
- default:
37406
- return;
37407
- }
37533
+ var clickHandler = React.useCallback(function () {
37534
+ try {
37535
+ if (!executeRecaptcha) {
37536
+ console.log("execute recaptcha undefined");
37537
+ return Promise.resolve();
37408
37538
  }
37539
+
37540
+ return Promise.resolve(executeRecaptcha("login"));
37541
+ } catch (e) {
37542
+ return Promise.reject(e);
37409
37543
  }
37410
- }
37544
+ }, [executeRecaptcha]);
37545
+ var handleVerify = React.useCallback(function () {}, []);
37546
+
37547
+ var onSuccessGoogle = function onSuccessGoogle(res) {
37548
+ if (!!(res !== null && res !== void 0 && res.accessToken)) {
37549
+ var _res$profileObj = res.profileObj,
37550
+ email = _res$profileObj.email,
37551
+ familyName = _res$profileObj.familyName,
37552
+ givenName = _res$profileObj.givenName,
37553
+ imageUrl = _res$profileObj.imageUrl,
37554
+ name = _res$profileObj.name;
37555
+ var accessToken = res.accessToken;
37556
+ var googleId = res.googleId;
37557
+
37558
+ if (email.includes("@gmail")) {
37559
+ alert("The email address you used does not match the login information in the database. Please check that you are using your school assigned email address to log into MARIO for Me. If you have further trouble please notify your school site administrator");
37560
+ return;
37561
+ }
37562
+
37563
+ var infoLogin = {
37564
+ firstName: givenName,
37565
+ lastName: familyName,
37566
+ imageUrl: imageUrl,
37567
+ fullName: name,
37568
+ email: email,
37569
+ accessToken: accessToken,
37570
+ googleId: googleId
37571
+ };
37572
+ dispatch(setInforUserGoogle(infoLogin));
37573
+ fnIsCheckLogin(TypeLogin.Google, infoLogin, accessToken, clickHandler);
37574
+ }
37575
+ };
37576
+
37577
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(formik.Formik, {
37578
+ initialValues: defaultInfo,
37579
+ validationSchema: schema,
37580
+ onSubmit: function (values) {
37581
+ try {
37582
+ return Promise.resolve(_catch(function () {
37583
+ return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
37584
+ if (!clickHandlerRes) return;
37585
+ values.captcha = clickHandlerRes;
37586
+ values.loginType = LoginType.Default;
37587
+ userLogin(values);
37588
+ });
37589
+ }, function (err) {
37590
+ console.error(err);
37591
+ }));
37592
+ } catch (e) {
37593
+ return Promise.reject(e);
37594
+ }
37595
+ }
37596
+ }, function (formikProps) {
37597
+ var handleChange = formikProps.handleChange,
37598
+ handleBlur = formikProps.handleBlur,
37599
+ handleSubmit = formikProps.handleSubmit,
37600
+ values = formikProps.values,
37601
+ touched = formikProps.touched,
37602
+ errors = formikProps.errors,
37603
+ setFieldValue = formikProps.setFieldValue;
37604
+ var emailError = touched.email && errors.email;
37605
+ var passwordError = touched.password && errors.password;
37606
+ return React__default.createElement("div", {
37607
+ className: styles["box-login"] + " w-100"
37608
+ }, React__default.createElement(reactstrap.Form, {
37609
+ className: "" + styles["block-login"],
37610
+ onSubmit: handleSubmit
37611
+ }, React__default.createElement("div", {
37612
+ className: "" + styles["block-form"]
37613
+ }, React__default.createElement("div", {
37614
+ className: "d-flex align-items-center mb-4"
37615
+ }, React__default.createElement("img", {
37616
+ hidden: !(school !== null && school !== void 0 && school.schoolLogo),
37617
+ src: school === null || school === void 0 ? void 0 : school.schoolLogo,
37618
+ className: styles["school-icon"] + " mr-3"
37619
+ }), React__default.createElement("p", {
37620
+ className: styles["school-name"] + " mb-0"
37621
+ }, school.schoolName)), React__default.createElement("p", {
37622
+ className: "" + styles["title-login"]
37623
+ }, "Welcome Back!"), React__default.createElement("p", {
37624
+ className: styles["login-description"] + " mb-5"
37625
+ }, "Please enter your MARIO Education account details"), React__default.createElement(reactstrap.FormGroup, {
37626
+ className: "" + styles["form-user-name"]
37627
+ }, React__default.createElement(reactstrap.Input, {
37628
+ type: "text",
37629
+ name: "email",
37630
+ placeholder: "Email",
37631
+ value: values.email,
37632
+ onChange: handleChange,
37633
+ autocomplete: "email",
37634
+ onBlur: handleBlur("email"),
37635
+ required: true
37636
+ }), emailError && React__default.createElement(ErrorHandler, {
37637
+ text: errors.email
37638
+ })), React__default.createElement(reactstrap.FormGroup, null, React__default.createElement(PasswordInput, {
37639
+ isShowPassword: isShowPassword,
37640
+ togglePasswordVisible: togglePasswordVisible,
37641
+ onChange: function onChange(e) {
37642
+ return setFieldValue("password", e.target.value);
37643
+ }
37644
+ }), passwordError && React__default.createElement(ErrorHandler, {
37645
+ text: errors.password
37646
+ })), React__default.createElement(reactstrap.FormGroup, null, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptcha, {
37647
+ action: "login",
37648
+ onVerify: handleVerify
37649
+ })), React__default.createElement("div", {
37650
+ className: "d-flex justify-content-between"
37651
+ }, React__default.createElement("div", {
37652
+ className: "d-flex align-items-center"
37653
+ }, React__default.createElement("input", {
37654
+ type: "checkbox",
37655
+ checked: !values.isSessionUserBrowser,
37656
+ className: "" + styles["checkbox-keep-login"],
37657
+ onChange: function onChange() {
37658
+ return setFieldValue("isSessionUserBrowser", !values.isSessionUserBrowser);
37659
+ }
37660
+ }), React__default.createElement("p", {
37661
+ className: styles["label-keep-login"] + " mb-0 ml-2"
37662
+ }, "Keep me logged in")), React__default.createElement(reactRouterDom.Link, {
37663
+ to: "/forgot-password",
37664
+ className: "" + styles["link-to-login"]
37665
+ }, "Forgot password?")), React__default.createElement("button", {
37666
+ className: styles["btn-login"] + " mt-5",
37667
+ type: "submit"
37668
+ }, "LOG IN"), React__default.createElement("p", {
37669
+ className: styles["option-text"] + " my-3 text-center"
37670
+ }, "OR"), React__default.createElement(reactstrap.Row, {
37671
+ className: "mb-4"
37672
+ }, React__default.createElement(reactstrap.Col, {
37673
+ lg: 12,
37674
+ md: 12,
37675
+ xs: 12,
37676
+ className: "pr-md-3"
37677
+ }, !!googleClientId && React__default.createElement(GoogleLogin, {
37678
+ clientId: googleClientId,
37679
+ buttonText: "GOOGLE",
37680
+ onSuccess: onSuccessGoogle,
37681
+ cookiePolicy: "single_host_origin",
37682
+ className: styles["btn-login-google"] + " p-0 mb-4 mb-md-0"
37683
+ }))), React__default.createElement("div", {
37684
+ className: "" + styles["btn-login-sso"]
37685
+ }, React__default.createElement("div", {
37686
+ className: styles["btn-login-with-sso"],
37687
+ onClick: function onClick() {
37688
+ return window.open("https://launchpad.classlink.com/login");
37689
+ }
37690
+ }, React__default.createElement("img", {
37691
+ src: "images/class-link-icon.png"
37692
+ }), React__default.createElement("p", null, "SIGN IN WITH CLASSLINK"))))));
37693
+ }), isLoginGoogle && React__default.createElement(BlockSelectTeacher$1, {
37694
+ onSubmit: function onSubmit(e) {
37695
+ return submitLogin(e, clickHandler);
37696
+ },
37697
+ openModal: isLoginGoogle,
37698
+ token: infoUser.accessToken,
37699
+ email: infoUser.email
37700
+ }));
37411
37701
  };
37412
37702
 
37413
- var _sessionStorage$getIt;
37414
37703
  var defaultInfo = {
37415
37704
  email: "",
37416
- password: "",
37417
- captcha: "",
37418
- rememberMe: false,
37419
- isSessionUserBrowser: (_sessionStorage$getIt = !!sessionStorage.getItem(IS_USER_SESSION_BROWSER)) != null ? _sessionStorage$getIt : false
37705
+ captcha: ""
37420
37706
  };
37421
- var HOMEPAGE_TEACHER = "/home";
37422
- var HOMEPAGE_STUDENT = "/home";
37423
- var HOMEPAGE_ADMIN = "/admin/home";
37424
- var HOMEPAGE_PARENT = "/parent";
37425
- var HOMEPAGE_DISTRICT = "/admin/schools";
37426
- var HOMEPAGE_EDU_TEACHER = "/list-student";
37707
+ var DASHBOARD = "/";
37708
+ var LOGIN = "/login";
37427
37709
  var TITLE = "Log in";
37428
37710
 
37429
- var useLogin = function useLogin() {
37711
+ var useForgotPassword = function useForgotPassword() {
37712
+ var _query$get;
37713
+
37714
+ var query = new URLSearchParams(reactRouterDom.useLocation().search);
37715
+ var token = query.get("token");
37716
+ var key = (_query$get = query.get("key")) != null ? _query$get : "";
37430
37717
  var dispatch = reactRedux.useDispatch();
37431
37718
  var history = reactRouterDom.useHistory();
37432
37719
 
@@ -37434,67 +37721,41 @@ var useLogin = function useLogin() {
37434
37721
  openLogin = _useState[0],
37435
37722
  setOpenLogin = _useState[1];
37436
37723
 
37437
- var isLoginGoogle = reactRedux.useSelector(function (state) {
37438
- return state.common.isLoginGoogle;
37439
- });
37440
-
37441
- var _useState2 = React.useState(""),
37442
- googleClientId = _useState2[0],
37443
- setGoogleClientId = _useState2[1];
37444
-
37445
- var _useState3 = React.useState(""),
37446
- googleRecaptchaId = _useState3[0],
37447
- setGoogleRecaptchaId = _useState3[1];
37724
+ var toggle = React.useCallback(function () {
37725
+ setOpenLogin(!openLogin);
37726
+ }, [openLogin]);
37448
37727
 
37449
- var infoUser = reactRedux.useSelector(function (state) {
37450
- return state.common.inforUserGoogle;
37451
- });
37452
- var params = new URLSearchParams(location.search);
37453
- var loginClassLink = params.get("type") === "classlink";
37454
- var tokenClassLink = params.get("token");
37728
+ var _useState2 = React.useState(false),
37729
+ isShowNewPassword = _useState2[0],
37730
+ setIsShowNewPassword = _useState2[1];
37455
37731
 
37456
- var _useState4 = React.useState(false),
37457
- openModelAssign = _useState4[0];
37732
+ var _useState3 = React.useState(false),
37733
+ isShowReTypePassword = _useState3[0],
37734
+ setIsShowReTypePassword = _useState3[1];
37458
37735
 
37459
- var _useState5 = React.useState({
37460
- schoolName: "",
37461
- schoolLogo: ""
37736
+ var _useState4 = React.useState({
37737
+ token: "",
37738
+ password: "",
37739
+ reEnterPassword: "",
37740
+ email: "",
37741
+ userId: ""
37462
37742
  }),
37463
- school = _useState5[0],
37464
- setSchool = _useState5[1];
37465
-
37466
- var _useState6 = React.useState(),
37467
- msalInstance = _useState6[0],
37468
- setMsalInstance = _useState6[1];
37743
+ initialValues = _useState4[0],
37744
+ setInitialValues = _useState4[1];
37469
37745
 
37470
- var toggle = React.useCallback(function () {
37471
- setOpenLogin(!openLogin);
37472
- }, [openLogin]);
37746
+ var _useState5 = React.useState(true),
37747
+ validLink = _useState5[0],
37748
+ setValidLink = _useState5[1];
37473
37749
 
37474
- var _useState7 = React.useState(false),
37475
- isShowPassword = _useState7[0],
37476
- setIsShowPassword = _useState7[1];
37750
+ var _useGoogleReCaptcha = reactGoogleRecaptchaV3.useGoogleReCaptcha(),
37751
+ executeRecaptcha = _useGoogleReCaptcha.executeRecaptcha;
37477
37752
 
37478
37753
  React.useEffect(function () {
37479
37754
  document.title = TITLE;
37480
37755
  var token = getAccessToken();
37481
- if (!!token) history.push("/");
37482
- getInfoGoogle();
37483
- }, []);
37484
-
37485
- var handleCancelModelAssign = function handleCancelModelAssign() {
37486
- localStorage.removeItem(ACCESS_TOKEN);
37487
- sessionStorage.removeItem(ACCESS_TOKEN);
37488
- localStorage.removeItem("USER_EMAIL");
37489
- };
37490
-
37491
- React.useEffect(function () {
37492
- if (loginClassLink && tokenClassLink != "") {
37493
- loginAccountClassLink();
37494
- }
37756
+ if (!!token) history.push(DASHBOARD);
37495
37757
  }, []);
37496
-
37497
- var loginAccountClassLink = function loginAccountClassLink() {
37758
+ var forgotPasswordRequest = React.useCallback(function (data) {
37498
37759
  try {
37499
37760
  var _temp3 = function _temp3() {
37500
37761
  dispatch(setLoading(false));
@@ -37503,38 +37764,30 @@ var useLogin = function useLogin() {
37503
37764
  dispatch(setLoading(true));
37504
37765
 
37505
37766
  var _temp4 = _catch(function () {
37506
- var data = {
37507
- tokenClassLink: tokenClassLink
37508
- };
37509
- return Promise.resolve(apiInforUserClassLink(data)).then(function (res) {
37510
- var _res$data = res.data,
37511
- email = _res$data.email,
37512
- token = _res$data.token;
37513
- var dataUser = {
37514
- email: email,
37515
- rememberMe: false,
37516
- password: "default",
37517
- accessToken: token
37518
- };
37519
- return Promise.resolve(userLogin(dataUser)).then(function () {});
37767
+ return Promise.resolve(forgotPassword(data)).then(function () {
37768
+ history.push(LOGIN);
37769
+ dispatch(setAlert({
37770
+ type: "success",
37771
+ message: "A mail to reset password was sent"
37772
+ }));
37520
37773
  });
37521
37774
  }, function (err) {
37522
37775
  var _err$response, _err$response$data;
37523
37776
 
37524
37777
  dispatch(setAlert({
37525
37778
  type: "danger",
37526
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
37779
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message || "Error occured"
37527
37780
  }));
37781
+ localStorage.removeItem(ACCESS_TOKEN);
37782
+ sessionStorage.removeItem(ACCESS_TOKEN);
37528
37783
  });
37529
37784
 
37530
37785
  return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
37531
37786
  } catch (e) {
37532
37787
  return Promise.reject(e);
37533
37788
  }
37534
- };
37535
-
37536
- var isDistrict = window.location.host.includes("-district");
37537
- var getSchoolInfo = React.useCallback(function () {
37789
+ }, []);
37790
+ var checkResetTokenRequest = React.useCallback(function (token, key) {
37538
37791
  try {
37539
37792
  var _temp7 = function _temp7() {
37540
37793
  dispatch(setLoading(false));
@@ -37543,12 +37796,487 @@ var useLogin = function useLogin() {
37543
37796
  dispatch(setLoading(true));
37544
37797
 
37545
37798
  var _temp8 = _catch(function () {
37546
- return Promise.resolve(getInfo$1()).then(function (res) {
37547
- if (!!res.data) {
37548
- setSchool(res.data);
37799
+ return Promise.resolve(checkResetToken(token, key)).then(function (res) {
37800
+ if (res.data) {
37801
+ setInitialValues(_extends({}, initialValues, {
37802
+ token: token,
37803
+ email: res.data
37804
+ }));
37805
+ } else {
37806
+ setValidLink(false);
37549
37807
  }
37550
37808
  });
37551
- }, function (err) {
37809
+ }, function () {
37810
+ setValidLink(false);
37811
+ });
37812
+
37813
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
37814
+ } catch (e) {
37815
+ return Promise.reject(e);
37816
+ }
37817
+ }, []);
37818
+ var resetPasswordRequest = React.useCallback(function (data) {
37819
+ try {
37820
+ var _temp11 = function _temp11() {
37821
+ dispatch(setLoading(false));
37822
+ };
37823
+
37824
+ dispatch(setLoading(true));
37825
+
37826
+ var _temp12 = _catch(function () {
37827
+ return Promise.resolve(resetPassword(_extends({}, data, {
37828
+ key: key
37829
+ }))).then(function () {
37830
+ history.push(LOGIN);
37831
+ dispatch(setAlert({
37832
+ type: "success",
37833
+ message: "Reset password sucessfully"
37834
+ }));
37835
+ });
37836
+ }, function (err) {
37837
+ var _err$response2, _err$response2$data;
37838
+
37839
+ dispatch(setAlert({
37840
+ type: "danger",
37841
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message || "Error occured"
37842
+ }));
37843
+ localStorage.removeItem(ACCESS_TOKEN);
37844
+ sessionStorage.removeItem(ACCESS_TOKEN);
37845
+ });
37846
+
37847
+ return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
37848
+ } catch (e) {
37849
+ return Promise.reject(e);
37850
+ }
37851
+ }, []);
37852
+ var clickHandler = React.useCallback(function () {
37853
+ try {
37854
+ if (!executeRecaptcha) {
37855
+ console.log("execute recaptcha undefined");
37856
+ return Promise.resolve();
37857
+ }
37858
+
37859
+ return Promise.resolve(executeRecaptcha("forgetPass"));
37860
+ } catch (e) {
37861
+ return Promise.reject(e);
37862
+ }
37863
+ }, [executeRecaptcha]);
37864
+ var handleVerify = React.useCallback(function () {}, []);
37865
+ React.useEffect(function () {
37866
+ checkResetTokenRequest(token, key);
37867
+ }, []);
37868
+ return {
37869
+ defaultInfo: defaultInfo,
37870
+ forgotPasswordRequest: forgotPasswordRequest,
37871
+ checkResetTokenRequest: checkResetTokenRequest,
37872
+ validLink: validLink,
37873
+ resetPasswordRequest: resetPasswordRequest,
37874
+ openLogin: openLogin,
37875
+ toggle: toggle,
37876
+ isShowNewPassword: isShowNewPassword,
37877
+ setIsShowNewPassword: setIsShowNewPassword,
37878
+ isShowReTypePassword: isShowReTypePassword,
37879
+ setIsShowReTypePassword: setIsShowReTypePassword,
37880
+ clickHandler: clickHandler,
37881
+ handleVerify: handleVerify,
37882
+ initialValues: initialValues
37883
+ };
37884
+ };
37885
+
37886
+ var initialValues = {
37887
+ email: "",
37888
+ captcha: ""
37889
+ };
37890
+ var forgotPasswordSchema = yup.object({
37891
+ email: yup.string().email("Email is invalid").required("Email is required")
37892
+ });
37893
+
37894
+ var BlockForgetPassword = function BlockForgetPassword(_ref) {
37895
+ var school = _ref.school;
37896
+
37897
+ var _useForgotPassword = useForgotPassword(),
37898
+ forgotPasswordRequest = _useForgotPassword.forgotPasswordRequest,
37899
+ clickHandler = _useForgotPassword.clickHandler,
37900
+ handleVerify = _useForgotPassword.handleVerify;
37901
+
37902
+ return React__default.createElement(formik.Formik, {
37903
+ initialValues: initialValues,
37904
+ enableReinitialize: true,
37905
+ validationSchema: forgotPasswordSchema,
37906
+ onSubmit: function (values) {
37907
+ try {
37908
+ return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
37909
+ if (!clickHandlerRes) return;
37910
+ values.captcha = clickHandlerRes;
37911
+ forgotPasswordRequest(values);
37912
+ });
37913
+ } catch (e) {
37914
+ return Promise.reject(e);
37915
+ }
37916
+ }
37917
+ }, function (formikProps) {
37918
+ var handleChange = formikProps.handleChange,
37919
+ handleSubmit = formikProps.handleSubmit,
37920
+ values = formikProps.values,
37921
+ touched = formikProps.touched,
37922
+ errors = formikProps.errors;
37923
+ return React__default.createElement("div", {
37924
+ className: "" + styles["box-login"]
37925
+ }, React__default.createElement("div", {
37926
+ className: "" + styles["block-login"]
37927
+ }, React__default.createElement("div", {
37928
+ className: "" + styles["block-form"]
37929
+ }, React__default.createElement("div", {
37930
+ className: "d-flex align-items-center mb-4"
37931
+ }, React__default.createElement("img", {
37932
+ src: school.schoolLogo,
37933
+ className: styles["school-icon"] + " mr-3"
37934
+ }), React__default.createElement("p", {
37935
+ className: styles["school-name"] + " mb-0"
37936
+ }, school.schoolName)), React__default.createElement("p", {
37937
+ className: styles["title-login"] + " "
37938
+ }, "Forgot password"), React__default.createElement("p", {
37939
+ className: styles["recover-account"] + " mb-5"
37940
+ }, "Enter email to recover your account"), React__default.createElement("div", {
37941
+ className: "w-100"
37942
+ }, React__default.createElement(reactstrap.Input, {
37943
+ type: "text",
37944
+ name: "email",
37945
+ id: "email",
37946
+ placeholder: "Input email",
37947
+ onChange: handleChange,
37948
+ value: values.email
37949
+ }), touched.email && errors.email && React__default.createElement(ErrorHandler, {
37950
+ text: errors.email
37951
+ })), React__default.createElement(reactRouterDom.Link, {
37952
+ to: "/login",
37953
+ className: styles["link-to-login"] + " mt-2"
37954
+ }, "Return to login"), React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptcha, {
37955
+ action: "forgetPass",
37956
+ onVerify: handleVerify
37957
+ }), React__default.createElement(reactstrap.Col, {
37958
+ className: "p-0"
37959
+ }, React__default.createElement("button", {
37960
+ className: styles["btn-login"] + " mt-5",
37961
+ onClick: function onClick() {
37962
+ return handleSubmit();
37963
+ }
37964
+ }, "Continue")))));
37965
+ });
37966
+ };
37967
+
37968
+ var getStaticFileUrl = function getStaticFileUrl(url) {
37969
+ var STAGE_DOMAIN = "https://stage2.marioforme.com";
37970
+ var isStage = STAGE_DOMAIN === location.origin;
37971
+ if (!url) return "";
37972
+ if (isLocalhost && !isStage || url.startsWith("http")) return url;
37973
+ if (url.startsWith("/")) return "" + (isStage ? STAGE_DOMAIN : MARIO_SUCCESS_BASE_URL) + url;else return (isStage ? STAGE_DOMAIN : MARIO_SUCCESS_BASE_URL) + "/" + url;
37974
+ };
37975
+
37976
+ var resetPasswordSchema = yup.object({
37977
+ password: yup.string().required("New password is required"),
37978
+ reEnterPassword: yup.string().required("Please re-enter new password").test("matching", "Passwords do not match", function () {
37979
+ return this.parent.password === this.parent.reEnterPassword;
37980
+ })
37981
+ });
37982
+
37983
+ var BlockResetPassword = function BlockResetPassword() {
37984
+ var _useForgotPassword = useForgotPassword(),
37985
+ validLink = _useForgotPassword.validLink,
37986
+ resetPasswordRequest = _useForgotPassword.resetPasswordRequest,
37987
+ isShowNewPassword = _useForgotPassword.isShowNewPassword,
37988
+ setIsShowNewPassword = _useForgotPassword.setIsShowNewPassword,
37989
+ isShowReTypePassword = _useForgotPassword.isShowReTypePassword,
37990
+ setIsShowReTypePassword = _useForgotPassword.setIsShowReTypePassword,
37991
+ initialValues = _useForgotPassword.initialValues;
37992
+
37993
+ return React__default.createElement(formik.Formik, {
37994
+ initialValues: initialValues,
37995
+ enableReinitialize: true,
37996
+ validationSchema: resetPasswordSchema,
37997
+ onSubmit: function onSubmit(values) {
37998
+ resetPasswordRequest(values);
37999
+ }
38000
+ }, function (formikProps) {
38001
+ var setFieldValue = formikProps.setFieldValue,
38002
+ handleSubmit = formikProps.handleSubmit,
38003
+ touched = formikProps.touched,
38004
+ errors = formikProps.errors,
38005
+ values = formikProps.values;
38006
+ return React__default.createElement(reactstrap.Row, {
38007
+ className: "" + styles["box-login"]
38008
+ }, React__default.createElement(reactstrap.Col, {
38009
+ className: "p-0"
38010
+ }, React__default.createElement("div", {
38011
+ className: "" + styles["block-login"]
38012
+ }, React__default.createElement("div", {
38013
+ className: "" + styles["block-form"]
38014
+ }, React__default.createElement("img", {
38015
+ src: "" + getStaticFileUrl("/images/horizontal-logo-blue.svg"),
38016
+ className: "" + styles["img-login-rectangle"]
38017
+ }), React__default.createElement("p", {
38018
+ className: "" + styles["title-login"]
38019
+ }, "Reset Password"), React__default.createElement("div", {
38020
+ className: "w-100"
38021
+ }, validLink ? React__default.createElement(React__default.Fragment, null, React__default.createElement(reactstrap.FormGroup, {
38022
+ className: "" + styles["form-user-name"]
38023
+ }, React__default.createElement(reactstrap.Input, {
38024
+ disabled: true,
38025
+ type: "text",
38026
+ name: "email",
38027
+ placeholder: "Email",
38028
+ value: values.email,
38029
+ autocomplete: "email",
38030
+ required: true,
38031
+ className: "" + styles["input"]
38032
+ })), React__default.createElement("div", {
38033
+ className: "" + styles["form-user-name"]
38034
+ }, React__default.createElement(PasswordInput, {
38035
+ isShowPassword: isShowNewPassword,
38036
+ togglePasswordVisible: function togglePasswordVisible() {
38037
+ return setIsShowNewPassword(!isShowNewPassword);
38038
+ },
38039
+ onChange: function onChange(e) {
38040
+ return setFieldValue("password", e.target.value);
38041
+ }
38042
+ }), touched.password && errors.password && React__default.createElement(ErrorHandler, {
38043
+ text: errors.password
38044
+ })), React__default.createElement("div", {
38045
+ className: "" + styles["form-user-name"]
38046
+ }, React__default.createElement(PasswordInput, {
38047
+ placeholder: "Confirm Password",
38048
+ isShowPassword: isShowReTypePassword,
38049
+ togglePasswordVisible: function togglePasswordVisible() {
38050
+ return setIsShowReTypePassword(!isShowReTypePassword);
38051
+ },
38052
+ onChange: function onChange(e) {
38053
+ return setFieldValue("reEnterPassword", e.target.value);
38054
+ }
38055
+ }), touched.reEnterPassword && errors.reEnterPassword && React__default.createElement(ErrorHandler, {
38056
+ text: errors.reEnterPassword
38057
+ }))) : React__default.createElement(React__default.Fragment, null, React__default.createElement("p", {
38058
+ className: styles["recover-account"] + " mb-5"
38059
+ }, "Invalid reset password link"), React__default.createElement("p", {
38060
+ className: "w-100"
38061
+ }, "It may have been accessed before or expired or you have just tried to reset another account's password"))), validLink && React__default.createElement(reactstrap.Col, {
38062
+ className: "p-0"
38063
+ }, React__default.createElement("button", {
38064
+ className: styles["btn-login"] + " " + styles["btn-rounder"] + " mt-4",
38065
+ onClick: function onClick() {
38066
+ return handleSubmit();
38067
+ }
38068
+ }, "SET A NEW PASSWORD"))))), React__default.createElement(reactstrap.Col, {
38069
+ lg: 4,
38070
+ md: 4,
38071
+ className: "" + styles["img-box"]
38072
+ }, React__default.createElement("img", {
38073
+ src: getStaticFileUrl("/images/img-login.png"),
38074
+ className: "" + styles["img-login"]
38075
+ })));
38076
+ });
38077
+ };
38078
+
38079
+ var SCHOOL_URL = BASE_URL + "/api/school";
38080
+ var getSchoolSettings = function getSchoolSettings() {
38081
+ return api.get(SCHOOL_URL + "/settings");
38082
+ };
38083
+ var getInfo$1 = function getInfo() {
38084
+ return api.get(SCHOOL_URL + "/info");
38085
+ };
38086
+
38087
+ var msalConfig = {
38088
+ auth: {
38089
+ clientId: "90c6897c-f17b-475e-a7a8-9a19651e0060",
38090
+ authority: "https://login.microsoftonline.com/common",
38091
+ redirectUri: window.location.origin + "/login"
38092
+ },
38093
+ cache: {
38094
+ cacheLocation: "sessionStorage",
38095
+ storeAuthStateInCookie: false
38096
+ },
38097
+ system: {
38098
+ loggerOptions: {
38099
+ loggerCallback: function loggerCallback(level, message, containsPii) {
38100
+ if (containsPii) {
38101
+ return;
38102
+ }
38103
+
38104
+ switch (level) {
38105
+ case msalBrowser.LogLevel.Error:
38106
+ console.error(message);
38107
+ return;
38108
+
38109
+ case msalBrowser.LogLevel.Info:
38110
+ console.info(message);
38111
+ return;
38112
+
38113
+ case msalBrowser.LogLevel.Verbose:
38114
+ console.debug(message);
38115
+ return;
38116
+
38117
+ case msalBrowser.LogLevel.Warning:
38118
+ console.warn(message);
38119
+ return;
38120
+
38121
+ default:
38122
+ return;
38123
+ }
38124
+ }
38125
+ }
38126
+ }
38127
+ };
38128
+
38129
+ var getFileUrl = function getFileUrl(fileName) {
38130
+ if (!fileName || !fileName.trim()) return "";
38131
+ return BASE_URL + "/api/file/viewer?key=" + fileName;
38132
+ };
38133
+
38134
+ var _sessionStorage$getIt;
38135
+ var defaultInfo$1 = {
38136
+ email: "",
38137
+ password: "",
38138
+ captcha: "",
38139
+ rememberMe: false,
38140
+ isSessionUserBrowser: (_sessionStorage$getIt = !!sessionStorage.getItem(IS_USER_SESSION_BROWSER)) != null ? _sessionStorage$getIt : false
38141
+ };
38142
+ var HOMEPAGE_TEACHER = "/home";
38143
+ var HOMEPAGE_STUDENT = "/home";
38144
+ var HOMEPAGE_ADMIN = "/admin/home";
38145
+ var HOMEPAGE_PARENT = "/parent";
38146
+ var HOMEPAGE_DISTRICT = "/admin/schools";
38147
+ var HOMEPAGE_EDU_TEACHER = "/list-student";
38148
+ var TITLE$1 = "Log in";
38149
+
38150
+ var useLogin = function useLogin() {
38151
+ var dispatch = reactRedux.useDispatch();
38152
+ var history = reactRouterDom.useHistory();
38153
+
38154
+ var _useState = React.useState(false),
38155
+ openLogin = _useState[0],
38156
+ setOpenLogin = _useState[1];
38157
+
38158
+ var isLoginGoogle = reactRedux.useSelector(function (state) {
38159
+ return state.common.isLoginGoogle;
38160
+ });
38161
+
38162
+ var _useState2 = React.useState(""),
38163
+ googleClientId = _useState2[0],
38164
+ setGoogleClientId = _useState2[1];
38165
+
38166
+ var _useState3 = React.useState(""),
38167
+ googleRecaptchaId = _useState3[0],
38168
+ setGoogleRecaptchaId = _useState3[1];
38169
+
38170
+ var infoUser = reactRedux.useSelector(function (state) {
38171
+ return state.common.inforUserGoogle;
38172
+ });
38173
+ var params = new URLSearchParams(location.search);
38174
+ var loginClassLink = params.get("type") === "classlink";
38175
+ var tokenClassLink = params.get("token");
38176
+
38177
+ var _useState4 = React.useState(false),
38178
+ openModelAssign = _useState4[0];
38179
+
38180
+ var _useState5 = React.useState({
38181
+ schoolName: "",
38182
+ schoolLogo: ""
38183
+ }),
38184
+ school = _useState5[0],
38185
+ setSchool = _useState5[1];
38186
+
38187
+ var _useState6 = React.useState(),
38188
+ msalInstance = _useState6[0],
38189
+ setMsalInstance = _useState6[1];
38190
+
38191
+ var toggle = React.useCallback(function () {
38192
+ setOpenLogin(!openLogin);
38193
+ }, [openLogin]);
38194
+
38195
+ var _useState7 = React.useState(false),
38196
+ isShowPassword = _useState7[0],
38197
+ setIsShowPassword = _useState7[1];
38198
+
38199
+ React.useEffect(function () {
38200
+ document.title = TITLE$1;
38201
+ var token = getAccessToken();
38202
+ if (!!token) history.push("/");
38203
+ getInfoGoogle();
38204
+ }, []);
38205
+
38206
+ var handleCancelModelAssign = function handleCancelModelAssign() {
38207
+ localStorage.removeItem(ACCESS_TOKEN);
38208
+ sessionStorage.removeItem(ACCESS_TOKEN);
38209
+ localStorage.removeItem("USER_EMAIL");
38210
+ };
38211
+
38212
+ React.useEffect(function () {
38213
+ if (loginClassLink && tokenClassLink != "") {
38214
+ loginAccountClassLink();
38215
+ }
38216
+ }, []);
38217
+
38218
+ var loginAccountClassLink = function loginAccountClassLink() {
38219
+ try {
38220
+ var _temp3 = function _temp3() {
38221
+ dispatch(setLoading(false));
38222
+ };
38223
+
38224
+ dispatch(setLoading(true));
38225
+
38226
+ var _temp4 = _catch(function () {
38227
+ var data = {
38228
+ tokenClassLink: tokenClassLink
38229
+ };
38230
+ return Promise.resolve(apiInforUserClassLink(data)).then(function (res) {
38231
+ var _res$data = res.data,
38232
+ email = _res$data.email,
38233
+ token = _res$data.token;
38234
+ var dataUser = {
38235
+ email: email,
38236
+ rememberMe: false,
38237
+ password: "default",
38238
+ accessToken: token
38239
+ };
38240
+ return Promise.resolve(userLogin(dataUser)).then(function () {});
38241
+ });
38242
+ }, function (err) {
38243
+ var _err$response, _err$response$data;
38244
+
38245
+ dispatch(setAlert({
38246
+ type: "danger",
38247
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
38248
+ }));
38249
+ });
38250
+
38251
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
38252
+ } catch (e) {
38253
+ return Promise.reject(e);
38254
+ }
38255
+ };
38256
+
38257
+ var isDistrict = window.location.host.includes("-district");
38258
+ var getSchoolInfo = React.useCallback(function () {
38259
+ try {
38260
+ var _temp7 = function _temp7() {
38261
+ dispatch(setLoading(false));
38262
+ };
38263
+
38264
+ dispatch(setLoading(true));
38265
+
38266
+ var _temp8 = _catch(function () {
38267
+ return Promise.resolve(getInfo$1()).then(function (res) {
38268
+ var _res$data$schoolLogo;
38269
+
38270
+ var schoolLogo = (_res$data$schoolLogo = res.data.schoolLogo) != null ? _res$data$schoolLogo : "";
38271
+
38272
+ if (!!res.data) {
38273
+ setSchool({
38274
+ schoolName: res.data.schoolName,
38275
+ schoolLogo: !schoolLogo ? getStaticFileUrl("/images/logo_header_blue.png") : getFileUrl(schoolLogo)
38276
+ });
38277
+ }
38278
+ });
38279
+ }, function (err) {
37552
38280
  var _err$response2, _err$response2$data;
37553
38281
 
37554
38282
  dispatch(setAlert({
@@ -37625,1028 +38353,306 @@ var useLogin = function useLogin() {
37625
38353
  });
37626
38354
  amplitude.getInstance().logEvent("general: session start", {
37627
38355
  user_id: data.email,
37628
- domain: hostName,
37629
- roles: data === null || data === void 0 ? void 0 : (_data$roles = data.roles) === null || _data$roles === void 0 ? void 0 : _data$roles.toString()
37630
- });
37631
- localStorage.setItem("USER_EMAIL", data.email);
37632
-
37633
- if (isLoginFirst) {
37634
- var _data$roles2;
37635
-
37636
- amplitude.getInstance().logEvent("general: first login", {
37637
- user_id: data.email,
37638
- domain: hostName,
37639
- roles: data === null || data === void 0 ? void 0 : (_data$roles2 = data.roles) === null || _data$roles2 === void 0 ? void 0 : _data$roles2.toString()
37640
- });
37641
- }
37642
- }
37643
-
37644
- if (isDistrict) {
37645
- history.push(HOMEPAGE_DISTRICT);
37646
- } else if (roles.includes("Admin")) {
37647
- history.push(HOMEPAGE_ADMIN);
37648
- } else if (roles.includes("Teacher") || roles.includes("Assistant") || roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
37649
- history.push(HOMEPAGE_TEACHER);
37650
- } else if (roles.includes("Student")) {
37651
- history.push(HOMEPAGE_STUDENT);
37652
- } else if (roles.includes("Parent")) {
37653
- history.push(HOMEPAGE_PARENT);
37654
- } else if (roles.includes("EduTeacher")) {
37655
- history.push(HOMEPAGE_EDU_TEACHER);
37656
- }
37657
- });
37658
- }, function (err) {
37659
- var _err$response3, _err$response3$data;
37660
-
37661
- dispatch(setAlert({
37662
- type: "danger",
37663
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Login failed"
37664
- }));
37665
- localStorage.removeItem(ACCESS_TOKEN);
37666
- sessionStorage.removeItem(ACCESS_TOKEN);
37667
- });
37668
-
37669
- return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
37670
- } catch (e) {
37671
- return Promise.reject(e);
37672
- }
37673
- }, []);
37674
-
37675
- var getInfoGoogle = function getInfoGoogle() {
37676
- try {
37677
- var _temp14 = _catch(function () {
37678
- return Promise.resolve(getGoogleClientId()).then(function (res) {
37679
- setGoogleClientId(res.data.googleClientId);
37680
- setGoogleRecaptchaId(res.data.googleCaptchaId);
37681
- });
37682
- }, function (err) {
37683
- var _err$response4, _err$response4$data;
37684
-
37685
- dispatch(setAlert({
37686
- type: "danger",
37687
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message || "Login failed"
37688
- }));
37689
- });
37690
-
37691
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(function () {}) : void 0);
37692
- } catch (e) {
37693
- return Promise.reject(e);
37694
- }
37695
- };
37696
-
37697
- var fnIsCheckLogin = React.useCallback(function (type, data, token, clickHandler) {
37698
- try {
37699
- var _temp20 = function _temp20() {
37700
- dispatch(setLoading(false));
37701
- };
37702
-
37703
- dispatch(setLoading(true));
37704
-
37705
- var _temp21 = _catch(function () {
37706
- return Promise.resolve(checkUserGoogle(type, data)).then(function (res) {
37707
- var checkUser = res.data;
37708
-
37709
- var _temp17 = function () {
37710
- if (checkUser) {
37711
- var _temp22 = function _temp22() {
37712
- return Promise.resolve(userLogin(_dataUser)).then(function () {
37713
- dispatch(setIsLoginGoogle(false));
37714
- });
37715
- };
37716
-
37717
- var _dataUser = {
37718
- email: data.email,
37719
- isLoginGoogle: true,
37720
- rememberMe: false,
37721
- password: "default",
37722
- accessToken: token,
37723
- captcha: "",
37724
- loginType: LoginType.Google
37725
- };
37726
-
37727
- var _temp23 = function () {
37728
- if (clickHandler != null) {
37729
- return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
37730
- _dataUser.captcha = clickHandlerRes;
37731
- });
37732
- }
37733
- }();
37734
-
37735
- return _temp23 && _temp23.then ? _temp23.then(_temp22) : _temp22(_temp23);
37736
- } else {
37737
- dispatch(setIsLoginGoogle(true));
37738
- }
37739
- }();
37740
-
37741
- if (_temp17 && _temp17.then) return _temp17.then(function () {});
37742
- });
37743
- }, function (err) {
37744
- var _err$response5, _err$response5$data;
37745
-
37746
- dispatch(setAlert({
37747
- type: "danger",
37748
- message: ((_err$response5 = err.response) === null || _err$response5 === void 0 ? void 0 : (_err$response5$data = _err$response5.data) === null || _err$response5$data === void 0 ? void 0 : _err$response5$data.title) || err.message || "Login failed"
37749
- }));
37750
- });
37751
-
37752
- return Promise.resolve(_temp21 && _temp21.then ? _temp21.then(_temp20) : _temp20(_temp21));
37753
- } catch (e) {
37754
- return Promise.reject(e);
37755
- }
37756
- }, []);
37757
-
37758
- var submitLogin = function submitLogin(teacherId, clickHandler) {
37759
- try {
37760
- var _temp27 = function _temp27() {
37761
- dispatch(setIsLoginGoogle(false));
37762
- dispatch(setLoading(false));
37763
- };
37764
-
37765
- dispatch(setLoading(true));
37766
-
37767
- var _temp28 = _catch(function () {
37768
- var data = {
37769
- firstName: infoUser.firstName,
37770
- lastName: infoUser.lastName,
37771
- imageUrl: infoUser.imageUrl,
37772
- fullName: infoUser.fullName,
37773
- email: infoUser.email,
37774
- accessToken: infoUser.accessToken,
37775
- teacherId: teacherId
37776
- };
37777
- return Promise.resolve(registerUserStudent(data)).then(function (res) {
37778
- var _temp24 = function () {
37779
- if (res.data) {
37780
- return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
37781
- var dataLogin = {
37782
- email: infoUser.email,
37783
- captcha: clickHandlerRes,
37784
- isLoginGoogle: true,
37785
- rememberMe: false,
37786
- password: "default",
37787
- accessToken: infoUser.accessToken,
37788
- loginType: LoginType.Google
37789
- };
37790
- dispatch(setIsLoginGoogle(false));
37791
- return Promise.resolve(userLogin(dataLogin)).then(function () {
37792
- history.push(HOMEPAGE_STUDENT);
37793
- });
37794
- });
37795
- }
37796
- }();
37797
-
37798
- if (_temp24 && _temp24.then) return _temp24.then(function () {});
37799
- });
37800
- }, function (err) {
37801
- var _err$response6, _err$response6$data;
37802
-
37803
- dispatch(setAlert({
37804
- type: "danger",
37805
- message: ((_err$response6 = err.response) === null || _err$response6 === void 0 ? void 0 : (_err$response6$data = _err$response6.data) === null || _err$response6$data === void 0 ? void 0 : _err$response6$data.title) || err.message || "Login failed"
37806
- }));
37807
- });
37808
-
37809
- return Promise.resolve(_temp28 && _temp28.then ? _temp28.then(_temp27) : _temp27(_temp28));
37810
- } catch (e) {
37811
- return Promise.reject(e);
37812
- }
37813
- };
37814
-
37815
- var getInformationSetting = function getInformationSetting() {
37816
- try {
37817
- var _temp30 = _catch(function () {
37818
- return Promise.resolve(getSchoolSettings()).then(function (res) {
37819
- dispatch(setSandboxMode(res.data.isSandboxMode));
37820
- setSchool(res.data);
37821
- });
37822
- }, function (err) {
37823
- console.error(err);
37824
- });
37825
-
37826
- return Promise.resolve(_temp30 && _temp30.then ? _temp30.then(function () {}) : void 0);
37827
- } catch (e) {
37828
- return Promise.reject(e);
37829
- }
37830
- };
37831
-
37832
- var fnLoginSSO = function fnLoginSSO(clickHandler) {
37833
- try {
37834
- msalInstance.handleRedirectPromise().then(function (tokenResponse) {
37835
- try {
37836
- var _temp33 = function () {
37837
- if (!tokenResponse) {
37838
- var accounts = msalInstance.getAllAccounts();
37839
-
37840
- var _temp34 = function () {
37841
- if (accounts.length === 0) {
37842
- msalInstance.loginRedirect();
37843
- } else {
37844
- var currentAccount = accounts[0];
37845
- return Promise.resolve(getCurrentAccount(currentAccount, clickHandler)).then(function () {});
37846
- }
37847
- }();
37848
-
37849
- if (_temp34 && _temp34.then) return _temp34.then(function () {});
37850
- } else {
37851
- var currentAccount = tokenResponse.account;
37852
- return Promise.resolve(getCurrentAccount(currentAccount, clickHandler)).then(function () {});
37853
- }
37854
- }();
37855
-
37856
- return Promise.resolve(_temp33 && _temp33.then ? _temp33.then(function () {}) : void 0);
37857
- } catch (e) {
37858
- return Promise.reject(e);
37859
- }
37860
- })["catch"](function (err) {
37861
- console.error(err);
37862
- });
37863
- return Promise.resolve();
37864
- } catch (e) {
37865
- return Promise.reject(e);
37866
- }
37867
- };
37868
-
37869
- var getCurrentAccount = function getCurrentAccount(account, clickHandler) {
37870
- try {
37871
- var fullName = account.name;
37872
- var infoLogin = {
37873
- firstName: fullName.split(' ').slice(0, -1).join(' '),
37874
- lastName: fullName.split(' ').slice(-1).join(' '),
37875
- fullName: fullName,
37876
- imageUrl: "",
37877
- email: account.username,
37878
- accessToken: account.idTokenClaims.aio,
37879
- googleId: account.tenantId
37880
- };
37881
- dispatch(setInforUserGoogle(infoLogin));
37882
- return Promise.resolve(fnIsCheckLogin(TypeLogin.MicrosoftSSO, infoLogin, account.idTokenClaims.aio, clickHandler)).then(function () {});
37883
- } catch (e) {
37884
- return Promise.reject(e);
37885
- }
37886
- };
37887
-
37888
- var initInformationSSO = function initInformationSSO() {
37889
- try {
37890
- var _msalInstance = new msalBrowser.PublicClientApplication(msalConfig);
37891
-
37892
- setMsalInstance(_msalInstance);
37893
- return Promise.resolve();
37894
- } catch (e) {
37895
- return Promise.reject(e);
37896
- }
37897
- };
37898
-
37899
- React.useEffect(function () {
37900
- var redirectUrl = window.location.href;
37901
-
37902
- if (!!msalInstance && redirectUrl.includes("code") && redirectUrl.includes("client_info")) {
37903
- fnLoginSSO();
37904
- }
37905
- }, [JSON.stringify(msalInstance)]);
37906
- React.useEffect(function () {
37907
- getInformationSetting();
37908
- initInformationSSO();
37909
- getSchoolInfo();
37910
- }, []);
37911
- return {
37912
- defaultInfo: defaultInfo,
37913
- userLogin: userLogin,
37914
- openLogin: openLogin,
37915
- toggle: toggle,
37916
- isShowPassword: isShowPassword,
37917
- setIsShowPassword: setIsShowPassword,
37918
- fnIsCheckLogin: fnIsCheckLogin,
37919
- isLoginGoogle: isLoginGoogle,
37920
- infoUser: infoUser,
37921
- submitLogin: submitLogin,
37922
- googleClientId: googleClientId,
37923
- googleRecaptchaId: googleRecaptchaId,
37924
- handleCancelModelAssign: handleCancelModelAssign,
37925
- openModelAssign: openModelAssign,
37926
- fnLoginSSO: fnLoginSSO,
37927
- school: school
37928
- };
37929
- };
37930
-
37931
- var CustomSelector = function CustomSelector(_ref) {
37932
- var defaultValue = _ref.defaultValue,
37933
- options = _ref.options,
37934
- isDisabled = _ref.isDisabled,
37935
- scrollBottom = _ref.scrollBottom,
37936
- rest = _objectWithoutPropertiesLoose(_ref, ["defaultValue", "options", "isDisabled", "scrollBottom"]);
37937
-
37938
- var initValue = defaultValue !== null && typeof defaultValue !== "undefined" ? options.find(function (option) {
37939
- return option.value === defaultValue;
37940
- }) || null : null;
37941
- return React__default.createElement(Select, Object.assign({
37942
- isDisabled: isDisabled,
37943
- options: options,
37944
- value: initValue,
37945
- menuPlacement: scrollBottom ? "top" : "auto"
37946
- }, rest));
37947
- };
37948
-
37949
- var BlockSelectTeacher = function BlockSelectTeacher(_ref) {
37950
- var defaultValue = _ref.defaultValue,
37951
- isDisabled = _ref.isDisabled,
37952
- openModal = _ref.openModal,
37953
- onSubmit = _ref.onSubmit,
37954
- token = _ref.token,
37955
- email = _ref.email;
37956
-
37957
- var _useState = React.useState(false),
37958
- modal = _useState[0],
37959
- setModal = _useState[1];
37960
-
37961
- React.useEffect(function () {
37962
- setModal(openModal);
37963
- }, [openModal]);
37964
- var dispatch = reactRedux.useDispatch();
37965
-
37966
- var _useState2 = React.useState([]),
37967
- teachers = _useState2[0],
37968
- setTeachers = _useState2[1];
37969
-
37970
- var _useState3 = React.useState(""),
37971
- searchString = _useState3[0],
37972
- setSearchString = _useState3[1];
37973
-
37974
- var _useState4 = React.useState(""),
37975
- teacherEmail = _useState4[0],
37976
- setTeacherEmail = _useState4[1];
37977
-
37978
- var _useState5 = React.useState(false),
37979
- isLoading = _useState5[0],
37980
- setLoading = _useState5[1];
37981
-
37982
- var timeout = React.useRef();
37983
-
37984
- var toggle = function toggle() {
37985
- setModal(!modal);
37986
- dispatch(setIsLoginGoogle(!modal));
37987
- };
37988
-
37989
- var loadData = React.useCallback(function () {
37990
- try {
37991
- var _temp3 = function _temp3() {
37992
- setLoading(false);
37993
- };
37994
-
37995
- setLoading(true);
37996
-
37997
- var _temp4 = _catch(function () {
37998
- var data = {
37999
- token: token,
38000
- email: email
38001
- };
38002
- return Promise.resolve(getAllLoginTeacher(data)).then(function (res) {
38003
- setTeachers(res.data);
38004
- });
38005
- }, function (err) {
38006
- var _err$response, _err$response$data;
38007
-
38008
- dispatch(setAlert({
38009
- type: "danger",
38010
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
38011
- }));
38012
- });
38013
-
38014
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
38015
- } catch (e) {
38016
- return Promise.reject(e);
38017
- }
38018
- }, [searchString]);
38019
- React.useEffect(function () {
38020
- timeout && timeout.current && clearTimeout(timeout.current);
38021
-
38022
- if (!searchString || searchString.trim().length < 2) {
38023
- setTeachers([]);
38024
- } else {
38025
- timeout.current = setTimeout(loadData, 300);
38026
- }
38027
- }, [searchString]);
38028
- var options = teachers.map(function (teacher) {
38029
- return {
38030
- label: teacher.fullName + " (" + teacher.email + ")",
38031
- value: teacher.teacherId
38032
- };
38033
- });
38034
-
38035
- var onChangeTeacher = function onChangeTeacher(e) {
38036
- setTeacherEmail(e.value);
38037
- };
38038
-
38039
- var customSelector = {
38040
- control: function control(styles) {
38041
- return _extends({}, styles, {
38042
- borderRadius: "10px"
38043
- });
38044
- }
38045
- };
38046
- return React__default.createElement(reactstrap.Modal, {
38047
- isOpen: modal
38048
- }, React__default.createElement(reactstrap.ModalHeader, null, " Sign in "), React__default.createElement(reactstrap.ModalBody, null, React__default.createElement("h6", null, "You are logging in as a student, please select teacher"), React__default.createElement(CustomSelector, {
38049
- styles: customSelector,
38050
- options: options,
38051
- inputValue: searchString,
38052
- onInputChange: function onInputChange(inputValue) {
38053
- return setSearchString(inputValue);
38054
- },
38055
- isLoading: isLoading,
38056
- placeholder: "Type 2 characters to search",
38057
- value: defaultValue,
38058
- onChange: onChangeTeacher,
38059
- isDisabled: isDisabled
38060
- })), React__default.createElement(reactstrap.ModalFooter, null, React__default.createElement(reactstrap.Button, {
38061
- color: "primary",
38062
- onClick: function onClick() {
38063
- onSubmit(teacherEmail);
38064
- toggle();
38065
- }
38066
- }, "Finish"), ' ', React__default.createElement(reactstrap.Button, {
38067
- color: "secondary",
38068
- onClick: toggle
38069
- }, "Cancel")));
38070
- };
38071
-
38072
- var BlockSelectTeacher$1 = React.forwardRef(BlockSelectTeacher);
38073
-
38074
- var getStaticFileUrl = function getStaticFileUrl(url) {
38075
- var STAGE_DOMAIN = "https://stage2.marioforme.com";
38076
- var isStage = STAGE_DOMAIN === location.origin;
38077
- if (!url) return "";
38078
- if (isLocalhost && !isStage || url.startsWith("http")) return url;
38079
- if (url.startsWith("/")) return "" + (isStage ? STAGE_DOMAIN : MARIO_SUCCESS_BASE_URL) + url;else return (isStage ? STAGE_DOMAIN : MARIO_SUCCESS_BASE_URL) + "/" + url;
38080
- };
38081
-
38082
- var getFileUrl = function getFileUrl(fileName) {
38083
- if (!fileName || !fileName.trim()) return "";
38084
- return BASE_URL + "/api/file/viewer?key=" + fileName;
38085
- };
38086
-
38087
- var schema = yup.object({
38088
- email: yup.string().email("Email is invalid").required("Email is required"),
38089
- password: yup.string().required("Password is required"),
38090
- rememberMe: yup.boolean()
38091
- });
38092
-
38093
- var BlockLogin = function BlockLogin(_ref) {
38094
- var defaultInfo = _ref.defaultInfo,
38095
- userLogin = _ref.userLogin,
38096
- school = _ref.school;
38097
-
38098
- var _useLogin = useLogin(),
38099
- isShowPassword = _useLogin.isShowPassword,
38100
- setIsShowPassword = _useLogin.setIsShowPassword,
38101
- fnIsCheckLogin = _useLogin.fnIsCheckLogin,
38102
- isLoginGoogle = _useLogin.isLoginGoogle,
38103
- submitLogin = _useLogin.submitLogin,
38104
- infoUser = _useLogin.infoUser,
38105
- googleClientId = _useLogin.googleClientId;
38106
-
38107
- var togglePasswordVisible = function togglePasswordVisible() {
38108
- return setIsShowPassword(!isShowPassword);
38109
- };
38110
-
38111
- var dispatch = reactRedux.useDispatch();
38112
-
38113
- var _useGoogleReCaptcha = reactGoogleRecaptchaV3.useGoogleReCaptcha(),
38114
- executeRecaptcha = _useGoogleReCaptcha.executeRecaptcha;
38115
-
38116
- var clickHandler = React.useCallback(function () {
38117
- try {
38118
- if (!executeRecaptcha) {
38119
- console.log("execute recaptcha undefined");
38120
- return Promise.resolve();
38121
- }
38122
-
38123
- return Promise.resolve(executeRecaptcha("login"));
38124
- } catch (e) {
38125
- return Promise.reject(e);
38126
- }
38127
- }, [executeRecaptcha]);
38128
- var handleVerify = React.useCallback(function () {}, []);
38129
-
38130
- var onSuccessGoogle = function onSuccessGoogle(res) {
38131
- if (!!(res !== null && res !== void 0 && res.accessToken)) {
38132
- var _res$profileObj = res.profileObj,
38133
- email = _res$profileObj.email,
38134
- familyName = _res$profileObj.familyName,
38135
- givenName = _res$profileObj.givenName,
38136
- imageUrl = _res$profileObj.imageUrl,
38137
- name = _res$profileObj.name;
38138
- var accessToken = res.accessToken;
38139
- var googleId = res.googleId;
38140
-
38141
- if (email.includes("@gmail")) {
38142
- alert("The email address you used does not match the login information in the database. Please check that you are using your school assigned email address to log into MARIO for Me. If you have further trouble please notify your school site administrator");
38143
- return;
38144
- }
38145
-
38146
- var infoLogin = {
38147
- firstName: givenName,
38148
- lastName: familyName,
38149
- imageUrl: imageUrl,
38150
- fullName: name,
38151
- email: email,
38152
- accessToken: accessToken,
38153
- googleId: googleId
38154
- };
38155
- dispatch(setInforUserGoogle(infoLogin));
38156
- fnIsCheckLogin(TypeLogin.Google, infoLogin, accessToken, clickHandler);
38157
- }
38158
- };
38159
-
38160
- return React__default.createElement(React__default.Fragment, null, React__default.createElement(formik.Formik, {
38161
- initialValues: defaultInfo,
38162
- validationSchema: schema,
38163
- onSubmit: function (values) {
38164
- try {
38165
- return Promise.resolve(_catch(function () {
38166
- return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
38167
- if (!clickHandlerRes) return;
38168
- values.captcha = clickHandlerRes;
38169
- values.loginType = LoginType.Default;
38170
- userLogin(values);
38171
- });
38172
- }, function (err) {
38173
- console.error(err);
38174
- }));
38175
- } catch (e) {
38176
- return Promise.reject(e);
38177
- }
38178
- }
38179
- }, function (formikProps) {
38180
- var handleChange = formikProps.handleChange,
38181
- handleBlur = formikProps.handleBlur,
38182
- handleSubmit = formikProps.handleSubmit,
38183
- values = formikProps.values,
38184
- touched = formikProps.touched,
38185
- errors = formikProps.errors,
38186
- setFieldValue = formikProps.setFieldValue;
38187
- var emailError = touched.email && errors.email;
38188
- var passwordError = touched.password && errors.password;
38189
- return React__default.createElement("div", {
38190
- className: styles["box-login"] + " w-100"
38191
- }, React__default.createElement(reactstrap.Form, {
38192
- className: "" + styles["block-login"],
38193
- onSubmit: handleSubmit
38194
- }, React__default.createElement("div", {
38195
- className: "" + styles["block-form"]
38196
- }, React__default.createElement("div", {
38197
- className: "d-flex align-items-center mb-4"
38198
- }, React__default.createElement("img", {
38199
- src: "" + (school !== null && school !== void 0 && school.schoolLogo ? getFileUrl("" + (school === null || school === void 0 ? void 0 : school.schoolLogo)) : getStaticFileUrl("/images/logoR.png")),
38200
- className: styles["school-icon"] + " mr-3"
38201
- }), React__default.createElement("p", {
38202
- className: styles["school-name"] + " mb-0"
38203
- }, school.schoolName)), React__default.createElement("p", {
38204
- className: "" + styles["title-login"]
38205
- }, "Welcome Back!"), React__default.createElement("p", {
38206
- className: styles["login-description"] + " mb-5"
38207
- }, "Please enter your MARIO Education account details"), React__default.createElement(reactstrap.FormGroup, {
38208
- className: "" + styles["form-user-name"]
38209
- }, React__default.createElement(reactstrap.Input, {
38210
- type: "text",
38211
- name: "email",
38212
- placeholder: "Email",
38213
- value: values.email,
38214
- onChange: handleChange,
38215
- autocomplete: "email",
38216
- onBlur: handleBlur("email"),
38217
- required: true
38218
- }), emailError && React__default.createElement(ErrorHandler, {
38219
- text: errors.email
38220
- })), React__default.createElement(reactstrap.FormGroup, null, React__default.createElement(PasswordInput, {
38221
- isShowPassword: isShowPassword,
38222
- togglePasswordVisible: togglePasswordVisible,
38223
- onChange: function onChange(e) {
38224
- return setFieldValue("password", e.target.value);
38225
- }
38226
- }), passwordError && React__default.createElement(ErrorHandler, {
38227
- text: errors.password
38228
- })), React__default.createElement(reactstrap.FormGroup, null, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptcha, {
38229
- action: "login",
38230
- onVerify: handleVerify
38231
- })), React__default.createElement("div", {
38232
- className: "d-flex justify-content-between"
38233
- }, React__default.createElement("div", {
38234
- className: "d-flex align-items-center"
38235
- }, React__default.createElement("input", {
38236
- type: "checkbox",
38237
- checked: !values.isSessionUserBrowser,
38238
- className: "" + styles["checkbox-keep-login"],
38239
- onChange: function onChange() {
38240
- return setFieldValue("isSessionUserBrowser", !values.isSessionUserBrowser);
38241
- }
38242
- }), React__default.createElement("p", {
38243
- className: styles["label-keep-login"] + " mb-0 ml-2"
38244
- }, "Keep me logged in")), React__default.createElement(reactRouterDom.Link, {
38245
- to: "/forgot-password",
38246
- className: "" + styles["link-to-login"]
38247
- }, "Forgot password?")), React__default.createElement("button", {
38248
- className: styles["btn-login"] + " mt-5",
38249
- type: "submit"
38250
- }, "LOG IN"), React__default.createElement("p", {
38251
- className: styles["option-text"] + " my-3 text-center"
38252
- }, "OR"), React__default.createElement(reactstrap.Row, {
38253
- className: "mb-4"
38254
- }, React__default.createElement(reactstrap.Col, {
38255
- lg: 12,
38256
- md: 12,
38257
- xs: 12,
38258
- className: "pr-md-2"
38259
- }, !!googleClientId && React__default.createElement(GoogleLogin, {
38260
- clientId: googleClientId,
38261
- buttonText: "GOOGLE",
38262
- onSuccess: onSuccessGoogle,
38263
- cookiePolicy: "single_host_origin",
38264
- className: styles["btn-login-google"] + " p-0 mb-4 mb-md-0"
38265
- }))), React__default.createElement("div", {
38266
- className: "w-100 d-flex align-items-center justify-content-center mt-3"
38267
- }, React__default.createElement("a", {
38268
- href: "https://launchpad.classlink.com/login"
38269
- }, React__default.createElement("img", {
38270
- className: styles["class-link-sso-image"],
38271
- src: getStaticFileUrl("images/classlink-sso.png"),
38272
- alt: ""
38273
- }))))));
38274
- }), isLoginGoogle && React__default.createElement(BlockSelectTeacher$1, {
38275
- onSubmit: function onSubmit(e) {
38276
- return submitLogin(e, clickHandler);
38277
- },
38278
- openModal: isLoginGoogle,
38279
- token: infoUser.accessToken,
38280
- email: infoUser.email
38281
- }));
38282
- };
38283
-
38284
- var defaultInfo$1 = {
38285
- email: "",
38286
- captcha: ""
38287
- };
38288
- var DASHBOARD = "/";
38289
- var LOGIN = "/login";
38290
- var TITLE$1 = "Log in";
38291
-
38292
- var useForgotPassword = function useForgotPassword() {
38293
- var _query$get;
38294
-
38295
- var query = new URLSearchParams(reactRouterDom.useLocation().search);
38296
- var token = query.get("token");
38297
- var key = (_query$get = query.get("key")) != null ? _query$get : "";
38298
- var dispatch = reactRedux.useDispatch();
38299
- var history = reactRouterDom.useHistory();
38300
-
38301
- var _useState = React.useState(false),
38302
- openLogin = _useState[0],
38303
- setOpenLogin = _useState[1];
38304
-
38305
- var toggle = React.useCallback(function () {
38306
- setOpenLogin(!openLogin);
38307
- }, [openLogin]);
38308
-
38309
- var _useState2 = React.useState(false),
38310
- isShowNewPassword = _useState2[0],
38311
- setIsShowNewPassword = _useState2[1];
38312
-
38313
- var _useState3 = React.useState(false),
38314
- isShowReTypePassword = _useState3[0],
38315
- setIsShowReTypePassword = _useState3[1];
38316
-
38317
- var _useState4 = React.useState({
38318
- token: "",
38319
- password: "",
38320
- reEnterPassword: "",
38321
- email: "",
38322
- userId: ""
38323
- }),
38324
- initialValues = _useState4[0],
38325
- setInitialValues = _useState4[1];
38326
-
38327
- var _useState5 = React.useState(true),
38328
- validLink = _useState5[0],
38329
- setValidLink = _useState5[1];
38330
-
38331
- var _useGoogleReCaptcha = reactGoogleRecaptchaV3.useGoogleReCaptcha(),
38332
- executeRecaptcha = _useGoogleReCaptcha.executeRecaptcha;
38333
-
38334
- React.useEffect(function () {
38335
- document.title = TITLE$1;
38336
- var token = getAccessToken();
38337
- if (!!token) history.push(DASHBOARD);
38338
- }, []);
38339
- var forgotPasswordRequest = React.useCallback(function (data) {
38340
- try {
38341
- var _temp3 = function _temp3() {
38342
- dispatch(setLoading(false));
38343
- };
38356
+ domain: hostName,
38357
+ roles: data === null || data === void 0 ? void 0 : (_data$roles = data.roles) === null || _data$roles === void 0 ? void 0 : _data$roles.toString()
38358
+ });
38359
+ localStorage.setItem("USER_EMAIL", data.email);
38344
38360
 
38345
- dispatch(setLoading(true));
38361
+ if (isLoginFirst) {
38362
+ var _data$roles2;
38346
38363
 
38347
- var _temp4 = _catch(function () {
38348
- return Promise.resolve(forgotPassword(data)).then(function () {
38349
- history.push(LOGIN);
38350
- dispatch(setAlert({
38351
- type: "success",
38352
- message: "A mail to reset password was sent"
38353
- }));
38364
+ amplitude.getInstance().logEvent("general: first login", {
38365
+ user_id: data.email,
38366
+ domain: hostName,
38367
+ roles: data === null || data === void 0 ? void 0 : (_data$roles2 = data.roles) === null || _data$roles2 === void 0 ? void 0 : _data$roles2.toString()
38368
+ });
38369
+ }
38370
+ }
38371
+
38372
+ if (isDistrict) {
38373
+ history.push(HOMEPAGE_DISTRICT);
38374
+ } else if (roles.includes("Admin")) {
38375
+ history.push(HOMEPAGE_ADMIN);
38376
+ } else if (roles.includes("Teacher") || roles.includes("Assistant") || roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
38377
+ history.push(HOMEPAGE_TEACHER);
38378
+ } else if (roles.includes("Student")) {
38379
+ history.push(HOMEPAGE_STUDENT);
38380
+ } else if (roles.includes("Parent")) {
38381
+ history.push(HOMEPAGE_PARENT);
38382
+ } else if (roles.includes("EduTeacher")) {
38383
+ history.push(HOMEPAGE_EDU_TEACHER);
38384
+ }
38354
38385
  });
38355
38386
  }, function (err) {
38356
- var _err$response, _err$response$data;
38387
+ var _err$response3, _err$response3$data;
38357
38388
 
38358
38389
  dispatch(setAlert({
38359
38390
  type: "danger",
38360
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message || "Error occured"
38391
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Login failed"
38361
38392
  }));
38362
38393
  localStorage.removeItem(ACCESS_TOKEN);
38363
38394
  sessionStorage.removeItem(ACCESS_TOKEN);
38364
38395
  });
38365
38396
 
38366
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
38397
+ return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
38367
38398
  } catch (e) {
38368
38399
  return Promise.reject(e);
38369
38400
  }
38370
38401
  }, []);
38371
- var checkResetTokenRequest = React.useCallback(function (token, key) {
38402
+
38403
+ var getInfoGoogle = function getInfoGoogle() {
38372
38404
  try {
38373
- var _temp7 = function _temp7() {
38405
+ var _temp14 = _catch(function () {
38406
+ return Promise.resolve(getGoogleClientId()).then(function (res) {
38407
+ setGoogleClientId(res.data.googleClientId);
38408
+ setGoogleRecaptchaId(res.data.googleCaptchaId);
38409
+ });
38410
+ }, function (err) {
38411
+ var _err$response4, _err$response4$data;
38412
+
38413
+ dispatch(setAlert({
38414
+ type: "danger",
38415
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message || "Login failed"
38416
+ }));
38417
+ });
38418
+
38419
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(function () {}) : void 0);
38420
+ } catch (e) {
38421
+ return Promise.reject(e);
38422
+ }
38423
+ };
38424
+
38425
+ var fnIsCheckLogin = React.useCallback(function (type, data, token, clickHandler) {
38426
+ try {
38427
+ var _temp20 = function _temp20() {
38374
38428
  dispatch(setLoading(false));
38375
38429
  };
38376
38430
 
38377
38431
  dispatch(setLoading(true));
38378
38432
 
38379
- var _temp8 = _catch(function () {
38380
- return Promise.resolve(checkResetToken(token, key)).then(function (res) {
38381
- if (res.data) {
38382
- setInitialValues(_extends({}, initialValues, {
38383
- token: token,
38384
- email: res.data
38385
- }));
38386
- } else {
38387
- setValidLink(false);
38388
- }
38433
+ var _temp21 = _catch(function () {
38434
+ return Promise.resolve(checkUserGoogle(type, data)).then(function (res) {
38435
+ var checkUser = res.data;
38436
+
38437
+ var _temp17 = function () {
38438
+ if (checkUser) {
38439
+ var _temp22 = function _temp22() {
38440
+ return Promise.resolve(userLogin(_dataUser)).then(function () {
38441
+ dispatch(setIsLoginGoogle(false));
38442
+ });
38443
+ };
38444
+
38445
+ var _dataUser = {
38446
+ email: data.email,
38447
+ isLoginGoogle: true,
38448
+ rememberMe: false,
38449
+ password: "default",
38450
+ accessToken: token,
38451
+ captcha: "",
38452
+ loginType: LoginType.Google
38453
+ };
38454
+
38455
+ var _temp23 = function () {
38456
+ if (clickHandler != null) {
38457
+ return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
38458
+ _dataUser.captcha = clickHandlerRes;
38459
+ });
38460
+ }
38461
+ }();
38462
+
38463
+ return _temp23 && _temp23.then ? _temp23.then(_temp22) : _temp22(_temp23);
38464
+ } else {
38465
+ dispatch(setIsLoginGoogle(true));
38466
+ }
38467
+ }();
38468
+
38469
+ if (_temp17 && _temp17.then) return _temp17.then(function () {});
38389
38470
  });
38390
- }, function () {
38391
- setValidLink(false);
38471
+ }, function (err) {
38472
+ var _err$response5, _err$response5$data;
38473
+
38474
+ dispatch(setAlert({
38475
+ type: "danger",
38476
+ message: ((_err$response5 = err.response) === null || _err$response5 === void 0 ? void 0 : (_err$response5$data = _err$response5.data) === null || _err$response5$data === void 0 ? void 0 : _err$response5$data.title) || err.message || "Login failed"
38477
+ }));
38392
38478
  });
38393
38479
 
38394
- return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
38480
+ return Promise.resolve(_temp21 && _temp21.then ? _temp21.then(_temp20) : _temp20(_temp21));
38395
38481
  } catch (e) {
38396
38482
  return Promise.reject(e);
38397
38483
  }
38398
38484
  }, []);
38399
- var resetPasswordRequest = React.useCallback(function (data) {
38485
+
38486
+ var submitLogin = function submitLogin(teacherId, clickHandler) {
38400
38487
  try {
38401
- var _temp11 = function _temp11() {
38488
+ var _temp27 = function _temp27() {
38489
+ dispatch(setIsLoginGoogle(false));
38402
38490
  dispatch(setLoading(false));
38403
38491
  };
38404
38492
 
38405
38493
  dispatch(setLoading(true));
38406
38494
 
38407
- var _temp12 = _catch(function () {
38408
- return Promise.resolve(resetPassword(_extends({}, data, {
38409
- key: key
38410
- }))).then(function () {
38411
- history.push(LOGIN);
38412
- dispatch(setAlert({
38413
- type: "success",
38414
- message: "Reset password sucessfully"
38415
- }));
38495
+ var _temp28 = _catch(function () {
38496
+ var data = {
38497
+ firstName: infoUser.firstName,
38498
+ lastName: infoUser.lastName,
38499
+ imageUrl: infoUser.imageUrl,
38500
+ fullName: infoUser.fullName,
38501
+ email: infoUser.email,
38502
+ accessToken: infoUser.accessToken,
38503
+ teacherId: teacherId
38504
+ };
38505
+ return Promise.resolve(registerUserStudent(data)).then(function (res) {
38506
+ var _temp24 = function () {
38507
+ if (res.data) {
38508
+ return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
38509
+ var dataLogin = {
38510
+ email: infoUser.email,
38511
+ captcha: clickHandlerRes,
38512
+ isLoginGoogle: true,
38513
+ rememberMe: false,
38514
+ password: "default",
38515
+ accessToken: infoUser.accessToken,
38516
+ loginType: LoginType.Google
38517
+ };
38518
+ dispatch(setIsLoginGoogle(false));
38519
+ return Promise.resolve(userLogin(dataLogin)).then(function () {
38520
+ history.push(HOMEPAGE_STUDENT);
38521
+ });
38522
+ });
38523
+ }
38524
+ }();
38525
+
38526
+ if (_temp24 && _temp24.then) return _temp24.then(function () {});
38416
38527
  });
38417
38528
  }, function (err) {
38418
- var _err$response2, _err$response2$data;
38529
+ var _err$response6, _err$response6$data;
38419
38530
 
38420
38531
  dispatch(setAlert({
38421
38532
  type: "danger",
38422
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message || "Error occured"
38533
+ message: ((_err$response6 = err.response) === null || _err$response6 === void 0 ? void 0 : (_err$response6$data = _err$response6.data) === null || _err$response6$data === void 0 ? void 0 : _err$response6$data.title) || err.message || "Login failed"
38423
38534
  }));
38424
- localStorage.removeItem(ACCESS_TOKEN);
38425
- sessionStorage.removeItem(ACCESS_TOKEN);
38426
38535
  });
38427
38536
 
38428
- return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(_temp11) : _temp11(_temp12));
38537
+ return Promise.resolve(_temp28 && _temp28.then ? _temp28.then(_temp27) : _temp27(_temp28));
38429
38538
  } catch (e) {
38430
38539
  return Promise.reject(e);
38431
38540
  }
38432
- }, []);
38433
- var clickHandler = React.useCallback(function () {
38541
+ };
38542
+
38543
+ var getInformationSetting = function getInformationSetting() {
38434
38544
  try {
38435
- if (!executeRecaptcha) {
38436
- console.log("execute recaptcha undefined");
38437
- return Promise.resolve();
38438
- }
38545
+ var _temp30 = _catch(function () {
38546
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
38547
+ dispatch(setSandboxMode(res.data.isSandboxMode));
38548
+ });
38549
+ }, function (err) {
38550
+ console.error(err);
38551
+ });
38439
38552
 
38440
- return Promise.resolve(executeRecaptcha("forgetPass"));
38553
+ return Promise.resolve(_temp30 && _temp30.then ? _temp30.then(function () {}) : void 0);
38441
38554
  } catch (e) {
38442
38555
  return Promise.reject(e);
38443
38556
  }
38444
- }, [executeRecaptcha]);
38445
- var handleVerify = React.useCallback(function () {}, []);
38446
- React.useEffect(function () {
38447
- checkResetTokenRequest(token, key);
38448
- }, []);
38449
- return {
38450
- defaultInfo: defaultInfo$1,
38451
- forgotPasswordRequest: forgotPasswordRequest,
38452
- checkResetTokenRequest: checkResetTokenRequest,
38453
- validLink: validLink,
38454
- resetPasswordRequest: resetPasswordRequest,
38455
- openLogin: openLogin,
38456
- toggle: toggle,
38457
- isShowNewPassword: isShowNewPassword,
38458
- setIsShowNewPassword: setIsShowNewPassword,
38459
- isShowReTypePassword: isShowReTypePassword,
38460
- setIsShowReTypePassword: setIsShowReTypePassword,
38461
- clickHandler: clickHandler,
38462
- handleVerify: handleVerify,
38463
- initialValues: initialValues
38464
38557
  };
38465
- };
38466
38558
 
38467
- var initialValues = {
38468
- email: "",
38469
- captcha: ""
38470
- };
38471
- var forgotPasswordSchema = yup.object({
38472
- email: yup.string().email("Email is invalid").required("Email is required")
38473
- });
38559
+ var fnLoginSSO = function fnLoginSSO(clickHandler) {
38560
+ try {
38561
+ msalInstance.handleRedirectPromise().then(function (tokenResponse) {
38562
+ try {
38563
+ var _temp33 = function () {
38564
+ if (!tokenResponse) {
38565
+ var accounts = msalInstance.getAllAccounts();
38474
38566
 
38475
- var BlockForgetPassword = function BlockForgetPassword(_ref) {
38476
- var school = _ref.school;
38567
+ var _temp34 = function () {
38568
+ if (accounts.length === 0) {
38569
+ msalInstance.loginRedirect();
38570
+ } else {
38571
+ var currentAccount = accounts[0];
38572
+ return Promise.resolve(getCurrentAccount(currentAccount, clickHandler)).then(function () {});
38573
+ }
38574
+ }();
38477
38575
 
38478
- var _useForgotPassword = useForgotPassword(),
38479
- forgotPasswordRequest = _useForgotPassword.forgotPasswordRequest,
38480
- clickHandler = _useForgotPassword.clickHandler,
38481
- handleVerify = _useForgotPassword.handleVerify;
38576
+ if (_temp34 && _temp34.then) return _temp34.then(function () {});
38577
+ } else {
38578
+ var currentAccount = tokenResponse.account;
38579
+ return Promise.resolve(getCurrentAccount(currentAccount, clickHandler)).then(function () {});
38580
+ }
38581
+ }();
38482
38582
 
38483
- return React__default.createElement(formik.Formik, {
38484
- initialValues: initialValues,
38485
- enableReinitialize: true,
38486
- validationSchema: forgotPasswordSchema,
38487
- onSubmit: function (values) {
38488
- try {
38489
- return Promise.resolve(clickHandler()).then(function (clickHandlerRes) {
38490
- if (!clickHandlerRes) return;
38491
- values.captcha = clickHandlerRes;
38492
- forgotPasswordRequest(values);
38493
- });
38494
- } catch (e) {
38495
- return Promise.reject(e);
38496
- }
38583
+ return Promise.resolve(_temp33 && _temp33.then ? _temp33.then(function () {}) : void 0);
38584
+ } catch (e) {
38585
+ return Promise.reject(e);
38586
+ }
38587
+ })["catch"](function (err) {
38588
+ console.error(err);
38589
+ });
38590
+ return Promise.resolve();
38591
+ } catch (e) {
38592
+ return Promise.reject(e);
38497
38593
  }
38498
- }, function (formikProps) {
38499
- var handleChange = formikProps.handleChange,
38500
- handleSubmit = formikProps.handleSubmit,
38501
- values = formikProps.values,
38502
- touched = formikProps.touched,
38503
- errors = formikProps.errors;
38504
- return React__default.createElement("div", {
38505
- className: "" + styles["box-login"]
38506
- }, React__default.createElement("div", {
38507
- className: "" + styles["block-login"]
38508
- }, React__default.createElement("div", {
38509
- className: "" + styles["block-form"]
38510
- }, React__default.createElement("div", {
38511
- className: "d-flex align-items-center mb-4"
38512
- }, React__default.createElement("img", {
38513
- src: "" + getStaticFileUrl("/images/isb-icon.png"),
38514
- className: styles["school-icon"] + " mr-3"
38515
- }), React__default.createElement("p", {
38516
- className: styles["school-name"] + " mb-0"
38517
- }, school.schoolName)), React__default.createElement("p", {
38518
- className: styles["title-login"] + " "
38519
- }, "Forgot password"), React__default.createElement("p", {
38520
- className: styles["recover-account"] + " mb-5"
38521
- }, "Enter email to recover your account"), React__default.createElement("div", {
38522
- className: "w-100"
38523
- }, React__default.createElement(reactstrap.Input, {
38524
- type: "text",
38525
- name: "email",
38526
- id: "email",
38527
- placeholder: "Input email",
38528
- onChange: handleChange,
38529
- value: values.email
38530
- }), touched.email && errors.email && React__default.createElement(ErrorHandler, {
38531
- text: errors.email
38532
- })), React__default.createElement(reactRouterDom.Link, {
38533
- to: "/login",
38534
- className: styles["link-to-login"] + " mt-2"
38535
- }, "Return to login"), React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptcha, {
38536
- action: "forgetPass",
38537
- onVerify: handleVerify
38538
- }), React__default.createElement(reactstrap.Col, {
38539
- className: "p-0"
38540
- }, React__default.createElement("button", {
38541
- className: styles["btn-login"] + " mt-5",
38542
- onClick: function onClick() {
38543
- return handleSubmit();
38544
- }
38545
- }, "Continue")))));
38546
- });
38547
- };
38594
+ };
38548
38595
 
38549
- var resetPasswordSchema = yup.object({
38550
- password: yup.string().required("New password is required"),
38551
- reEnterPassword: yup.string().required("Please re-enter new password").test("matching", "Passwords do not match", function () {
38552
- return this.parent.password === this.parent.reEnterPassword;
38553
- })
38554
- });
38596
+ var getCurrentAccount = function getCurrentAccount(account, clickHandler) {
38597
+ try {
38598
+ var fullName = account.name;
38599
+ var infoLogin = {
38600
+ firstName: fullName.split(' ').slice(0, -1).join(' '),
38601
+ lastName: fullName.split(' ').slice(-1).join(' '),
38602
+ fullName: fullName,
38603
+ imageUrl: "",
38604
+ email: account.username,
38605
+ accessToken: account.idTokenClaims.aio,
38606
+ googleId: account.tenantId
38607
+ };
38608
+ dispatch(setInforUserGoogle(infoLogin));
38609
+ return Promise.resolve(fnIsCheckLogin(TypeLogin.MicrosoftSSO, infoLogin, account.idTokenClaims.aio, clickHandler)).then(function () {});
38610
+ } catch (e) {
38611
+ return Promise.reject(e);
38612
+ }
38613
+ };
38555
38614
 
38556
- var BlockResetPassword = function BlockResetPassword() {
38557
- var _useForgotPassword = useForgotPassword(),
38558
- validLink = _useForgotPassword.validLink,
38559
- resetPasswordRequest = _useForgotPassword.resetPasswordRequest,
38560
- isShowNewPassword = _useForgotPassword.isShowNewPassword,
38561
- setIsShowNewPassword = _useForgotPassword.setIsShowNewPassword,
38562
- isShowReTypePassword = _useForgotPassword.isShowReTypePassword,
38563
- setIsShowReTypePassword = _useForgotPassword.setIsShowReTypePassword,
38564
- initialValues = _useForgotPassword.initialValues;
38615
+ var initInformationSSO = function initInformationSSO() {
38616
+ try {
38617
+ var _msalInstance = new msalBrowser.PublicClientApplication(msalConfig);
38565
38618
 
38566
- return React__default.createElement(formik.Formik, {
38567
- initialValues: initialValues,
38568
- enableReinitialize: true,
38569
- validationSchema: resetPasswordSchema,
38570
- onSubmit: function onSubmit(values) {
38571
- resetPasswordRequest(values);
38619
+ setMsalInstance(_msalInstance);
38620
+ return Promise.resolve();
38621
+ } catch (e) {
38622
+ return Promise.reject(e);
38572
38623
  }
38573
- }, function (formikProps) {
38574
- var setFieldValue = formikProps.setFieldValue,
38575
- handleSubmit = formikProps.handleSubmit,
38576
- touched = formikProps.touched,
38577
- errors = formikProps.errors,
38578
- values = formikProps.values;
38579
- return React__default.createElement(reactstrap.Row, {
38580
- className: "" + styles["box-login"]
38581
- }, React__default.createElement(reactstrap.Col, {
38582
- className: "p-0"
38583
- }, React__default.createElement("div", {
38584
- className: "" + styles["block-login"]
38585
- }, React__default.createElement("div", {
38586
- className: "" + styles["block-form"]
38587
- }, React__default.createElement("img", {
38588
- src: "" + getStaticFileUrl("/images/horizontal-logo-blue.svg"),
38589
- className: "" + styles["img-login-rectangle"]
38590
- }), React__default.createElement("p", {
38591
- className: "" + styles["title-login"]
38592
- }, "Reset Password"), React__default.createElement("div", {
38593
- className: "w-100"
38594
- }, validLink ? React__default.createElement(React__default.Fragment, null, React__default.createElement(reactstrap.FormGroup, {
38595
- className: "" + styles["form-user-name"]
38596
- }, React__default.createElement(reactstrap.Input, {
38597
- disabled: true,
38598
- type: "text",
38599
- name: "email",
38600
- placeholder: "Email",
38601
- value: values.email,
38602
- autocomplete: "email",
38603
- required: true,
38604
- className: "" + styles["input"]
38605
- })), React__default.createElement("div", {
38606
- className: "" + styles["form-user-name"]
38607
- }, React__default.createElement(PasswordInput, {
38608
- isShowPassword: isShowNewPassword,
38609
- togglePasswordVisible: function togglePasswordVisible() {
38610
- return setIsShowNewPassword(!isShowNewPassword);
38611
- },
38612
- onChange: function onChange(e) {
38613
- return setFieldValue("password", e.target.value);
38614
- }
38615
- }), touched.password && errors.password && React__default.createElement(ErrorHandler, {
38616
- text: errors.password
38617
- })), React__default.createElement("div", {
38618
- className: "" + styles["form-user-name"]
38619
- }, React__default.createElement(PasswordInput, {
38620
- placeholder: "Confirm Password",
38621
- isShowPassword: isShowReTypePassword,
38622
- togglePasswordVisible: function togglePasswordVisible() {
38623
- return setIsShowReTypePassword(!isShowReTypePassword);
38624
- },
38625
- onChange: function onChange(e) {
38626
- return setFieldValue("reEnterPassword", e.target.value);
38627
- }
38628
- }), touched.reEnterPassword && errors.reEnterPassword && React__default.createElement(ErrorHandler, {
38629
- text: errors.reEnterPassword
38630
- }))) : React__default.createElement(React__default.Fragment, null, React__default.createElement("p", {
38631
- className: styles["recover-account"] + " mb-5"
38632
- }, "Invalid reset password link"), React__default.createElement("p", {
38633
- className: "w-100"
38634
- }, "It may have been accessed before or expired or you have just tried to reset another account's password"))), validLink && React__default.createElement(reactstrap.Col, {
38635
- className: "p-0"
38636
- }, React__default.createElement("button", {
38637
- className: styles["btn-login"] + " " + styles["btn-rounder"] + " mt-4",
38638
- onClick: function onClick() {
38639
- return handleSubmit();
38640
- }
38641
- }, "SET A NEW PASSWORD"))))), React__default.createElement(reactstrap.Col, {
38642
- lg: 4,
38643
- md: 4,
38644
- className: "" + styles["img-box"]
38645
- }, React__default.createElement("img", {
38646
- src: getStaticFileUrl("/images/img-login.png"),
38647
- className: "" + styles["img-login"]
38648
- })));
38649
- });
38624
+ };
38625
+
38626
+ React.useEffect(function () {
38627
+ var redirectUrl = window.location.href;
38628
+
38629
+ if (!!msalInstance && redirectUrl.includes("code") && redirectUrl.includes("client_info")) {
38630
+ fnLoginSSO();
38631
+ }
38632
+ }, [JSON.stringify(msalInstance)]);
38633
+ React.useEffect(function () {
38634
+ getInformationSetting();
38635
+ initInformationSSO();
38636
+ getSchoolInfo();
38637
+ }, []);
38638
+ return {
38639
+ defaultInfo: defaultInfo$1,
38640
+ userLogin: userLogin,
38641
+ openLogin: openLogin,
38642
+ toggle: toggle,
38643
+ isShowPassword: isShowPassword,
38644
+ setIsShowPassword: setIsShowPassword,
38645
+ fnIsCheckLogin: fnIsCheckLogin,
38646
+ isLoginGoogle: isLoginGoogle,
38647
+ infoUser: infoUser,
38648
+ submitLogin: submitLogin,
38649
+ googleClientId: googleClientId,
38650
+ googleRecaptchaId: googleRecaptchaId,
38651
+ handleCancelModelAssign: handleCancelModelAssign,
38652
+ openModelAssign: openModelAssign,
38653
+ fnLoginSSO: fnLoginSSO,
38654
+ school: school
38655
+ };
38650
38656
  };
38651
38657
 
38652
38658
  var DASHBOARD$1 = "/";
@@ -38898,7 +38904,14 @@ var Login = function Login(props) {
38898
38904
  googleRecaptchaId = _useLogin.googleRecaptchaId,
38899
38905
  handleCancelModelAssign = _useLogin.handleCancelModelAssign,
38900
38906
  school = _useLogin.school,
38901
- openModelAssign = _useLogin.openModelAssign;
38907
+ openModelAssign = _useLogin.openModelAssign,
38908
+ setIsShowPassword = _useLogin.setIsShowPassword,
38909
+ fnIsCheckLogin = _useLogin.fnIsCheckLogin,
38910
+ isLoginGoogle = _useLogin.isLoginGoogle,
38911
+ submitLogin = _useLogin.submitLogin,
38912
+ infoUser = _useLogin.infoUser,
38913
+ googleClientId = _useLogin.googleClientId,
38914
+ isShowPassword = _useLogin.isShowPassword;
38902
38915
 
38903
38916
  React.useEffect(function () {
38904
38917
  isLogin && (document.title = LOGIN_TITLE);
@@ -38927,7 +38940,14 @@ var Login = function Login(props) {
38927
38940
  defaultInfo: defaultInfo,
38928
38941
  onCancelModelAssign: handleCancelModelAssign,
38929
38942
  openModelAssign: openModelAssign,
38930
- school: school
38943
+ school: school,
38944
+ fnIsCheckLogin: fnIsCheckLogin,
38945
+ googleClientId: googleClientId,
38946
+ infoUser: infoUser,
38947
+ isLoginGoogle: isLoginGoogle,
38948
+ isShowPassword: isShowPassword,
38949
+ setIsShowPassword: setIsShowPassword,
38950
+ submitLogin: submitLogin
38931
38951
  }), isForgotPassword && React__default.createElement(BlockForgetPassword, {
38932
38952
  school: school
38933
38953
  })), isResetPassword && React__default.createElement(BlockResetPassword, null), isCreatePassword && React__default.createElement(BlockCreatePassword, null), React__default.createElement("a", {
@@ -43633,32 +43653,12 @@ var TeacherSelector = function TeacherSelector(_ref) {
43633
43653
  var options = _ref.options,
43634
43654
  isDisabled = _ref.isDisabled,
43635
43655
  scrollBottom = _ref.scrollBottom,
43636
- onCreateOption = _ref.onCreateOption,
43637
43656
  rest = _objectWithoutPropertiesLoose(_ref, ["options", "isDisabled", "scrollBottom", "onCreateOption"]);
43638
43657
 
43639
43658
  var _useState = React.useState(),
43640
43659
  errorMessage = _useState[0],
43641
43660
  setErrorMessage = _useState[1];
43642
43661
 
43643
- var validateEmail = function validateEmail(email) {
43644
- return String(email).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
43645
- };
43646
-
43647
- var handleCreateTeacherOption = function handleCreateTeacherOption(newTeacherEmail) {
43648
- if (!validateEmail(newTeacherEmail)) {
43649
- setErrorMessage("Invalid email format for email: " + newTeacherEmail);
43650
- return;
43651
- } else {
43652
- setErrorMessage(undefined);
43653
- }
43654
-
43655
- var newTeacher = {
43656
- label: newTeacherEmail,
43657
- value: -new Date().getTime()
43658
- };
43659
- onCreateOption === null || onCreateOption === void 0 ? void 0 : onCreateOption(newTeacher);
43660
- };
43661
-
43662
43662
  var handleFocus = function handleFocus() {
43663
43663
  setErrorMessage(undefined);
43664
43664
  };
@@ -43671,7 +43671,6 @@ var TeacherSelector = function TeacherSelector(_ref) {
43671
43671
  isDisabled: isDisabled,
43672
43672
  options: options,
43673
43673
  menuPlacement: scrollBottom ? "top" : "auto",
43674
- onCreateOption: handleCreateTeacherOption,
43675
43674
  onFocus: handleFocus
43676
43675
  }, rest))), !!errorMessage && React__default.createElement("p", {
43677
43676
  className: "text-danger mb-0 mt-1"
@@ -44367,28 +44366,24 @@ var AssignStudentList = function AssignStudentList() {
44367
44366
  var _useTeacherList = useTeacherList(),
44368
44367
  selectedTeachers = _useTeacherList.selectedTeachers,
44369
44368
  teacherOptions = _useTeacherList.teacherOptions,
44370
- handleCreateTeacherOption = _useTeacherList.handleCreateTeacherOption,
44371
44369
  handleSelectTeacher = _useTeacherList.handleSelectTeacher,
44372
44370
  setSelectedTeachers = _useTeacherList.setSelectedTeachers;
44373
44371
 
44374
44372
  var _useAssistantList = useAssistantList(),
44375
44373
  selectedAssistants = _useAssistantList.selectedAssistants,
44376
44374
  assistantOptions = _useAssistantList.assistantOptions,
44377
- handleCreateAssistantOption = _useAssistantList.handleCreateAssistantOption,
44378
44375
  handleSelectAssistant = _useAssistantList.handleSelectAssistant,
44379
44376
  setSelectedAssistants = _useAssistantList.setSelectedAssistants;
44380
44377
 
44381
44378
  var _useCounselorList = useCounselorList(),
44382
44379
  selectedCounselors = _useCounselorList.selectedCounselors,
44383
44380
  counselorOptions = _useCounselorList.counselorOptions,
44384
- handleCreateCounselorOption = _useCounselorList.handleCreateCounselorOption,
44385
44381
  handleSelectCounselor = _useCounselorList.handleSelectCounselor,
44386
44382
  setSelectedCounselors = _useCounselorList.setSelectedCounselors;
44387
44383
 
44388
44384
  var _useSecondaryTeacherL = useSecondaryTeacherList(),
44389
44385
  selectedSecondaryTeachers = _useSecondaryTeacherL.selectedSecondaryTeachers,
44390
44386
  secondaryTeacherOptions = _useSecondaryTeacherL.secondaryTeacherOptions,
44391
- handleCreateSecondaryTeacherOption = _useSecondaryTeacherL.handleCreateSecondaryTeacherOption,
44392
44387
  handleSelectSecondaryTeacher = _useSecondaryTeacherL.handleSelectSecondaryTeacher,
44393
44388
  setSelectedSecondaryTeachers = _useSecondaryTeacherL.setSelectedSecondaryTeachers;
44394
44389
 
@@ -44523,7 +44518,6 @@ var AssignStudentList = function AssignStudentList() {
44523
44518
  return handleChangeStaffBulk("teacherId", e.value);
44524
44519
  },
44525
44520
  onCreateOption: function onCreateOption(value) {
44526
- handleCreateTeacherOption(value, "");
44527
44521
  handleChangeStaffBulk("teacherEmail", value.label);
44528
44522
  },
44529
44523
  placeholder: t("select_teacher"),
@@ -44537,7 +44531,6 @@ var AssignStudentList = function AssignStudentList() {
44537
44531
  return handleChangeStaffBulk("assistantId", e.value);
44538
44532
  },
44539
44533
  onCreateOption: function onCreateOption(value) {
44540
- handleCreateAssistantOption(value, "");
44541
44534
  handleChangeStaffBulk("assistantEmail", value.label);
44542
44535
  },
44543
44536
  placeholder: t("select_assistant"),
@@ -44551,7 +44544,6 @@ var AssignStudentList = function AssignStudentList() {
44551
44544
  return handleChangeStaffBulk("counselorId", e.value);
44552
44545
  },
44553
44546
  onCreateOption: function onCreateOption(value) {
44554
- handleCreateCounselorOption(value, "");
44555
44547
  handleChangeStaffBulk("counselorEmail", value.label);
44556
44548
  },
44557
44549
  placeholder: t("select_counselor"),
@@ -44565,7 +44557,6 @@ var AssignStudentList = function AssignStudentList() {
44565
44557
  return handleChangeStaffBulk("secondaryTeacherId", e.value);
44566
44558
  },
44567
44559
  onCreateOption: function onCreateOption(value) {
44568
- handleCreateSecondaryTeacherOption(value, "");
44569
44560
  handleChangeStaffBulk("secondaryTeacherEmail", value.label);
44570
44561
  },
44571
44562
  placeholder: t("select_support_teacher"),
@@ -44660,9 +44651,6 @@ var AssignStudentList = function AssignStudentList() {
44660
44651
  return i.value;
44661
44652
  }), item.id);
44662
44653
  },
44663
- onCreateOption: function onCreateOption(value) {
44664
- return handleCreateTeacherOption(value, item.id, true);
44665
- },
44666
44654
  placeholder: t("select_teacher"),
44667
44655
  className: "flex-grow-1 mr-2"
44668
44656
  })), React__default.createElement("td", {
@@ -44677,9 +44665,6 @@ var AssignStudentList = function AssignStudentList() {
44677
44665
  onChange: function onChange(e) {
44678
44666
  return handleSelectAssistant(e.value, item.id);
44679
44667
  },
44680
- onCreateOption: function onCreateOption(value) {
44681
- return handleCreateAssistantOption(value, item.id, true);
44682
- },
44683
44668
  placeholder: t("select_assistant"),
44684
44669
  className: "flex-grow-1 mr-2"
44685
44670
  })), React__default.createElement("td", {
@@ -44694,9 +44679,6 @@ var AssignStudentList = function AssignStudentList() {
44694
44679
  onChange: function onChange(e) {
44695
44680
  return handleSelectCounselor(e.value, item.id);
44696
44681
  },
44697
- onCreateOption: function onCreateOption(value) {
44698
- return handleCreateCounselorOption(value, item.id, true);
44699
- },
44700
44682
  placeholder: t("select_counselor"),
44701
44683
  className: "flex-grow-1 mr-2"
44702
44684
  })), React__default.createElement("td", {
@@ -44711,9 +44693,6 @@ var AssignStudentList = function AssignStudentList() {
44711
44693
  onChange: function onChange(e) {
44712
44694
  return handleSelectSecondaryTeacher(e.value, item.id);
44713
44695
  },
44714
- onCreateOption: function onCreateOption(value) {
44715
- return handleCreateSecondaryTeacherOption(value, item.id, true);
44716
- },
44717
44696
  placeholder: t("select_support_teacher"),
44718
44697
  className: "flex-grow-1 mr-2"
44719
44698
  })), React__default.createElement("td", {
@@ -45708,12 +45687,17 @@ var UserDetail = function UserDetail() {
45708
45687
  return handleToggleModel();
45709
45688
  }
45710
45689
  }, React__default.createElement(reactstrap.ModalHeader, null, "Assign Teacher"), React__default.createElement(reactstrap.ModalBody, null, React__default.createElement(TeacherSelector, {
45711
- value: teacherOptions.find(function (r) {
45712
- return r.value == values.teacherUserId;
45690
+ isMulti: true,
45691
+ value: teacherOptions.filter(function (r) {
45692
+ var _values$teacherUserId;
45693
+
45694
+ return (_values$teacherUserId = values.teacherUserId) === null || _values$teacherUserId === void 0 ? void 0 : _values$teacherUserId.includes(r.value);
45713
45695
  }) || null,
45714
45696
  options: teacherOptions,
45715
45697
  onChange: function onChange(e) {
45716
- return setFieldValue("teacherUserId", e.value);
45698
+ return setFieldValue("teacherUserId", e.map(function (i) {
45699
+ return i.value;
45700
+ }));
45717
45701
  },
45718
45702
  placeholder: t("select_teacher"),
45719
45703
  className: "flex-grow-1 mb-3"