Alexandre Bodin e79127152f Fix missing stuff in login pr
Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
2020-07-08 10:25:16 +02:00

54 lines
1.2 KiB
JavaScript

'use strict';
const passport = require('koa-passport');
const compose = require('koa-compose');
module.exports = {
login: compose([
(ctx, next) => {
return passport.authenticate('local', { session: false }, (err, user, info) => {
if (err) {
return ctx.badImplementation();
}
if (!user) {
return ctx.badRequest(info.message);
}
ctx.state.user = user;
return next();
})(ctx, next);
},
ctx => {
const { user } = ctx.state;
ctx.body = {
data: {
token: strapi.admin.services.token.createToken(user),
user: strapi.admin.services.user.sanitizeUser(ctx.state.user), // TODO: fetch more detailed info
},
};
},
]),
renewToken(ctx) {
const { token } = ctx.request.body;
if (token === undefined) {
return ctx.badRequest('Missing token');
}
const { isValid, payload } = strapi.admin.services.token.decodeToken(token);
if (!isValid) {
return ctx.badRequest('Invalid token');
}
ctx.body = {
data: {
token: strapi.admin.services.token.createToken({ id: payload.id }),
},
};
},
};