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