@opengis/fastify-table
Version:
core-plugins
46 lines (36 loc) • 1.27 kB
JavaScript
import {
customTokens, userTokens, handlebarsSync, setOpt, getOpt, config,
} from '../../../../utils.js';
export default async function userTokensAPI({ params = {}, user = {} }, reply) {
if (!user?.uid) {
return reply.status(403).send('access restricted: user');
}
if (!params?.token) {
return reply.status(400).send('not enough params: token');
}
if (!config.redis) {
return reply.status(500).send('empty redis');
}
if (!customTokens[params.token]) {
return reply.status(404).send('token not found');
}
// return from cache
if (userTokens[user.uid]?.[params.token]) {
const opt = await getOpt(userTokens[user.uid][params.token], user.uid);
if (opt) return userTokens[user.uid][params.token];
}
const token = setOpt(
{
...customTokens[params.token],
query: handlebarsSync.compile(customTokens[params.token]?.query || 'true')({ user, uid: user.uid }),
},
user.uid,
);
// first api call from user
if (!userTokens[user.uid]) {
userTokens[user.uid] = {};
}
// assign token
userTokens[user.uid][params.token] = token;
return token;
}