mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-18 20:09:08 +02:00
33 lines
999 B
JavaScript
33 lines
999 B
JavaScript
|
const AuthenticationRequired = require('../authentication-required');
|
||
|
|
||
|
function ossAuthHook(app, config) {
|
||
|
const { baseUriPath } = config;
|
||
|
|
||
|
const generateAuthResponse = async () => {
|
||
|
return new AuthenticationRequired({
|
||
|
type: 'password',
|
||
|
path: `${baseUriPath}/auth/simple/login`,
|
||
|
message: 'You must sign in order to use Unleash',
|
||
|
});
|
||
|
};
|
||
|
|
||
|
app.use(`${baseUriPath}/api`, async (req, res, next) => {
|
||
|
if (req.session && req.session.user) {
|
||
|
req.user = req.session.user;
|
||
|
return next();
|
||
|
}
|
||
|
if (req.user) {
|
||
|
return next();
|
||
|
}
|
||
|
if (req.header('authorization')) {
|
||
|
// API clients should get 401 without body
|
||
|
return res.sendStatus(401);
|
||
|
}
|
||
|
// Admin UI users should get auth-response
|
||
|
const authRequired = await generateAuthResponse();
|
||
|
return res.status(401).json(authRequired);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports = ossAuthHook;
|