- Added Blog and BlogPost models with necessary fields and relationships. - Created blogRouter for handling blog-related API endpoints including CRUD operations. - Developed BlogService for business logic related to blogs and posts, including sharing functionality. - Implemented API client methods for frontend to interact with blog-related endpoints. - Added internationalization support for blog-related text in English and German. - Created Vue components for blog editing, listing, and viewing, including a rich text editor for post content. - Enhanced user experience with form validations and dynamic visibility settings based on user input.
57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
import express from 'express';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
import chatRouter from './routers/chatRouter.js';
|
|
import authRouter from './routers/authRouter.js';
|
|
import navigationRouter from './routers/navigationRouter.js';
|
|
import settingsRouter from './routers/settingsRouter.js';
|
|
import adminRouter from './routers/adminRouter.js';
|
|
import contactRouter from './routers/contactRouter.js';
|
|
import socialnetworkRouter from './routers/socialnetworkRouter.js';
|
|
import forumRouter from './routers/forumRouter.js';
|
|
import falukantRouter from './routers/falukantRouter.js';
|
|
import friendshipRouter from './routers/friendshipRouter.js';
|
|
import blogRouter from './routers/blogRouter.js';
|
|
import cors from 'cors';
|
|
import './jobs/sessionCleanup.js';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
const app = express();
|
|
|
|
const corsOptions = {
|
|
origin: '*',
|
|
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
|
|
preflightContinue: false,
|
|
optionsSuccessStatus: 204
|
|
};
|
|
|
|
app.use(cors(corsOptions));
|
|
app.use(express.json()); // To handle JSON request bodies
|
|
|
|
app.use('/api/chat', chatRouter);
|
|
app.use('/api/auth', authRouter);
|
|
app.use('/api/navigation', navigationRouter);
|
|
app.use('/api/settings', settingsRouter);
|
|
app.use('/api/admin', adminRouter);
|
|
app.use('/images', express.static(path.join(__dirname, '../frontend/public/images')));
|
|
app.use('/api/contact', contactRouter);
|
|
app.use('/api/socialnetwork', socialnetworkRouter);
|
|
app.use('/api/forum', forumRouter);
|
|
app.use('/api/falukant', falukantRouter);
|
|
app.use('/api/friendships', friendshipRouter);
|
|
app.use('/api/blog', blogRouter);
|
|
|
|
// Serve frontend SPA for non-API routes to support history mode clean URLs
|
|
const frontendDir = path.join(__dirname, '../frontend');
|
|
app.use(express.static(path.join(frontendDir, 'dist')));
|
|
app.get(/^\/(?!api\/).*/, (req, res) => {
|
|
res.sendFile(path.join(frontendDir, 'dist', 'index.html'));
|
|
});
|
|
|
|
// Fallback 404 for unknown API routes
|
|
app.use('/api/*', (req, res) => res.status(404).send('404 Not Found'));
|
|
|
|
export default app;
|