@@ -51,8 +54,19 @@ const isAppLoaded = computed(() => {
return globalStore.isAppLoaded
})
+const hasCompany = computed(() => {
+ return !!companyStore.selectedCompany || !!userStore.currentUser?.is_super_admin
+})
+
onMounted(() => {
globalStore.bootstrap().then((res) => {
+ if (!res.data.current_company && !res.data.current_user.is_super_admin) {
+ if (route.name !== 'no.company') {
+ router.push({ name: 'no.company' })
+ }
+ return
+ }
+
if (route.meta.ability && !userStore.hasAbilities(route.meta.ability)) {
router.push({ name: 'account.settings' })
} else if (route.meta.isSuperAdmin && !userStore.currentUser.is_super_admin) {
diff --git a/resources/scripts/admin/stores/company.js b/resources/scripts/admin/stores/company.js
index b7c1f661..2b1694d3 100644
--- a/resources/scripts/admin/stores/company.js
+++ b/resources/scripts/admin/stores/company.js
@@ -18,7 +18,11 @@ export const useCompanyStore = (useWindow = false) => {
actions: {
setSelectedCompany(data) {
- window.Ls.set('selectedCompany', data.id)
+ if (data) {
+ window.Ls.set('selectedCompany', data.id)
+ } else {
+ window.Ls.remove('selectedCompany')
+ }
this.selectedCompany = data
},
diff --git a/resources/scripts/admin/stores/global.js b/resources/scripts/admin/stores/global.js
index 1787fd59..c41df335 100644
--- a/resources/scripts/admin/stores/global.js
+++ b/resources/scripts/admin/stores/global.js
@@ -79,12 +79,18 @@ export const useGlobalStore = (useWindow = false) => {
// company store
companyStore.companies = response.data.companies
- companyStore.selectedCompany = response.data.current_company
- companyStore.setSelectedCompany(response.data.current_company)
- companyStore.selectedCompanySettings =
- response.data.current_company_settings
- companyStore.selectedCompanyCurrency =
- response.data.current_company_currency
+
+ if (response.data.current_company) {
+ companyStore.setSelectedCompany(response.data.current_company)
+ companyStore.selectedCompanySettings =
+ response.data.current_company_settings
+ companyStore.selectedCompanyCurrency =
+ response.data.current_company_currency
+ } else {
+ companyStore.setSelectedCompany(null)
+ companyStore.selectedCompanySettings = {}
+ companyStore.selectedCompanyCurrency = null
+ }
// Determine and load the appropriate language
const userLanguage = response.data.current_user_settings?.language
diff --git a/resources/scripts/router/index.js b/resources/scripts/router/index.js
index 00bea52e..3d38c144 100644
--- a/resources/scripts/router/index.js
+++ b/resources/scripts/router/index.js
@@ -1,6 +1,7 @@
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useGlobalStore } from '@/scripts/admin/stores/global'
+import { useCompanyStore } from '@/scripts/admin/stores/company'
//admin routes
import AdminRoutes from '@/scripts/admin/admin-router'
@@ -20,9 +21,16 @@ const router = createRouter({
router.beforeEach((to) => {
const userStore = useUserStore()
const globalStore = useGlobalStore()
+ const companyStore = useCompanyStore()
let ability = to.meta.ability
const { isAppLoaded } = globalStore
+ if (isAppLoaded && to.meta.requiresAuth && to.name !== 'no.company') {
+ if (!companyStore.selectedCompany && !(to.meta.isSuperAdmin && userStore.currentUser?.is_super_admin)) {
+ return { name: 'no.company' }
+ }
+ }
+
if (ability && isAppLoaded && to.meta.requiresAuth) {
if (!userStore.hasAbilities(ability)) {
return { name: 'account.settings' }