Files
pulse-signage/src/web/routes/admin/data-sources.js
T
2026-08-28 02:53:59 +01:00

37 lines
1.2 KiB
JavaScript

// Root data-source redirect only.
const { PERMISSION_DENIED_MESSAGE } = require('#src/rbac');
module.exports = function registerDataSourceRoutes(app, deps) {
const setAuthMessageCookie = deps.setAuthMessageCookie;
const { hasAnyPermission } = require('#src/rbac');
app.get('/data-sources', function (req, res, next) {
if (!req.currentUser) {
if (typeof setAuthMessageCookie === 'function') {
setAuthMessageCookie(res, 'Please sign in to continue.');
return res.redirect('/login');
}
return res.redirect('/login');
}
if (hasAnyPermission(req.currentUser, ['timetables.read', 'rss-feeds.read', 'api-sources.read', 'weather.read'])) {
if (hasAnyPermission(req.currentUser, ['timetables.read'])) {
return res.redirect('/data-sources/timetables');
}
if (hasAnyPermission(req.currentUser, ['rss-feeds.read'])) {
return res.redirect('/data-sources/rss-feeds');
}
if (hasAnyPermission(req.currentUser, ['weather.read'])) {
return res.redirect('/data-sources/weather');
}
return res.redirect('/data-sources/api-sources');
}
const error = new Error(PERMISSION_DENIED_MESSAGE);
error.statusCode = 403;
error.expose = true;
next(error);
});
};