2020-05-11 17:09:48 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
module.exports = strapi => ({
|
|
|
|
initialize() {
|
2020-12-21 17:11:48 +01:00
|
|
|
const passportMiddleware = strapi.admin.services.passport.init();
|
2020-05-11 17:09:48 +02:00
|
|
|
|
2020-12-21 17:11:48 +01:00
|
|
|
strapi.app.use(passportMiddleware);
|
2020-05-12 14:57:24 +02:00
|
|
|
|
|
|
|
strapi.app.use(async (ctx, next) => {
|
|
|
|
if (
|
|
|
|
ctx.request.header.authorization &&
|
|
|
|
ctx.request.header.authorization.split(' ')[0] === 'Bearer'
|
|
|
|
) {
|
|
|
|
const token = ctx.request.header.authorization.split(' ')[1];
|
|
|
|
|
2020-05-14 11:06:16 +02:00
|
|
|
const { payload, isValid } = strapi.admin.services.token.decodeJwtToken(token);
|
2020-05-12 14:57:24 +02:00
|
|
|
|
|
|
|
if (isValid) {
|
|
|
|
// request is made by an admin
|
2021-06-22 17:13:11 +02:00
|
|
|
const admin = await strapi
|
|
|
|
.query('strapi::user')
|
|
|
|
.findOne({ where: { id: payload.id }, populate: ['roles'] });
|
2020-05-12 14:57:24 +02:00
|
|
|
|
2020-05-12 20:46:48 +02:00
|
|
|
if (!admin || !(admin.isActive === true)) {
|
2020-05-12 14:57:24 +02:00
|
|
|
return ctx.forbidden('Invalid credentials');
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.state.admin = admin;
|
|
|
|
ctx.state.user = admin;
|
2020-06-10 18:04:47 +02:00
|
|
|
ctx.state.userAbility = await strapi.admin.services.permission.engine.generateUserAbility(
|
|
|
|
admin
|
|
|
|
);
|
2020-05-18 19:54:43 +02:00
|
|
|
ctx.state.isAuthenticatedAdmin = true;
|
2020-05-12 14:57:24 +02:00
|
|
|
return next();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return next();
|
|
|
|
});
|
2020-05-11 17:09:48 +02:00
|
|
|
},
|
|
|
|
});
|