57 lines
1.9 KiB
JavaScript
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}`);
|
|
});
|