๐ฅMulti-tenancy
const tenantIdentification = () => async (ctx, next) => {
if (!ctx.tenant) {
const tenantId = R.ifElse(
getTenantIdFromQueryString,
getTenantIdFromJwt
)(ctx)
ctx.tenant = await tenantFactory.getTenantFromId(tenantId);
}
await next();
}
const getTenantIdFromJwt = ({ token }) => {
let tenantId = null;
if (token) {
const decoded = jsonwebtoken.decode(token.replace("Bearer ", ""));
if (decoded) {
tenantId = decoded.tid;
}
}
return tenantId;
}
const getTenantIdFromQueryString = ({ request }) => request.query.tenantId
const getTenantIdFromHeaders = ctx => ctx.req.headers.tenantid
const getTenantIdFromHost = ctx => ctx.hostname
const getTenantIdFromRefererHost = async ctx => {
if (!ctx.request.headers.referer) {
return;
}
var url = new URL.parse(ctx.request.headers.referer);
return url.hostname
};Last updated