UNPKG

@opengis/fastify-table

Version:

core-plugins

46 lines (36 loc) 1.27 kB
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; }