{"version":3,"sources":["webpack:///./src/views/miscellaneous/NotAuthorized.vue?499e","webpack:///./src/auth/utils.js","webpack:///src/views/miscellaneous/NotAuthorized.vue","webpack:///./src/views/miscellaneous/NotAuthorized.vue?5157","webpack:///./src/views/miscellaneous/NotAuthorized.vue","webpack:///./src/views/miscellaneous/NotAuthorized.vue?72f8","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./src/@core/auth/jwt/jwtDefaultConfig.js","webpack:///./src/@core/auth/jwt/jwtService.js","webpack:///./src/@core/auth/jwt/useJwt.js","webpack:///./src/libs/axios.js","webpack:///./src/auth/jwt/useJwt.js","webpack:///./src/assets/images/pages/not-authorized-dark.svg","webpack:///./src/assets/images/pages/not-authorized.svg"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","appLogoImage","_v","_s","$t","loginRoute","imgUrl","staticRenderFns","getHomeRouteForLoggedInUser","userRole","name","data","downImg","computed","methods","component","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","prototype","loginEndpoint","registerEndpoint","refreshEndpoint","logoutEndpoint","tokenType","storageTokenKeyName","storageRefreshTokenKeyName","JwtService","axiosIns","jwtOverrideConfig","jwtDefaultConfig","jwtConfig","interceptors","request","use","config","accessToken","getToken","headers","Authorization","error","Promise","reject","response","originalRequest","status","isAlreadyFetchingAccessToken","refreshToken","then","r","setToken","setRefreshToken","onAccessTokenFetched","retryOriginalRequest","resolve","addSubscriber","subscribers","filter","callback","push","localStorage","getItem","value","setItem","args","post","getRefreshToken","useJwt","jwt","axios","create","Vue","$http","module","exports"],"mappings":"+HAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgB,CAACF,EAAG,SAAS,CAACE,YAAY,iCAAiCC,MAAM,CAAC,GAAK,MAAM,CAACH,EAAG,OAAO,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMP,EAAIQ,aAAa,IAAM,WAAW,KAAKJ,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,KAAK,CAACE,YAAY,QAAQ,CAACN,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,GAAG,4BAA4B,UAAUP,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACN,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,GAAG,6DAA6D,OAAOP,EAAG,WAAW,CAACE,YAAY,oBAAoBC,MAAM,CAAC,QAAU,UAAU,GAAKP,EAAIY,eAAe,CAACZ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oBAAoBP,EAAG,QAAQ,CAACG,MAAM,CAAC,MAAQ,GAAG,IAAMP,EAAIa,OAAO,IAAM,0BAA0B,MAAM,IAC10BC,EAAkB,G,YCwBTC,G,UAA8B,SAAAC,GACzC,MAAiB,UAAbA,EAA6B,IAChB,WAAbA,EAA8B,CAAEC,KAAM,kBACnC,CAAEA,KAAM,gBCcF,GACfC,KADA,WAEA,OACAC,kBACAX,yBAGAY,UACAP,OADA,WAEA,mDAEA,uBACA,cAEA,eAGAQ,SACAT,WADA,WAEA,mDACA,2BC9DsW,I,wBCQlWU,EAAY,eACd,EACAvB,EACAe,GACA,EACA,KACA,KACA,MAIa,aAAAQ,E,6CCnBf,W,4DCAe,SAASC,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,qCCFxB,SAASC,EAAkBC,EAAQC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CACrC,IAAIE,EAAaH,EAAMC,GACvBE,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,IAInC,SAASO,EAAad,EAAae,EAAYC,GAM5D,OALID,GAAYb,EAAkBF,EAAYiB,UAAWF,GACrDC,GAAad,EAAkBF,EAAagB,GAChDL,OAAOC,eAAeZ,EAAa,YAAa,CAC9CU,UAAU,IAELV,E,gBChBM,G,8BAAA,CAEbkB,cAAe,aACfC,iBAAkB,gBAClBC,gBAAiB,qBACjBC,eAAgB,cAIhBC,UAAW,SAGXC,oBAAqB,cACrBC,2BAA4B,iBCXTC,E,WAanB,WAAYC,EAAUC,GAAmB,oDAX9B,MAW8B,kDARxBC,IAQwB,oDALV,GAKU,kCAF3B,IAGZpD,KAAKkD,SAAWA,EAChBlD,KAAKqD,UAAL,iCAAsBrD,KAAKqD,WAAcF,GAGzCnD,KAAKkD,SAASI,aAAaC,QAAQC,KACjC,SAAAC,GAEE,IAAMC,EAAc,EAAKC,WAOzB,OAJID,IAEFD,EAAOG,QAAQC,cAAf,UAAkC,EAAKR,UAAUP,UAAjD,YAA8DY,IAEzDD,KAET,SAAAK,GAAK,OAAIC,QAAQC,OAAOF,MAI1B9D,KAAKkD,SAASI,aAAaW,SAAST,KAClC,SAAAS,GAAQ,OAAIA,KACZ,SAAAH,GAEE,IAAQL,EAAqBK,EAArBL,OAAQQ,EAAaH,EAAbG,SACVC,EAAkBT,EAGxB,GAAIQ,GAAgC,MAApBA,EAASE,OAAgB,CAClC,EAAKC,+BACR,EAAKA,8BAA+B,EACpC,EAAKC,eAAeC,MAAK,SAAAC,GACvB,EAAKH,8BAA+B,EAGpC,EAAKI,SAASD,EAAEtD,KAAKyC,aACrB,EAAKe,gBAAgBF,EAAEtD,KAAKoD,cAE5B,EAAKK,qBAAqBH,EAAEtD,KAAKyC,iBAGrC,IAAMiB,EAAuB,IAAIZ,SAAQ,SAAAa,GACvC,EAAKC,eAAc,SAAAnB,GAIjBQ,EAAgBN,QAAQC,cAAxB,UAA2C,EAAKR,UAAUP,UAA1D,YAAuEY,GACvEkB,EAAQ,EAAK1B,SAASgB,UAG1B,OAAOS,EAET,OAAOZ,QAAQC,OAAOF,M,8CAK5B,SAAqBJ,GACnB1D,KAAK8E,YAAc9E,KAAK8E,YAAYC,QAAO,SAAAC,GAAQ,OAAIA,EAAStB,Q,2BAGlE,SAAcsB,GACZhF,KAAK8E,YAAYG,KAAKD,K,sBAGxB,WACE,OAAOE,aAAaC,QAAQnF,KAAKqD,UAAUN,uB,6BAG7C,WACE,OAAOmC,aAAaC,QAAQnF,KAAKqD,UAAUL,8B,sBAG7C,SAASoC,GACPF,aAAaG,QAAQrF,KAAKqD,UAAUN,oBAAqBqC,K,6BAG3D,SAAgBA,GACdF,aAAaG,QAAQrF,KAAKqD,UAAUL,2BAA4BoC,K,mBAGlE,WAAe,6BAANE,EAAM,yBAANA,EAAM,gBACb,OAAO,EAAAtF,KAAKkD,UAASqC,KAAd,SAAmBvF,KAAKqD,UAAUX,eAAlC,OAAoD4C,M,sBAG7D,WAAkB,6BAANA,EAAM,yBAANA,EAAM,gBAChB,OAAO,EAAAtF,KAAKkD,UAASqC,KAAd,SAAmBvF,KAAKqD,UAAUV,kBAAlC,OAAuD2C,M,0BAGhE,WACE,OAAOtF,KAAKkD,SAASqC,KAAKvF,KAAKqD,UAAUT,gBAAiB,CACxDyB,aAAcrE,KAAKwF,wB,KCzGV,SAASC,EAAOvC,EAAUC,GACvC,IAAMuC,EAAM,IAAIzC,EAAWC,EAAUC,GAErC,MAAO,CACLuC,O,qCCDExC,EAAWyC,IAAMC,OAAO,IAQ9BC,aAAIpD,UAAUqD,MAAQ5C,EAEPA,QCZf,EAAgBuC,EAAOE,EAAO,IAAtBD,EAAR,EAAQA,IACOA,U,qBCJfK,EAAOC,QAAU,IAA0B,wC,4CCA3CD,EAAOC,QAAU,IAA0B","file":"NotAuthorized~31ecd969.25b984f7.js?version=1727726453033","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"misc-wrapper\"},[_c('b-link',{staticClass:\"navbar-brand d-md-block d-none\",attrs:{\"to\":\"/\"}},[_c('span',{staticClass:\"brand-logo\"},[_c('b-img',{attrs:{\"src\":_vm.appLogoImage,\"alt\":\"logo\"}})],1)]),_c('div',{staticClass:\"misc-inner p-2 p-sm-3\"},[_c('div',{staticClass:\"w-100 text-center\"},[_c('h2',{staticClass:\"mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"You are not authorized!\"))+\" 🔐 \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"You don’t have permission to access this page. Go Home!!\"))+\" \")]),_c('b-button',{staticClass:\"mb-1 btn-sm-block\",attrs:{\"variant\":\"primary\",\"to\":_vm.loginRoute()}},[_vm._v(_vm._s(_vm.$t(\"Back to home\")))]),_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.imgUrl,\"alt\":\"Not authorized page\"}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import useJwt from '@/auth/jwt/useJwt'\n\n/**\n * Return if user is logged in\n * This is completely up to you and how you want to store the token in your frontend application\n * e.g. If you are using cookies to store the application please update this function\n */\n// eslint-disable-next-line arrow-body-style\nexport const isUserLoggedIn = () => {\n  return (\n    localStorage.getItem('userData')\n    && localStorage.getItem(useJwt.jwtConfig.storageTokenKeyName)\n  )\n}\n\nexport const getUserData = () => JSON.parse(localStorage.getItem('userData'))\n\n/**\n * This function is used for demo purpose route navigation\n * In real app you won't need this function because your app will navigate to same route for each users regardless of ability\n * Please note role field is just for showing purpose it's not used by anything in frontend\n * We are checking role just for ease\n * NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\n * @param {String} userRole Role of user\n */\nexport const getHomeRouteForLoggedInUser = userRole => {\n  if (userRole === 'admin') return '/'\n  if (userRole === 'client') return { name: 'access-control' }\n  return { name: 'auth-login' }\n}\n","<template>\n  <div class=\"misc-wrapper\">\n    <b-link\n      class=\"navbar-brand d-md-block d-none\"\n      to=\"/\"\n    >\n      <span class=\"brand-logo\">\n        <b-img\n          :src=\"appLogoImage\"\n          alt=\"logo\"\n        />\n      </span>\n    </b-link>\n\n    <div class=\"misc-inner p-2 p-sm-3\">\n      <div class=\"w-100 text-center\">\n        <h2 class=\"mb-1\">\n          {{ $t(\"You are not authorized!\") }} 🔐\n        </h2>\n        <p class=\"mb-2\">\n          {{ $t(\"You don’t have permission to access this page. Go Home!!\") }}\n        </p>\n        <b-button\n          variant=\"primary\"\n          class=\"mb-1 btn-sm-block\"\n          :to=\"loginRoute()\"\n        >{{ $t(\"Back to home\") }}</b-button>\n        <b-img\n          fluid\n          :src=\"imgUrl\"\n          alt=\"Not authorized page\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n/* eslint-disable global-require */\nimport store from '@/store/index'\nimport { getHomeRouteForLoggedInUser } from '@/auth/utils'\n\nexport default {\n  data() {\n    return {\n      downImg: require('@/assets/images/pages/not-authorized.svg'),\n      appLogoImage: require('@/assets/images/logo/logo.png'),\n    }\n  },\n  computed: {\n    imgUrl() {\n      if (store.state.appConfig.layout.skin === 'dark') {\n        // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n        this.downImg = require('@/assets/images/pages/not-authorized-dark.svg')\n        return this.downImg\n      }\n      return this.downImg\n    },\n  },\n  methods: {\n    loginRoute() {\n      const user = JSON.parse(localStorage.getItem('userData'))\n      return getHomeRouteForLoggedInUser(user ? user.role : null)\n    },\n  },\n}\n</script>\n\n<style lang=\"scss\">\n@import \"@core/scss/vue/pages/page-misc.scss\";\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotAuthorized.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotAuthorized.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NotAuthorized.vue?vue&type=template&id=f8692bde&\"\nimport script from \"./NotAuthorized.vue?vue&type=script&lang=js&\"\nexport * from \"./NotAuthorized.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NotAuthorized.vue?vue&type=style&index=0&lang=scss&\"\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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotAuthorized.vue?vue&type=style&index=0&lang=scss&\"","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","function _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","export default {\n  // Endpoints\n  loginEndpoint: '/jwt/login',\n  registerEndpoint: '/jwt/register',\n  refreshEndpoint: '/jwt/refresh-token',\n  logoutEndpoint: '/jwt/logout',\n\n  // This will be prefixed in authorization header with token\n  // e.g. Authorization: Bearer <token>\n  tokenType: 'Bearer',\n\n  // Value of this property will be used as key to store JWT token in storage\n  storageTokenKeyName: 'accessToken',\n  storageRefreshTokenKeyName: 'refreshToken',\n}\n","import jwtDefaultConfig from './jwtDefaultConfig'\n\nexport default class JwtService {\n  // Will be used by this service for making API calls\n  axiosIns = null;\n\n  // jwtConfig <= Will be used by this service\n  jwtConfig = { ...jwtDefaultConfig };\n\n  // For Refreshing Token\n  isAlreadyFetchingAccessToken = false;\n\n  // For Refreshing Token\n  subscribers = [];\n\n  constructor(axiosIns, jwtOverrideConfig) {\n    this.axiosIns = axiosIns\n    this.jwtConfig = { ...this.jwtConfig, ...jwtOverrideConfig }\n\n    // Request Interceptor\n    this.axiosIns.interceptors.request.use(\n      config => {\n        // Get token from localStorage\n        const accessToken = this.getToken()\n\n        // If token is present add it to request's Authorization Header\n        if (accessToken) {\n          // eslint-disable-next-line no-param-reassign\n          config.headers.Authorization = `${this.jwtConfig.tokenType} ${accessToken}`\n        }\n        return config\n      },\n      error => Promise.reject(error),\n    )\n\n    // Add request/response interceptor\n    this.axiosIns.interceptors.response.use(\n      response => response,\n      error => {\n        // const { config, response: { status } } = error\n        const { config, response } = error\n        const originalRequest = config\n\n        // if (status === 401) {\n        if (response && response.status === 401) {\n          if (!this.isAlreadyFetchingAccessToken) {\n            this.isAlreadyFetchingAccessToken = true\n            this.refreshToken().then(r => {\n              this.isAlreadyFetchingAccessToken = false\n\n              // Update accessToken in localStorage\n              this.setToken(r.data.accessToken)\n              this.setRefreshToken(r.data.refreshToken)\n\n              this.onAccessTokenFetched(r.data.accessToken)\n            })\n          }\n          const retryOriginalRequest = new Promise(resolve => {\n            this.addSubscriber(accessToken => {\n              // Make sure to assign accessToken according to your response.\n              // Check: https://pixinvent.ticksy.com/ticket/2413870\n              // Change Authorization header\n              originalRequest.headers.Authorization = `${this.jwtConfig.tokenType} ${accessToken}`\n              resolve(this.axiosIns(originalRequest))\n            })\n          })\n          return retryOriginalRequest\n        }\n        return Promise.reject(error)\n      },\n    )\n  }\n\n  onAccessTokenFetched(accessToken) {\n    this.subscribers = this.subscribers.filter(callback => callback(accessToken))\n  }\n\n  addSubscriber(callback) {\n    this.subscribers.push(callback)\n  }\n\n  getToken() {\n    return localStorage.getItem(this.jwtConfig.storageTokenKeyName)\n  }\n\n  getRefreshToken() {\n    return localStorage.getItem(this.jwtConfig.storageRefreshTokenKeyName)\n  }\n\n  setToken(value) {\n    localStorage.setItem(this.jwtConfig.storageTokenKeyName, value)\n  }\n\n  setRefreshToken(value) {\n    localStorage.setItem(this.jwtConfig.storageRefreshTokenKeyName, value)\n  }\n\n  login(...args) {\n    return this.axiosIns.post(this.jwtConfig.loginEndpoint, ...args)\n  }\n\n  register(...args) {\n    return this.axiosIns.post(this.jwtConfig.registerEndpoint, ...args)\n  }\n\n  refreshToken() {\n    return this.axiosIns.post(this.jwtConfig.refreshEndpoint, {\n      refreshToken: this.getRefreshToken(),\n    })\n  }\n}\n","import JwtService from './jwtService'\n\nexport default function useJwt(axiosIns, jwtOverrideConfig) {\n  const jwt = new JwtService(axiosIns, jwtOverrideConfig)\n\n  return {\n    jwt,\n  }\n}\n","import Vue from 'vue'\n\n// axios\nimport axios from 'axios'\n\nconst axiosIns = axios.create({\n  // You can add your headers here\n  // ================================\n  // baseURL: 'https://some-domain.com/api/',\n  // timeout: 1000,\n  // headers: {'X-Custom-Header': 'foobar'}\n})\n\nVue.prototype.$http = axiosIns\n\nexport default axiosIns\n","import useJwt from '@core/auth/jwt/useJwt'\nimport axios from '@axios'\n\nconst { jwt } = useJwt(axios, {})\nexport default jwt\n","module.exports = __webpack_public_path__ + \"img/not-authorized-dark.9da9bfe5.svg\";","module.exports = __webpack_public_path__ + \"img/not-authorized.d5e00e8f.svg\";"],"sourceRoot":""}