\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Auth.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Auth.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Auth.vue?vue&type=template&id=59477f8b&scoped=true&\"\nimport script from \"./Auth.vue?vue&type=script&lang=js&\"\nexport * from \"./Auth.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Auth.vue?vue&type=style&index=0&id=59477f8b&scoped=true&lang=css&\"\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 \"59477f8b\",\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('b-container',{staticClass:\"mt-5 wrapper_padding\"},[_c('div',{staticClass:\"text-center\"},[_c('h4',{staticClass:\"page_not_found\"},[_c('b-icon',{staticClass:\"nav-icon\",attrs:{\"icon\":\"exclamation-octagon\"}}),_vm._v(\" Página no encontrada\")],1),_c('span',[_vm._v(\"Lo sentimos la página solicitada no se encuentra disponible.\")]),_c('div',{staticClass:\"mt-3\"},[_c('b-link',{attrs:{\"to\":{name: 'auth'}}},[_vm._v(\" Regresar a la página principal \")])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n
Página no encontrada
\r\n Lo sentimos la página solicitada no se encuentra disponible.\r\n
\r\n \r\n Regresar a la página principal\r\n \r\n
\r\n
\r\n \r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PageNotFound.vue?vue&type=template&id=23801e18&\"\nimport script from \"./PageNotFound.vue?vue&type=script&lang=js&\"\nexport * from \"./PageNotFound.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport axios from 'axios';\r\n\r\n\r\nVue.use(Vuex);\r\n\r\nconst store = new Vuex.Store({\r\n state: {\r\n token: localStorage.getItem('access_token') || null,\r\n userName: localStorage.getItem('userName') || null,\r\n userRole: localStorage.getItem('user_role') || null,\r\n userEmail: localStorage.getItem('user_email') || null,\r\n userId: localStorage.getItem('user_id') || null,\r\n userBlockchain: localStorage.getItem('user_blockchain') || null,\r\n tokenExpiration: localStorage.getItem('expiration') || null,\r\n loading: false,\r\n loaded: false,\r\n\r\n EnterpriseLogo: localStorage.getItem('enterpriseLogo') || null,\r\n\r\n // states for enterprise color\r\n EnterpriseSidebarColor: localStorage.getItem('enterpriseSidebarColor') || null,\r\n EnterpriseAccentColor: localStorage.getItem('enterpriseAccentColor') || null,\r\n\r\n\r\n //speech\r\n speaking: false,\r\n },\r\n getters: {\r\n loggedIn(state) {\r\n return state.token !== null\r\n },\r\n getEnterpriseLogo(state) {\r\n return state.EnterpriseLogo\r\n },\r\n getEnterpriseSidebarColor(state) {\r\n return state.EnterpriseSidebarColor\r\n },\r\n getEnterpriseAccentColor(state) {\r\n return state.EnterpriseAccentColor\r\n },\r\n getSpeackingState(state)\r\n {\r\n return state.speaking\r\n }\r\n },\r\n mutations: {\r\n retrieveToken(state, token) {\r\n state.token = token,\r\n state.userName = localStorage.getItem('userName')\r\n state.userRole = localStorage.getItem('user_role')\r\n state.userEmail = localStorage.getItem('user_email')\r\n state.userId = localStorage.getItem('user_id')\r\n state.userBlockchain = localStorage.getItem('user_blockchain')\r\n },\r\n destroyToken(state) {\r\n state.token = null,\r\n state.userRole = null,\r\n state.userName = null,\r\n state.userEmail = null,\r\n state.userId = null,\r\n state.userBlockchain = null\r\n },\r\n loading(state) {\r\n state.loading = true\r\n },\r\n load(state) {\r\n state.loading = false\r\n state.loaded = true\r\n },\r\n changeEnterpriseLogo(state, payload) {\r\n state.EnterpriseLogo = payload\r\n },\r\n changeEnterpriseSidebarColor(state, payload) {\r\n state.EnterpriseSidebarColor = payload\r\n },\r\n changeEnterpriseAccentColor(state, payload) {\r\n state.EnterpriseAccentColor = payload\r\n },\r\n changeSpeakingState(state,payload){\r\n state.speaking = payload\r\n }\r\n\r\n },\r\n actions: {\r\n async retrieveToken({ commit }, credentials) {\r\n try {\r\n const response = await axios.post('/api/Account/Login', {\r\n username: credentials.username,\r\n password: credentials.password,\r\n });\r\n \r\n if (!response.data.LoginError) {\r\n const token = response.data.token;\r\n const userName = response.data.username;\r\n const userRole = response.data.userRole;\r\n const userEmail = response.data.userEmail;\r\n const userId = response.data.userId;\r\n const userBlockchain = response.data.userBlockchain;\r\n const expiration = response.data.expiration;\r\n \r\n localStorage.setItem('access_token', token);\r\n localStorage.setItem('expiration', expiration);\r\n localStorage.setItem('userName', userName);\r\n localStorage.setItem('user_role', userRole);\r\n localStorage.setItem('user_email', userEmail);\r\n localStorage.setItem('user_id', userId);\r\n localStorage.setItem('user_blockchain', userBlockchain);\r\n \r\n commit('retrieveToken', token);\r\n }\r\n \r\n return response;\r\n \r\n } catch (error) {\r\n console.error(\"Error retrieving token:\", error);\r\n throw error;\r\n }\r\n },\r\n destroyToken(context) {\r\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + context.state.token;\r\n if (context.getters.loggedIn) {\r\n localStorage.removeItem('pathToLoadAfterLogin')\r\n localStorage.removeItem('access_token')\r\n localStorage.removeItem('expiration');\r\n localStorage.removeItem('userName');\r\n localStorage.removeItem('user_role');\r\n localStorage.removeItem('user_email');\r\n localStorage.removeItem('tab_title');\r\n localStorage.removeItem('user_id');\r\n localStorage.removeItem('user_blockchain');\r\n localStorage.removeItem('enterpriseLogo');\r\n context.commit('destroyToken')\r\n }\r\n },\r\n async validateToken(context) {\r\n const token = localStorage.getItem('access_token');\r\n const expiration = localStorage.getItem('expiration');\r\n \r\n if (!token || !expiration) {\r\n throw new Error('Token or expiration not found');\r\n }\r\n \r\n try {\r\n // firts we validate the token with a post to the server\r\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + context.state.token;\r\n await axios.get('/api/Account/ValidateJWToken');\r\n // then we validate the expiration date\r\n const expirationDate = new Date(expiration);\r\n const currentDate = new Date();\r\n \r\n if (expirationDate < currentDate) throw new Error('Token expired');\r\n } catch (error) {\r\n if (error.response && error.response.status === 401) {\r\n throw new Error('Token expired');\r\n } else if (error.request) {\r\n throw new Error('No se recibió respuesta del servidor');\r\n } else {\r\n throw new Error('Error de red u otros');\r\n }\r\n }\r\n },\r\n //getEnterpriseLogo from server\r\n getEnterpriseLogo(context) {\r\n axios.get('/api/Account/GetCompanyLogo')\r\n .then(response => {\r\n if (!response) throw new Error(\"No se pudo cargar la imagen desde la API\");\r\n return response;\r\n })\r\n .then(response => {\r\n // Desestructuramos la respuesta\r\n const { LogoByte, LogoExtension } = response.data;\r\n if (LogoByte == \"\" && LogoExtension == \"\") throw new Error(\"No se pudo cargar la imagen porque no esta configurada...\");\r\n const base64 = `data:image/${LogoExtension};base64,${LogoByte}`;\r\n\r\n localStorage.setItem('enterpriseLogo', base64)\r\n context.commit('changeEnterpriseLogo', base64)\r\n })\r\n .catch(error => {\r\n console.error(\"Error:\", error.message);\r\n let defaultLogo = require('@/assets/LOGO-CONFIDENCEID.png');\r\n // Manejar el error si la imagen no se carga desde la API\r\n localStorage.setItem('enterpriseLogo', defaultLogo)\r\n context.commit('changeEnterpriseLogo', defaultLogo)\r\n });\r\n },\r\n setEnterpriseLogo(context, payload) {\r\n context.commit('changeEnterpriseLogo', payload)\r\n },\r\n\r\n getEnterpriseColors(context) {\r\n axios.get('/api/Account/GetCompanyColors')\r\n .then(response => {\r\n // Desestructuramos la respuesta\r\n const { SidebarColor, AccentColor } = response.data;\r\n if (SidebarColor == \"\" && AccentColor == \"\") throw new Error(\"No se pudieron cargar los colores porque no estan configurados...\");\r\n\r\n localStorage.setItem('enterpriseSidebarColor', SidebarColor)\r\n localStorage.setItem('enterpriseAccentColor', AccentColor)\r\n context.commit('changeEnterpriseSidebarColor', SidebarColor)\r\n context.commit('changeEnterpriseAccentColor', AccentColor)\r\n })\r\n .catch(error => {\r\n console.log(\"Error:\", error);\r\n let defaultSidebarColor = \"#35495e\";\r\n let defaultAccentColor = \"#E90F45\";\r\n // Manejar el error si los colores no se cargan desde la API\r\n // si viene un 400 o no esta logueado el usuario\r\n if (!context.getters.loggedIn || error.response?.status === 400 || error.response?.status === 404) {\r\n localStorage.setItem('enterpriseSidebarColor', defaultSidebarColor)\r\n localStorage.setItem('enterpriseAccentColor', defaultAccentColor)\r\n context.commit('changeEnterpriseSidebarColor', defaultSidebarColor)\r\n context.commit('changeEnterpriseAccentColor', defaultAccentColor)\r\n return\r\n }\r\n\r\n localStorage.setItem('enterpriseSidebarColor', defaultSidebarColor)\r\n localStorage.setItem('enterpriseAccentColor', defaultAccentColor)\r\n context.dispatch('setApiEnterpriseSidebarColors', defaultSidebarColor)\r\n context.dispatch('setEnterpriseAccentColor', defaultAccentColor)\r\n\r\n });\r\n\r\n },\r\n setApiEnterpriseSidebarColor(context, payload) {\r\n \r\n // post axions to UpdateCompanySidebarColor\r\n let data = new FormData();\r\n data.append('CompanySidebarColor', payload);\r\n axios.post('/api/Account/UpdateCompanySidebarColor', data)\r\n .then(response => {\r\n if (!response) throw new Error(\"No se pudo actualizar el color en la API\");\r\n context.commit('changeEnterpriseSidebarColor', payload);\r\n localStorage.setItem('enterpriseSidebarColor', payload)\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error(\"Error:\", error.message);\r\n });\r\n },\r\n setApiEnterpriseAccentColor(context, payload) {\r\n // post axions to UpdateCompanyAccentColor\r\n let data = new FormData();\r\n data.append('CompanyAccentColor', payload);\r\n axios.post('/api/Account/UpdateCompanyAccentColor',data)\r\n .then(response => {\r\n if (!response) throw new Error(\"No se pudo actualizar el color en la API\");\r\n context.commit('changeEnterpriseAccentColor', payload);\r\n localStorage.setItem('enterpriseAccentColor', payload)\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error(\"Error:\", error.message);\r\n });\r\n },\r\n\r\n enableSpeech(context,bool){\r\n context.commit('changeSpeakingState',bool);\r\n }\r\n }\r\n});\r\n\r\nexport default store\r\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport AppLayout from './components/layout/AppLayout'\r\n\r\nimport Auth from './components/auth/Auth'\r\nimport PageNotFound from './components/layout/PageNotFound'\r\nimport store from './store'\r\n\r\n\r\nVue.use(VueRouter)\r\n\r\nconst requireAuth = async (to, from, next) => {\r\n const requiresAuth = to.matched.some(record => record.meta.requiresAuth);\r\n const loggedIn = store.getters.loggedIn;\r\n\r\n if (requiresAuth && !loggedIn) {\r\n // Redirigir al login si se requiere autenticación y el usuario no está logueado\r\n localStorage.setItem('pathToLoadAfterLogin', to.path);\r\n next('/auth');\r\n return;\r\n }\r\n\r\n if (loggedIn && from.name === 'auth') {\r\n // Fetching enterprise logo after login\r\n await store.dispatch('getEnterpriseLogo');\r\n }\r\n\r\n if (requiresAuth && loggedIn) {\r\n try {\r\n await store.dispatch('validateToken');\r\n } catch (error) {\r\n store.dispatch('destroyToken');\r\n next('/auth');\r\n return;\r\n }\r\n }\r\n\r\n next();\r\n};\r\n\r\nconst requiresAdmin = (to, from, next) => {\r\n const requiresAdmin = to.matched.some(record => record.meta.requiresAdmin);\r\n const loggedIn = store.getters.loggedIn;\r\n const userRole = store.state.userRole;\r\n\r\n if (loggedIn && userRole === 'Admin' && requiresAdmin) {\r\n next();\r\n } else {\r\n next('/dashboard');\r\n }\r\n};\r\nconst newRoutes = [\r\n {\r\n path: '/',\r\n component: AppLayout,\r\n beforeEnter: requireAuth,\r\n children: [\r\n {\r\n path: '',\r\n name: 'home',\r\n redirect: 'dashboard',\r\n meta: { requiresAuth: true },\r\n\r\n },\r\n {\r\n path: 'dashboard',\r\n name: 'dashboard',\r\n component: () => import('./components/Dashboard.vue'),\r\n meta: { requiresAuth: true },\r\n \r\n },\r\n {\r\n path: 'list',\r\n name: 'list',\r\n component: () => import('./components/doc/ListDoc.vue'),\r\n meta: { requiresAuth: true },\r\n \r\n },\r\n {\r\n path: 'upload',\r\n name: 'upload',\r\n component: () => import('./components/doc/UploadDoc.vue'),\r\n meta: { requiresAuth: true },\r\n \r\n },\r\n { \r\n path: 'reset_password/:username?/:securityId?',\r\n name: 'resetPassword', \r\n component: () => import('./components/auth/ResetPassword.vue'),\r\n meta: { requiresAuth: false },\r\n \r\n },\r\n {\r\n path:'profile',\r\n name: 'profile',\r\n component: () => import('./components/Profile/Profile.vue'),\r\n meta: { requiresAuth: true },\r\n },\r\n {\r\n path: 'contacts',\r\n name: 'contacts',\r\n component: () => import(\"./components/contact/Contact.vue\"),\r\n meta: { requiresAuth: true },\r\n }\r\n ]\r\n },\r\n {\r\n path:'/QR/:securityId',\r\n component: () => import('./components/doc/QR.vue'),\r\n meta: { requiresAuth: false },\r\n \r\n },\r\n {\r\n path: '/doc',\r\n component: AppLayout,\r\n beforeEnter: requireAuth,\r\n children: [\r\n {\r\n path:'',\r\n redirect: '/dashboard',\r\n },\r\n {\r\n path: 'sign/:id/:user?/:email?/:secure?',\r\n name: 'view-sign',\r\n component: () => import('./components/doc/ViewDoc.vue'),\r\n meta: { requiresAuth: false }\r\n },\r\n {\r\n path: 'progress/:id',\r\n name: 'view-progress',\r\n component: () => import('./components/doc/ViewProgressDoc.vue'),\r\n meta: { requiresAuth: true }\r\n },\r\n {\r\n path: 'signed/:id',\r\n name: 'view-signed',\r\n component: () => import('./components/doc/ViewSignedDoc.vue'),\r\n meta: { requiresAuth: true }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/auth/:id?/:securityId?',\r\n name: 'auth',\r\n component: Auth,\r\n children: [\r\n { \r\n path: 'register-invitation',\r\n name: 'register-invitation',\r\n component: () => import('./components/auth/RegisterInvitation.vue'),\r\n }\r\n ]\r\n },\r\n {\r\n path: '/adcid',\r\n component: AppLayout,\r\n beforeEnter: requireAuth,\r\n children: [\r\n { \r\n path: '',\r\n redirect: '/dashboard',\r\n },\r\n { \r\n path: 'user-dashboard',\r\n name: 'user-dashboard',\r\n component: () => import('./components/admin/UserDashboard.vue'), \r\n meta: { requiresAuth: true, requiresAdmin: true },\r\n beforeEnter: requiresAdmin\r\n },\r\n { \r\n path: 'invitation',\r\n name: 'InviteUser', \r\n component: () => import('./components/admin/Invitation.vue'), \r\n meta: { requiresAuth: true, requiresAdmin: true },\r\n beforeEnter: requiresAdmin\r\n },\r\n { \r\n path: 'configuration',\r\n name: 'configuration', \r\n component: () => import('./components/admin/Configuration.vue'), \r\n meta: { requiresAuth: true, requiresAdmin: true },\r\n beforeEnter: requiresAdmin\r\n },\r\n ]\r\n },\r\n {\r\n path: '*',\r\n name: 'not-found', component: PageNotFound\r\n },\r\n];\r\n\r\nconst router = new VueRouter({\r\n routes: newRoutes,\r\n mode: 'history',\r\n});\r\n\r\nexport default router","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.isIdle)?_c('ModalIdle'):_vm._e(),_c('router-view',{key:_vm.$route.fullPath})],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',{staticClass:\"overlay\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n\r\n
\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalIdle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalIdle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalIdle.vue?vue&type=template&id=5881ac33&\"\nimport script from \"./ModalIdle.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalIdle.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n