UNPKG

dimsee

Version:

Modern, flexible authentication solution for MERN applications with OAuth support

97 lines (86 loc) 2.87 kB
"use strict"; var express = require('express'); var mongoose = require('mongoose'); var cors = require('cors'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var MongoStore = require('connect-mongo'); require('dotenv').config(); // Connect to MongoDB first mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/dimsee').then(function () { console.log('Connected to MongoDB'); var app = express(); // Import routes var authRoutes = require('./routes/auth'); // Import passport config var _require = require('./config/passport'), passport = _require.passport, configureOAuthStrategies = _require.configureOAuthStrategies; // Middleware app.use(express.json()); app.use(cookieParser()); app.use(cors({ origin: process.env.FRONTEND_URL || 'http://localhost:5173', credentials: true })); // Session configuration app.use(session({ secret: process.env.SESSION_SECRET || 'your-secret-key', resave: false, saveUninitialized: false, store: MongoStore.create({ mongoUrl: process.env.MONGODB_URI || 'mongodb://localhost:27017/dimsee', ttl: 24 * 60 * 60 // 1 day }), cookie: { secure: process.env.NODE_ENV === 'production', sameSite: process.env.NODE_ENV === 'production' ? 'strict' : 'lax', maxAge: 24 * 60 * 60 * 1000 // 1 day } })); // Initialize Passport and restore authentication state from session app.use(passport.initialize()); app.use(passport.session()); // Auth configuration app.locals.authConfig = { jwtSecret: process.env.JWT_SECRET || 'your-jwt-secret', cookieMaxAge: 7 * 24 * 60 * 60 * 1000 // 7 days }; // Configure OAuth with custom credentials if provided app.post('/api/auth/configure-oauth', function (req, res) { try { var oAuthConfig = req.body.oAuthConfig; if (oAuthConfig) { configureOAuthStrategies(oAuthConfig); } res.json({ success: true, message: 'OAuth configuration updated' }); } catch (error) { console.error('OAuth configuration error:', error); res.status(500).json({ success: false, message: 'Failed to update OAuth configuration' }); } }); // Routes app.use('/api/auth', authRoutes); // Error handling middleware app.use(function (err, req, res, next) { console.error(err.stack); res.status(500).json({ success: false, message: 'Internal server error' }); }); var PORT = process.env.PORT || 5000; app.listen(PORT, function () { console.log("Server is running on port ".concat(PORT)); }); })["catch"](function (error) { console.error('MongoDB connection error:', error); process.exit(1); // Exit process on connection failure }); module.exports = {}; // Export empty object as app is initialized async