Skip to content

Commit 839d5e8

Browse files
matt-aitkenmpcgrid
andauthored
Allow query access when impersonating (#2863)
Co-authored-by: Mihai Popescu <[email protected]>
1 parent 42dfb87 commit 839d5e8

File tree

2 files changed

+5
-4
lines changed
  • apps/webapp/app
    • components/navigation
    • routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query

2 files changed

+5
-4
lines changed

apps/webapp/app/components/navigation/SideMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ export function SideMenu({
274274
to={v3TestPath(organization, project, environment)}
275275
data-action="test"
276276
/>
277-
{(user.admin || featureFlags.hasQueryAccess) && (
277+
{(user.admin || user.isImpersonating || featureFlags.hasQueryAccess) && (
278278
<SideMenuItem
279279
name="Query"
280280
icon={TableCellsIcon}

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/route.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ import { querySchemas } from "~/v3/querySchemas";
7777
async function hasQueryAccess(
7878
userId: string,
7979
isAdmin: boolean,
80+
isImpersonating: boolean,
8081
organizationSlug: string
8182
): Promise<boolean> {
82-
if (isAdmin) {
83+
if (isAdmin || isImpersonating) {
8384
return true;
8485
}
8586

@@ -117,7 +118,7 @@ export const loader = async ({ request, params }: LoaderFunctionArgs) => {
117118
const user = await requireUser(request);
118119
const { projectParam, organizationSlug, envParam } = EnvironmentParamSchema.parse(params);
119120

120-
const canAccess = await hasQueryAccess(user.id, user.admin, organizationSlug);
121+
const canAccess = await hasQueryAccess(user.id, user.admin, user.isImpersonating, organizationSlug);
121122
if (!canAccess) {
122123
throw redirect("/");
123124
}
@@ -158,7 +159,7 @@ export const action = async ({ request, params }: ActionFunctionArgs) => {
158159
const user = await requireUser(request);
159160
const { projectParam, organizationSlug, envParam } = EnvironmentParamSchema.parse(params);
160161

161-
const canAccess = await hasQueryAccess(user.id, user.admin, organizationSlug);
162+
const canAccess = await hasQueryAccess(user.id, user.admin, user.isImpersonating, organizationSlug);
162163
if (!canAccess) {
163164
return typedjson(
164165
{ error: "Unauthorized", rows: null, columns: null, stats: null },

0 commit comments

Comments
 (0)