const registerRouter = require('./application/register') const loginRouter = require('./application/login') const verifyRouter = require('./application/verify') const provincesRouter = require('./application/provinces') const citiesRouter = require('./application/city') const countriesRouter = require('./application/countries') const projectsRouter = require('./application/projects') const usersRouter = require('./application/users') const postsRouter = require('./application/posts') const expertiseRouter = require('./application/expertise') const shopCategoriesRouter = require('./application/shop-categories') const shopsRouter = require('./application/shops') const shopProductsRouter = require('./application/shop-products') const shopChatRouter = require('./application/shop-chat') const ordersRouter = require('./application/orders') const shopOrderPaymentRouter = require('./application/payment/shop-order') const walletRouter = require('./application/wallet') const bookingsRouter = require('./application/bookings') const profileRouter = require('./application/profile') const workroomRouter = require('./application/workroom') const messagesRouter = require('./application/messages') const searchRouter = require('./application/search') const searchRouterWeb = require('./application/search-web') const financialRouter = require('./application/financial') const notificationRouter = require('./application/notification') const ticketsRouter = require('./application/tickets') const advertisingRouter = require('./application/advertising') const settingsRouter = require('./application/settings') const versionRouter = require('./application/version') const offerRouter = require('./application/offers') const academyRoute = require('./application/academy') const storiesRouter = require('./application/stories') const authRouter = require('./application/auth') const accountRouter = require('./application/account') const giftsRouter = require('./application/gifts') const chatRoomsRouter = require('./application/chat-rooms') const suggestionsRouter = require('./application/suggestions') const analyticsRouter = require('./application/analytics') const projectsPanelRouter = require('./panel/projects') const postsPanelRouter = require('./panel/posts') const expertisePanelRouter = require('./panel/expertise') const shopCategoriesPanelRouter = require('./panel/shop-categories') const marketplaceShopsPanelRouter = require('./panel/marketplace-shops') const walletRequestsPanelRouter = require('./panel/wallet-requests') const loginPanelRouter = require('./panel/login') const usersPanelRouter = require('./panel/users') const ticketsPanelRouter = require('./panel/tickets') const financialPanelRouter = require('./panel/financial') const commentsPanelRouter = require('./panel/comments') const advertisingPanelRouter = require('./panel/advertising') const shopsPanelRouter = require('./panel/shops') const settingsPanelRouter = require('./panel/settings') const versionPanelRouter = require('./panel/version') const storiesPanelRouter = require('./panel/stories') const reportsPanelRouter = require('./panel/reports') const suggestionsPanelRouter = require('./panel/suggestions') const moderationPanelRouter = require('./panel/moderation') const academyContentPanelRouter = require('./panel/academy-content') const licensesPanelRouter = require('./panel/licenses') const notificationsPanelRouter = require('./panel/notifications') const analyticsPanelRouter = require('./panel/analytics') const adminUsersPanelRouter = require('./panel/adminUsers') const auditLogPanelRouter = require('./panel/auditLog') const auth = require('../middlewares/auth') const blockCheck = require('../middlewares/blockCheck') const adminAuth = require('../middlewares/adminAuth') const requirePermission = require('../middlewares/requirePermission') const auditLogger = require('../middlewares/auditLogger') module.exports = (app) => { // App app.use('/api/v1/register', registerRouter) app.use('/api/v1/login', loginRouter) app.use('/api/v1/auth', authRouter) app.use('/api/v1/verify', [auth], verifyRouter) app.use('/api/v1/provinces', provincesRouter) app.use('/api/v1/cities', citiesRouter) app.use('/api/v1/countries', countriesRouter) app.use('/api/v1/projects', projectsRouter) app.use('/api/v1/users', usersRouter) app.use('/api/v1/posts', postsRouter) app.use('/api/v1/expertise', expertiseRouter) app.use('/api/v1/shop-categories', shopCategoriesRouter) app.use('/api/v1/shops', shopsRouter) app.use('/api/v1/shop-products', shopProductsRouter) app.use('/api/v1/shop-chat', shopChatRouter) app.use('/api/v1/orders', [blockCheck], ordersRouter) app.use('/api/v1/payment/shop-order', shopOrderPaymentRouter) app.use('/api/v1/wallet', walletRouter) app.use('/api/v1/bookings', bookingsRouter) app.use('/api/v1/profile', profileRouter) app.use('/api/v1/account', accountRouter) app.use('/api/v1/gifts', giftsRouter) app.use('/api/v1/chat-rooms', [auth, blockCheck], chatRoomsRouter) app.use('/api/v1/workroom', [auth], workroomRouter) app.use('/api/v1/messages', [auth], messagesRouter) app.use('/api/v1/notifications', [auth], notificationRouter) app.use('/api/v1/search', [auth], searchRouter) app.use('/api/v1/search-web', searchRouterWeb) app.use('/api/v1/financial', [auth], financialRouter) app.use('/api/v1/tickets', [auth], ticketsRouter) app.use('/api/v1/suggestions', [auth], suggestionsRouter) app.use('/api/v1/analytics', analyticsRouter) app.use('/api/v1/offers', offerRouter) app.use('/api/v1/advertising', advertisingRouter) app.use('/api/v1/settings', settingsRouter) app.use('/api/v1/version', versionRouter) app.use('/api/v1/academy', academyRoute) app.use('/api/v1/stories', storiesRouter) // Panel // فقط متدهای نوشتاری (POST/PUT/PATCH/DELETE) رو خودکار توی AuditLog ثبت می‌کنه — // برای همه‌ی زیرمسیرهای پنل یکجا، بدون نیاز به افزودنش به تک‌تکِ app.use زیر app.use('/api/v1/panel', auditLogger) app.use('/api/v1/panel/login', loginPanelRouter) app.use('/api/v1/panel/users', [adminAuth, requirePermission('users')], usersPanelRouter) app.use('/api/v1/panel/projects', [adminAuth, requirePermission('projects')], projectsPanelRouter) app.use('/api/v1/panel/posts', [adminAuth, requirePermission('posts')], postsPanelRouter) app.use('/api/v1/panel/expertise', [adminAuth, requirePermission('expertise')], expertisePanelRouter) app.use('/api/v1/panel/shop-categories', [adminAuth, requirePermission('shop-categories')], shopCategoriesPanelRouter) app.use('/api/v1/panel/marketplace-shops', [adminAuth, requirePermission('marketplace-shops')], marketplaceShopsPanelRouter) app.use('/api/v1/panel/wallet-requests', [adminAuth, requirePermission('wallet-requests')], walletRequestsPanelRouter) app.use('/api/v1/panel/tickets', [adminAuth, requirePermission('tickets')], ticketsPanelRouter) app.use('/api/v1/panel/financial', [adminAuth, requirePermission('financial')], financialPanelRouter) app.use('/api/v1/panel/comments', [adminAuth, requirePermission('comments')], commentsPanelRouter) app.use('/api/v1/panel/advertising', [adminAuth, requirePermission('advertising')], advertisingPanelRouter) app.use('/api/v1/panel/shops', [adminAuth, requirePermission('shops')], shopsPanelRouter) app.use('/api/v1/panel/settings', [adminAuth, requirePermission('settings')], settingsPanelRouter) app.use('/api/v1/panel/version', [adminAuth, requirePermission('version')], versionPanelRouter) app.use('/api/v1/panel/stories', [adminAuth, requirePermission('stories')], storiesPanelRouter) app.use('/api/v1/panel/reports', [adminAuth, requirePermission('reports')], reportsPanelRouter) app.use('/api/v1/panel/suggestions', [adminAuth, requirePermission('suggestions')], suggestionsPanelRouter) app.use('/api/v1/panel/moderation', [adminAuth, requirePermission('moderation')], moderationPanelRouter) app.use('/api/v1/panel/analytics', [adminAuth, requirePermission('analytics')], analyticsPanelRouter) app.use('/api/v1/panel/academy-content', [adminAuth, requirePermission('academy-content')], academyContentPanelRouter) app.use('/api/v1/panel/licenses', [adminAuth, requirePermission('licenses')], licensesPanelRouter) app.use('/api/v1/panel/notifications', [adminAuth, requirePermission('notifications')], notificationsPanelRouter) app.use('/api/v1/panel/admin-users', [adminAuth], adminUsersPanelRouter) app.use('/api/v1/panel/audit-log', [adminAuth], auditLogPanelRouter) }