Improve workspace auth context surface (#18164)

This commit is contained in:
Weiko
2026-03-05 16:13:59 +01:00
committed by GitHub
parent 5853891b02
commit cfeea43eaf
118 changed files with 453 additions and 677 deletions
@@ -1,15 +0,0 @@
import { isDefined } from 'twenty-shared/utils';
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 const isWorkspaceAuthContext = (
context: AuthContext,
): context is WorkspaceAuthContext => {
return (
isDefined(context.workspace) &&
(isDefined(context.userWorkspaceId) ||
isDefined(context.apiKey) ||
isDefined(context.application))
);
};
@@ -9,7 +9,7 @@ import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-membe
export { AUTH_CONTEXT_USER_SELECT_FIELDS } from 'src/engine/core-modules/auth/constants/auth-context-user-select-fields.constants';
export { type AuthContextUser } from 'src/engine/core-modules/auth/types/auth-context-user.type';
export type AuthContext = {
export type RawAuthContext = {
user?: AuthContextUser | null | undefined;
apiKey?: ApiKeyEntity | null | undefined;
workspaceMemberId?: string;
@@ -25,6 +25,9 @@ export type AuthContext = {
};
};
// @deprecated Use WorkspaceAuthContext instead
export type AuthContext = RawAuthContext;
export type SerializableAuthContext = {
userId?: string;
userWorkspaceId?: string;
@@ -1,4 +1,4 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
export type WorkspaceAuthContextType =
| 'system'
@@ -9,27 +9,27 @@ export type WorkspaceAuthContextType =
interface BaseWorkspaceAuthContext {
type: WorkspaceAuthContextType;
workspace: NonNullable<AuthContext['workspace']>;
workspace: NonNullable<RawAuthContext['workspace']>;
workspaceMetadataVersion?: string;
}
export interface ApiKeyWorkspaceAuthContext extends BaseWorkspaceAuthContext {
type: 'apiKey';
apiKey: NonNullable<AuthContext['apiKey']>;
apiKey: NonNullable<RawAuthContext['apiKey']>;
}
export interface UserWorkspaceAuthContext extends BaseWorkspaceAuthContext {
type: 'user';
userWorkspaceId: NonNullable<AuthContext['userWorkspaceId']>;
user: NonNullable<AuthContext['user']>;
workspaceMemberId: NonNullable<AuthContext['workspaceMemberId']>;
workspaceMember: NonNullable<AuthContext['workspaceMember']>;
userWorkspaceId: NonNullable<RawAuthContext['userWorkspaceId']>;
user: NonNullable<RawAuthContext['user']>;
workspaceMemberId: NonNullable<RawAuthContext['workspaceMemberId']>;
workspaceMember: NonNullable<RawAuthContext['workspaceMember']>;
}
export interface ApplicationWorkspaceAuthContext
extends BaseWorkspaceAuthContext {
type: 'application';
application: NonNullable<AuthContext['application']>;
application: NonNullable<RawAuthContext['application']>;
}
export interface SystemWorkspaceAuthContext extends BaseWorkspaceAuthContext {
@@ -39,8 +39,8 @@ export interface SystemWorkspaceAuthContext extends BaseWorkspaceAuthContext {
export interface PendingActivationUserWorkspaceAuthContext
extends BaseWorkspaceAuthContext {
type: 'pendingActivationUser';
userWorkspaceId: NonNullable<AuthContext['userWorkspaceId']>;
user: NonNullable<AuthContext['user']>;
userWorkspaceId: NonNullable<RawAuthContext['userWorkspaceId']>;
user: NonNullable<RawAuthContext['user']>;
}
export type WorkspaceAuthContext =
@@ -1,9 +1,9 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type ApiKeyWorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
type ApiKeyAuthContextInput = {
workspace: NonNullable<AuthContext['workspace']>;
apiKey: NonNullable<AuthContext['apiKey']>;
workspace: NonNullable<RawAuthContext['workspace']>;
apiKey: NonNullable<RawAuthContext['apiKey']>;
workspaceMetadataVersion?: string;
};
@@ -1,9 +1,9 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type ApplicationWorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
type ApplicationAuthContextInput = {
workspace: NonNullable<AuthContext['workspace']>;
application: NonNullable<AuthContext['application']>;
workspace: NonNullable<RawAuthContext['workspace']>;
application: NonNullable<RawAuthContext['application']>;
workspaceMetadataVersion?: string;
};
@@ -1,10 +1,10 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type PendingActivationUserWorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
type PendingActivationUserAuthContextInput = {
workspace: NonNullable<AuthContext['workspace']>;
userWorkspaceId: NonNullable<AuthContext['userWorkspaceId']>;
user: NonNullable<AuthContext['user']>;
workspace: NonNullable<RawAuthContext['workspace']>;
userWorkspaceId: NonNullable<RawAuthContext['userWorkspaceId']>;
user: NonNullable<RawAuthContext['user']>;
workspaceMetadataVersion?: string;
};
@@ -1,8 +1,8 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type SystemWorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
type SystemAuthContextInput = {
workspace: NonNullable<AuthContext['workspace']>;
workspace: NonNullable<RawAuthContext['workspace']>;
workspaceMetadataVersion?: string;
};
@@ -1,12 +1,12 @@
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type RawAuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { type UserWorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
type UserAuthContextInput = {
workspace: NonNullable<AuthContext['workspace']>;
userWorkspaceId: NonNullable<AuthContext['userWorkspaceId']>;
user: NonNullable<AuthContext['user']>;
workspaceMemberId: NonNullable<AuthContext['workspaceMemberId']>;
workspaceMember: NonNullable<AuthContext['workspaceMember']>;
workspace: NonNullable<RawAuthContext['workspace']>;
userWorkspaceId: NonNullable<RawAuthContext['userWorkspaceId']>;
user: NonNullable<RawAuthContext['user']>;
workspaceMemberId: NonNullable<RawAuthContext['workspaceMemberId']>;
workspaceMember: NonNullable<RawAuthContext['workspaceMember']>;
workspaceMetadataVersion?: string;
};