@@ -15,7 +15,7 @@ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
1515import { getRunFiltersFromRequest } from "~/presenters/RunFilters.server" ;
1616import { LogsListPresenter } from "~/presenters/v3/LogsListPresenter.server" ;
1717import type { LogLevel } from "~/utils/logUtils" ;
18- import { $replica } from "~/db.server" ;
18+ import { $replica , prisma } from "~/db.server" ;
1919import { clickhouseClient } from "~/services/clickhouseInstance.server" ;
2020import {
2121 setRootOnlyFilterPreference ,
@@ -39,6 +39,7 @@ import {
3939 ResizablePanelGroup ,
4040} from "~/components/primitives/Resizable" ;
4141import { Switch } from "~/components/primitives/Switch" ;
42+ import { FEATURE_FLAG , validateFeatureFlagValue } from "~/v3/featureFlags.server" ;
4243
4344// Valid log levels for filtering
4445const validLevels : LogLevel [ ] = [ "TRACE" , "DEBUG" , "INFO" , "WARN" , "ERROR" , "CANCELLED" ] ;
@@ -57,6 +58,41 @@ export const meta: MetaFunction = () => {
5758 ] ;
5859} ;
5960
61+ async function hasLogsPageAccess (
62+ userId : string ,
63+ isAdmin : boolean ,
64+ isImpersonating : boolean ,
65+ organizationSlug : string
66+ ) : Promise < boolean > {
67+ if ( isAdmin || isImpersonating ) {
68+ return true ;
69+ }
70+
71+ // Check organization feature flags
72+ const organization = await prisma . organization . findFirst ( {
73+ where : {
74+ slug : organizationSlug ,
75+ members : { some : { userId } } ,
76+ } ,
77+ select : {
78+ featureFlags : true ,
79+ } ,
80+ } ) ;
81+
82+ if ( ! organization ?. featureFlags ) {
83+ return false ;
84+ }
85+
86+ const flags = organization . featureFlags as Record < string , unknown > ;
87+ const hasLogsPageAccessResult = validateFeatureFlagValue (
88+ FEATURE_FLAG . hasLogsPageAccess ,
89+ flags . hasLogsPageAccess
90+ ) ;
91+
92+ return hasLogsPageAccessResult . success && hasLogsPageAccessResult . data === true ;
93+ }
94+
95+
6096export const loader = async ( { request, params } : LoaderFunctionArgs ) => {
6197 const user = await requireUser ( request ) ;
6298 const userId = user . id ;
0 commit comments