diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql index 7c7f1ee5f6..c069c25d61 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/schema.graphql +++ b/packages/twenty-client-sdk/src/metadata/generated/schema.graphql @@ -1764,6 +1764,18 @@ type WorkspaceUrls { subdomainUrl: String! } +type ApplicationRegistrationVariableDTO { + id: UUID! + key: String! + value: String + description: String! + isSecret: Boolean! + isRequired: Boolean! + isFilled: Boolean! + createdAt: DateTime! + updatedAt: DateTime! +} + type BillingTrialPeriod { duration: Float! isCreditCardRequired: Boolean! @@ -1968,18 +1980,6 @@ type RotateClientSecret { clientSecret: String! } -type ApplicationRegistrationVariableDTO { - id: UUID! - key: String! - value: String - description: String! - isSecret: Boolean! - isRequired: Boolean! - isFilled: Boolean! - createdAt: DateTime! - updatedAt: DateTime! -} - type Relation { type: RelationType! sourceObjectMetadata: Object! diff --git a/packages/twenty-client-sdk/src/metadata/generated/schema.ts b/packages/twenty-client-sdk/src/metadata/generated/schema.ts index 28dd022709..389bccfe35 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/schema.ts +++ b/packages/twenty-client-sdk/src/metadata/generated/schema.ts @@ -1401,6 +1401,19 @@ export interface WorkspaceUrls { __typename: 'WorkspaceUrls' } +export interface ApplicationRegistrationVariableDTO { + id: Scalars['UUID'] + key: Scalars['String'] + value?: Scalars['String'] + description: Scalars['String'] + isSecret: Scalars['Boolean'] + isRequired: Scalars['Boolean'] + isFilled: Scalars['Boolean'] + createdAt: Scalars['DateTime'] + updatedAt: Scalars['DateTime'] + __typename: 'ApplicationRegistrationVariableDTO' +} + export interface BillingTrialPeriod { duration: Scalars['Float'] isCreditCardRequired: Scalars['Boolean'] @@ -1609,19 +1622,6 @@ export interface RotateClientSecret { __typename: 'RotateClientSecret' } -export interface ApplicationRegistrationVariableDTO { - id: Scalars['UUID'] - key: Scalars['String'] - value?: Scalars['String'] - description: Scalars['String'] - isSecret: Scalars['Boolean'] - isRequired: Scalars['Boolean'] - isFilled: Scalars['Boolean'] - createdAt: Scalars['DateTime'] - updatedAt: Scalars['DateTime'] - __typename: 'ApplicationRegistrationVariableDTO' -} - export interface Relation { type: RelationType sourceObjectMetadata: Object @@ -4332,6 +4332,20 @@ export interface WorkspaceUrlsGenqlSelection{ __scalar?: boolean | number } +export interface ApplicationRegistrationVariableDTOGenqlSelection{ + id?: boolean | number + key?: boolean | number + value?: boolean | number + description?: boolean | number + isSecret?: boolean | number + isRequired?: boolean | number + isFilled?: boolean | number + createdAt?: boolean | number + updatedAt?: boolean | number + __typename?: boolean | number + __scalar?: boolean | number +} + export interface BillingTrialPeriodGenqlSelection{ duration?: boolean | number isCreditCardRequired?: boolean | number @@ -4553,20 +4567,6 @@ export interface RotateClientSecretGenqlSelection{ __scalar?: boolean | number } -export interface ApplicationRegistrationVariableDTOGenqlSelection{ - id?: boolean | number - key?: boolean | number - value?: boolean | number - description?: boolean | number - isSecret?: boolean | number - isRequired?: boolean | number - isFilled?: boolean | number - createdAt?: boolean | number - updatedAt?: boolean | number - __typename?: boolean | number - __scalar?: boolean | number -} - export interface RelationGenqlSelection{ type?: boolean | number sourceObjectMetadata?: ObjectGenqlSelection @@ -7183,6 +7183,14 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null + const ApplicationRegistrationVariableDTO_possibleTypes: string[] = ['ApplicationRegistrationVariableDTO'] + export const isApplicationRegistrationVariableDTO = (obj?: { __typename?: any } | null): obj is ApplicationRegistrationVariableDTO => { + if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistrationVariableDTO"') + return ApplicationRegistrationVariableDTO_possibleTypes.includes(obj.__typename) + } + + + const BillingTrialPeriod_possibleTypes: string[] = ['BillingTrialPeriod'] export const isBillingTrialPeriod = (obj?: { __typename?: any } | null): obj is BillingTrialPeriod => { if (!obj?.__typename) throw new Error('__typename is missing in "isBillingTrialPeriod"') @@ -7367,14 +7375,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null - const ApplicationRegistrationVariableDTO_possibleTypes: string[] = ['ApplicationRegistrationVariableDTO'] - export const isApplicationRegistrationVariableDTO = (obj?: { __typename?: any } | null): obj is ApplicationRegistrationVariableDTO => { - if (!obj?.__typename) throw new Error('__typename is missing in "isApplicationRegistrationVariableDTO"') - return ApplicationRegistrationVariableDTO_possibleTypes.includes(obj.__typename) - } - - - const Relation_possibleTypes: string[] = ['Relation'] export const isRelation = (obj?: { __typename?: any } | null): obj is Relation => { if (!obj?.__typename) throw new Error('__typename is missing in "isRelation"') diff --git a/packages/twenty-client-sdk/src/metadata/generated/types.ts b/packages/twenty-client-sdk/src/metadata/generated/types.ts index deff746236..0c6d7d0d69 100644 --- a/packages/twenty-client-sdk/src/metadata/generated/types.ts +++ b/packages/twenty-client-sdk/src/metadata/generated/types.ts @@ -51,11 +51,11 @@ export default { 163, 167, 169, - 173, 174, - 181, - 184, - 187, + 175, + 182, + 185, + 188, 201, 226, 262, @@ -3434,6 +3434,38 @@ export default { 1 ] }, + "ApplicationRegistrationVariableDTO": { + "id": [ + 3 + ], + "key": [ + 1 + ], + "value": [ + 1 + ], + "description": [ + 1 + ], + "isSecret": [ + 6 + ], + "isRequired": [ + 6 + ], + "isFilled": [ + 6 + ], + "createdAt": [ + 4 + ], + "updatedAt": [ + 4 + ], + "__typename": [ + 1 + ] + }, "BillingTrialPeriod": { "duration": [ 11 @@ -3453,10 +3485,10 @@ export default { 1 ], "type": [ - 173 + 174 ], "status": [ - 174 + 175 ], "issuer": [ 1 @@ -3469,7 +3501,7 @@ export default { "SSOIdentityProviderStatus": {}, "AuthProviders": { "sso": [ - 172 + 173 ], "google": [ 6 @@ -3506,10 +3538,10 @@ export default { 3 ], "authProviders": [ - 175 + 176 ], "authBypassProviders": [ - 176 + 177 ], "logo": [ 1 @@ -3557,7 +3589,7 @@ export default { 1 ], "modelFamily": [ - 181 + 182 ], "modelFamilyLabel": [ 1 @@ -3572,7 +3604,7 @@ export default { 11 ], "nativeCapabilities": [ - 179 + 180 ], "isDeprecated": [ 6 @@ -3608,7 +3640,7 @@ export default { 1 ], "trialPeriods": [ - 171 + 172 ], "__typename": [ 1 @@ -3616,7 +3648,7 @@ export default { }, "Support": { "supportDriver": [ - 184 + 185 ], "supportFrontChatId": [ 1 @@ -3642,7 +3674,7 @@ export default { }, "Captcha": { "provider": [ - 187 + 188 ], "siteKey": [ 1 @@ -3679,7 +3711,7 @@ export default { 169 ], "metadata": [ - 189 + 190 ], "__typename": [ 1 @@ -3704,13 +3736,13 @@ export default { 1 ], "authProviders": [ - 175 + 176 ], "billing": [ - 182 + 183 ], "aiModels": [ - 180 + 181 ], "signInPrefilled": [ 6 @@ -3731,25 +3763,25 @@ export default { 6 ], "support": [ - 183 + 184 ], "isAttachmentPreviewEnabled": [ 6 ], "sentry": [ - 185 - ], - "captcha": [ 186 ], + "captcha": [ + 187 + ], "api": [ - 188 + 189 ], "canManageFeatureFlags": [ 6 ], "publicFeatureFlags": [ - 190 + 191 ], "isMicrosoftMessagingEnabled": [ 6 @@ -3788,7 +3820,7 @@ export default { 6 ], "maintenance": [ - 191 + 192 ], "__typename": [ 1 @@ -3827,7 +3859,7 @@ export default { 1 ], "versionDistribution": [ - 194 + 195 ], "__typename": [ 1 @@ -3872,38 +3904,6 @@ export default { 1 ] }, - "ApplicationRegistrationVariableDTO": { - "id": [ - 3 - ], - "key": [ - 1 - ], - "value": [ - 1 - ], - "description": [ - 1 - ], - "isSecret": [ - 6 - ], - "isRequired": [ - 6 - ], - "isFilled": [ - 6 - ], - "createdAt": [ - 4 - ], - "updatedAt": [ - 4 - ], - "__typename": [ - 1 - ] - }, "Relation": { "type": [ 201 @@ -4095,7 +4095,7 @@ export default { 3 ], "type": [ - 173 + 174 ], "issuer": [ 1 @@ -4104,7 +4104,7 @@ export default { 1 ], "status": [ - 174 + 175 ], "__typename": [ 1 @@ -4123,7 +4123,7 @@ export default { }, "FindAvailableSSOIDP": { "type": [ - 173 + 174 ], "id": [ 3 @@ -4135,7 +4135,7 @@ export default { 1 ], "status": [ - 174 + 175 ], "workspace": [ 218 @@ -4149,7 +4149,7 @@ export default { 3 ], "type": [ - 173 + 174 ], "issuer": [ 1 @@ -4158,7 +4158,7 @@ export default { 1 ], "status": [ - 174 + 175 ], "__typename": [ 1 @@ -4166,7 +4166,7 @@ export default { }, "SSOConnection": { "type": [ - 173 + 174 ], "id": [ 3 @@ -4178,7 +4178,7 @@ export default { 1 ], "status": [ - 174 + 175 ], "__typename": [ 1 @@ -4529,13 +4529,13 @@ export default { }, "UsageAnalytics": { "usageByUser": [ - 193 + 194 ], "usageByOperationType": [ - 193 + 194 ], "usageByModel": [ - 193 + 194 ], "timeSeries": [ 251 @@ -6293,7 +6293,7 @@ export default { } ], "findApplicationRegistrationByClientId": [ - 197, + 198, { "clientId": [ 1, @@ -6323,7 +6323,7 @@ export default { } ], "findApplicationRegistrationStats": [ - 195, + 196, { "id": [ 1, @@ -6332,7 +6332,7 @@ export default { } ], "findApplicationRegistrationVariables": [ - 199, + 171, { "applicationRegistrationId": [ 1, @@ -6356,7 +6356,7 @@ export default { 75 ], "getPublicWorkspaceDataByDomain": [ - 177, + 178, { "origin": [ 1 @@ -6364,7 +6364,7 @@ export default { } ], "getPublicWorkspaceDataById": [ - 178, + 179, { "id": [ 3, @@ -8197,7 +8197,7 @@ export default { } ], "createApplicationRegistration": [ - 196, + 197, { "input": [ 443, @@ -8224,7 +8224,7 @@ export default { } ], "rotateApplicationRegistrationClientSecret": [ - 198, + 199, { "id": [ 1, @@ -11010,7 +11010,7 @@ export default { 3 ], "status": [ - 174 + 175 ], "__typename": [ 1 diff --git a/packages/twenty-front/src/generated-admin/graphql.ts b/packages/twenty-front/src/generated-admin/graphql.ts index 6e2d75221e..3d92c3ba24 100644 --- a/packages/twenty-front/src/generated-admin/graphql.ts +++ b/packages/twenty-front/src/generated-admin/graphql.ts @@ -195,6 +195,19 @@ export enum ApplicationRegistrationSourceType { TARBALL = 'TARBALL' } +export type ApplicationRegistrationVariableDto = { + __typename?: 'ApplicationRegistrationVariableDTO'; + createdAt: Scalars['DateTime']; + description: Scalars['String']; + id: Scalars['UUID']; + isFilled: Scalars['Boolean']; + isRequired: Scalars['Boolean']; + isSecret: Scalars['Boolean']; + key: Scalars['String']; + updatedAt: Scalars['DateTime']; + value?: Maybe; +}; + export enum ConfigSource { DATABASE = 'DATABASE', DEFAULT = 'DEFAULT', @@ -495,6 +508,7 @@ export type Query = { __typename?: 'Query'; adminPanelRecentUsers: Array; adminPanelTopWorkspaces: Array; + findAdminApplicationRegistrationVariables: Array; findAllApplicationRegistrations: Array; findOneAdminApplicationRegistration: ApplicationRegistration; getAdminAiModels: AdminAiModels; @@ -531,6 +545,11 @@ export type QueryAdminPanelTopWorkspacesArgs = { }; +export type QueryFindAdminApplicationRegistrationVariablesArgs = { + applicationRegistrationId: Scalars['String']; +}; + + export type QueryFindOneAdminApplicationRegistrationArgs = { id: Scalars['String']; }; @@ -904,6 +923,13 @@ export type GetModelsDevSuggestionsQueryVariables = Exact<{ export type GetModelsDevSuggestionsQuery = { __typename?: 'Query', getModelsDevSuggestions: Array<{ __typename?: 'ModelsDevModelSuggestion', modelId: string, name: string, inputCostPerMillionTokens: number, outputCostPerMillionTokens: number, cachedInputCostPerMillionTokens?: number | null, cacheCreationCostPerMillionTokens?: number | null, contextWindowTokens: number, maxOutputTokens: number, modalities: Array, supportsReasoning: boolean }> }; +export type FindAdminApplicationRegistrationVariablesQueryVariables = Exact<{ + applicationRegistrationId: Scalars['String']; +}>; + + +export type FindAdminApplicationRegistrationVariablesQuery = { __typename?: 'Query', findAdminApplicationRegistrationVariables: Array<{ __typename?: 'ApplicationRegistrationVariableDTO', id: string, key: string, value?: string | null, description: string, isSecret: boolean, isRequired: boolean, isFilled: boolean, createdAt: string, updatedAt: string }> }; + export type FindAllApplicationRegistrationsQueryVariables = Exact<{ [key: string]: never; }>; @@ -1128,6 +1154,7 @@ export const GetAdminAiUsageByWorkspaceDocument = {"kind":"Document","definition export const GetAiProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAiProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAiProviders"}}]}}]} as unknown as DocumentNode; export const GetModelsDevProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetModelsDevProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getModelsDevProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"modelCount"}},{"kind":"Field","name":{"kind":"Name","value":"npm"}}]}}]}}]} as unknown as DocumentNode; export const GetModelsDevSuggestionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetModelsDevSuggestions"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getModelsDevSuggestions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modelId"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"inputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"outputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"cachedInputCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"cacheCreationCostPerMillionTokens"}},{"kind":"Field","name":{"kind":"Name","value":"contextWindowTokens"}},{"kind":"Field","name":{"kind":"Name","value":"maxOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"modalities"}},{"kind":"Field","name":{"kind":"Name","value":"supportsReasoning"}}]}}]}}]} as unknown as DocumentNode; +export const FindAdminApplicationRegistrationVariablesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAdminApplicationRegistrationVariables"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAdminApplicationRegistrationVariables"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"applicationRegistrationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"applicationRegistrationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isSecret"}},{"kind":"Field","name":{"kind":"Name","value":"isRequired"}},{"kind":"Field","name":{"kind":"Name","value":"isFilled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; export const FindAllApplicationRegistrationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"findAllApplicationRegistrations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ApplicationRegistrationFragment"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ApplicationRegistrationFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"ApplicationRegistration"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"universalIdentifier"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logoUrl"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthClientId"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthRedirectUris"}},{"kind":"Field","name":{"kind":"Name","value":"oAuthScopes"}},{"kind":"Field","name":{"kind":"Name","value":"sourceType"}},{"kind":"Field","name":{"kind":"Name","value":"sourcePackage"}},{"kind":"Field","name":{"kind":"Name","value":"latestAvailableVersion"}},{"kind":"Field","name":{"kind":"Name","value":"isListed"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"isPreInstalled"}},{"kind":"Field","name":{"kind":"Name","value":"isConfigured"}},{"kind":"Field","name":{"kind":"Name","value":"ownerWorkspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode; export const CreateDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode; export const DeleteDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}]}]}}]} as unknown as DocumentNode; diff --git a/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts b/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts new file mode 100644 index 0000000000..946c952a00 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/admin-panel/apps/graphql/queries/findAdminApplicationRegistrationVariables.ts @@ -0,0 +1,21 @@ +import { gql } from '@apollo/client'; + +export const FIND_ADMIN_APPLICATION_REGISTRATION_VARIABLES = gql` + query FindAdminApplicationRegistrationVariables( + $applicationRegistrationId: String! + ) { + findAdminApplicationRegistrationVariables( + applicationRegistrationId: $applicationRegistrationId + ) { + id + key + value + description + isSecret + isRequired + isFilled + createdAt + updatedAt + } + } +`; diff --git a/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx b/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx index edbaf92d48..a043d0417b 100644 --- a/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx +++ b/packages/twenty-front/src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDetail.tsx @@ -66,6 +66,7 @@ export const SettingsAdminApplicationRegistrationDetail = () => { return ( ); case 'oauth': diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx index 9a3e25fb50..03dc2c6461 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationConfigTab.tsx @@ -1,31 +1,47 @@ import type { ApplicationRegistrationData } from '~/pages/settings/applications/tabs/types/ApplicationRegistrationData'; import { useQuery } from '@apollo/client/react'; import { FindApplicationRegistrationVariablesDocument } from '~/generated-metadata/graphql'; +import { FindAdminApplicationRegistrationVariablesDocument } from '~/generated-admin/graphql'; import { Section } from 'twenty-ui/layout'; import { H2Title, Status } from 'twenty-ui/display'; import { useLingui } from '@lingui/react/macro'; import { getSettingsPath } from 'twenty-shared/utils'; import { SettingsPath } from 'twenty-shared/types'; import { ConfigVariableTable } from '@/settings/config-variables/components/ConfigVariableTable'; +import { useApolloAdminClient } from '@/settings/admin-panel/apollo/hooks/useApolloAdminClient'; export const SettingsApplicationRegistrationConfigTab = ({ registration, + fromAdmin, }: { registration: ApplicationRegistrationData; + fromAdmin?: boolean; }) => { const { t } = useLingui(); + const apolloAdminClient = useApolloAdminClient(); const applicationRegistrationId = registration.id; - const { data: variablesData } = useQuery( + const { data: workspaceVariablesData } = useQuery( FindApplicationRegistrationVariablesDocument, { variables: { applicationRegistrationId }, - skip: !applicationRegistrationId, + skip: !applicationRegistrationId || fromAdmin === true, }, ); - const variables = variablesData?.findApplicationRegistrationVariables ?? []; + const { data: adminVariablesData } = useQuery( + FindAdminApplicationRegistrationVariablesDocument, + { + client: apolloAdminClient, + variables: { applicationRegistrationId }, + skip: !applicationRegistrationId || fromAdmin !== true, + }, + ); + + const variables = fromAdmin + ? (adminVariablesData?.findAdminApplicationRegistrationVariables ?? []) + : (workspaceVariablesData?.findApplicationRegistrationVariables ?? []); const configVariables = variables.map((variable) => ({ name: variable.key, diff --git a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.resolver.ts b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.resolver.ts index efdd0f8c28..07dc6f4f45 100644 --- a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.resolver.ts @@ -44,6 +44,8 @@ import { AdminPanelSigningKeyService } from 'src/engine/core-modules/admin-panel import { AdminPanelStatisticsService } from 'src/engine/core-modules/admin-panel/services/admin-panel-statistics.service'; import { AdminPanelUserLookupService } from 'src/engine/core-modules/admin-panel/services/admin-panel-user-lookup.service'; import { AdminPanelVersionService } from 'src/engine/core-modules/admin-panel/services/admin-panel-version.service'; +import { ApplicationRegistrationVariableDTO } from 'src/engine/core-modules/application/application-registration-variable/dtos/application-registration-variable.dto'; +import { ApplicationRegistrationVariableService } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.service'; import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity'; import { ApplicationRegistrationService } from 'src/engine/core-modules/application/application-registration/application-registration.service'; import { AuthGraphqlApiExceptionFilter } from 'src/engine/core-modules/auth/filters/auth-graphql-api-exception.filter'; @@ -105,6 +107,7 @@ export class AdminPanelResolver { private readonly adminPanelHealthService: AdminPanelHealthService, private readonly adminPanelSigningKeyService: AdminPanelSigningKeyService, private readonly applicationRegistrationService: ApplicationRegistrationService, + private readonly applicationRegistrationVariableService: ApplicationRegistrationVariableService, private adminPanelQueueService: AdminPanelQueueService, private featureFlagService: FeatureFlagService, private readonly twentyConfigService: TwentyConfigService, @@ -712,6 +715,16 @@ export class AdminPanelResolver { return this.applicationRegistrationService.findOneByIdGlobal(id); } + @UseGuards(AdminPanelGuard) + @Query(() => [ApplicationRegistrationVariableDTO]) + async findAdminApplicationRegistrationVariables( + @Args('applicationRegistrationId') applicationRegistrationId: string, + ): Promise { + return this.applicationRegistrationVariableService.findVariablesWithObfuscatedValuesGlobal( + applicationRegistrationId, + ); + } + @UseGuards(AdminPanelGuard) @Query(() => InstanceAndAllWorkspacesUpgradeStatusDTO) async getInstanceAndAllWorkspacesUpgradeStatus(): Promise { diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts index 0835786a0e..9a81846681 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts @@ -35,6 +35,14 @@ export class ApplicationRegistrationVariableService { workspaceId, ); + return this.findVariablesWithObfuscatedValuesGlobal( + applicationRegistrationId, + ); + } + + async findVariablesWithObfuscatedValuesGlobal( + applicationRegistrationId: string, + ): Promise { const variables = await this.variableRepository.find({ where: { applicationRegistrationId }, order: { key: 'ASC' },