You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
77 lines
2.4 KiB
'use strict';
|
|
|
|
const normalize = (value) => String(value || '').trim();
|
|
|
|
module.exports = async (ctx, next) => {
|
|
try {
|
|
const query = ctx?.request?.query || {};
|
|
const body = ctx?.request?.body || {};
|
|
const rawUserId = normalize(
|
|
query.userid || query.userId || query.creator || body.userid || body.userId || body.creator,
|
|
);
|
|
if (!rawUserId) {
|
|
await next();
|
|
return;
|
|
}
|
|
|
|
const models = ctx?.app?.fs?.dc?.models || {};
|
|
const TenderUser = models.TenderUser;
|
|
if (!TenderUser) {
|
|
await next();
|
|
return;
|
|
}
|
|
|
|
let mappedUserId = '';
|
|
const byPepId = await TenderUser.findOne({
|
|
attributes: ['id', 'pepId'],
|
|
where: { pepId: rawUserId, deletedAt: null },
|
|
raw: true,
|
|
});
|
|
if (byPepId?.pepId !== undefined && byPepId?.pepId !== null) {
|
|
mappedUserId = String(byPepId.pepId);
|
|
} else {
|
|
const byId = await TenderUser.findOne({
|
|
attributes: ['id', 'pepId'],
|
|
where: { id: rawUserId, deletedAt: null },
|
|
raw: true,
|
|
});
|
|
if (byId?.id !== undefined && byId?.id !== null) {
|
|
mappedUserId = byId.pepId ? String(byId.pepId) : String(byId.id);
|
|
} else {
|
|
const byExternalId = await TenderUser.findOne({
|
|
attributes: ['id', 'pepId'],
|
|
where: { externalUserId: rawUserId, deletedAt: null },
|
|
raw: true,
|
|
});
|
|
if (byExternalId?.id !== undefined && byExternalId?.id !== null) {
|
|
mappedUserId = byExternalId.pepId ? String(byExternalId.pepId) : String(byExternalId.id);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (mappedUserId) {
|
|
if (query.userid !== undefined || query.userId !== undefined) {
|
|
query.userId = mappedUserId;
|
|
}
|
|
if (query.creator !== undefined) {
|
|
query.creator = mappedUserId;
|
|
}
|
|
if (body.userid !== undefined || body.userId !== undefined) {
|
|
body.userId = mappedUserId;
|
|
}
|
|
if (body.creator !== undefined || body.userid !== undefined || body.userId !== undefined) {
|
|
body.creator = mappedUserId;
|
|
}
|
|
ctx.fs = ctx.fs || {};
|
|
ctx.fs.userIdMapping = {
|
|
externalUserId: rawUserId,
|
|
internalUserId: mappedUserId,
|
|
};
|
|
}
|
|
|
|
await next();
|
|
} catch (error) {
|
|
ctx.logger.error(error);
|
|
await next();
|
|
}
|
|
};
|
|
|