@opengis/fastify-table
Version:
core-plugins
33 lines (32 loc) • 1.18 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;
}