@opengis/fastify-table
Version:
core-plugins
44 lines (32 loc) • 1.36 kB
JavaScript
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;