27 lines
719 B
TypeScript
27 lines
719 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;
|
|
|
|
if (env.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();
|
|
};
|
|
}
|