helpyourneighbour/backend/src/server.js
BibaBot cab7146445
Some checks are pending
Docker Test / test (push) Waiting to run
feat: Add role-based access control tests and middleware integration
2026-03-17 04:07:27 +00:00

57 lines
1.9 KiB
JavaScript

import express from 'express';
import dotenv from 'dotenv';
import authRoutes from './routes/auth.js';
import helpRequestRoutes from './routes/helpRequests.js';
import offerRoutes from './routes/offers.js';
import reviewRoutes from './routes/reviews.js';
import addressRoutes from './routes/addresses.js';
import contactRoutes from './routes/contacts.js';
import profileRoutes from './routes/profile.js';
// import { requestLogger } from './middleware/logger.js'; // Temporarily removed for compatibility
import { rateLimit, authRateLimit } from '../middleware/rateLimit.cjs';
import { requireRole } from '../middleware/role.middleware.js';
dotenv.config();
const app = express();
app.use(express.json());
app.get('/health', (_req, res) => res.json({ status: 'ok' }));
// Test route for role middleware
app.get('/test-role', requireRole(['user']), (_req, res) => {
res.status(200).json({ message: 'Access granted to user role' });
});
// Metrics endpoint
app.get('/metrics', (_req, res) => {
const uptime = process.uptime();
const memoryUsage = process.memoryUsage();
res.json({
uptime: uptime,
memory: {
rss: memoryUsage.rss,
heapTotal: memoryUsage.heapTotal,
heapUsed: memoryUsage.heapUsed,
external: memoryUsage.external
},
timestamp: new Date().toISOString()
});
});
// Rate limiting für Auth-Endpunkte
app.use('/auth', authRateLimit(), authRoutes);
// Rate limiting für write-heavy Endpunkte
app.use('/requests', rateLimit({ max: 50 }), helpRequestRoutes);
app.use('/offers', rateLimit({ max: 50 }), offerRoutes);
app.use('/reviews', rateLimit({ max: 50 }), reviewRoutes);
app.use('/addresses', rateLimit({ max: 50 }), addressRoutes);
app.use('/contacts', rateLimit({ max: 50 }), contactRoutes);
app.use('/profile', rateLimit({ max: 50 }), profileRoutes);
const port = Number(process.env.PORT || 3000);
app.listen(port, () => {
console.log(`helpyourneighbour backend listening on ${port}`);
});