node-api-document
Version:
🚀 Generate beautiful, interactive API documentation for Node.js/Express applications with zero configuration. Features include password protection, custom branding, responsive design, and easy integration. Perfect for REST APIs, microservices, and web ap
42 lines (37 loc) • 1.44 kB
JavaScript
var express = require('express');
var path = require('path');
var GLOBALS = require('../config/constants');
app = express()
app.set('view engine', 'ejs');
exports.index = function (req, res) {
var message = '';
res.render(path.join(__dirname + '/views/index.ejs'), { message: message, GLOBALS: GLOBALS });
};
exports.login = function (req, res) {
if (req.method == "POST") {
if (req?.body?.password == process?.env?.API_PASSWORD) {
req.session.user = process?.env?.API_PASSWORD;
req.session.save();
res.redirect(`${GLOBALS.API_DOC_BASE_URL_PATH}dashboard`);
} else {
res.render(path.join(__dirname + '/views/index.ejs'), { message: 'Please enter valid password.', GLOBALS: GLOBALS });
}
} else {
res.render(path.join(__dirname + '/views/index.ejs'), { message: '', GLOBALS: GLOBALS });
}
};
exports.dashboard = function (req, res, next) {
if (req.session.user == null) {
res.redirect(`${GLOBALS.API_DOC_BASE_URL_PATH}login`);
return;
} else {
const apiDoc = req?.apiDoc || [];
const acceptHeaders = req?.acceptHeaders || '';
res.render(path.join(__dirname + '/views/api_doc.ejs'), { GLOBALS: GLOBALS, apiDoc, acceptHeaders });
}
};
exports.logout = function (req, res) {
req.session.destroy(function (err) {
res.redirect(`${GLOBALS.API_DOC_BASE_URL_PATH}login`);
});
};