Improve workspace auth context surface (#18164)
This commit is contained in:
+3
-3
@@ -1,11 +1,11 @@
|
||||
import { type QueryResultFieldValue } from 'src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/interfaces/query-result-field-value';
|
||||
import { type ResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface';
|
||||
|
||||
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
|
||||
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
|
||||
|
||||
export interface WorkspacePreQueryHookInstance {
|
||||
execute(
|
||||
authContext: AuthContext,
|
||||
authContext: WorkspaceAuthContext,
|
||||
objectName: string,
|
||||
payload: ResolverArgs,
|
||||
): Promise<ResolverArgs>;
|
||||
@@ -13,7 +13,7 @@ export interface WorkspacePreQueryHookInstance {
|
||||
|
||||
export interface WorkspacePostQueryHookInstance {
|
||||
execute(
|
||||
authContext: AuthContext,
|
||||
authContext: WorkspaceAuthContext,
|
||||
objectName: string,
|
||||
payload: QueryResultFieldValue,
|
||||
): Promise<void>;
|
||||
|
||||
+16
-4
@@ -12,6 +12,8 @@ import {
|
||||
type WorkspacePreQueryHookInstance,
|
||||
} from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/interfaces/workspace-query-hook.interface';
|
||||
|
||||
import { isApiKeyAuthContext } from 'src/engine/core-modules/auth/guards/is-api-key-auth-context.guard';
|
||||
import { isUserAuthContext } from 'src/engine/core-modules/auth/guards/is-user-auth-context.guard';
|
||||
import { STANDARD_ERROR_MESSAGE } from 'src/engine/api/common/common-query-runners/errors/standard-error-message.constant';
|
||||
import {
|
||||
GraphqlQueryRunnerException,
|
||||
@@ -171,14 +173,24 @@ export class WorkspaceQueryHookExplorer implements OnModuleInit {
|
||||
const contextId = createContextId();
|
||||
|
||||
if (this.moduleRef.registerRequestByContextId) {
|
||||
const authContext = executeParams[0];
|
||||
|
||||
this.moduleRef.registerRequestByContextId(
|
||||
{
|
||||
req: {
|
||||
workspaceId: workspace.id,
|
||||
userWorkspaceId: executeParams?.[0].userWorkspaceId,
|
||||
apiKey: executeParams?.[0].apiKey,
|
||||
workspaceMemberId: executeParams?.[0].workspaceMemberId,
|
||||
user: executeParams?.[0].user,
|
||||
userWorkspaceId: isUserAuthContext(authContext)
|
||||
? authContext.userWorkspaceId
|
||||
: undefined,
|
||||
apiKey: isApiKeyAuthContext(authContext)
|
||||
? authContext.apiKey
|
||||
: undefined,
|
||||
workspaceMemberId: isUserAuthContext(authContext)
|
||||
? authContext.workspaceMemberId
|
||||
: undefined,
|
||||
user: isUserAuthContext(authContext)
|
||||
? authContext.user
|
||||
: undefined,
|
||||
},
|
||||
},
|
||||
contextId,
|
||||
|
||||
+3
-3
@@ -10,7 +10,7 @@ import { type WorkspaceQueryHookKey } from 'src/engine/api/graphql/workspace-que
|
||||
import { WorkspaceQueryHookStorage } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/storage/workspace-query-hook.storage';
|
||||
import { type WorkspacePreQueryHookPayload } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/types/workspace-query-hook.type';
|
||||
import { WorkspaceQueryHookExplorer } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.explorer';
|
||||
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
|
||||
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceQueryHookService {
|
||||
@@ -23,7 +23,7 @@ export class WorkspaceQueryHookService {
|
||||
public async executePreQueryHooks<
|
||||
T extends WorkspaceResolverBuilderMethodNames | CommonQueryNames,
|
||||
>(
|
||||
authContext: AuthContext,
|
||||
authContext: WorkspaceAuthContext,
|
||||
// TODO: We should allow wildcard for object name
|
||||
objectName: string,
|
||||
methodName: T,
|
||||
@@ -56,7 +56,7 @@ export class WorkspaceQueryHookService {
|
||||
public async executePostQueryHooks<
|
||||
T extends WorkspaceResolverBuilderMethodNames,
|
||||
>(
|
||||
authContext: AuthContext,
|
||||
authContext: WorkspaceAuthContext,
|
||||
// TODO: We should allow wildcard for object name
|
||||
objectName: string,
|
||||
methodName: T,
|
||||
|
||||
Reference in New Issue
Block a user