Fix APIKey typing (#16541)

Following this https://github.com/twentyhq/twenty/pull/16540
Those were not failing (yet) but were wrongly typed and error prone

---------

Co-authored-by: Guillim <guillim@users.noreply.github.com>
This commit is contained in:
Weiko
2025-12-15 17:05:28 +01:00
committed by GitHub
parent fc74a06f53
commit 039a3d99a8
13 changed files with 50 additions and 33 deletions
@@ -59,7 +59,7 @@ export class ApiKeyRoleService {
});
}
async getRoleIdForApiKey(
async getRoleIdForApiKeyId(
apiKeyId: string,
workspaceId: string,
): Promise<string> {
@@ -3,9 +3,10 @@
import { UseFilters, UseGuards, UsePipes } from '@nestjs/common';
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
import { PermissionFlagType } from 'twenty-shared/constants';
import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity';
import { BillingCheckoutSessionInput } from 'src/engine/core-modules/billing/dtos/inputs/billing-checkout-session.input';
import { BillingSessionInput } from 'src/engine/core-modules/billing/dtos/inputs/billing-session.input';
import { BillingUpdateSubscriptionItemPriceInput } from 'src/engine/core-modules/billing/dtos/inputs/billing-update-subscription-item-price.input';
@@ -87,12 +88,12 @@ export class BillingResolver {
plan,
requirePaymentMethod,
}: BillingCheckoutSessionInput,
@AuthApiKey() apiKey?: string,
@AuthApiKey() apiKey?: ApiKeyEntity,
) {
await this.validateCanCheckoutSessionPermissionOrThrow({
workspaceId: workspace.id,
userWorkspaceId,
apiKeyId: apiKey,
apiKeyId: apiKey?.id,
workspaceActivationStatus: workspace.activationStatus,
});
@@ -71,7 +71,7 @@ export class SearchResolver {
let rolePermissionConfig: RolePermissionConfig | undefined;
if (isDefined(apiKey)) {
const roleId = await this.apiKeyRoleService.getRoleIdForApiKey(
const roleId = await this.apiKeyRoleService.getRoleIdForApiKeyId(
apiKey.id,
workspace.id,
);
@@ -24,6 +24,7 @@ import { SupportDriver } from 'src/engine/core-modules/twenty-config/interfaces/
import type { FileUpload } from 'graphql-upload/processRequest.mjs';
import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity';
import {
AuthException,
AuthExceptionCode,
@@ -417,7 +418,7 @@ export class UserResolver {
@AuthUserWorkspaceId() userWorkspaceId: string,
@AuthWorkspace()
workspace: WorkspaceEntity,
@AuthApiKey() apiKey?: string,
@AuthApiKey() apiKey: ApiKeyEntity | undefined,
) {
if (!workspace) {
throw new AuthException(
@@ -462,7 +463,7 @@ export class UserResolver {
userWorkspaceId,
workspaceId: workspace.id,
setting: PermissionFlagType.WORKSPACE_MEMBERS,
apiKeyId: apiKey ?? undefined,
apiKeyId: apiKey?.id,
}));
if (!canDeleteUserFromWorkspace) {
@@ -5,11 +5,12 @@ import assert from 'assert';
import { msg } from '@lingui/core/macro';
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { PermissionFlagType } from 'twenty-shared/constants';
import { assertIsDefinedOrThrow, isDefined } from 'twenty-shared/utils';
import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
import { Repository } from 'typeorm';
import { PermissionFlagType } from 'twenty-shared/constants';
import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity';
import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service';
import { BillingService } from 'src/engine/core-modules/billing/services/billing.service';
import { DnsManagerService } from 'src/engine/core-modules/dns-manager/services/dns-manager.service';
@@ -107,7 +108,7 @@ export class WorkspaceService extends TypeOrmQueryService<WorkspaceEntity> {
}: {
payload: Partial<WorkspaceEntity> & { id: string };
userWorkspaceId?: string;
apiKey?: string;
apiKey: ApiKeyEntity | undefined;
}) {
const workspace = await this.workspaceRepository.findOneBy({
id: payload.id,
@@ -389,7 +390,7 @@ export class WorkspaceService extends TypeOrmQueryService<WorkspaceEntity> {
payload: Partial<WorkspaceEntity>;
userWorkspaceId?: string;
workspaceId: string;
apiKey?: string;
apiKey: ApiKeyEntity | undefined;
workspaceActivationStatus: WorkspaceActivationStatus;
}) {
if (
@@ -439,7 +440,7 @@ export class WorkspaceService extends TypeOrmQueryService<WorkspaceEntity> {
userWorkspaceId,
workspaceId,
setting: permission,
apiKeyId: apiKey,
apiKeyId: apiKey?.id,
});
if (!hasPermission) {
@@ -17,13 +17,14 @@ import {
import assert from 'assert';
import GraphQLUpload from 'graphql-upload/GraphQLUpload.mjs';
import { assertIsDefinedOrThrow, isDefined } from 'twenty-shared/utils';
import { PermissionFlagType } from 'twenty-shared/constants';
import { assertIsDefinedOrThrow, isDefined } from 'twenty-shared/utils';
import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.interface';
import type { FileUpload } from 'graphql-upload/processRequest.mjs';
import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import { ApplicationDTO } from 'src/engine/core-modules/application/dtos/application.dto';
import { fromFlatApplicationToApplicationDto } from 'src/engine/core-modules/application/utils/from-flat-application-to-application-dto.util';
@@ -136,7 +137,7 @@ export class WorkspaceResolver {
@Args('data') data: UpdateWorkspaceInput,
@AuthWorkspace() workspace: WorkspaceEntity,
@AuthUserWorkspaceId() userWorkspaceId: string,
@AuthApiKey() apiKey?: string,
@AuthApiKey() apiKey: ApiKeyEntity | undefined,
) {
try {
return await this.workspaceService.updateWorkspaceById({