first commit

This commit is contained in:
s.esmaeili
2026-09-10 01:58:29 +03:30
commit 077da7eacd
201 changed files with 25072 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import AdminLayout from '../layouts/AdminLayout.vue';
import { useAuthStore } from '../stores/auth.store';
const routes: RouteRecordRaw[] = [
{
path: '/login',
name: 'login',
component: () => import('../views/auth/LoginView.vue'),
meta: { guestOnly: true },
},
{
path: '/',
component: AdminLayout,
meta: { requiresAuth: true },
children: [
{
path: '',
redirect: '/dashboard',
},
{
path: 'dashboard',
name: 'dashboard',
component: () => import('../views/dashboard/DashboardView.vue'),
},
{
path: 'campaigns',
name: 'campaigns',
component: () => import('../views/campaigns/CampaignListView.vue'),
},
{
path: 'campaigns/create',
name: 'campaign-create',
component: () => import('../views/campaigns/CampaignFormView.vue'),
},
{
path: 'campaigns/:id/edit',
name: 'campaign-edit',
component: () => import('../views/campaigns/CampaignFormView.vue'),
},
{
path: 'campaigns/:campaignId/prizes',
name: 'campaign-prizes',
component: () => import('../views/prizes/PrizeListView.vue'),
},
{
path: 'users',
name: 'users',
component: () => import('../views/users/UserListView.vue'),
},
{
path: 'users/:id',
name: 'user-detail',
component: () => import('../views/users/UserDetailView.vue'),
},
{
path: 'spins',
name: 'spins',
component: () => import('../views/spins/SpinListView.vue'),
},
{
path: 'winners',
name: 'winners',
component: () => import('../views/winners/WinnerListView.vue'),
},
{
path: 'sms',
name: 'sms',
component: () => import('../views/sms/SmsLogListView.vue'),
},
{
path: 'reports',
name: 'reports',
component: () => import('../views/reports/ReportView.vue'),
},
{
path: 'audit',
name: 'audit',
component: () => import('../views/audit/AuditLogView.vue'),
},
],
},
{
path: '/:pathMatch(.*)*',
redirect: '/dashboard',
},
];
export const router = createRouter({
history: createWebHistory(),
routes,
});
router.beforeEach(async (to, from, next) => {
const authStore = useAuthStore();
const token = localStorage.getItem('admin_access_token');
if (to.meta.requiresAuth && !token) {
next('/login');
} else if (to.meta.guestOnly && token) {
next('/dashboard');
} else {
next();
}
});