phantomauth
Version:
An authentication library with built-in security features, designed for fast and boilerplate-free backend development. Ideal for quickly building MVPs with a reasonable level of security. Not intended for high-risk or enterprise level use.
49 lines (45 loc) • 1.54 kB
JavaScript
import express from 'express';
import dotenv from 'dotenv';
import { authRouter } from './src/routes/v1/auth.route.js';
import { logger } from './src/utils/logger.js';
import { runMongoDB } from './src/db/runMongoDB.js';
import { errorHandler } from './src/middlewares/errorHandler.middleware.js';
import helmet from 'helmet';
import cookieParser from 'cookie-parser';
import { verifyToken } from './src/middlewares/verifyToken.middleware.js';
import { verify2FA } from './src/middlewares/verify2FA.middleware.js';
dotenv.config();
const PORT = process.env.PORT || 5000;
const BASE_URL = process.env.BASE_URL;
const API_URL = process.env.API_URL;
const MONGO_URI = process.env.MONGO_URI;
const startServer = async () => {
try {
await runMongoDB(MONGO_URI);
const app = express();
app.use(helmet());
app.use(express.json());
app.use(cookieParser());
app.use(API_URL, authRouter);
app.use(API_URL + '/protected-1', verifyToken, (req, res) => {
return res.status(200).json({
success: true,
message: 'Token verified'
})
});
app.use(API_URL + '/protected-2', verify2FA, (req, res) => {
return res.status(200).json({
success: true,
message: '2FA verified'
})
});
app.use(errorHandler);
app.listen(PORT, () => {
logger.info(`PhantomAuth runs at ${BASE_URL}`);
});
} catch (err) {
logger.error(`Phantom Auth stopped: ${err.message}`);
process.exit(1);
}
}
startServer();