feat: admin panel - Settings, Categories, Payment Wallets, Seed/Clear data, User Balances
- Settings page: bot token (masked), admin IDs, commission config, WireGuard status - Categories page: CRUD with product count, delete guard - Payment Wallets page: commission wallets display, toggle, percentage - Users page: balance adjustment form (total_balance / bonus_balance) with audit log - Seed & Reset page: seed demo data (5 users, 10 products, 5 wallets, 5 purchases) and clear all data button with confirmation - Dashboard: flash messages for seed/clear success - Fixed seed.js: use dynamic IDs instead of hardcoded to avoid FK violations - Fixed seed.js: clear all tables before seeding to avoid UNIQUE constraints
This commit is contained in:
@@ -10,6 +10,10 @@ import productsRouter from './routes/products.js';
|
||||
import walletsRouter from './routes/wallets.js';
|
||||
import purchasesRouter from './routes/purchases.js';
|
||||
import auditRouter from './routes/audit.js';
|
||||
import settingsRouter from './routes/settings.js';
|
||||
import categoriesRouter from './routes/categories.js';
|
||||
import paymentWalletsRouter from './routes/paymentWallets.js';
|
||||
import seedRouter from './routes/seed.js';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const app = express();
|
||||
@@ -37,6 +41,10 @@ app.use('/products', productsRouter);
|
||||
app.use('/wallets', walletsRouter);
|
||||
app.use('/purchases', purchasesRouter);
|
||||
app.use('/audit', auditRouter);
|
||||
app.use('/settings', settingsRouter);
|
||||
app.use('/categories', categoriesRouter);
|
||||
app.use('/payment-wallets', paymentWalletsRouter);
|
||||
app.use('/seed', seedRouter);
|
||||
|
||||
export function startAdminPanel() {
|
||||
const port = parseInt(process.env.ADMIN_PORT || '3001', 10);
|
||||
|
||||
Reference in New Issue
Block a user