chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { prisma } from "~/db.server";
|
||||
import { env } from "~/env.server";
|
||||
import { FEATURE_FLAG } from "~/v3/featureFlags";
|
||||
import { makeFlag } from "~/v3/featureFlags.server";
|
||||
|
||||
export async function canAccessQuery(options: {
|
||||
userId: string;
|
||||
isAdmin: boolean;
|
||||
isImpersonating: boolean;
|
||||
organizationSlug: string;
|
||||
}): Promise<boolean> {
|
||||
const { userId, isAdmin, isImpersonating, organizationSlug } = options;
|
||||
|
||||
// 1. If it's on then we have access
|
||||
const globallyEnabled = env.QUERY_FEATURE_ENABLED === "1";
|
||||
if (globallyEnabled) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2. Admins always have access
|
||||
if (isAdmin || isImpersonating) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 3. Check if org/global feature flag is on
|
||||
const org = await prisma.organization.findFirst({
|
||||
where: {
|
||||
slug: organizationSlug,
|
||||
members: { some: { userId } },
|
||||
},
|
||||
select: {
|
||||
featureFlags: true,
|
||||
},
|
||||
});
|
||||
|
||||
const flag = makeFlag();
|
||||
const flagResult = await flag({
|
||||
key: FEATURE_FLAG.hasQueryAccess,
|
||||
defaultValue: false,
|
||||
overrides: (org?.featureFlags as Record<string, unknown>) ?? {},
|
||||
});
|
||||
if (flagResult) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 4. Not enabled anywhere
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user