fluxmail 0.3.0 → 0.4.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.
Files changed (83) hide show
  1. package/README.md +15 -55
  2. package/dist/accounts/gmailConnection.d.ts +5 -1
  3. package/dist/accounts/gmailConnection.d.ts.map +1 -1
  4. package/dist/accounts/gmailConnection.js +14 -2
  5. package/dist/accounts/gmailConnection.js.map +1 -1
  6. package/dist/accounts/googleAuth.js +1 -1
  7. package/dist/accounts/googleAuth.js.map +1 -1
  8. package/dist/accounts/microsoftAuth.d.ts +21 -0
  9. package/dist/accounts/microsoftAuth.d.ts.map +1 -0
  10. package/dist/accounts/microsoftAuth.js +220 -0
  11. package/dist/accounts/microsoftAuth.js.map +1 -0
  12. package/dist/accounts/registry.d.ts +21 -8
  13. package/dist/accounts/registry.d.ts.map +1 -1
  14. package/dist/accounts/registry.js +190 -24
  15. package/dist/accounts/registry.js.map +1 -1
  16. package/dist/cli.d.ts +7 -0
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +857 -647
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config.d.ts +102 -2
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +114 -14
  23. package/dist/config.js.map +1 -1
  24. package/dist/context.d.ts +2 -0
  25. package/dist/context.d.ts.map +1 -1
  26. package/dist/context.js +7 -1
  27. package/dist/context.js.map +1 -1
  28. package/dist/http/admin.d.ts +21 -0
  29. package/dist/http/admin.d.ts.map +1 -0
  30. package/dist/http/admin.js +618 -0
  31. package/dist/http/admin.js.map +1 -0
  32. package/dist/http/app.d.ts +2 -0
  33. package/dist/http/app.d.ts.map +1 -1
  34. package/dist/http/app.js +322 -42
  35. package/dist/http/app.js.map +1 -1
  36. package/dist/http/rest.d.ts +28 -0
  37. package/dist/http/rest.d.ts.map +1 -0
  38. package/dist/http/rest.js +1130 -0
  39. package/dist/http/rest.js.map +1 -0
  40. package/dist/index.d.ts +3 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/licensing/refresher.d.ts +23 -7
  45. package/dist/licensing/refresher.d.ts.map +1 -1
  46. package/dist/licensing/refresher.js +93 -37
  47. package/dist/licensing/refresher.js.map +1 -1
  48. package/dist/mcp/buildServer.d.ts.map +1 -1
  49. package/dist/mcp/buildServer.js +1 -1
  50. package/dist/mcp/buildServer.js.map +1 -1
  51. package/dist/permissions.d.ts +15 -4
  52. package/dist/permissions.d.ts.map +1 -1
  53. package/dist/permissions.js +61 -12
  54. package/dist/permissions.js.map +1 -1
  55. package/dist/service/emailService.d.ts +15 -8
  56. package/dist/service/emailService.d.ts.map +1 -1
  57. package/dist/service/emailService.js +42 -17
  58. package/dist/service/emailService.js.map +1 -1
  59. package/dist/storage/adminAudit.d.ts +14 -0
  60. package/dist/storage/adminAudit.d.ts.map +1 -0
  61. package/dist/storage/adminAudit.js +32 -0
  62. package/dist/storage/adminAudit.js.map +1 -0
  63. package/dist/storage/apiKeys.d.ts +25 -7
  64. package/dist/storage/apiKeys.d.ts.map +1 -1
  65. package/dist/storage/apiKeys.js +104 -12
  66. package/dist/storage/apiKeys.js.map +1 -1
  67. package/dist/storage/db.d.ts +486 -0
  68. package/dist/storage/db.d.ts.map +1 -1
  69. package/dist/storage/db.js +171 -8
  70. package/dist/storage/db.js.map +1 -1
  71. package/dist/storage/gmailConnectionGrants.d.ts +9 -0
  72. package/dist/storage/gmailConnectionGrants.d.ts.map +1 -1
  73. package/dist/storage/gmailConnectionGrants.js +30 -7
  74. package/dist/storage/gmailConnectionGrants.js.map +1 -1
  75. package/dist/storage/members.d.ts +7 -4
  76. package/dist/storage/members.d.ts.map +1 -1
  77. package/dist/storage/members.js +34 -8
  78. package/dist/storage/members.js.map +1 -1
  79. package/dist/storage/restIdempotency.d.ts +28 -0
  80. package/dist/storage/restIdempotency.d.ts.map +1 -0
  81. package/dist/storage/restIdempotency.js +47 -0
  82. package/dist/storage/restIdempotency.js.map +1 -0
  83. package/package.json +7 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/http/admin.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,14 @@ import type { FluxmailDb } from '../storage/db.js';
5
5
  import type { AccountRegistry } from '../accounts/registry.js';
6
6
  import type { EmailService } from '../service/emailService.js';
7
7
  import type { Telemetry } from '../telemetry.js';
8
+ import type { LicenseController } from '../licensing/refresher.js';
8
9
  export interface AppDeps {
9
10
  config: FluxmailConfig;
10
11
  db: FluxmailDb;
11
12
  registry: AccountRegistry;
12
13
  service: EmailService;
13
14
  telemetry?: Telemetry;
15
+ licenseController?: LicenseController;
14
16
  }
15
17
  export declare function createApp(deps: AppDeps): Hono<{
16
18
  Bindings: HttpBindings;
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAY5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAA;CAAE,CAAC,CAwNzE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAgB5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAA;CAAE,CAAC,CAiiBzE"}
package/dist/http/app.js CHANGED
@@ -7,67 +7,225 @@ import { authenticateApiKey } from '../storage/apiKeys.js';
7
7
  import { buildMcpServer } from '../mcp/buildServer.js';
8
8
  import { FULL_PERMISSION_POLICY } from '../permissions.js';
9
9
  import { buildAuthUrl, createOAuthClient, exchangeCode } from '../accounts/googleAuth.js';
10
- import { claimGmailConnectionGrant, inspectGmailConnectionGrant, } from '../storage/gmailConnectionGrants.js';
10
+ import { claimGmailConnectionGrant, claimOutlookConnectionGrant, inspectGmailConnectionGrant, inspectOutlookConnectionGrant, } from '../storage/gmailConnectionGrants.js';
11
+ import { buildMicrosoftAuthUrl, exchangeMicrosoftCode, requireMicrosoftConfig } from '../accounts/microsoftAuth.js';
12
+ import { prepareHostedGmailConnection, prepareHostedOutlookConnection } from '../accounts/gmailConnection.js';
11
13
  import { VERSION } from '../version.js';
14
+ import { findMember } from '../storage/members.js';
15
+ import { createRestApi } from './rest.js';
16
+ import { hasCapability } from '../permissions.js';
17
+ import { administrationUsesHttps as administrationRequestUsesHttps, requestBodyExceedsLimit } from './admin.js';
18
+ import { recordAdminAuditEvent } from '../storage/adminAudit.js';
12
19
  const OAUTH_STATE_TTL_MS = 10 * 60 * 1000;
13
20
  export function createApp(deps) {
14
- const { config, db, registry, service, telemetry } = deps;
21
+ const { config, db, registry, service, telemetry, licenseController } = deps;
15
22
  const app = new Hono();
16
- const oauthStates = new Map();
23
+ const googleOauthStates = new Map();
24
+ const microsoftOauthStates = new Map();
25
+ const escapeHtml = (value) => value.replace(/[&<>"']/g, (char) => {
26
+ const entities = {
27
+ '&': '&amp;',
28
+ '<': '&lt;',
29
+ '>': '&gt;',
30
+ '"': '&quot;',
31
+ "'": '&#39;',
32
+ };
33
+ return entities[char];
34
+ });
17
35
  const connectionLinkPage = (title, message) => `<html><body style="font-family: sans-serif"><h2>${title}</h2><p>${message}</p></body></html>`;
18
- const connectionLinkError = (status) => {
36
+ const connectionLinkError = (status, providerName, providerCommand) => {
19
37
  if (status === 'expired') {
20
38
  return {
21
- html: connectionLinkPage('This Gmail connection link has expired', 'Run the Fluxmail command again to get a new link.'),
39
+ html: connectionLinkPage(`This ${providerName} connection link has expired`, 'Run the Fluxmail command again to get a new link.'),
22
40
  status: 410,
23
41
  };
24
42
  }
25
43
  if (status === 'used') {
26
44
  return {
27
- html: connectionLinkPage('This Gmail connection link has already been used', 'Run the Fluxmail command again if you still need to connect Gmail.'),
45
+ html: connectionLinkPage(`This ${providerName} connection link has already been used`, `Run "fluxmail accounts add ${providerCommand}" again if you still need to connect ${providerName}.`),
28
46
  status: 410,
29
47
  };
30
48
  }
31
49
  return {
32
- html: connectionLinkPage('This Gmail connection link is invalid', 'Run the Fluxmail command again to get a new link.'),
50
+ html: connectionLinkPage(`This ${providerName} connection link is invalid`, 'Run the Fluxmail command again to get a new link.'),
33
51
  status: 400,
34
52
  };
35
53
  };
36
- const connectionConfirmationPage = () => '<html><body style="font-family: sans-serif"><h2>Connect Gmail to Fluxmail</h2>' +
37
- '<p>Continue to Google to choose the Gmail account you want to connect.</p>' +
54
+ const connectionConfirmationPage = (providerName, identityProvider) => `<html><body style="font-family: sans-serif"><h2>Connect ${providerName} to Fluxmail</h2>` +
55
+ `<p>Continue to ${identityProvider} to choose the account you want to connect.</p>` +
38
56
  '<form method="post">' +
39
- '<button type="submit">Continue with Google</button></form></body></html>';
57
+ `<button type="submit">Continue with ${identityProvider}</button></form></body></html>`;
40
58
  const beginGoogleOAuth = (intent) => {
41
59
  const now = Date.now();
42
- for (const [state, pending] of oauthStates) {
60
+ for (const [state, pending] of googleOauthStates) {
43
61
  if (pending.expiresAt < now)
44
- oauthStates.delete(state);
62
+ googleOauthStates.delete(state);
45
63
  }
46
64
  const state = randomBytes(16).toString('hex');
47
- oauthStates.set(state, { expiresAt: now + OAUTH_STATE_TTL_MS, ...(intent ? { intent } : {}) });
65
+ googleOauthStates.set(state, { expiresAt: now + OAUTH_STATE_TTL_MS, ...(intent ? { intent } : {}) });
48
66
  const client = createOAuthClient(config, `${config.publicUrl}/auth/google/callback`);
49
67
  return buildAuthUrl(client, state);
50
68
  };
51
- // Connecting a mailbox is instance administration: only unscoped admin keys
52
- // qualify; member-scoped keys are confined to mailbox access over MCP.
53
- const adminAuthorized = (c, allowQueryKey = false) => {
54
- if (config.authMode === 'none')
55
- return true;
56
- const bearer = c.req.header('authorization')?.replace(/^Bearer\s+/i, '');
57
- const key = bearer ?? (allowQueryKey ? c.req.query('key') : undefined);
58
- if (!key)
59
- return false;
60
- return authenticateApiKey(db, key)?.memberId === null;
69
+ const beginMicrosoftOAuth = (intent) => {
70
+ const microsoft = requireMicrosoftConfig(config);
71
+ if (!microsoft.clientSecret) {
72
+ throw new EmailError('invalid_request', 'MICROSOFT_CLIENT_SECRET is required for hosted Outlook connections.');
73
+ }
74
+ const now = Date.now();
75
+ for (const [state, pending] of microsoftOauthStates) {
76
+ if (pending.expiresAt < now)
77
+ microsoftOauthStates.delete(state);
78
+ }
79
+ const state = randomBytes(16).toString('hex');
80
+ const verifier = randomBytes(32).toString('base64url');
81
+ microsoftOauthStates.set(state, {
82
+ expiresAt: now + OAUTH_STATE_TTL_MS,
83
+ verifier,
84
+ ...(intent ? { intent } : {}),
85
+ });
86
+ return buildMicrosoftAuthUrl(config, `${config.publicUrl}/auth/microsoft/callback`, state, verifier);
87
+ };
88
+ // Connecting a mailbox requires an admin member or a migrated management key.
89
+ const adminAuth = (c) => {
90
+ const authorization = c.req.header('authorization');
91
+ const bearer = authorization?.match(/^Bearer\s+([^\s]+)$/i)?.[1];
92
+ return bearer ? authenticateApiKey(db, bearer) : null;
61
93
  };
62
- // Authenticate an MCP request and resolve the mailbox scope its key authorizes.
63
- // A member-scoped key is confined to shared and owned mailboxes; an admin key
64
- // (or authMode 'none') gets unscoped access.
94
+ const canAdministerAccounts = (auth) => hasCapability(auth.permissions, 'admin.accounts') && (auth.memberId === null || auth.role === 'admin');
95
+ const administrationUsesHttps = (c) => administrationRequestUsesHttps(c.req.raw, {
96
+ remoteAddress: c.env?.incoming?.socket.remoteAddress,
97
+ encrypted: Boolean(c.env?.incoming?.socket?.encrypted),
98
+ });
99
+ // Authenticate an MCP request. The service applies member grants and the key's
100
+ // optional mailbox allowlist before any provider call.
65
101
  const authForRequest = (c) => {
66
- if (config.authMode === 'none')
67
- return { memberId: null, permissions: FULL_PERMISSION_POLICY };
102
+ if (config.authMode === 'none') {
103
+ return { keyId: 'auth:none', memberId: null, role: null, permissions: FULL_PERMISSION_POLICY, accountIds: null };
104
+ }
68
105
  const bearer = c.req.header('authorization')?.replace(/^Bearer\s+/i, '');
69
106
  return bearer ? authenticateApiKey(db, bearer) : null;
70
107
  };
108
+ app.use('/auth/connections', async (c, next) => {
109
+ c.header('cache-control', 'no-store');
110
+ c.header('x-content-type-options', 'nosniff');
111
+ c.header('referrer-policy', 'no-referrer');
112
+ return next();
113
+ });
114
+ app.post('/auth/connections', async (c) => {
115
+ const auth = adminAuth(c);
116
+ if (!auth)
117
+ return c.json({ error: 'An admin API key is required.' }, 401);
118
+ const audit = (outcome, errorCode) => {
119
+ try {
120
+ recordAdminAuditEvent(db, {
121
+ operation: 'post /auth/connections',
122
+ outcome,
123
+ actorKeyId: auth.keyId,
124
+ actorMemberId: auth.memberId,
125
+ ...(errorCode ? { errorCode } : {}),
126
+ });
127
+ }
128
+ catch {
129
+ // Auditing must not replace the API response.
130
+ }
131
+ };
132
+ if (!canAdministerAccounts(auth)) {
133
+ audit('error', 'permission_denied');
134
+ return c.json({ error: 'The API key cannot manage accounts.' }, 403);
135
+ }
136
+ if (!administrationUsesHttps(c)) {
137
+ audit('error', 'https_required');
138
+ return c.json({ error: 'Administrative routes require HTTPS outside loopback.' }, 400);
139
+ }
140
+ const mediaType = c.req.header('content-type')?.split(';', 1)[0]?.trim().toLowerCase();
141
+ if (mediaType !== 'application/json') {
142
+ audit('error', 'unsupported_media_type');
143
+ return c.json({ error: 'Content-Type must be application/json.' }, 415);
144
+ }
145
+ if (await requestBodyExceedsLimit(c.req.raw)) {
146
+ audit('error', 'request_too_large');
147
+ return c.json({ error: 'Request body is limited to 64 KiB.' }, 413);
148
+ }
149
+ let input;
150
+ try {
151
+ input = await c.req.json();
152
+ }
153
+ catch {
154
+ audit('error', 'invalid_request');
155
+ return c.json({ error: 'Request body must be valid JSON.' }, 400);
156
+ }
157
+ try {
158
+ if (input.provider !== 'gmail' && input.provider !== 'outlook') {
159
+ throw new EmailError('invalid_request', 'provider must be "gmail" or "outlook".');
160
+ }
161
+ const reauthorizeAccountId = typeof input.reauthorizeAccountId === 'string' ? input.reauthorizeAccountId.trim() : undefined;
162
+ const ownerRef = typeof input.owner === 'string' ? input.owner.trim() : undefined;
163
+ if ((reauthorizeAccountId?.length ?? 0) > 200 || (ownerRef?.length ?? 0) > 200) {
164
+ throw new EmailError('invalid_request', 'Account and member references are limited to 200 characters.');
165
+ }
166
+ if (input.shareWith !== undefined && !Array.isArray(input.shareWith)) {
167
+ throw new EmailError('invalid_request', 'shareWith must be an array of member ids or email addresses.');
168
+ }
169
+ if ((input.shareWith?.length ?? 0) > 100) {
170
+ throw new EmailError('invalid_request', 'shareWith is limited to 100 members.');
171
+ }
172
+ const shareWith = (input.shareWith ?? []).map((value) => {
173
+ if (typeof value !== 'string' || !value.trim() || value.trim().length > 200) {
174
+ throw new EmailError('invalid_request', 'shareWith must contain member ids or email addresses.');
175
+ }
176
+ return value.trim();
177
+ });
178
+ if (reauthorizeAccountId && (ownerRef || input.sharingMode !== undefined || shareWith.length)) {
179
+ throw new EmailError('invalid_request', 'owner and sharing settings cannot be combined with reauthorizeAccountId.');
180
+ }
181
+ let intent;
182
+ if (reauthorizeAccountId) {
183
+ const existing = registry.getAccount(reauthorizeAccountId);
184
+ if (existing.provider !== input.provider) {
185
+ throw new EmailError('invalid_request', `Account ${existing.id} uses ${existing.provider}, not ${input.provider}.`);
186
+ }
187
+ intent = { reauthorizeAccountId: existing.id };
188
+ }
189
+ else {
190
+ if (!ownerRef)
191
+ throw new EmailError('invalid_request', 'owner is required for a new mailbox.');
192
+ registry.assertCanAddAccount();
193
+ const owner = findMember(db, ownerRef);
194
+ const sharingMode = input.sharingMode ?? (shareWith.length ? 'selected' : 'private');
195
+ if (sharingMode !== 'private' && sharingMode !== 'selected' && sharingMode !== 'all') {
196
+ throw new EmailError('invalid_request', 'sharingMode must be "private", "selected", or "all".');
197
+ }
198
+ if (sharingMode === 'selected' && shareWith.length === 0) {
199
+ throw new EmailError('invalid_request', 'shareWith is required when sharingMode is "selected".');
200
+ }
201
+ if (sharingMode !== 'selected' && shareWith.length > 0) {
202
+ throw new EmailError('invalid_request', 'shareWith can only be used with sharingMode "selected".');
203
+ }
204
+ intent = {
205
+ memberId: owner.id,
206
+ sharingMode,
207
+ sharedMemberIds: shareWith.map((ref) => findMember(db, ref).id),
208
+ };
209
+ }
210
+ const prepared = input.provider === 'gmail'
211
+ ? prepareHostedGmailConnection(db, config, intent)
212
+ : prepareHostedOutlookConnection(db, config, intent);
213
+ audit('success');
214
+ return c.json({
215
+ provider: input.provider,
216
+ connectionUrl: prepared.connectionUrl,
217
+ expiresAt: new Date(prepared.expiresAt).toISOString(),
218
+ }, 201);
219
+ }
220
+ catch (err) {
221
+ if (isEmailError(err)) {
222
+ audit('error', err.code);
223
+ return c.json({ error: err.message }, 400);
224
+ }
225
+ audit('error', 'internal');
226
+ return c.json({ error: 'Could not create the connection link.' }, 500);
227
+ }
228
+ });
71
229
  app.get('/healthz', (c) => c.json({ ok: true, name: 'fluxmail', version: VERSION }));
72
230
  // Stateless Streamable HTTP: a fresh server+transport pair per request.
73
231
  app.post('/mcp', async (c) => {
@@ -86,7 +244,9 @@ export function createApp(deps) {
86
244
  catch {
87
245
  return c.json({ jsonrpc: '2.0', error: { code: -32700, message: 'Parse error' }, id: null }, 400);
88
246
  }
89
- const scope = { memberId: auth.memberId };
247
+ const scope = config.authMode === 'none'
248
+ ? { memberId: null }
249
+ : { memberId: auth.memberId, role: auth.role, accountIds: auth.accountIds };
90
250
  const server = buildMcpServer(service.withScope(scope), {
91
251
  permissions: auth.permissions,
92
252
  maxAttachmentBytes: config.maxAttachmentBytes,
@@ -114,10 +274,28 @@ export function createApp(deps) {
114
274
  app.delete('/mcp', methodNotAllowed);
115
275
  // Server-hosted OAuth flow (for remote deployments; the CLI uses a loopback flow instead).
116
276
  app.get('/auth/google', (c) => {
117
- if (!adminAuthorized(c, true)) {
118
- return c.text('Unauthorized: append ?key=<an admin API key>', 401);
277
+ c.header('cache-control', 'no-store');
278
+ c.header('x-content-type-options', 'nosniff');
279
+ c.header('referrer-policy', 'no-referrer');
280
+ if (!administrationUsesHttps(c))
281
+ return c.text('Administrative routes require HTTPS outside loopback.', 400);
282
+ const auth = adminAuth(c);
283
+ if (!auth) {
284
+ return c.text('Unauthorized: pass an admin API key as a Bearer token.', 401);
285
+ }
286
+ if (!canAdministerAccounts(auth))
287
+ return c.text('Forbidden.', 403);
288
+ const ownerRef = c.req.query('owner');
289
+ if (!ownerRef) {
290
+ return c.text('Missing owner. Start the hosted connection with "fluxmail accounts add gmail --owner <member>".', 400);
291
+ }
292
+ try {
293
+ const owner = findMember(db, ownerRef);
294
+ return c.redirect(beginGoogleOAuth({ memberId: owner.id, sharingMode: 'private' }));
295
+ }
296
+ catch (err) {
297
+ return c.text(err instanceof Error ? err.message : String(err), 400);
119
298
  }
120
- return c.redirect(beginGoogleOAuth());
121
299
  });
122
300
  // Hono falls back to GET handlers for HEAD requests. Handle HEAD explicitly
123
301
  // so link previews and security scanners cannot consume a one-time grant.
@@ -129,36 +307,38 @@ export function createApp(deps) {
129
307
  app.get('/auth/google/connect', (c) => {
130
308
  const token = c.req.query('token');
131
309
  if (!token) {
132
- const error = connectionLinkError('invalid');
310
+ const error = connectionLinkError('invalid', 'Gmail', 'gmail');
133
311
  return c.html(error.html, error.status);
134
312
  }
135
313
  const status = inspectGmailConnectionGrant(db, token);
136
314
  if (status !== 'available') {
137
- const error = connectionLinkError(status);
315
+ const error = connectionLinkError(status, 'Gmail', 'gmail');
138
316
  return c.html(error.html, error.status);
139
317
  }
140
- return c.html(connectionConfirmationPage());
318
+ return c.html(connectionConfirmationPage('Gmail', 'Google'));
141
319
  });
142
320
  app.post('/auth/google/connect', (c) => {
143
321
  const token = c.req.query('token');
144
322
  if (!token) {
145
- const error = connectionLinkError('invalid');
323
+ const error = connectionLinkError('invalid', 'Gmail', 'gmail');
146
324
  return c.html(error.html, error.status);
147
325
  }
148
326
  const claim = claimGmailConnectionGrant(db, token);
149
327
  if (claim.status !== 'claimed') {
150
- const error = connectionLinkError(claim.status);
328
+ const error = connectionLinkError(claim.status, 'Gmail', 'gmail');
151
329
  return c.html(error.html, error.status);
152
330
  }
153
331
  return c.redirect(beginGoogleOAuth(claim.grant));
154
332
  });
155
333
  app.get('/auth/google/callback', async (c) => {
334
+ c.header('cache-control', 'no-store');
335
+ c.header('referrer-policy', 'no-referrer');
156
336
  const state = c.req.query('state');
157
- const pending = state ? oauthStates.get(state) : undefined;
337
+ const pending = state ? googleOauthStates.get(state) : undefined;
158
338
  if (!state || !pending || pending.expiresAt < Date.now()) {
159
339
  return c.text('Invalid or expired OAuth state. Start the Gmail connection flow again.', 400);
160
340
  }
161
- oauthStates.delete(state);
341
+ googleOauthStates.delete(state);
162
342
  const error = c.req.query('error');
163
343
  if (error)
164
344
  return c.text(`Google returned an error: ${error}`, 400);
@@ -178,9 +358,12 @@ export function createApp(deps) {
178
358
  throw new EmailError('invalid_request', `Google authorized ${email}, but account ${reauthorizeAccount.id} belongs to ${reauthorizeAccount.email}. ` +
179
359
  'Try again and choose the matching Google account.');
180
360
  }
181
- const account = registry.addGmailAccount(email, tokens, displayName, pending.intent?.memberId);
182
- return c.html(`<html><body style="font-family: sans-serif"><h2>${email} is connected to Fluxmail</h2>` +
183
- `<p>Account id: <code>${account.id}</code>. You can close this tab.</p></body></html>`);
361
+ const account = registry.addGmailAccount(email, tokens, displayName, pending.intent?.memberId, {
362
+ sharingMode: pending.intent?.sharingMode ?? 'private',
363
+ sharedMemberIds: pending.intent?.sharedMemberIds ?? [],
364
+ });
365
+ return c.html(`<html><body style="font-family: sans-serif"><h2>${escapeHtml(email)} is connected to Fluxmail</h2>` +
366
+ `<p>Account id: <code>${escapeHtml(account.id)}</code>. You can close this tab.</p></body></html>`);
184
367
  }
185
368
  catch (err) {
186
369
  // Surface why connecting failed (expired code, missing refresh token,
@@ -190,6 +373,103 @@ export function createApp(deps) {
190
373
  return c.text('Could not connect the account; check the server logs.', 500);
191
374
  }
192
375
  });
376
+ app.get('/auth/microsoft', (c) => {
377
+ c.header('cache-control', 'no-store');
378
+ c.header('x-content-type-options', 'nosniff');
379
+ c.header('referrer-policy', 'no-referrer');
380
+ if (!administrationUsesHttps(c))
381
+ return c.text('Administrative routes require HTTPS outside loopback.', 400);
382
+ const auth = adminAuth(c);
383
+ if (!auth) {
384
+ return c.text('Unauthorized: pass an admin API key as a Bearer token.', 401);
385
+ }
386
+ if (!canAdministerAccounts(auth))
387
+ return c.text('Forbidden.', 403);
388
+ const ownerRef = c.req.query('owner');
389
+ if (!ownerRef) {
390
+ return c.text('Missing owner. Start the hosted connection with "fluxmail accounts add outlook --owner <member>".', 400);
391
+ }
392
+ try {
393
+ const owner = findMember(db, ownerRef);
394
+ return c.redirect(beginMicrosoftOAuth({ memberId: owner.id, sharingMode: 'private' }));
395
+ }
396
+ catch (err) {
397
+ return c.text(err instanceof Error ? err.message : String(err), 400);
398
+ }
399
+ });
400
+ app.use('/auth/microsoft/connect', async (c, next) => {
401
+ c.header('cache-control', 'no-store');
402
+ c.header('referrer-policy', 'no-referrer');
403
+ return c.req.method === 'HEAD' ? c.body(null, 204) : next();
404
+ });
405
+ app.get('/auth/microsoft/connect', (c) => {
406
+ const token = c.req.query('token');
407
+ if (!token) {
408
+ const error = connectionLinkError('invalid', 'Outlook', 'outlook');
409
+ return c.html(error.html, error.status);
410
+ }
411
+ const status = inspectOutlookConnectionGrant(db, token);
412
+ if (status !== 'available') {
413
+ const error = connectionLinkError(status, 'Outlook', 'outlook');
414
+ return c.html(error.html, error.status);
415
+ }
416
+ return c.html(connectionConfirmationPage('Outlook', 'Microsoft'));
417
+ });
418
+ app.post('/auth/microsoft/connect', (c) => {
419
+ const token = c.req.query('token');
420
+ if (!token) {
421
+ const error = connectionLinkError('invalid', 'Outlook', 'outlook');
422
+ return c.html(error.html, error.status);
423
+ }
424
+ const claim = claimOutlookConnectionGrant(db, token);
425
+ if (claim.status !== 'claimed') {
426
+ const error = connectionLinkError(claim.status, 'Outlook', 'outlook');
427
+ return c.html(error.html, error.status);
428
+ }
429
+ return c.redirect(beginMicrosoftOAuth(claim.grant));
430
+ });
431
+ app.get('/auth/microsoft/callback', async (c) => {
432
+ c.header('cache-control', 'no-store');
433
+ c.header('referrer-policy', 'no-referrer');
434
+ const state = c.req.query('state');
435
+ const pending = state ? microsoftOauthStates.get(state) : undefined;
436
+ if (!state || !pending || pending.expiresAt < Date.now()) {
437
+ return c.text('Invalid or expired OAuth state. Start the Outlook connection flow again.', 400);
438
+ }
439
+ microsoftOauthStates.delete(state);
440
+ const error = c.req.query('error');
441
+ if (error) {
442
+ return c.text(`Microsoft returned an error: ${c.req.query('error_description') ?? error}`, 400);
443
+ }
444
+ const code = c.req.query('code');
445
+ if (!code)
446
+ return c.text('Missing code parameter.', 400);
447
+ try {
448
+ const { email, displayName, credentials } = await exchangeMicrosoftCode(config, code, `${config.publicUrl}/auth/microsoft/callback`, pending.verifier, 'confidential');
449
+ const reauthorizeAccount = pending.intent?.reauthorizeAccountId
450
+ ? registry.getAccount(pending.intent.reauthorizeAccountId)
451
+ : undefined;
452
+ if (reauthorizeAccount?.provider !== undefined && reauthorizeAccount.provider !== 'outlook') {
453
+ throw new EmailError('invalid_request', `Account ${reauthorizeAccount.id} does not use Outlook.`);
454
+ }
455
+ if (reauthorizeAccount && reauthorizeAccount.email.toLowerCase() !== email.toLowerCase()) {
456
+ throw new EmailError('invalid_request', `Microsoft authorized ${email}, but account ${reauthorizeAccount.id} belongs to ${reauthorizeAccount.email}. ` +
457
+ 'Try again and choose the matching Microsoft account.');
458
+ }
459
+ const account = registry.addOutlookAccount(email, credentials, displayName, pending.intent?.memberId, pending.intent?.reauthorizeAccountId, {
460
+ sharingMode: pending.intent?.sharingMode ?? 'private',
461
+ sharedMemberIds: pending.intent?.sharedMemberIds ?? [],
462
+ });
463
+ return c.html(`<html><body style="font-family: sans-serif"><h2>${escapeHtml(email)} is connected to Fluxmail</h2>` +
464
+ `<p>Account id: <code>${escapeHtml(account.id)}</code>. You can close this tab.</p></body></html>`);
465
+ }
466
+ catch (err) {
467
+ if (isEmailError(err))
468
+ return c.text(`Could not connect the account: ${err.message}`, 400);
469
+ return c.text('Could not connect the account; check the server logs.', 500);
470
+ }
471
+ });
472
+ app.route('/', createRestApi({ config, db, service, telemetry, registry, licenseController }));
193
473
  return app;
194
474
  }
195
475
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/http/app.ts"],"names":[],"mappings":"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"}