{"version":3,"sources":["webpack:///./@core/components/LoadingBar.vue?4905","webpack:///./@core/components/LoadingBar.vue","webpack:///./@core/components/LoadingBar.vue?3870","webpack:///./@core/components/LoadingBar.vue?02aa","webpack:///./@core/components/LoadingBar.vue?28f5","webpack:///./@core/pages/Login.vue?cdcc","webpack:///./@core/pages/LoginMixin.ts","webpack:///./@core/pages/SingPassLoginQR.vue?fe74","webpack:///./@core/pages/SingpassLoginQRMixin.ts","webpack:///./@core/pages/SingPassLoginQR.vue","webpack:///./@core/pages/SingPassLoginQR.vue?bdce","webpack:///./@core/pages/SingPassLoginQR.vue?09a0","webpack:///./@core/pages/AdminLogin.vue?ab94","webpack:///./@core/pages/RequestResetPassword.vue?22b2","webpack:///./@core/pages/RequestResetPassword.vue","webpack:///./@core/pages/RequestResetPassword.vue?fec3","webpack:///./@core/pages/RequestResetPassword.vue?f8a8","webpack:///./@core/pages/AdminLoginMixin.ts","webpack:///./@core/pages/AdminLogin.vue","webpack:///./@core/pages/AdminLogin.vue?ce71","webpack:///./@core/pages/AdminLogin.vue?f1be","webpack:///./@core/pages/Login.vue","webpack:///./@core/pages/Login.vue?8e60","webpack:///./@core/pages/Login.vue?d7d7","webpack:///./@core/pages/SingPassLoginQR.vue?1f4f","webpack:///./@core/pages/AdminLogin.vue?c718","webpack:///./@core/pages/RequestResetPassword.vue?5622","webpack:///./@core/pages/Login.vue?6363"],"names":["render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","staticClass","component","on","redirectHome","loginNotice","username","password","disabled","$store","getters","currentUser","console","log","checkLogin","options","headers","$api","account","login","accountName","accountPass","then","response","isLogin","accountNames","error","length","uiService","alert","show","type","message","info","catch","finally","getAccountInfo","accountID","getAccountMeta","meta","dispatch","systemrole","getAccountLogin","loginGet","accountId","loginInfoGet","loginMetaGet","_oid","role","page","redirectPath","$router","currentRoute","query","redirect_uri","window","location","href","toString","push","name","components","LoadingBar","_v","_s","attrs","isLoading","url","Promise","resolve","reject","script","document","createElement","setAttribute","head","appendChild","addEventListener","sharedVariable","$route","all","singpassSettings","loadExternalScript","authParams","clientId","redirectUri","responseType","scope","authParamsSupplier","state","nonce","onError","errorId","result","NDI","initAuthSession","logout","$emit","projectInfo","brandName","_e","$event","preventDefault","onSubmit","_t","directives","rawName","value","expression","domProps","onFocusInput","onBlurInput","target","composing","singpassUrl","showOtp","slot","email","otpPrefix","indexOf","_k","keyCode","key","onSubmitOtp","apply","arguments","otpToken","otpNotice","isResendDisabled","onResend","timer","showResetForm","resetForm","userName","requestReset","sf","getToken","res","sent","AppDialog","userStore","otp","isSingpass","otpState","getSystemInformation","getSingpassSetting","projectSettings","displayBrandInLogin","system","information","singpassLogin","singpass_login","login_otp","otpRequest","prefix","countDownTimer","setTimeout","otpRefresh","otpLogin","token","userList","fetchUserList","e","previousSibling","classList","add","remove","State","Action","RequestResetPassword","SingPassLoginQR","AdminLogin"],"mappings":"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","file":"js/chunk-4e768ea2.6032a942.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-bar\"},[_c('div',{staticClass:\"percentage\"})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\n\n@Component\nexport default class LoadingBar extends Vue {\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoadingBar.vue?vue&type=template&id=6cea96ee&scoped=true&\"\nimport script from \"./LoadingBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoadingBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoadingBar.vue?vue&type=style&index=0&id=6cea96ee&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6cea96ee\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingBar.vue?vue&type=style&index=0&id=6cea96ee&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page-login\"},[_c('div',{staticClass:\"logo\"}),_c('div',{staticClass:\"single-box login-box\"},[_c('AdminLogin',{on:{\"redirect\":_vm.redirectHome}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable @typescript-eslint/camelcase */\nimport { Component, Vue } from 'vue-property-decorator'\nimport { isUndefined, isNull } from 'lodash/fp'\nimport LoadingBar from '@core/components/LoadingBar.vue'\nimport { inject } from 'inversify-props'\nimport API from '@core/services/API'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\n\n@Component({\n components: {\n LoadingBar\n }\n})\nexport class LoginMixin extends Vue {\n private loginNotice = ''\n private username = ''\n private password = ''\n private disabled = false\n\n @inject()\n private $api: API\n\n @inject()\n private projectInfo: IProjectInfo\n\n uiService: UIService\n\n @inject()\n private sharedVariable: SharedVariable\n\n get currentUser () {\n return this.$store.getters.currentUser\n }\n\n async mounted () {\n console.log('Login page.')\n // When login page is loaded, check if the user is logged in or not\n this.checkLogin()\n }\n\n async onSubmit () {\n this.disabled = true\n const options = {\n headers:\n {\n 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'\n }\n }\n const login = await this.$api.account.login({\n accountName: this.username,\n accountPass: this.password\n }, options)\n .then(async response => {\n if (response && response.isLogin) {\n this.loginNotice = 'Login successful, welcome ' + response.accountNames[0]\n return response\n }\n\n if (response.error) {\n if (response.error.length > 100) {\n console.error('login.js: response error', response.error)\n this.loginNotice = 'Login Exception'\n await this.uiService.alert.show({\n type: 'error',\n message: response.error\n })\n } else {\n console.info('login.js: Failed', response.error)\n this.loginNotice = response.error\n }\n } else {\n console.info('login.js: Failed', response)\n this.loginNotice = 'Login Failed (wrong password?)'\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n .finally(() => {\n this.disabled = false\n })\n\n if (!isNull(login) && !isUndefined(login)) {\n const info = await this.getAccountInfo(login.accountID)\n const meta = await this.getAccountMeta(login.accountID)\n await this.$store.dispatch('login', { ...login, ...info, ...meta })\n\n // After the account info has been retrieved,\n // redirect the user to the page\n this.redirectHome(meta.systemrole)\n }\n }\n\n async checkLogin () {\n const login = await this.getAccountLogin()\n\n if (!isNull(login) && !isUndefined(login)) {\n console.log(`Welcome ${login.accountNames[0]}!`)\n const info = await this.getAccountInfo(login.accountID)\n const meta = await this.getAccountMeta(login.accountID)\n await this.$store.dispatch('login', { ...login, ...info, ...meta })\n\n // After the account info has been retrieved,\n // redirect the user to the page\n this.redirectHome(this.currentUser.systemrole)\n }\n }\n\n getAccountLogin () {\n return this.$api.account.loginGet()\n .then(response => {\n if (response && response.isLogin) {\n return response\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n }\n\n async getAccountInfo (accountId: string) {\n return await this.$api.account.loginInfoGet({\n accountID: accountId\n })\n }\n\n async getAccountMeta (accountId: string) {\n const response = await this.$api.account.loginMetaGet({\n _oid: accountId\n })\n return response.meta\n }\n\n redirectHome (role: string): void {\n let page = null\n const redirectPath = this.$router.currentRoute.query.redirect_uri\n if (redirectPath) {\n window.location.href = __BASE_URL__ + redirectPath.toString()\n return\n } else if (role === 'supervisor' || role === 'director') {\n page = 'home-supervisor'\n } else if (role === 'ops-staff') {\n page = 'home-submission'\n } else if (role === 'product-admin') {\n page = 'admin-products'\n window.location.href = __BASE_URL__ + '/admin-products'\n } else if (role === 'bsc-reviewer') {\n page = 'bsc-home'\n window.location.href = __BASE_URL__ + '/bsc-home'\n } else {\n page = 'home-adviser'\n }\n this.$router.push({ name: page })\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-tab\"},[(_vm.isLoading)?_c('div',{staticClass:\"login-tab-box\"},[_c('LoadingBar',{staticClass:\"loading-bar\"})],1):(_vm.error)?_c('div',{staticClass:\"login-tab-box\"},[_c('div',{staticClass:\"error-message\"},[_vm._v(_vm._s(_vm.error))]),_vm._m(0)]):_c('div',{staticClass:\"login-tab-box\"},[_c('div',{attrs:{\"id\":\"qr-wrapper\"}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"Click \"),_c('a',{attrs:{\"href\":\"/live/login\"}},[_vm._v(\"here\")]),_vm._v(\" to try again\")])}]\n\nexport { render, staticRenderFns }","import { Component, Vue } from 'vue-property-decorator'\nimport LoadingBar from '@core/components/LoadingBar.vue'\nimport { inject } from 'inversify-props'\nimport API from '@core/services/API'\nimport { isNull, isUndefined } from 'lodash/fp'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\n\n@Component({\n components: {\n LoadingBar\n }\n})\nexport class SingpassLoginQRMixin extends Vue {\n @inject()\n private $api: API\n\n protected isLoading = false\n\n protected error: string\n\n uiService: UIService\n\n @inject()\n private sharedVariable: SharedVariable\n\n loadExternalScript (url: string) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.setAttribute('src', url)\n document.head.appendChild(script)\n\n script.addEventListener('error', reject)\n script.addEventListener('abort', reject)\n script.addEventListener('load', () => {\n resolve(script)\n })\n })\n }\n\n async created () {\n // take injected UIService and set it to local\n this.uiService = this.sharedVariable.uiService\n\n // if have error, show error and return\n this.error = this.$route.query.error as string\n if (this.error) {\n return\n }\n\n await this.checkLogin()\n\n console.log('Login page.')\n\n // parallel network call to reduce the total time\n Promise.all([\n this.$api.account.singpassSettings(),\n this.loadExternalScript(__SINGPASS_NDI_LIB_URL__)\n ])\n .then(([singpassSettings]) => {\n const authParams = {\n clientId: singpassSettings.clientId,\n redirectUri: singpassSettings.redirectUri,\n responseType: 'code',\n scope: 'openid'\n }\n\n const authParamsSupplier = () => {\n return {\n state: singpassSettings.state,\n nonce: singpassSettings.nonce\n }\n }\n\n const onError = (errorId: string, message: string) => {\n console.error(`onError. errorId:${errorId} message:${message}`)\n }\n\n const result = window.NDI.initAuthSession('qr-wrapper', authParams, authParamsSupplier, onError)\n console.log(result)\n })\n }\n\n async logout () {\n await this.$api.account.logout()\n await this.$store.dispatch('logout')\n }\n\n async checkLogin () {\n const login = await this.getAccountLogin()\n if (!isNull(login) && !isUndefined(login)) {\n console.log(`Welcome ${login.accountNames[0]}!`)\n const info = await this.getAccountInfo(login.accountID)\n const meta = await this.getAccountMeta(login.accountID)\n await this.$store.dispatch('login', { ...login, ...info, ...meta })\n\n // After the account info has been retrieved,\n // redirect the user to the page\n this.$emit('redirect', meta.systemrole)\n }\n\n this.isLoading = false\n }\n\n getAccountLogin () {\n return this.$api.account.loginGet()\n .then(response => {\n if (response && response.isLogin) {\n return response\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n }\n\n async getAccountInfo (accountId: string) {\n return await this.$api.account.loginInfoGet({\n accountID: accountId\n })\n }\n\n async getAccountMeta (accountId: string) {\n const response = await this.$api.account.loginMetaGet({\n _oid: accountId\n })\n return response.meta\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Mixins, Component } from 'vue-property-decorator'\nimport { SingpassLoginQRMixin } from './SingpassLoginQRMixin'\n\n@Component\nexport default class Login extends Mixins(SingpassLoginQRMixin) {\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingPassLoginQR.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingPassLoginQR.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SingPassLoginQR.vue?vue&type=template&id=37250f23&scoped=true&\"\nimport script from \"./SingPassLoginQR.vue?vue&type=script&lang=ts&\"\nexport * from \"./SingPassLoginQR.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SingPassLoginQR.vue?vue&type=style&index=0&id=37250f23&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37250f23\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-tab\"},[_c('div',{staticClass:\"login-tab-box\"},[(_vm.displayBrandName)?_c('div',{staticClass:\"login-title\"},[_vm._v(_vm._s(_vm.projectInfo.brandName))]):_vm._e(),_c('div',{staticClass:\"login-notice\"},[_vm._v(_vm._s(_vm.loginNotice))]),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit()}}},[_c('div',{staticClass:\"input-group\"},[_c('label',{staticClass:\"input-label\",attrs:{\"for\":\"username\"}},[_vm._t(\"login-id-label\",function(){return [_vm._v(\" Login ID \")]})],2),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],staticClass:\"input-control\",attrs:{\"id\":\"username\",\"type\":\"text\",\"autofocus\":\"\",\"autocomplete\":\"off\",\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.username)},on:{\"focus\":_vm.onFocusInput,\"blur\":_vm.onBlurInput,\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}})]),_c('div',{staticClass:\"input-group\"},[_c('label',{staticClass:\"input-label\",attrs:{\"for\":\"password\"}},[_vm._v(\" Password \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"input-control\",attrs:{\"id\":\"password\",\"type\":\"password\",\"autocomplete\":\"off\",\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.password)},on:{\"focus\":_vm.onFocusInput,\"blur\":_vm.onBlurInput,\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_c('button',{staticClass:\"btn-default\",attrs:{\"type\":\"submit\",\"disabled\":_vm.disabled}},[_vm._v(\" Login \")])]),_c('RequestResetPassword'),(_vm.isSingpass)?_c('div',{staticClass:\"btn-separator\"},[_vm._v(\"or\")]):_vm._e(),(_vm.isSingpass)?_c('a',{staticClass:\"btn-singpass\",attrs:{\"href\":_vm.singpassUrl}}):_vm._e()],1),_c('portal',{attrs:{\"to\":\"main-page\"}},[(_vm.showOtp)?_c('AppDialog',{staticClass:\"dialog-otp\",attrs:{\"hideCancel\":true,\"size\":'small'},on:{\"close\":function($event){_vm.showOtp = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"OTP\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('h2',[_vm._v(\"An OTP has been sent to \"+_vm._s(_vm.email))]),_c('p',[_vm._v(\"Please enter the OTP to the field below to continue login\")]),_c('div',{staticClass:\"input-group\"},[_c('label',{staticClass:\"input-label\",attrs:{\"for\":\"otp-token\"}},[_vm._v(\" \"+_vm._s(_vm.otpPrefix)+\" - \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.otpToken),expression:\"otpToken\"}],staticClass:\"input-control\",attrs:{\"id\":\"otp-token\",\"type\":\"text\",\"autofocus\":\"\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.otpToken)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSubmitOtp.apply(null, arguments)},\"input\":function($event){if($event.target.composing){ return; }_vm.otpToken=$event.target.value}}})]),_c('div',{staticClass:\"otp-notice\"},[_vm._v(_vm._s(_vm.otpNotice))])]),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-secondary\",attrs:{\"disabled\":_vm.isResendDisabled},on:{\"click\":_vm.onResend}},[_vm._v(\" Resend \"),(_vm.timer > 0)?_c('span',[_vm._v(_vm._s(_vm.timer))]):_vm._e()]),_c('button',{staticClass:\"btn-default\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":_vm.onSubmitOtp}},[_vm._v(\"Submit\")])])],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"reset\"}},[_c('a',{attrs:{\"href\":\"#reset\"},on:{\"click\":_vm.showResetForm}},[_vm._v(\"Forgot password\")]),_c('portal',{attrs:{\"to\":\"main-page\"}},[(_vm.resetForm)?_c('AppDialog',{attrs:{\"hideFooter\":_vm.email,\"size\":'xsmall'},on:{\"close\":function($event){_vm.resetForm=false}}},[_c('template',{slot:\"header\"},[_vm._v(\"Reset Password\")]),_c('div',{staticClass:\"dialog-body\",attrs:{\"slot\":\"body\"},slot:\"body\"},[(_vm.email)?[_c('h2',[_vm._v(\"An email has been sent to \"+_vm._s(_vm.email))])]:[_c('h2',[_vm._v(\"Please enter your username to reset your password.\")]),_c('div',{staticClass:\"username-group\"},[_c('label',[_vm._v(\"Username\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userName),expression:\"userName\"}],attrs:{\"id\":\"reset-by-username\",\"type\":\"text\",\"autofocus\":\"\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.userName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userName=$event.target.value}}})])],(_vm.error)?_c('div',{staticClass:\"error-notice\"},[_vm._v(\"Oops ! \"+_vm._s(_vm.error))]):_vm._e()],2),(!_vm.email)?_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":_vm.requestReset}},[_vm._v(\"Send Email\")])]):_vm._e()],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport API from '@core/services/API'\nimport { inject } from 'inversify-props'\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport AppDialog from '@core/components/AppDialog.vue'\n\n@Component({\n components: {\n AppDialog\n }\n})\nexport default class RequestResetPassword extends Vue {\n @inject()\n private $api: API\n\n protected resetForm = false\n protected userName = null\n protected error = null\n protected email = null\n\n get disabled () {\n return !this.userName || this.userName.length === 0\n }\n\n showResetForm () {\n this.resetForm = true\n }\n\n @Watch('resetForm')\n formToggle (sf) {\n if (!sf) {\n this.userName = null\n this.email = null\n this.error = null\n }\n }\n\n requestReset () {\n this.error = null\n if (!this.userName || this.userName.length === 0) return\n this.$api.account.getToken({\n username: this.userName\n }).then(res => {\n if (res && res.error) {\n this.error = res.error\n return\n }\n this.email = res?.sent\n })\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestResetPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestResetPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RequestResetPassword.vue?vue&type=template&id=63c5ea57&scoped=true&\"\nimport script from \"./RequestResetPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./RequestResetPassword.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RequestResetPassword.vue?vue&type=style&index=0&id=63c5ea57&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63c5ea57\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable @typescript-eslint/camelcase */\nimport { Component, Vue } from 'vue-property-decorator'\nimport { namespace } from 'vuex-class'\nimport { isUndefined, isNull } from 'lodash/fp'\nimport LoadingBar from '@core/components/LoadingBar.vue'\nimport { inject } from 'inversify-props'\nimport API from '@core/services/API'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport AppDialog from '@core/components/AppDialog.vue'\nimport RequestResetPassword from '@core/pages/RequestResetPassword.vue'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { UserMeta } from '@core/model/common/UserMeta'\n\nconst userStore = namespace('UserStore')\n@Component({\n components: {\n LoadingBar,\n AppDialog,\n RequestResetPassword\n }\n})\nexport class AdminLoginMixin extends Vue {\n private loginNotice = ''\n private username = ''\n private password = ''\n private disabled = false\n private otp: boolean = null\n private isSingpass = false\n private singpassUrl = '#'\n\n private showOtp = false\n private otpPrefix = ''\n private otpState = ''\n private otpToken = ''\n private email = ''\n private timer = 60\n private isResendDisabled = true\n private otpNotice = ''\n\n @userStore.State\n private userList: UserMeta[]\n\n @userStore.Action\n private fetchUserList: () => Promise\n\n @inject()\n private $api: API\n\n @inject()\n private projectInfo: IProjectInfo\n\n @inject()\n private projectSettings: IProjectSettings\n\n uiService: UIService\n\n @inject()\n private sharedVariable: SharedVariable\n\n async mounted () {\n // take injected UIService and set it to local\n this.uiService = this.sharedVariable.uiService\n\n await this.getSystemInformation()\n if (this.isSingpass) await this.getSingpassSetting()\n }\n\n get displayBrandName () {\n return this.projectSettings.displayBrandInLogin\n }\n\n async getSystemInformation () {\n const { singpass_login: singpassLogin, login_otp } = await this.$api.system.information()\n this.isSingpass = singpassLogin\n this.otp = login_otp\n }\n\n async getSingpassSetting () {\n const { clientId, redirectUri, state, nonce } = await this.$api.account.singpassSettings()\n this.singpassUrl = `${__SINGPASS_URL__}/auth?client_id=${clientId}&redirect_uri=${redirectUri}&scope=openid&response_type=code&state=${state}&nonce=${nonce}`\n }\n\n async onSubmit () {\n this.disabled = true\n\n if (this.otp) {\n const login = await this.$api.account.otpRequest({\n accountName: this.username,\n accountPass: this.password\n })\n .then(async response => {\n if (response && response.prefix && response.state) {\n this.loginNotice = 'Login successful'\n this.email = response.email\n return response\n }\n\n if (response.error) {\n if (response.error.length > 100) {\n console.error('login.js: response error', response.error)\n this.loginNotice = 'Login Exception'\n await this.uiService.alert.show({\n type: 'error',\n message: response.error\n })\n } else {\n console.info('login.js: Failed', response.error)\n this.loginNotice = 'Login Failed, ' + response.error\n }\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n .finally(() => {\n this.disabled = false\n })\n\n if (!isNull(login) && !isUndefined(login)) {\n this.otpPrefix = login.prefix\n this.otpState = login.state\n this.disabled = false\n this.showOtp = true\n\n this.isResendDisabled = true\n this.timer = 60\n this.countDownTimer()\n }\n } else {\n const options = {\n headers:\n {\n 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'\n }\n }\n const login = await this.$api.account.login({\n accountName: this.username,\n accountPass: this.password\n }, options)\n .then(async response => {\n if (response && response.isLogin) {\n this.loginNotice = 'Login successful, welcome ' + response.accountNames[0]\n return response\n }\n\n if (response.error) {\n if (response.error.length > 100) {\n console.error('login.js: response error', response.error)\n this.loginNotice = 'Login Exception'\n await this.uiService.alert.show({\n type: 'error',\n message: response.error\n })\n } else {\n console.info('login.js: Failed', response.error)\n this.loginNotice = response.error\n }\n } else {\n console.info('login.js: Failed', response)\n this.loginNotice = 'Login Failed (wrong password?)'\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n .finally(() => {\n this.disabled = false\n })\n\n if (!isNull(login) && !isUndefined(login)) {\n const info = await this.getAccountInfo(login.accountID)\n const meta = await this.getAccountMeta(login.accountID)\n await this.$store.dispatch('login', { ...login, ...info, ...meta })\n\n // After the account info has been retrieved,\n // redirect the user to the page\n this.$emit('redirect', meta.systemrole)\n }\n }\n }\n\n countDownTimer () {\n if (this.timer > 0) {\n setTimeout(() => {\n this.timer -= 1\n this.countDownTimer()\n }, 1000)\n } else {\n this.isResendDisabled = false\n }\n }\n\n async onResend () {\n await this.$api.account.otpRefresh({\n state: this.otpState\n })\n .then(response => {\n if (response.error) {\n console.error('login.js: response error', response.error)\n this.otpNotice = 'Request OTP Failed, ' + response.error\n return\n }\n\n this.otpNotice = 'A new OTP has been sent to your email'\n this.otpPrefix = response.prefix\n this.otpState = response.state\n\n // start timer again\n this.isResendDisabled = true\n this.timer = 60\n this.countDownTimer()\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n }\n\n async onSubmitOtp () {\n await this.$api.account.otpLogin({\n state: this.otpState,\n token: this.otpToken\n })\n .then(response => {\n if (response.error || !response.isLogin) {\n console.error('login.js: response error', response.error)\n this.otpNotice = 'Submit OTP Failed, ' + response.error\n return\n }\n\n this.otpNotice = 'OTP verified, login success'\n this.checkLogin()\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n }\n\n async checkLogin () {\n const login = await this.getAccountLogin()\n\n if (!isNull(login) && !isUndefined(login)) {\n console.log(`Welcome ${login.accountNames[0]}!`)\n const info = await this.getAccountInfo(login.accountID)\n const meta = await this.getAccountMeta(login.accountID)\n await this.$store.dispatch('login', { ...login, ...info, ...meta })\n\n if (this.userList?.length === 0) {\n await this.fetchUserList()\n }\n\n // After the account info has been retrieved,\n // redirect the user to the page\n this.$emit('redirect', meta.systemrole)\n }\n }\n\n getAccountLogin () {\n return this.$api.account.loginGet()\n .then(response => {\n if (response && response.isLogin) {\n return response\n }\n })\n .catch(async error => {\n console.error('login.js: Exception', error)\n await this.uiService.alert.show({\n type: 'error',\n message: error\n })\n })\n }\n\n async getAccountInfo (accountId: string) {\n return await this.$api.account.loginInfoGet({\n accountID: accountId\n })\n }\n\n async getAccountMeta (accountId: string) {\n const response = await this.$api.account.loginMetaGet({\n _oid: accountId\n })\n return response.meta\n }\n\n onFocusInput (e) {\n e.target.previousSibling.classList.add('active')\n }\n\n onBlurInput (e) {\n if (!e.target.value) e.target.previousSibling.classList.remove('active')\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Mixins } from 'vue-property-decorator'\nimport { AdminLoginMixin } from './AdminLoginMixin'\n\nexport default class AdminLogin extends Mixins(AdminLoginMixin) {\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminLogin.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminLogin.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminLogin.vue?vue&type=template&id=bb2f50f0&scoped=true&\"\nimport script from \"./AdminLogin.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminLogin.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminLogin.vue?vue&type=style&index=0&id=bb2f50f0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bb2f50f0\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\nimport { Component, Mixins } from 'vue-property-decorator'\nimport { LoginMixin } from './LoginMixin'\nimport SingPassLoginQR from '@core/pages/SingPassLoginQR.vue'\nimport AdminLogin from '@core/pages/AdminLogin.vue'\n\n@Component({\n components: {\n SingPassLoginQR,\n AdminLogin\n }\n})\nexport default class Login extends Mixins(LoginMixin) {\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=67e0359e&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=67e0359e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67e0359e\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingPassLoginQR.vue?vue&type=style&index=0&id=37250f23&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminLogin.vue?vue&type=style&index=0&id=bb2f50f0&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestResetPassword.vue?vue&type=style&index=0&id=63c5ea57&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=67e0359e&lang=scss&scoped=true&\""],"sourceRoot":""}