Files
outline/server/middlewares/shareDomains.ts
2023-11-01 23:52:18 -04:00

28 lines
776 B
TypeScript

import { Context, Next } from "koa";
import { Op } from "sequelize";
import { parseDomain } from "@shared/utils/domains";
import env from "@server/env";
import { Share } from "@server/models";
export default function shareDomains() {
return async function shareDomainsMiddleware(ctx: Context, next: Next) {
const isCustomDomain = parseDomain(ctx.host).custom;
const isDevelopment = env.ENVIRONMENT === "development";
if (isDevelopment || (isCustomDomain && env.isCloudHosted)) {
const share = await Share.unscoped().findOne({
where: {
domain: ctx.hostname,
published: true,
revokedAt: {
[Op.is]: null,
},
},
});
ctx.state.rootShare = share;
}
return next();
};
}