????

Your IP : 216.73.216.152


Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/
Upload File :
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":""}