UNPKG

@opengis/fastify-table

Version:

core-plugins

42 lines (41 loc) 1.59 kB
import { createHash, randomUUID } from "crypto"; import config from "../../../../config.js"; import getRedis from "../../redis/funcs/getRedis.js"; const rclient = getRedis({ db: 0 }); // import { config, getRedis } from '../../../../utils.js'; const generateCodes = (ids, userToken) => { const token = userToken || randomUUID(); const notNullIds = ids.filter((el) => el); const obj = {}; const codes = notNullIds.reduce((acc, id) => { const newToken = createHash("sha1") .update(token + id) .digest("base64url") .replace(/-/g, ""); acc[newToken] = id; obj[id] = newToken; return acc; }, {}); return { codes, obj }; }; function setToken({ ids: idsOrigin, uid, array, }) { if (!config.redis) { return array ? [] : {}; } if (!uid) { return array ? [{ user: "empty" }] : { user: "empty" }; } if (!Object.keys(idsOrigin).length) { return array ? [{ ids: "empty" }] : { ids: "empty" }; } const ids = idsOrigin.map((el) => typeof el === "object" ? JSON.stringify(el) : el); // TODO generate salt const { codes, obj } = generateCodes(ids, uid); if (!Object.keys(codes).length) return { ids: "empty" }; rclient.hmset(`${config.pg.database}:token:edit:${uid}`, Object.entries(codes).flat()); // console.log(`${config.pg.database}:token:edit:${uid}`, idsOrigin, Object.values(obj)); // TODO дополнительно писать в hset token -> uid return array ? Object.values(obj) : obj; } export default setToken;