const {models} = require('vn-loopback/server/server');
module.exports = Self => {
    Self.remoteMethodCtx('validateToken', {
        description: 'Validates the current logged user token',
        accepts: [],
        accessType: 'READ',
        returns: {
            type: 'Boolean',
            root: true
        },
        http: {
            path: `/validateToken`,
            verb: 'GET'
        }
    });

    Self.validateToken = async function(ctx) {
        const {accessToken: token} = ctx.req;

        // Check if current token is valid
        const {renewPeriod, courtesyTime} = await models.AccessTokenConfig.findOne({
            fields: ['renewPeriod', 'courtesyTime']
        });
        const now = Date.now();
        const differenceMilliseconds = now - token.created;
        const differenceSeconds = Math.floor(differenceMilliseconds / 1000);
        const isNotExceeded = differenceSeconds < renewPeriod - courtesyTime;
        return isNotExceeded;
    };
};