| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import Keycloak from 'keycloak-js'
- import Vue from 'vue'
- import 'element-ui/lib/theme-chalk/index.css'
- import './scss/index.scss'
- import Element from 'element-ui'
- import App from './App'
- import store from './store'
- import router from './router'
- import './icons'
- import './permission'
- import {
- Role,
- Access
- } from './constant'
- import Wrapper from './components/Wrapper'
- import Permission from './components/Permission'
- import StatusWrapper from './components/StatusWrapper'
- import Pagination from './components/Pagination'
- import CTable from './components/CTable'
- import AutoText from './components/AutoText'
- import EditInput from './components/EditInput'
- import SearchInput from './components/SearchInput'
- import {
- showLoading,
- closeLoading
- } from './utils/pop'
- function startApp () {
- document.body.setAttribute('version', __VERSION__)
- Vue.use(Element)
- Vue.component('Wrapper', Wrapper)
- Vue.component('Permission', Permission)
- Vue.component('StatusWrapper', StatusWrapper)
- Vue.component('Pagination', Pagination)
- Vue.component('CTable', CTable)
- Vue.component('AutoText', AutoText)
- Vue.component('EditInput', EditInput)
- Vue.component('SearchInput', SearchInput)
- Vue.prototype.$keycloak = keycloak
- Vue.prototype.$showLoading = showLoading
- Vue.prototype.$closeLoading = closeLoading
- Vue.prototype.Access = Access
- Vue.prototype.__PLACEHOLDER__ = __PLACEHOLDER__
- Vue.prototype.__SENSOR_ELK__ = __SENSOR_ELK__
- Vue.config.productionTip = false
- Vue.config.errorHandler = err => {
- closeLoading()
- throw err
- }
- store.dispatch('user/login', keycloak)
- store.dispatch('permission/generateRoutes', store.getters.roles)
- router.addRoutes(store.getters.permissionRoutes)
- Vue.prototype.hasEditPermission = !store.getters.roles.has(Role.VISITOR)
- new Vue({
- router,
- store,
- render: h => h(App)
- }).$mount('#app')
- }
- const initOptions = {
- url: process.env.VUE_APP_KEYCLOAK_OPTIONS_URL,
- realm: process.env.VUE_APP_KEYCLOAK_OPTIONS_REALM,
- clientId: process.env.VUE_APP_KEYCLOAK_OPTIONS_CLIENTID,
- onLoad: process.env.VUE_APP_KEYCLOAK_OPTIONS_ONLOAD
- }
- const keycloak = Keycloak(initOptions)
- keycloak
- .init({ onLoad: initOptions.onLoad })
- .then(auth => {
- if (!auth) {
- console.error('Authenticated Failed[403]')
- return
- }
- console.log(keycloak)
- // Token Refresh
- setInterval(() => {
- keycloak.updateToken(70).then(refreshed => {
- if (refreshed) {
- console.info('Token refreshed', keycloak)
- store.commit('user/SET_TOKEN', keycloak.token)
- } else {
- console.warn(`Token not refreshed, valid for ${Math.round(keycloak.tokenParsed.exp + keycloak.timeSkew - new Date().getTime() / 1000)} seconds`)
- }
- }).catch(() => console.error('Failed to refresh token'))
- }, 6000)
- })
- .catch(() => console.error('Authenticated Failed'))
- .finally(startApp)
|