Alexandre Bodin 01854f431f Add registration info route
Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
2020-07-08 10:44:59 +02:00

72 lines
1.6 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.createJwtToken(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.decodeJwtToken(token);
if (!isValid) {
return ctx.badRequest('Invalid token');
}
ctx.body = {
data: {
token: strapi.admin.services.token.createJwtToken(payload.id),
},
};
},
async registrationInfo(ctx) {
const { registrationToken } = ctx.request.query;
if (registrationToken === undefined) {
return ctx.badRequest('Missing registrationToken');
}
const registrationInfo = await strapi.admin.services.user.findRegistrationInfo(
registrationToken
);
if (!registrationInfo) {
return ctx.badRequest('Invalid registrationToken');
}
ctx.body = { data: registrationInfo };
},
};