2023-03-14 01:24:43 +08:00
|
|
|
const express = require('express');
|
|
|
|
|
const router = express.Router();
|
|
|
|
|
const authYourLogin = require('./authYourLogin');
|
2023-03-23 15:37:25 -04:00
|
|
|
const userSystemEnabled = !!process.env.ENABLE_USER_SYSTEM || false;
|
2023-03-14 01:24:43 +08:00
|
|
|
|
|
|
|
|
router.get('/login', function (req, res) {
|
2023-03-23 15:37:25 -04:00
|
|
|
if (userSystemEnabled) {
|
|
|
|
|
res.redirect('/auth/your_login_page');
|
|
|
|
|
} else {
|
|
|
|
|
res.redirect('/');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2023-03-14 01:24:43 +08:00
|
|
|
router.get('/logout', function (req, res) {
|
|
|
|
|
// clear the session
|
2023-03-23 15:37:25 -04:00
|
|
|
req.session.user = null;
|
2023-03-14 01:24:43 +08:00
|
|
|
|
2023-03-23 15:37:25 -04:00
|
|
|
req.session.save(function () {
|
|
|
|
|
if (userSystemEnabled) {
|
|
|
|
|
res.redirect('/auth/your_login_page/logout');
|
|
|
|
|
} else {
|
|
|
|
|
res.redirect('/');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2023-03-14 01:24:43 +08:00
|
|
|
|
|
|
|
|
const authenticatedOr401 = (req, res, next) => {
|
|
|
|
|
if (userSystemEnabled) {
|
|
|
|
|
const user = req?.session?.user;
|
|
|
|
|
|
2023-03-23 15:37:25 -04:00
|
|
|
if (user) {
|
|
|
|
|
next();
|
|
|
|
|
} else {
|
|
|
|
|
res.status(401).end();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
next();
|
|
|
|
|
}
|
|
|
|
|
};
|
2023-03-14 01:24:43 +08:00
|
|
|
|
|
|
|
|
const authenticatedOrRedirect = (req, res, next) => {
|
|
|
|
|
if (userSystemEnabled) {
|
|
|
|
|
const user = req?.session?.user;
|
|
|
|
|
|
2023-03-23 15:37:25 -04:00
|
|
|
if (user) {
|
|
|
|
|
next();
|
|
|
|
|
} else {
|
|
|
|
|
res.redirect('/auth/login').end();
|
|
|
|
|
}
|
2023-03-14 01:24:43 +08:00
|
|
|
} else next();
|
2023-03-23 15:37:25 -04:00
|
|
|
};
|
2023-03-14 01:24:43 +08:00
|
|
|
|
2023-03-23 15:37:25 -04:00
|
|
|
if (userSystemEnabled) {
|
2023-03-14 01:24:43 +08:00
|
|
|
router.use('/your_login_page', authYourLogin);
|
2023-03-23 15:37:25 -04:00
|
|
|
}
|
2023-03-14 01:24:43 +08:00
|
|
|
|
|
|
|
|
module.exports = { router, authenticatedOr401, authenticatedOrRedirect };
|