Skip to content

Commit 764cc24

Browse files
committed
Remove feature flag to use Database tokens
1 parent d72e077 commit 764cc24

11 files changed

Lines changed: 22 additions & 73 deletions

File tree

packages/blocks/openops-tables/src/actions/delete-record-action.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
getTableIdByTableName,
88
OpenOpsField,
99
openopsTablesDropdownProperty,
10-
resolveTokenProvider,
10+
createTokenProvider,
1111
TokenOrResolver,
1212
} from '@openops/common';
1313
import { cacheWrapper } from '@openops/server-shared';
@@ -36,7 +36,7 @@ export const deleteRecordAction = createAction({
3636
[tableName, context.server],
3737
);
3838

39-
const tokenOrResolver = await resolveTokenProvider(context.server);
39+
const tokenOrResolver = await createTokenProvider(context.server);
4040

4141
const fieldsCacheKey = `${context.run.id}-${tableId}-fields`;
4242
const fields = await cacheWrapper.getOrAdd<

packages/blocks/openops-tables/src/actions/get-records-action.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
getTableIdByTableName,
88
isSingleValueFilter,
99
openopsTablesDropdownProperty,
10-
resolveTokenProvider,
10+
createTokenProvider,
1111
ViewFilterTypesEnum,
1212
} from '@openops/common';
1313
import { cacheWrapper } from '@openops/server-shared';
@@ -141,7 +141,7 @@ export const getRecordsAction = createAction({
141141
};
142142
});
143143
const filterType = context.propsValue.filterType as FilterType;
144-
const tokenOrResolver = await resolveTokenProvider(context.server);
144+
const tokenOrResolver = await createTokenProvider(context.server);
145145

146146
const rows = await getRows({
147147
tableId: tableId,

packages/blocks/openops-tables/src/actions/update-record-action.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { BlockAuth, createAction, Property } from '@openops/blocks-framework';
22
import {
3+
createTokenProvider,
34
getFields,
45
getPrimaryKeyFieldFromFields,
56
getPropertyFromField,
67
getTableFields,
78
getTableIdByTableName,
89
OpenOpsField,
910
openopsTablesDropdownProperty,
10-
resolveTokenProvider,
1111
TokenOrResolver,
1212
upsertRow,
1313
} from '@openops/common';
@@ -137,7 +137,7 @@ export const updateRecordAction = createAction({
137137
);
138138

139139
const fieldsCacheKey = `${context.run.id}-${tableId}-fields`;
140-
const tokenOrResolver = await resolveTokenProvider(context.server);
140+
const tokenOrResolver = await createTokenProvider(context.server);
141141
const tableFields = await cacheWrapper.getOrAdd<
142142
OpenOpsField[],
143143
[number, TokenOrResolver]
Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
1-
import { AppSystemProp, cacheWrapper, system } from '@openops/server-shared';
21
import { AxiosHeaders } from 'axios';
32
import { IAxiosRetryConfig } from 'axios-retry';
43
import { makeOpenOpsTablesPost } from './requests-helpers';
5-
const tokenLifetimeMinutes = system.getNumber(
6-
AppSystemProp.TABLES_TOKEN_LIFETIME_MINUTES,
7-
);
8-
9-
const tokenLifetimeSeconds = tokenLifetimeMinutes
10-
? (tokenLifetimeMinutes - 10) * 60 // Subtract 10 minutes to ensure the cache expired before the token
11-
: undefined;
124

135
export interface AuthTokens {
146
token: string;
@@ -36,29 +28,3 @@ export async function authenticateUserInOpenOpsTables(
3628
axiosRetryConfig,
3729
);
3830
}
39-
40-
export async function authenticateDefaultUserInOpenOpsTables(
41-
axiosRetryConfig?: IAxiosRetryConfig,
42-
): Promise<AuthTokens> {
43-
const cacheKey = 'openops-tables-token';
44-
45-
let tokens = await cacheWrapper.getSerializedObject<AuthTokens>(cacheKey);
46-
47-
if (!tokens) {
48-
const email = system.getOrThrow(AppSystemProp.OPENOPS_ADMIN_EMAIL);
49-
const password = system.getOrThrow(AppSystemProp.OPENOPS_ADMIN_PASSWORD);
50-
51-
tokens = await authenticateUserInOpenOpsTables(
52-
email,
53-
password,
54-
axiosRetryConfig,
55-
);
56-
await cacheWrapper.setSerializedObject(
57-
cacheKey,
58-
tokens,
59-
tokenLifetimeSeconds,
60-
);
61-
}
62-
63-
return tokens;
64-
}
Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,19 @@
11
import { ServerContext } from '@openops/blocks-framework';
2-
import { AppSystemProp, encryptUtils, system } from '@openops/server-shared';
3-
import { authenticateDefaultUserInOpenOpsTables } from './auth-user';
4-
5-
export function shouldUseDatabaseToken(): boolean {
6-
return system.getBoolean(AppSystemProp.ENABLE_TABLES_DATABASE_TOKEN) ?? false;
7-
}
2+
import { encryptUtils } from '@openops/server-shared';
83

94
export type TokenOrResolver = string | { getToken: () => string };
105
export type TablesServerContext = Pick<
116
ServerContext,
127
'tablesDatabaseId' | 'tablesDatabaseToken'
138
>;
149

15-
export async function resolveTokenProvider(
10+
export async function createTokenProvider(
1611
serverContext: TablesServerContext,
1712
): Promise<TokenOrResolver> {
18-
if (shouldUseDatabaseToken()) {
19-
return {
20-
getToken: () => {
21-
const { tablesDatabaseToken } = serverContext;
22-
return encryptUtils.decryptString(tablesDatabaseToken);
23-
},
24-
};
25-
}
26-
27-
const { token } = await authenticateDefaultUserInOpenOpsTables();
28-
return token;
13+
return {
14+
getToken: () => {
15+
const { tablesDatabaseToken } = serverContext;
16+
return encryptUtils.decryptString(tablesDatabaseToken);
17+
},
18+
};
2919
}

packages/openops/src/lib/openops-tables/create-axios-headers.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AxiosHeaders } from 'axios';
2-
import { shouldUseDatabaseToken, TokenOrResolver } from './context-helpers';
2+
import { TokenOrResolver } from './context-helpers';
33

44
export enum AuthType {
55
JWT = 'JWT',
@@ -12,12 +12,8 @@ function getToken(tokenOrResolver: TokenOrResolver): string {
1212
: tokenOrResolver.getToken();
1313
}
1414

15-
function getAuthPrefix(
16-
useJwtOverride: boolean,
17-
shouldUseDatabaseTokenConfig: boolean,
18-
): AuthType {
19-
const useJwt = useJwtOverride || !shouldUseDatabaseTokenConfig;
20-
return useJwt ? AuthType.JWT : AuthType.Token;
15+
function getAuthPrefix(useJwtOverride: boolean): AuthType {
16+
return useJwtOverride ? AuthType.JWT : AuthType.Token;
2117
}
2218

2319
export const createAxiosHeaders = (
@@ -26,7 +22,7 @@ export const createAxiosHeaders = (
2622
const useJwtOverride = typeof tokenOrResolver === 'string';
2723
const token = getToken(tokenOrResolver);
2824

29-
const prefix = getAuthPrefix(useJwtOverride, shouldUseDatabaseToken());
25+
const prefix = getAuthPrefix(useJwtOverride);
3026

3127
return new AxiosHeaders({
3228
'Content-Type': 'application/json',

packages/openops/src/lib/openops-tables/openops-tables-common-properties.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Property, Validators } from '@openops/blocks-framework';
2-
import { resolveTokenProvider, TablesServerContext } from './context-helpers';
2+
import { createTokenProvider, TablesServerContext } from './context-helpers';
33
import {
44
DateOpenOpsField,
55
DurationOpenOpsField,
@@ -37,7 +37,7 @@ export async function getTableFields(
3737
serverContext: TablesServerContext,
3838
): Promise<OpenOpsField[]> {
3939
const tableId = await getTableIdByTableName(tableName, serverContext);
40-
const tokenOrResolver = await resolveTokenProvider(serverContext);
40+
const tokenOrResolver = await createTokenProvider(serverContext);
4141
return await getFields(tableId, tokenOrResolver, false);
4242
}
4343

packages/openops/src/lib/openops-tables/tables.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { AxiosHeaders } from 'axios';
22
import { makeOpenOpsTablesGet } from '../openops-tables/requests-helpers';
3-
import { TablesServerContext, resolveTokenProvider } from './context-helpers';
3+
import { TablesServerContext, createTokenProvider } from './context-helpers';
44
import { createAxiosHeaders } from './create-axios-headers';
55

66
async function getTables(
@@ -49,7 +49,7 @@ export async function getTableNames(
4949
async function getAvailableTablesInOpenopsTables(
5050
serverContext: TablesServerContext,
5151
): Promise<OpenOpsTable[]> {
52-
const tokenOrResolver = await resolveTokenProvider(serverContext);
52+
const tokenOrResolver = await createTokenProvider(serverContext);
5353

5454
const authenticationHeader = createAxiosHeaders(tokenOrResolver);
5555

packages/server/api/test/unit/mcp/llm-query-router.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ jest.mock('@openops/server-shared', () => ({
3939
},
4040
AppSystemProp: {
4141
DB_TYPE: 'DB_TYPE',
42-
ENABLE_TABLES_DATABASE_TOKEN: 'ENABLE_TABLES_DATABASE_TOKEN',
4342
},
4443
}));
4544

packages/server/shared/src/lib/system/system-prop.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ export enum AppSystemProp {
110110

111111
MAX_LLM_CALLS_WITHOUT_INTERACTION = 'MAX_LLM_CALLS_WITHOUT_INTERACTION',
112112
LLM_CHAT_EXPIRE_TIME_SECONDS = 'LLM_CHAT_EXPIRE_TIME_SECONDS',
113-
ENABLE_TABLES_DATABASE_TOKEN = 'ENABLE_TABLES_DATABASE_TOKEN',
114113
}
115114

116115
export enum SharedSystemProp {

0 commit comments

Comments
 (0)