Add admin compliance acknowledgement gate

This commit is contained in:
shaw committed 2026-06-10 14:16:51 +08:00
1 parent c32e29bab0
commit 0acf00c4a1
29 files changed
+1173 -15

No files matched your search

+16 -1
View File
@@ -7,6 +7,7 @@ import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
import { useAuthStore } from '@/stores/auth'
import { useAppStore } from '@/stores/app'
import { useAdminSettingsStore } from '@/stores/adminSettings'
import { useAdminComplianceStore } from '@/stores/adminCompliance'
import { useNavigationLoadingState } from '@/composables/useNavigationLoading'
import { useRoutePrefetch } from '@/composables/useRoutePrefetch'
import { getSetupStatus } from '@/api/setup'
@@ -45,7 +46,7 @@ const routes: RouteRecordRaw[] = [
meta: {
requiresAuth: false,
title: 'Login',
titleKey: 'common.login'
titleKey: 'home.login'
}
},
{
@@ -807,6 +808,20 @@ router.beforeEach(async (to, _from, next) => {
return
}
if (requiresAdmin && authStore.isAdmin) {
const adminComplianceStore = useAdminComplianceStore()
if (!adminComplianceStore.initialized) {
try {
await adminComplianceStore.fetchStatus()
} catch (error) {
const err = error as { status?: number; code?: string; metadata?: Record<string, string> }
if (err.status === 423 && err.code === 'ADMIN_COMPLIANCE_ACK_REQUIRED') {
adminComplianceStore.requireAcknowledgement(err.metadata)
}
}
}
}
// Check payment requirement (internal payment system only)
if (to.meta.requiresPayment) {