UNPKG

@opengis/fastify-table

Version:

core-plugins

44 lines (32 loc) 1.36 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 null; if (!uid) return { user: 'empty' }; if (!Object.keys(idsOrigin).length) return { 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}`, codes); // 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;