express/src/app.js
2024-01-07 12:32:39 +01:00

68 lines
1.6 KiB
JavaScript

import createHttpError from 'http-errors';
import express from 'express';
import path from 'path';
import cookieParser from 'cookie-parser';
import logger from 'morgan';
import passport from 'passport';
import session from 'express-session';
import { nodeEnv, secretSession } from './config';
import passportConfig from './libs/passport';
import authRouter from './routes/v1/auth';
import meRouter from './routes/v1/me';
import usersRouter from './routes/v1/users';
const app = express();
passportConfig(passport);
app.use(passport.initialize());
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'ejs');
app.set('trust proxy', 1);
app.use(
session({
secret: secretSession,
resave: false,
saveUninitialized: true,
cookie: { secure: true },
})
);
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(passport.session());
app.use('/v1/auth', authRouter);
app.use('/v1/me', meRouter);
app.use('/v1/users', usersRouter);
// catch 404 and forward to error handler
app.use((req, res, next) => {
next(createHttpError(404));
});
// eslint-disable-next-line no-unused-vars
app.use((err, req, res, next) => {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = nodeEnv === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
if (req.xhr) {
res.json(err.message);
} else {
res.render('error');
}
});
module.exports = app;