????
Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/ |
Current File : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/7214.e266edf5.chunk.js.map |
{"version":3,"file":"static/js/7214.e266edf5.chunk.js","mappings":"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","sources":["views/base/user-profile/ChangePasswordModal.js","../.yarn/__virtual__/reactstrap-virtual-4c869ece7a/6/root/.yarn/berry/cache/reactstrap-npm-8.10.1-e3a658744a-10c0.zip/node_modules/reactstrap/es/Card.js","hooks/useForm.js","views/login/index.js","../.yarn/__virtual__/reactstrap-virtual-4c869ece7a/6/root/.yarn/berry/cache/reactstrap-npm-8.10.1-e3a658744a-10c0.zip/node_modules/reactstrap/es/CardTitle.js"],"sourcesContent":["import Modal from \"reactstrap/lib/Modal\";\nimport ModalHeader from \"reactstrap/lib/ModalHeader\";\nimport ModalBody from \"reactstrap/lib/ModalBody\";\nimport React, { useCallback, useMemo } from \"react\";\nimport \"./style.scss\";\nimport { ALERT_SUCCESS, ALERT_ERROR } from '../../../components/alert/Alert';\nimport useForm from \"../../../hooks/useForm\";\nimport { Button } from \"reactstrap\";\nimport { UsersEndpoint } from \"../../../service/Identities\";\n\nfunction scorePassword(pass) {\n let score = 0;\n if (!pass)\n return score;\n\n // award every unique letter until 5 repetitions\n const letters = {};\n for (let i = 0; i < pass.length; i++) {\n letters[pass[i]] = (letters[pass[i]] || 0) + 1;\n score += 5.0 / letters[pass[i]];\n }\n\n // bonus points for mixing it up\n const variations = {\n digits: /\\d/.test(pass),\n lower: /[a-z]/.test(pass),\n upper: /[A-Z]/.test(pass),\n nonWords: /\\W/.test(pass),\n };\n\n let variationCount = 0;\n for (const check in variations) {\n variationCount += (variations[check] === true) ? 1 : 0;\n }\n score += (variationCount - 1) * 10;\n\n return parseInt(score.toString());\n}\n\nconst VALID_FEEDBACK_PLACEHOLDER = \" \"\n\nfunction ChangePasswordModal({ isOpen, toggle, status = false }) {\n\n const { handleInput, formValue, setFormValue } = useForm()\n const { OldPassword = \"\", NewPassword = \"\", reNewPassword = \"\" } = formValue || {}\n\n const renderRePwValidFeedback = useMemo(() => {\n if (!reNewPassword || !NewPassword) return <div className={\"valid-feedback\"}>{VALID_FEEDBACK_PLACEHOLDER}</div>\n if (reNewPassword !== NewPassword) return <div className={\"valid-feedback text-warning\"}>\n Mật khẩu không khớp\n </div>\n if (reNewPassword === NewPassword) return <div className={\"valid-feedback text-success\"}>\n Mật khẩu khớp\n </div>\n return <div className={\"valid-feedback\"}>{VALID_FEEDBACK_PLACEHOLDER}</div>\n }, [NewPassword, reNewPassword])\n\n const renderPasswordSecurityFeedback = useMemo(() => {\n if (!NewPassword) return <div className={\"valid-feedback\"}>{VALID_FEEDBACK_PLACEHOLDER}</div>\n const securityScore = scorePassword(NewPassword)\n if (securityScore > 80) return <div className={\"valid-feedback text-success mt-0\"}>Mạnh</div>\n if (securityScore > 60) return <div className={\"valid-feedback text-warning mt-0\"}>Vừa</div>\n if (securityScore <= 60) return <div className={\"valid-feedback text-danger mt-0\"}>Yếu</div>\n return <div className={\"valid-feedback\"}>{VALID_FEEDBACK_PLACEHOLDER}</div>\n }, [NewPassword])\n\n const changePassword = useCallback((e) => {\n e.preventDefault()\n const handleSuccess = () => {\n setFormValue(null)\n ALERT_SUCCESS(\"Đổi mật khẩu thành công!\", \"Thành công\");\n }\n const handleError = () => ALERT_ERROR(\"Đổi mật khẩu thất bại. Vui lòng thử lại\", \"Thất bại\")\n const delayClose = () => { if (!status) setTimeout(toggle, 300) }\n\n UsersEndpoint\n .changePassword(formValue)\n .then(handleSuccess)\n .then(() => { if (status) window.location.reload() })\n .then(delayClose)\n .catch(handleError)\n }, [formValue, toggle, setFormValue, status])\n\n return <Modal {...{ isOpen, toggle }} size={\"lg\"}>\n <ModalHeader>\n {status ? 'Đổi mật khẩu trước khi vào hệ thống' : 'Đổi mật khẩu'}\n </ModalHeader>\n <ModalBody>\n <form className={\"m-user-profile-container\"}\n onSubmit={changePassword}>\n <input hidden />\n <div className=\"form-group row\">\n <label htmlFor=\"OldPassword\"\n className=\"col-sm-3 col-form-label\">Mật khẩu cũ</label>\n <div className=\"col-sm-9\">\n <input type=\"password\"\n autoComplete={\"off\"}\n required\n onChange={handleInput}\n className=\"form-control\"\n id=\"OldPassword\"\n name={\"OldPassword\"}\n value={OldPassword} />\n </div>\n </div>\n\n <div className=\"form-group row\">\n <label htmlFor=\"NewPassword\"\n className=\"col-sm-3 col-form-label\">Mật khẩu mới\n </label>\n <div className=\"col-sm-9\">\n <input type=\"password\" className=\"form-control\"\n required\n autoComplete={\"new-password\"}\n minLength={6}\n maxLength={20}\n id=\"NewPassword\"\n onChange={handleInput}\n name={\"NewPassword\"}\n value={NewPassword} />\n <div className={\"d-flex valid-feedback\"}>\n <div className={\"text-muted flex-grow-1\"}>Mật khẩu ít nhất 6 kí tự và nên\n chứa chữ cái in\n hoa,số\n và kí tự đặc biệt\n </div>\n <div className={\"ml-2\"}>\n {renderPasswordSecurityFeedback}\n </div>\n </div>\n </div>\n </div>\n <div className=\"form-group row\">\n <label htmlFor=\"reNewPassword\"\n className=\"col-sm-3 col-form-label\">Nhập lại mật khẩu mới</label>\n <div className=\"col-sm-9\">\n <input type=\"password\"\n autoComplete={\"new-password\"}\n className=\"form-control\"\n required\n id=\"reNewPassword\"\n onChange={handleInput}\n name={\"reNewPassword\"}\n value={reNewPassword}\n />\n {renderRePwValidFeedback}\n </div>\n </div>\n <div className={\"d-flex justify-content-end\"}>\n <Button color={\"danger\"} type={\"button\"} onClick={toggle}>Hủy</Button>\n <Button color={\"primary\"}\n type={\"submit\"}\n className={\"ml-2\"}\n {...reNewPassword === \"\" ||\n NewPassword === \"\" ||\n (reNewPassword !== NewPassword)\n ? { disabled: true } : {}}>Cập nhật\n </Button>\n </div>\n </form>\n </ModalBody>\n </Modal>\n}\n\nexport default React.memo(ChangePasswordModal)\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"color\", \"body\", \"inverse\", \"outline\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n inverse: PropTypes.bool,\n color: PropTypes.string,\n body: PropTypes.bool,\n outline: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Card = function Card(props) {\n var className = props.className,\n cssModule = props.cssModule,\n color = props.color,\n body = props.body,\n inverse = props.inverse,\n outline = props.outline,\n Tag = props.tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card', inverse ? 'text-white' : false, body ? 'card-body' : false, color ? (outline ? 'border' : 'bg') + \"-\" + color : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n};\n\nCard.propTypes = propTypes;\nCard.defaultProps = defaultProps;\nexport default Card;","import {useCallback, useState} from \"react\";\n\nfunction useForm(initialForm = null) {\n const [formValue, setFormValue] = useState(() => initialForm)\n\n const handleInput = useCallback(\n ({target: {name, value}}) =>\n setFormValue(prevState => ({...prevState, [name]: value})), [])\n\n return {formValue, handleInput, setFormValue}\n\n}\n\nexport default useForm\n","import { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { Input, Button, Card, CardBody, CardTitle, Col } from 'reactstrap';\nimport { ALERT_ERROR } from '../../components/alert/Alert';\nimport Cookies from 'js-cookie';\nimport { ID_TOKEN_INFO } from '../../actions/constants';\nimport './style.scss'\nimport { ViewImage } from '../../others';\nimport { UsersEndpoint } from '../../service/Identities';\nimport ChangePasswordModal from '../base/user-profile/ChangePasswordModal';\n\nconst FormLogin = () => {\n const [username, setUsername] = useState('');\n const [password, setPassWord] = useState('');\n const [isButtonDisabled, setIsButtonDisabled] = useState(true);\n\n const [isOpenChangePasswordModal, setIsOpenChangePasswordModal] = useState(false)\n const toggleChangePwModal = useCallback(() => {\n Cookies.remove('GDTQLXD');\n localStorage.removeItem(ID_TOKEN_INFO);\n setIsOpenChangePasswordModal(prevState => !prevState)\n }, [])\n\n // Kiểm tra cookie\n useLayoutEffect(() => {\n if (Cookies.get('GDTQLXD')) window.location.replace('/admin');\n }, []);\n // Tắt nút đăng nhập khi chưa điền đầy đủ thông tin\n useEffect(() => {\n if (username.trim() && password.trim()) {\n setIsButtonDisabled(false);\n } else {\n setIsButtonDisabled(true);\n }\n }, [username, password]);\n\n const handleLogin = async e => {\n e.preventDefault()\n try {\n const loginRes = await UsersEndpoint.loginAccount({ username, password })\n Cookies.set('GDTQLXD', loginRes.ResultObj);\n const accountRes = await UsersEndpoint.getDetail();\n localStorage.setItem(ID_TOKEN_INFO, JSON.stringify({ ...accountRes.ResultObj, username }));\n const isChangePassRes = await UsersEndpoint.isChangePass()\n if (!isChangePassRes.ResultObj && username !== 'admin') {\n setIsOpenChangePasswordModal(true)\n } else {\n window.location.replace('admin');\n }\n } catch (err) {\n try {\n err.json().then(err => ALERT_ERROR(err.Message || err));\n } catch {\n ALERT_ERROR(err.Message || err);\n }\n }\n }\n\n /**\n * Xử lý đăng nhập\n * @type {(event: import('react').FormEvent<HTMLElement>) => void}\n */\n // const handleLogin = useCallback((e) => {\n // e.preventDefault();\n // UsersEndpoint.loginAccount({ username: username, password: password })\n // .then(res => {\n // console.log(res)\n // if (res.IsSuccessed) {\n // Cookies.set('GDTQLXD', res.ResultObj);\n // localStorage.setItem(ID_TOKEN_INFO, JSON.stringify({\n // display_Name: 'Admin',\n // }));\n // UsersEndpoint.isChangePass().then(res => {\n // if (!res.ResultObj && username !== 'admin') {\n // setIsOpenChangePasswordModal(true)\n // } else {\n // // window.location.replace('admin');\n // }\n // })\n // }\n // }).catch(err => {\n // try {\n // err.json().then(err => ALERT_ERROR(err.Message || err));\n // } catch {\n // ALERT_ERROR(err.Message || err);\n // }\n // })\n // }, [password, username])\n\n return (\n <div className=\"main-login\">\n <div className=\"\"></div>\n <div className=\"flex-fill d-flex flex-column justify-content-center py-4\">\n <div className=\"row container-tight modal-login\">\n <Col md='5'>\n {/* className=\"avatar avatar-xl img-thumbnail shadow bg-yellow-lt\" */}\n <ViewImage\n concat={`/assets/img/logoHris.png`}\n width={\"auto\"} height={70} alt={process.env.REACT_APP_WEBSITE_NAME || 'GDT Solutions'}\n />\n <h3 className=\"text-center mb-4 page-title text-header\">\n PHẦN MỀM<br></br> QUẢN LÝ THẦU XÂY DỰNG\n </h3>\n <span className=\"hr-text\" style={{ color: 'blue' }}>----★----</span>\n <h4 className=\"text-center mb-4 page-title text-header\">\n </h4>\n </Col>\n <Col md='7' className=\"form-login\">\n <Card tag=\"form\" className=\"card-md\" onSubmit={handleLogin}>\n <CardBody>\n <CardTitle className=\"text-center mb-4\"><h1 className=\"label-login\">ĐĂNG NHẬP</h1> </CardTitle>\n <div className=\"form-floating mb-3\">\n <Input type=\"text\" value={username} id=\"login-user\"\n placeholder=\"Nhập tên đăng nhập\"\n onChange={(e) => setUsername(e.target.value)}\n autoFocus required>\n </Input>\n <label htmlFor=\"login-user\"><i className=\"fas fa-user mr-2\"></i>Tên đăng nhập</label>\n </div>\n <div className=\"form-floating\">\n <Input type=\"password\" value={password} id=\"login-pass\"\n placeholder=\"Nhập mật khẩu\"\n onChange={(e) => setPassWord(e.target.value)}\n required>\n </Input>\n <label htmlFor=\"login-pass\"><i className=\"fas fa-lock mr-2\"></i> Mật khẩu</label>\n </div>\n <span className=\"hr-text\" style={{ color: 'blue' }}>★★★★★</span>\n <div className=\"form-footer\">\n <Button className=\"btn-square btn-login\" type=\"submit\" block size=\"lg\" disabled={isButtonDisabled}>\n <span>Đăng nhập</span>\n </Button>\n </div>\n </CardBody>\n </Card>\n </Col>\n </div>\n </div>\n\n <ChangePasswordModal\n isOpen={isOpenChangePasswordModal}\n toggle={toggleChangePwModal}\n status={true}\n />\n </div>\n );\n}\n\nexport default FormLogin;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"tag\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar CardTitle = function CardTitle(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n var classes = mapToCssModules(classNames(className, 'card-title'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCardTitle.propTypes = propTypes;\nCardTitle.defaultProps = defaultProps;\nexport default CardTitle;"],"names":["VALID_FEEDBACK_PLACEHOLDER","ChangePasswordModal","_ref","isOpen","toggle","status","handleInput","formValue","setFormValue","useForm","OldPassword","NewPassword","reNewPassword","renderRePwValidFeedback","useMemo","_jsx","className","children","renderPasswordSecurityFeedback","securityScore","pass","score","letters","i","length","variations","digits","test","lower","upper","nonWords","variationCount","check","parseInt","toString","scorePassword","changePassword","useCallback","e","preventDefault","UsersEndpoint","then","handleSuccess","ALERT_SUCCESS","window","location","reload","delayClose","setTimeout","catch","handleError","ALERT_ERROR","_jsxs","Modal","size","ModalHeader","ModalBody","onSubmit","hidden","htmlFor","type","autoComplete","required","onChange","id","name","value","minLength","maxLength","Button","color","onClick","disabled","React","_excluded","propTypes","tag","tagPropType","inverse","PropTypes","body","outline","cssModule","innerRef","Card","props","Tag","attributes","_objectWithoutPropertiesLoose","classes","mapToCssModules","classNames","_extends","ref","defaultProps","initialForm","arguments","undefined","useState","target","prevState","FormLogin","username","setUsername","password","setPassWord","isButtonDisabled","setIsButtonDisabled","isOpenChangePasswordModal","setIsOpenChangePasswordModal","toggleChangePwModal","Cookies","remove","localStorage","removeItem","ID_TOKEN_INFO","useLayoutEffect","get","replace","useEffect","trim","Col","md","ViewImage","concat","width","height","alt","process","style","async","loginRes","loginAccount","set","ResultObj","accountRes","getDetail","setItem","JSON","stringify","isChangePass","err","json","Message","CardBody","CardTitle","Input","placeholder","autoFocus","block"],"sourceRoot":""}