@efficy/tribecrm-mcp-server 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -47,26 +47,40 @@ TRIBECRM_AUTH=app # Default - can be omitted
47
47
 
48
48
  **Use case**: Personal AI assistants, user-specific operations
49
49
 
50
- **Setup**:
51
- 1. Run the authentication helper:
52
- ```bash
53
- npx @efficy/tribecrm-mcp-server authenticate
54
- # or if installed locally:
55
- npm run authenticate
56
- ```
50
+ **✨ Recommended: Authenticate directly from Claude**
57
51
 
58
- 2. Your browser will open for TribeCRM login
52
+ The easiest way to authenticate is directly from your conversation with Claude:
59
53
 
60
- 3. After successful authentication, tokens are saved locally to `~/.tribecrm/tokens.json`
54
+ 1. Configure your MCP client with `TRIBECRM_AUTH=user` (see Configuration section)
55
+ 2. Restart Claude Desktop
56
+ 3. Ask Claude: **"Can you authenticate with TribeCRM?"**
57
+ 4. Claude will use the `tribecrm_authenticate` tool to generate an authentication link
58
+ 5. Click the link, log in to TribeCRM, and accept the consent
59
+ 6. Tokens are saved automatically - no restart needed!
61
60
 
62
- 4. Configure your MCP client with `TRIBECRM_AUTH=user`
61
+ **Alternative: CLI Authentication**
62
+
63
+ For testing, debugging, or pre-authentication, you can use the CLI command:
64
+
65
+ ```bash
66
+ npx @efficy/tribecrm-mcp-server authenticate
67
+ # or if installed locally:
68
+ npm run authenticate
69
+ ```
70
+
71
+ Your browser will open for TribeCRM login, and tokens will be saved to `~/.tribecrm/tokens.json`
63
72
 
64
73
  **Features**:
65
- - Browser-based OAuth consent flow
66
- - Automatic token refresh (tokens valid for 24 hours)
67
- - Secure local token storage
68
- - PKCE (Proof Key for Code Exchange) for additional security
69
- - ✅ User-specific access rights respected
74
+ - **No terminal needed** - authenticate directly from Claude
75
+ - 🔄 Automatic token refresh (tokens valid for 24 hours)
76
+ - 💾 Secure local token storage (`~/.tribecrm/tokens.json`)
77
+ - No restart required after authentication
78
+ - ✅ Standard OAuth2 Authorization Code flow
79
+ - 🔐 User-specific access rights respected
80
+
81
+ **Requirements**:
82
+ - Both `TRIBECRM_CLIENT_ID` and `TRIBECRM_CLIENT_SECRET` are required for the authentication flow
83
+ - Redirect URI must be pre-registered in your OAuth client configuration (default: `http://localhost:3001/callback`)
70
84
 
71
85
  ## 📋 Prerequisites
72
86
 
@@ -110,7 +124,6 @@ Add to your Claude Desktop config file:
110
124
  "TRIBECRM_AUTH_URL": "https://auth.tribecrm.nl",
111
125
  "TRIBECRM_CLIENT_ID": "your_client_id",
112
126
  "TRIBECRM_CLIENT_SECRET": "your_client_secret",
113
- "TRIBECRM_ORGANIZATION_ID": "your_org_id",
114
127
  "TRIBECRM_MODE": "read-only",
115
128
  "TRIBECRM_AUTH": "app"
116
129
  }
@@ -136,7 +149,6 @@ Add to your Claude Desktop config file:
136
149
  "TRIBECRM_AUTH_URL": "https://auth.tribecrm.nl",
137
150
  "TRIBECRM_CLIENT_ID": "your_client_id",
138
151
  "TRIBECRM_CLIENT_SECRET": "your_client_secret",
139
- "TRIBECRM_ORGANIZATION_ID": "your_org_id",
140
152
  "TRIBECRM_MODE": "read-only",
141
153
  "TRIBECRM_AUTH": "app"
142
154
  }
@@ -158,8 +170,9 @@ Add to your Claude Desktop config file:
158
170
  - `TRIBECRM_API_URL` (required): Your TribeCRM API URL (e.g., https://api.tribecrm.nl or https://api-staging.tribecrm.nl)
159
171
  - `TRIBECRM_AUTH_URL` (required): Your TribeCRM OAuth2 authentication URL (e.g., https://auth.tribecrm.nl or https://auth-staging.tribecrm.nl)
160
172
  - `TRIBECRM_CLIENT_ID` (required): OAuth2 Client ID
161
- - `TRIBECRM_CLIENT_SECRET` (required): OAuth2 Client Secret
162
- - `TRIBECRM_ORGANIZATION_ID` (optional): Organization UUID for multi-tenant setups
173
+ - `TRIBECRM_CLIENT_SECRET` (required for both auth methods): OAuth2 Client Secret
174
+ - Required when using `TRIBECRM_AUTH=app` (default) - for Client Credentials flow
175
+ - Required when using `TRIBECRM_AUTH=user` - for Authorization Code token exchange
163
176
  - `TRIBECRM_MODE` (optional): Server operation mode - `read-only` (default) or `read-write`
164
177
  - `read-only`: Only allows queries and data retrieval (get, query operations). Write tools are hidden.
165
178
  - `read-write`: Allows full access including create, update, and delete operations.
@@ -167,11 +180,51 @@ Add to your Claude Desktop config file:
167
180
  - `app`: OAuth2 Client Credentials flow for service account authentication
168
181
  - `user`: OAuth2 Authorization Code flow for user-specific authentication
169
182
  - `TRIBECRM_REDIRECT_URI` (optional): Redirect URI for user authentication (only needed when `TRIBECRM_AUTH=user`)
170
- - Default: `http://localhost:3000/callback`
183
+ - Default: `http://localhost:3001/callback`
171
184
  - Must match the redirect URI configured in your TribeCRM OAuth application
172
185
 
173
186
  ## 📚 Available Tools
174
187
 
188
+ ### Authentication Operations
189
+
190
+ #### `tribecrm_authenticate`
191
+ Start user authentication flow (only available when `TRIBECRM_AUTH=user`)
192
+
193
+ **Use case**: When user authentication is required but no valid tokens are found, this tool generates an authentication URL and starts a background callback server to handle the OAuth flow.
194
+
195
+ **Parameters:** None
196
+
197
+ **Returns**: Authentication URL and step-by-step instructions
198
+
199
+ **Features**:
200
+ - ✨ Authenticate directly from Claude without using the terminal
201
+ - 🔄 Background callback server automatically handles OAuth redirects
202
+ - 💾 Tokens saved automatically to `~/.tribecrm/tokens.json`
203
+ - ⚡ No restart required - tokens work immediately after authentication
204
+
205
+ **Example workflow**:
206
+ 1. User asks: "Can you authenticate with TribeCRM?"
207
+ 2. Claude calls `tribecrm_authenticate` tool
208
+ 3. User clicks the provided authentication link
209
+ 4. User logs in to TribeCRM and accepts consent
210
+ 5. Tokens are saved automatically
211
+ 6. User can immediately use TribeCRM tools
212
+
213
+ **Error messages**: If authentication is needed, other TribeCRM tools will display a helpful error message suggesting to use this tool or run `npm run authenticate` manually.
214
+
215
+ #### `tribecrm_get_current_employee`
216
+ Get information about the currently authenticated employee
217
+
218
+ **Parameters:**
219
+ - `expand` (string, optional): OData $expand parameter (e.g., "Person")
220
+
221
+ **Example:**
222
+ ```json
223
+ {
224
+ "expand": "Person"
225
+ }
226
+ ```
227
+
175
228
  ### Entity Operations
176
229
 
177
230
  #### `tribecrm_get_entity`
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=callback-server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-server.test.d.ts","sourceRoot":"","sources":["../../src/auth/callback-server.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,233 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { CallbackServer } from './callback-server.js';
3
+ import http from 'http';
4
+ describe('CallbackServer', () => {
5
+ let callbackServer;
6
+ const testPort = 3456; // Use non-standard port to avoid conflicts
7
+ beforeEach(() => {
8
+ callbackServer = new CallbackServer(testPort);
9
+ });
10
+ afterEach(() => {
11
+ callbackServer.stop();
12
+ });
13
+ describe('constructor', () => {
14
+ it('should create instance with default port', () => {
15
+ const server = new CallbackServer();
16
+ expect(server.getPort()).toBe(3000);
17
+ });
18
+ it('should create instance with custom port', () => {
19
+ const server = new CallbackServer(4567);
20
+ expect(server.getPort()).toBe(4567);
21
+ });
22
+ });
23
+ describe('getPort', () => {
24
+ it('should return configured port', () => {
25
+ expect(callbackServer.getPort()).toBe(testPort);
26
+ });
27
+ });
28
+ describe('waitForCallback - success scenarios', () => {
29
+ it('should resolve with code and state on successful callback', async () => {
30
+ const expectedState = 'test-state-123';
31
+ const authCode = 'auth-code-456';
32
+ // Start waiting for callback
33
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
34
+ // Give server time to start
35
+ await new Promise(resolve => setTimeout(resolve, 100));
36
+ // Simulate OAuth callback
37
+ const response = await fetch(`http://localhost:${testPort}/callback?code=${authCode}&state=${expectedState}`);
38
+ const result = await callbackPromise;
39
+ expect(result.code).toBe(authCode);
40
+ expect(result.state).toBe(expectedState);
41
+ expect(response.status).toBe(200);
42
+ const html = await response.text();
43
+ expect(html).toContain('Authentication Successful');
44
+ });
45
+ it('should serve success HTML page', async () => {
46
+ const expectedState = 'state-abc';
47
+ const authCode = 'code-xyz';
48
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
49
+ await new Promise(resolve => setTimeout(resolve, 100));
50
+ const response = await fetch(`http://localhost:${testPort}/callback?code=${authCode}&state=${expectedState}`);
51
+ await callbackPromise;
52
+ const html = await response.text();
53
+ expect(html).toContain('<!DOCTYPE html>');
54
+ expect(html).toContain('Authentication Successful!');
55
+ expect(html).toContain('close this window');
56
+ expect(html).toContain('✓');
57
+ }, 10000);
58
+ });
59
+ describe('waitForCallback - error scenarios', () => {
60
+ it('should reject on timeout', async () => {
61
+ const expectedState = 'test-state';
62
+ const shortTimeout = 100; // 100ms timeout
63
+ await expect(callbackServer.waitForCallback(expectedState, shortTimeout)).rejects.toThrow('OAuth callback timeout');
64
+ });
65
+ it('should reject when OAuth error parameter is present', async () => {
66
+ const expectedState = 'state-123';
67
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
68
+ await new Promise(resolve => setTimeout(resolve, 100));
69
+ // Make fetch request and wait for rejection before checking response
70
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?error=access_denied&error_description=User%20cancelled`);
71
+ // Wait for callback promise to reject first
72
+ await expect(callbackPromise).rejects.toThrow('OAuth error: User cancelled');
73
+ // Then check the response
74
+ const response = await fetchPromise;
75
+ expect(response.status).toBe(400);
76
+ const html = await response.text();
77
+ expect(html).toContain('Authentication Failed');
78
+ expect(html).toContain('User cancelled');
79
+ });
80
+ it('should reject when OAuth error without description', async () => {
81
+ const expectedState = 'state-456';
82
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
83
+ await new Promise(resolve => setTimeout(resolve, 100));
84
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?error=server_error`);
85
+ await expect(callbackPromise).rejects.toThrow('OAuth error: server_error');
86
+ const response = await fetchPromise;
87
+ expect(response.status).toBe(400);
88
+ }, 10000);
89
+ it('should reject when code parameter is missing', async () => {
90
+ const expectedState = 'state-789';
91
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
92
+ await new Promise(resolve => setTimeout(resolve, 100));
93
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?state=${expectedState}`);
94
+ await expect(callbackPromise).rejects.toThrow('Invalid callback: missing code or state');
95
+ const response = await fetchPromise;
96
+ expect(response.status).toBe(400);
97
+ const html = await response.text();
98
+ expect(html).toContain('Missing code or state parameter');
99
+ });
100
+ it('should reject when state parameter is missing', async () => {
101
+ const expectedState = 'state-abc';
102
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
103
+ await new Promise(resolve => setTimeout(resolve, 100));
104
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?code=some-code`);
105
+ await expect(callbackPromise).rejects.toThrow('Invalid callback: missing code or state');
106
+ const response = await fetchPromise;
107
+ expect(response.status).toBe(400);
108
+ }, 10000);
109
+ it('should reject when state does not match (CSRF protection)', async () => {
110
+ const expectedState = 'correct-state';
111
+ const wrongState = 'wrong-state';
112
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
113
+ await new Promise(resolve => setTimeout(resolve, 100));
114
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?code=auth-code&state=${wrongState}`);
115
+ await expect(callbackPromise).rejects.toThrow('State validation failed - possible CSRF attack');
116
+ const response = await fetchPromise;
117
+ expect(response.status).toBe(400);
118
+ const html = await response.text();
119
+ expect(html).toContain('Invalid state parameter');
120
+ expect(html).toContain('CSRF attack');
121
+ });
122
+ it('should return 404 for non-callback paths', async () => {
123
+ const expectedState = 'state-def';
124
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 1000);
125
+ await new Promise(resolve => setTimeout(resolve, 100));
126
+ const response = await fetch(`http://localhost:${testPort}/other-path`);
127
+ expect(response.status).toBe(404);
128
+ const html = await response.text();
129
+ expect(html).toContain('404 Not Found');
130
+ // Clean up - don't wait for timeout, just stop
131
+ callbackServer.stop();
132
+ }, 10000);
133
+ it('should handle port already in use error', async () => {
134
+ // Start first server
135
+ const server1 = new CallbackServer(testPort + 1);
136
+ const promise1 = server1.waitForCallback('state1', 1000);
137
+ await new Promise(resolve => setTimeout(resolve, 100));
138
+ // Try to start second server on same port
139
+ const server2 = new CallbackServer(testPort + 1);
140
+ await expect(server2.waitForCallback('state2', 1000)).rejects.toThrow(`Port ${testPort + 1} is already in use`);
141
+ // Clean up
142
+ server1.stop();
143
+ }, 10000);
144
+ });
145
+ describe('stop', () => {
146
+ it('should stop the server gracefully', async () => {
147
+ const expectedState = 'state-ghi';
148
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 1000);
149
+ await new Promise(resolve => setTimeout(resolve, 100));
150
+ // Stop server before callback arrives
151
+ callbackServer.stop();
152
+ // Give server time to shut down
153
+ await new Promise(resolve => setTimeout(resolve, 200));
154
+ // Server should be stopped, fetch should fail with connection error
155
+ try {
156
+ await fetch(`http://localhost:${testPort}/callback?code=code&state=${expectedState}`);
157
+ expect.fail('Fetch should have failed');
158
+ }
159
+ catch (error) {
160
+ // Connection error expected (ECONNREFUSED or similar)
161
+ expect(error.cause?.code).toMatch(/ECONNREFUSED|ECONNRESET/);
162
+ }
163
+ }, 10000);
164
+ it('should handle multiple stop calls safely', () => {
165
+ callbackServer.stop();
166
+ callbackServer.stop(); // Should not throw
167
+ callbackServer.stop(); // Should not throw
168
+ });
169
+ });
170
+ describe('HTML escaping', () => {
171
+ it('should escape HTML in error messages to prevent XSS', async () => {
172
+ const expectedState = 'state-xss';
173
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
174
+ await new Promise(resolve => setTimeout(resolve, 100));
175
+ // Try XSS attack via error_description
176
+ const xssAttempt = '<script>alert("xss")</script>';
177
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?error=test&error_description=${encodeURIComponent(xssAttempt)}`);
178
+ await expect(callbackPromise).rejects.toThrow();
179
+ const response = await fetchPromise;
180
+ const html = await response.text();
181
+ // Check that script tags are escaped
182
+ expect(html).not.toContain('<script>');
183
+ expect(html).toContain('&lt;script&gt;');
184
+ expect(html).toContain('&lt;/script&gt;');
185
+ }, 10000);
186
+ it('should escape special characters in error messages', async () => {
187
+ const expectedState = 'state-special';
188
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
189
+ await new Promise(resolve => setTimeout(resolve, 100));
190
+ const specialChars = '& < > " \'';
191
+ const fetchPromise = fetch(`http://localhost:${testPort}/callback?error=test&error_description=${encodeURIComponent(specialChars)}`);
192
+ await expect(callbackPromise).rejects.toThrow();
193
+ const response = await fetchPromise;
194
+ const html = await response.text();
195
+ expect(html).toContain('&amp;');
196
+ expect(html).toContain('&lt;');
197
+ expect(html).toContain('&gt;');
198
+ expect(html).toContain('&quot;');
199
+ expect(html).toContain('&#039;');
200
+ }, 10000);
201
+ });
202
+ describe('edge cases', () => {
203
+ it('should handle empty callback URL', async () => {
204
+ const expectedState = 'state-empty';
205
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 1000);
206
+ await new Promise(resolve => setTimeout(resolve, 100));
207
+ // Create a manual HTTP request with empty URL
208
+ const req = http.request({
209
+ hostname: 'localhost',
210
+ port: testPort,
211
+ path: '',
212
+ method: 'GET'
213
+ });
214
+ req.end();
215
+ await new Promise(resolve => setTimeout(resolve, 200));
216
+ // Should still be waiting (404 response doesn't reject)
217
+ callbackServer.stop();
218
+ }, 10000);
219
+ it('should handle callback with extra parameters', async () => {
220
+ const expectedState = 'state-extra';
221
+ const authCode = 'code-extra';
222
+ const callbackPromise = callbackServer.waitForCallback(expectedState, 5000);
223
+ await new Promise(resolve => setTimeout(resolve, 100));
224
+ // Include extra parameters that should be ignored
225
+ const response = await fetch(`http://localhost:${testPort}/callback?code=${authCode}&state=${expectedState}&extra=ignored&foo=bar`);
226
+ const result = await callbackPromise;
227
+ expect(result.code).toBe(authCode);
228
+ expect(result.state).toBe(expectedState);
229
+ expect(response.status).toBe(200);
230
+ }, 10000);
231
+ });
232
+ });
233
+ //# sourceMappingURL=callback-server.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-server.test.js","sourceRoot":"","sources":["../../src/auth/callback-server.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAM,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,cAA8B,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,2CAA2C;IAElE,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,aAAa,GAAG,gBAAgB,CAAC;YACvC,MAAM,QAAQ,GAAG,eAAe,CAAC;YAEjC,6BAA6B;YAC7B,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAE5E,4BAA4B;YAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,oBAAoB,QAAQ,kBAAkB,QAAQ,UAAU,aAAa,EAAE,CAChF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,aAAa,GAAG,WAAW,CAAC;YAClC,MAAM,QAAQ,GAAG,UAAU,CAAC;YAE5B,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,oBAAoB,QAAQ,kBAAkB,QAAQ,UAAU,aAAa,EAAE,CAChF,CAAC;YAEF,MAAM,eAAe,CAAC;YAEtB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,aAAa,GAAG,YAAY,CAAC;YACnC,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,gBAAgB;YAE1C,MAAM,MAAM,CACV,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAC5D,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,qEAAqE;YACrE,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,kEAAkE,CAC/F,CAAC;YAEF,4CAA4C;YAC5C,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YAE7E,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,8BAA8B,CAC3D,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;YAE3E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,mBAAmB,aAAa,EAAE,CAC/D,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;YAEzF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,0BAA0B,CACvD,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;YAEzF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,aAAa,GAAG,eAAe,CAAC;YACtC,MAAM,UAAU,GAAG,aAAa,CAAC;YAEjC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,kCAAkC,UAAU,EAAE,CAC3E,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;YAEhG,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,QAAQ,aAAa,CAAC,CAAC;YAExE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAExC,+CAA+C;YAC/C,cAAc,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,0CAA0C;YAC1C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,CACV,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CACxC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,QAAQ,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAE5D,WAAW;YACX,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,sCAAsC;YACtC,cAAc,CAAC,IAAI,EAAE,CAAC;YAEtB,gCAAgC;YAChC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,oEAAoE;YACpE,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,oBAAoB,QAAQ,6BAA6B,aAAa,EAAE,CAAC,CAAC;gBACtF,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,sDAAsD;gBACtD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,cAAc,CAAC,IAAI,EAAE,CAAC;YACtB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB;YAC1C,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,aAAa,GAAG,WAAW,CAAC;YAElC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,uCAAuC;YACvC,MAAM,UAAU,GAAG,+BAA+B,CAAC;YACnD,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,0CAA0C,kBAAkB,CAAC,UAAU,CAAC,EAAE,CACvG,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,aAAa,GAAG,eAAe,CAAC;YAEtC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,YAAY,GAAG,YAAY,CAAC;YAClC,MAAM,YAAY,GAAG,KAAK,CACxB,oBAAoB,QAAQ,0CAA0C,kBAAkB,CAAC,YAAY,CAAC,EAAE,CACzG,CAAC;YAEF,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,aAAa,GAAG,aAAa,CAAC;YAEpC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;gBACvB,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,GAAG,CAAC,GAAG,EAAE,CAAC;YAEV,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,wDAAwD;YACxD,cAAc,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,aAAa,GAAG,aAAa,CAAC;YACpC,MAAM,QAAQ,GAAG,YAAY,CAAC;YAE9B,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,kDAAkD;YAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,oBAAoB,QAAQ,kBAAkB,QAAQ,UAAU,aAAa,wBAAwB,CACtG,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,9 +2,9 @@ import { AuthToken } from '../types.js';
2
2
  export interface OAuthConfig {
3
3
  authUrl: string;
4
4
  clientId: string;
5
- clientSecret: string;
5
+ clientSecret?: string;
6
6
  redirectUri: string;
7
- organizationId?: string;
7
+ usePKCE?: boolean;
8
8
  }
9
9
  export interface PKCEPair {
10
10
  verifier: string;
@@ -25,17 +25,17 @@ export declare class OAuthFlow {
25
25
  /**
26
26
  * Generate OAuth consent URL
27
27
  * @param state Random state parameter for CSRF protection
28
- * @param codeChallenge PKCE code challenge
28
+ * @param codeChallenge PKCE code challenge (optional, only used if usePKCE is true)
29
29
  * @returns Consent URL for user to visit
30
30
  */
31
- generateConsentUrl(state: string, codeChallenge: string): string;
31
+ generateConsentUrl(state: string, codeChallenge?: string): string;
32
32
  /**
33
33
  * Exchange authorization code for tokens
34
34
  * @param code Authorization code from OAuth callback
35
- * @param codeVerifier PKCE code verifier
35
+ * @param codeVerifier PKCE code verifier (optional, only used if usePKCE is true)
36
36
  * @returns Token response with access_token, refresh_token, etc.
37
37
  */
38
- exchangeCodeForTokens(code: string, codeVerifier: string): Promise<AuthToken & {
38
+ exchangeCodeForTokens(code: string, codeVerifier?: string): Promise<AuthToken & {
39
39
  refresh_token?: string;
40
40
  }>;
41
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAI/B;;;OAGG;IACH,YAAY,IAAI,QAAQ;IAaxB;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAkBhE;;;;;OAKG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BlD;;;;OAIG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBlD;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;CAG/B"}
1
+ {"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAI/B;;;OAGG;IACH,YAAY,IAAI,QAAQ;IAaxB;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IAsBjE;;;;;OAKG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAoClD;;;;OAIG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BlD;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,MAAM;CAG/B"}
@@ -26,7 +26,7 @@ export class OAuthFlow {
26
26
  /**
27
27
  * Generate OAuth consent URL
28
28
  * @param state Random state parameter for CSRF protection
29
- * @param codeChallenge PKCE code challenge
29
+ * @param codeChallenge PKCE code challenge (optional, only used if usePKCE is true)
30
30
  * @returns Consent URL for user to visit
31
31
  */
32
32
  generateConsentUrl(state, codeChallenge) {
@@ -36,30 +36,40 @@ export class OAuthFlow {
36
36
  state: state,
37
37
  response_type: 'code',
38
38
  scope: 'read write offline',
39
- code_challenge: codeChallenge,
40
- code_challenge_method: 'S256',
41
39
  });
42
- if (this.config.organizationId) {
43
- params.append('organization_id', this.config.organizationId);
40
+ // Only add PKCE parameters if usePKCE is enabled
41
+ if (this.config.usePKCE && codeChallenge) {
42
+ params.append('code_challenge', codeChallenge);
43
+ params.append('code_challenge_method', 'S256');
44
44
  }
45
+ // NOTE: organization_id is NOT included in the authorization URL
46
+ // Including it causes HTTP 500 errors at the consent endpoint
47
+ // It can be used in API calls after authentication, but not in the OAuth flow
45
48
  return `${this.config.authUrl}/oauth2/auth?${params.toString()}`;
46
49
  }
47
50
  /**
48
51
  * Exchange authorization code for tokens
49
52
  * @param code Authorization code from OAuth callback
50
- * @param codeVerifier PKCE code verifier
53
+ * @param codeVerifier PKCE code verifier (optional, only used if usePKCE is true)
51
54
  * @returns Token response with access_token, refresh_token, etc.
52
55
  */
53
56
  async exchangeCodeForTokens(code, codeVerifier) {
54
57
  try {
55
- const response = await axios.post(`${this.config.authUrl}/oauth2/token`, new URLSearchParams({
58
+ const params = {
56
59
  grant_type: 'authorization_code',
57
60
  client_id: this.config.clientId,
58
- client_secret: this.config.clientSecret,
59
61
  redirect_uri: this.config.redirectUri,
60
62
  code: code,
61
- code_verifier: codeVerifier,
62
- }), {
63
+ };
64
+ // Only include code_verifier if usePKCE is enabled
65
+ if (this.config.usePKCE && codeVerifier) {
66
+ params.code_verifier = codeVerifier;
67
+ }
68
+ // Include client_secret (required for traditional OAuth2, optional for PKCE)
69
+ if (this.config.clientSecret) {
70
+ params.client_secret = this.config.clientSecret;
71
+ }
72
+ const response = await axios.post(`${this.config.authUrl}/oauth2/token`, new URLSearchParams(params), {
63
73
  headers: {
64
74
  'Content-Type': 'application/x-www-form-urlencoded',
65
75
  },
@@ -78,12 +88,16 @@ export class OAuthFlow {
78
88
  */
79
89
  async refreshAccessToken(refreshToken) {
80
90
  try {
81
- const response = await axios.post(`${this.config.authUrl}/oauth2/token`, new URLSearchParams({
91
+ const params = {
82
92
  grant_type: 'refresh_token',
83
93
  client_id: this.config.clientId,
84
- client_secret: this.config.clientSecret,
85
94
  refresh_token: refreshToken,
86
- }), {
95
+ };
96
+ // Only include client_secret if provided (optional for PKCE flow)
97
+ if (this.config.clientSecret) {
98
+ params.client_secret = this.config.clientSecret;
99
+ }
100
+ const response = await axios.post(`${this.config.authUrl}/oauth2/token`, new URLSearchParams(params), {
87
101
  headers: {
88
102
  'Content-Type': 'application/x-www-form-urlencoded',
89
103
  },
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../src/auth/oauth-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-flow.js","sourceRoot":"","sources":["../../src/auth/oauth-flow.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,6 @@ describe('OAuthFlow', () => {
14
14
  clientId: 'test-client-id',
15
15
  clientSecret: 'test-client-secret',
16
16
  redirectUri: 'http://localhost:3000/callback',
17
- organizationId: 'test-org-id',
18
17
  };
19
18
  oauthFlow = new OAuthFlow(config);
20
19
  });
@@ -54,12 +53,7 @@ describe('OAuthFlow', () => {
54
53
  expect(url).toContain('scope=read+write+offline');
55
54
  expect(url).toContain(`code_challenge=${codeChallenge}`);
56
55
  expect(url).toContain('code_challenge_method=S256');
57
- expect(url).toContain(`organization_id=${config.organizationId}`);
58
- });
59
- it('should not include organization_id if not provided', () => {
60
- const configWithoutOrg = { ...config, organizationId: undefined };
61
- const oauthFlowWithoutOrg = new OAuthFlow(configWithoutOrg);
62
- const url = oauthFlowWithoutOrg.generateConsentUrl('state', 'challenge');
56
+ // organization_id is NOT included (removed as it causes HTTP 500 errors)
63
57
  expect(url).not.toContain('organization_id');
64
58
  });
65
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-flow.test.js","sourceRoot":"","sources":["../../src/auth/oauth-flow.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-flow.test.js","sourceRoot":"","sources":["../../src/auth/oauth-flow.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
- import { OAuthConfig } from './oauth-flow.js';
2
- export interface UserAuthConfig extends OAuthConfig {
1
+ export interface UserAuthConfig {
2
+ authUrl: string;
3
+ clientId: string;
4
+ clientSecret?: string;
5
+ redirectUri: string;
3
6
  callbackPort?: number;
4
7
  tokenFilePath?: string;
8
+ usePKCE?: boolean;
5
9
  }
6
10
  /**
7
11
  * User Authentication Coordinator
@@ -1 +1 @@
1
- {"version":3,"file":"user-auth.d.ts","sourceRoot":"","sources":["../../src/auth/user-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAAyD;IAC7E,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,cAAc;IAYlC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IA2CvC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DnC;;OAEG;IACH,eAAe,IAAI,OAAO;IAgB1B;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;YACW,WAAW;CAuB1B"}
1
+ {"version":3,"file":"user-auth.d.ts","sourceRoot":"","sources":["../../src/auth/user-auth.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAAyD;IAC7E,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,cAAc;IAYlC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAwDvC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DnC;;OAEG;IACH,eAAe,IAAI,OAAO;IAgB1B;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;YACW,WAAW;CAuB1B"}