@teleporthq/teleport-plugin-next-workflows 0.44.8 → 0.44.10

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 (172) hide show
  1. package/__tests__/_helpers/load-server-runtime.ts +6 -2
  2. package/__tests__/_helpers/run-account-delete-route.ts +140 -0
  3. package/__tests__/account-delete-current-password.test.ts +73 -0
  4. package/__tests__/account-delete-password-check.test.ts +113 -0
  5. package/__tests__/account-delete-visitor-details.test.ts +206 -0
  6. package/__tests__/ai-error-contract.test.ts +10 -0
  7. package/__tests__/auth-password-change-ends-sessions.test.ts +178 -0
  8. package/__tests__/continue-on-error.test.ts +27 -0
  9. package/__tests__/data-api-invalid-body.test.ts +110 -0
  10. package/__tests__/data-node-not-awaited.test.ts +7 -6
  11. package/__tests__/email-node-recipients.test.ts +288 -0
  12. package/__tests__/invoice-payment-line.test.ts +68 -0
  13. package/__tests__/invoice-tender.test.ts +116 -0
  14. package/__tests__/pending-work-after-reply.test.ts +294 -0
  15. package/__tests__/runtime-condition-operands.test.ts +86 -0
  16. package/__tests__/sent-email-log-module.test.ts +54 -0
  17. package/__tests__/webhook-delivery-lease.test.ts +68 -6
  18. package/dist/cjs/account-delete-route-generator.d.ts +7 -2
  19. package/dist/cjs/account-delete-route-generator.d.ts.map +1 -1
  20. package/dist/cjs/account-delete-route-generator.js +90 -43
  21. package/dist/cjs/account-delete-route-generator.js.map +1 -1
  22. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  23. package/dist/cjs/api-route-generator.js +12 -13
  24. package/dist/cjs/api-route-generator.js.map +1 -1
  25. package/dist/cjs/auth-generator.d.ts.map +1 -1
  26. package/dist/cjs/auth-generator.js +34 -1
  27. package/dist/cjs/auth-generator.js.map +1 -1
  28. package/dist/cjs/await-result.d.ts +13 -5
  29. package/dist/cjs/await-result.d.ts.map +1 -1
  30. package/dist/cjs/await-result.js +19 -8
  31. package/dist/cjs/await-result.js.map +1 -1
  32. package/dist/cjs/data-api-route-generator.d.ts.map +1 -1
  33. package/dist/cjs/data-api-route-generator.js +9 -1
  34. package/dist/cjs/data-api-route-generator.js.map +1 -1
  35. package/dist/cjs/executor-generator.d.ts.map +1 -1
  36. package/dist/cjs/executor-generator.js +22 -7
  37. package/dist/cjs/executor-generator.js.map +1 -1
  38. package/dist/cjs/invoice/invoice-html-code.d.ts.map +1 -1
  39. package/dist/cjs/invoice/invoice-html-code.js +96 -5
  40. package/dist/cjs/invoice/invoice-html-code.js.map +1 -1
  41. package/dist/cjs/nodes/account/account-delete-current.d.ts.map +1 -1
  42. package/dist/cjs/nodes/account/account-delete-current.js +4 -1
  43. package/dist/cjs/nodes/account/account-delete-current.js.map +1 -1
  44. package/dist/cjs/nodes/email/email-mailersend.d.ts.map +1 -1
  45. package/dist/cjs/nodes/email/email-mailersend.js +55 -48
  46. package/dist/cjs/nodes/email/email-mailersend.js.map +1 -1
  47. package/dist/cjs/nodes/email/email-mailgun.d.ts.map +1 -1
  48. package/dist/cjs/nodes/email/email-mailgun.js +44 -32
  49. package/dist/cjs/nodes/email/email-mailgun.js.map +1 -1
  50. package/dist/cjs/nodes/email/email-postmark.d.ts.map +1 -1
  51. package/dist/cjs/nodes/email/email-postmark.js +44 -31
  52. package/dist/cjs/nodes/email/email-postmark.js.map +1 -1
  53. package/dist/cjs/nodes/email/email-recipients.d.ts +28 -0
  54. package/dist/cjs/nodes/email/email-recipients.d.ts.map +1 -0
  55. package/dist/cjs/nodes/email/email-recipients.js +74 -0
  56. package/dist/cjs/nodes/email/email-recipients.js.map +1 -0
  57. package/dist/cjs/nodes/email/email-resend.d.ts.map +1 -1
  58. package/dist/cjs/nodes/email/email-resend.js +42 -28
  59. package/dist/cjs/nodes/email/email-resend.js.map +1 -1
  60. package/dist/cjs/nodes/email/email-sendgrid.d.ts.map +1 -1
  61. package/dist/cjs/nodes/email/email-sendgrid.js +56 -41
  62. package/dist/cjs/nodes/email/email-sendgrid.js.map +1 -1
  63. package/dist/cjs/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  64. package/dist/cjs/sent-email-log/sent-email-log-code.js +17 -1
  65. package/dist/cjs/sent-email-log/sent-email-log-code.js.map +1 -1
  66. package/dist/cjs/server-runtime-code.d.ts.map +1 -1
  67. package/dist/cjs/server-runtime-code.js +21 -0
  68. package/dist/cjs/server-runtime-code.js.map +1 -1
  69. package/dist/cjs/transactional-email-code.d.ts +7 -0
  70. package/dist/cjs/transactional-email-code.d.ts.map +1 -1
  71. package/dist/cjs/transactional-email-code.js +5 -5
  72. package/dist/cjs/transactional-email-code.js.map +1 -1
  73. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  74. package/dist/cjs/vercel-functions.d.ts +34 -0
  75. package/dist/cjs/vercel-functions.d.ts.map +1 -0
  76. package/dist/cjs/vercel-functions.js +62 -0
  77. package/dist/cjs/vercel-functions.js.map +1 -0
  78. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  79. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  80. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  81. package/dist/cjs/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  82. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  83. package/dist/cjs/workflow-project-plugin.js +3 -0
  84. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  85. package/dist/esm/account-delete-route-generator.d.ts +7 -2
  86. package/dist/esm/account-delete-route-generator.d.ts.map +1 -1
  87. package/dist/esm/account-delete-route-generator.js +90 -43
  88. package/dist/esm/account-delete-route-generator.js.map +1 -1
  89. package/dist/esm/api-route-generator.d.ts.map +1 -1
  90. package/dist/esm/api-route-generator.js +12 -13
  91. package/dist/esm/api-route-generator.js.map +1 -1
  92. package/dist/esm/auth-generator.d.ts.map +1 -1
  93. package/dist/esm/auth-generator.js +34 -1
  94. package/dist/esm/auth-generator.js.map +1 -1
  95. package/dist/esm/await-result.d.ts +13 -5
  96. package/dist/esm/await-result.d.ts.map +1 -1
  97. package/dist/esm/await-result.js +18 -7
  98. package/dist/esm/await-result.js.map +1 -1
  99. package/dist/esm/data-api-route-generator.d.ts.map +1 -1
  100. package/dist/esm/data-api-route-generator.js +9 -1
  101. package/dist/esm/data-api-route-generator.js.map +1 -1
  102. package/dist/esm/executor-generator.d.ts.map +1 -1
  103. package/dist/esm/executor-generator.js +22 -7
  104. package/dist/esm/executor-generator.js.map +1 -1
  105. package/dist/esm/invoice/invoice-html-code.d.ts.map +1 -1
  106. package/dist/esm/invoice/invoice-html-code.js +96 -5
  107. package/dist/esm/invoice/invoice-html-code.js.map +1 -1
  108. package/dist/esm/nodes/account/account-delete-current.d.ts.map +1 -1
  109. package/dist/esm/nodes/account/account-delete-current.js +4 -1
  110. package/dist/esm/nodes/account/account-delete-current.js.map +1 -1
  111. package/dist/esm/nodes/email/email-mailersend.d.ts.map +1 -1
  112. package/dist/esm/nodes/email/email-mailersend.js +55 -48
  113. package/dist/esm/nodes/email/email-mailersend.js.map +1 -1
  114. package/dist/esm/nodes/email/email-mailgun.d.ts.map +1 -1
  115. package/dist/esm/nodes/email/email-mailgun.js +44 -32
  116. package/dist/esm/nodes/email/email-mailgun.js.map +1 -1
  117. package/dist/esm/nodes/email/email-postmark.d.ts.map +1 -1
  118. package/dist/esm/nodes/email/email-postmark.js +44 -31
  119. package/dist/esm/nodes/email/email-postmark.js.map +1 -1
  120. package/dist/esm/nodes/email/email-recipients.d.ts +28 -0
  121. package/dist/esm/nodes/email/email-recipients.d.ts.map +1 -0
  122. package/dist/esm/nodes/email/email-recipients.js +71 -0
  123. package/dist/esm/nodes/email/email-recipients.js.map +1 -0
  124. package/dist/esm/nodes/email/email-resend.d.ts.map +1 -1
  125. package/dist/esm/nodes/email/email-resend.js +42 -28
  126. package/dist/esm/nodes/email/email-resend.js.map +1 -1
  127. package/dist/esm/nodes/email/email-sendgrid.d.ts.map +1 -1
  128. package/dist/esm/nodes/email/email-sendgrid.js +56 -41
  129. package/dist/esm/nodes/email/email-sendgrid.js.map +1 -1
  130. package/dist/esm/sent-email-log/sent-email-log-code.d.ts.map +1 -1
  131. package/dist/esm/sent-email-log/sent-email-log-code.js +17 -1
  132. package/dist/esm/sent-email-log/sent-email-log-code.js.map +1 -1
  133. package/dist/esm/server-runtime-code.d.ts.map +1 -1
  134. package/dist/esm/server-runtime-code.js +21 -0
  135. package/dist/esm/server-runtime-code.js.map +1 -1
  136. package/dist/esm/transactional-email-code.d.ts +7 -0
  137. package/dist/esm/transactional-email-code.d.ts.map +1 -1
  138. package/dist/esm/transactional-email-code.js +5 -5
  139. package/dist/esm/transactional-email-code.js.map +1 -1
  140. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  141. package/dist/esm/vercel-functions.d.ts +34 -0
  142. package/dist/esm/vercel-functions.d.ts.map +1 -0
  143. package/dist/esm/vercel-functions.js +57 -0
  144. package/dist/esm/vercel-functions.js.map +1 -0
  145. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts +6 -0
  146. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.d.ts.map +1 -1
  147. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js +26 -11
  148. package/dist/esm/webhook-delivery-lease/webhook-delivery-lease-code.js.map +1 -1
  149. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  150. package/dist/esm/workflow-project-plugin.js +3 -0
  151. package/dist/esm/workflow-project-plugin.js.map +1 -1
  152. package/package.json +2 -2
  153. package/src/account-delete-route-generator.ts +97 -45
  154. package/src/api-route-generator.ts +12 -13
  155. package/src/auth-generator.ts +34 -1
  156. package/src/await-result.ts +19 -7
  157. package/src/data-api-route-generator.ts +9 -1
  158. package/src/executor-generator.ts +22 -7
  159. package/src/invoice/invoice-html-code.ts +96 -5
  160. package/src/nodes/account/account-delete-current.ts +4 -1
  161. package/src/nodes/email/email-mailersend.ts +72 -55
  162. package/src/nodes/email/email-mailgun.ts +51 -36
  163. package/src/nodes/email/email-postmark.ts +51 -35
  164. package/src/nodes/email/email-recipients.ts +86 -0
  165. package/src/nodes/email/email-resend.ts +49 -31
  166. package/src/nodes/email/email-sendgrid.ts +63 -44
  167. package/src/sent-email-log/sent-email-log-code.ts +17 -1
  168. package/src/server-runtime-code.ts +22 -0
  169. package/src/transactional-email-code.ts +12 -5
  170. package/src/vercel-functions.ts +67 -0
  171. package/src/webhook-delivery-lease/webhook-delivery-lease-code.ts +26 -11
  172. package/src/workflow-project-plugin.ts +3 -0
@@ -76,30 +76,92 @@ const loadLease = (options: {
76
76
  }
77
77
 
78
78
  describe('webhook delivery lease module', () => {
79
- it('creates its table once, claims with a fresh token and releases only its own claim', async () => {
79
+ it('creates a missing table once, claims with a fresh token and releases only its own claim', async () => {
80
80
  const lease = loadLease({})
81
81
  try {
82
82
  const first = await lease.claim('webhooks/stripe-payment', Buffer.from('{"id":"evt_1"}'), {
83
83
  id: 'evt_1',
84
84
  })
85
85
  expect(first.claimed).toBe(true)
86
- expect(lease.queries[0].sql).toMatch(
86
+ expect(lease.queries[0]).toEqual({
87
+ sql: 'SELECT to_regclass($1) IS NOT NULL AS present',
88
+ values: ['teleport_webhook_deliveries'],
89
+ })
90
+ expect(lease.queries[1].sql).toMatch(
87
91
  /^CREATE TABLE IF NOT EXISTS "teleport_webhook_deliveries"/
88
92
  )
89
- const claim = lease.queries[1]
93
+ const claim = lease.queries[2]
90
94
  expect(claim.sql).toContain('ON CONFLICT (delivery_key) DO UPDATE')
91
95
  expect(claim.sql).toContain('WHERE d.claimed_at < NOW() - make_interval(secs => $3::int)')
92
96
  expect(claim.values[0]).toMatch(/^[0-9a-f]{64}$/)
93
97
  expect(claim.values[2]).toBe(300)
94
98
  await first.release()
95
- const release = lease.queries[2]
99
+ const release = lease.queries[3]
96
100
  expect(release.sql).toMatch(
97
101
  /^DELETE FROM "teleport_webhook_deliveries" WHERE \(delivery_key = \$1 AND claim_token = \$2\)/
98
102
  )
99
103
  expect(release.values).toEqual([claim.values[0], claim.values[1]])
100
- // The table is not created again by the next delivery.
104
+ // The table is neither looked up nor created again by the next delivery.
101
105
  await lease.claim('webhooks/stripe-payment', Buffer.from('{"id":"evt_2"}'), { id: 'evt_2' })
102
- expect(lease.queries[3].sql).toMatch(/^INSERT INTO/)
106
+ expect(lease.queries[4].sql).toMatch(/^INSERT INTO/)
107
+ } finally {
108
+ lease.restore()
109
+ }
110
+ })
111
+
112
+ it('uses a table that exists without trying to create it', async () => {
113
+ // The site's role may write the table the editor made, not create one.
114
+ const lease = loadLease({
115
+ queryImpl: async (sql: string, values: unknown[]) => {
116
+ if (sql.startsWith('SELECT to_regclass')) {
117
+ return { rows: [{ present: true }] }
118
+ }
119
+ if (sql.startsWith('CREATE')) {
120
+ throw Object.assign(new Error('permission denied for schema public'), { code: '42501' })
121
+ }
122
+ return sql.startsWith('INSERT') ? { rows: [{ claim_token: values[1] }] } : { rows: [] }
123
+ },
124
+ })
125
+ try {
126
+ const first = await lease.claim('webhooks/stripe-payment', Buffer.from('{"id":"evt_1"}'), {
127
+ id: 'evt_1',
128
+ })
129
+ expect(first.claimed).toBe(true)
130
+ expect(lease.queries.map((query) => query.sql.split(' ')[0])).toEqual(['SELECT', 'INSERT'])
131
+
132
+ // A twin of a held delivery is turned away: the lease is in force.
133
+ const twin = loadLease({
134
+ queryImpl: async (sql: string) =>
135
+ sql.startsWith('SELECT to_regclass') ? { rows: [{ present: true }] } : { rows: [] },
136
+ })
137
+ try {
138
+ expect((await twin.claim('w', Buffer.from('{}'), {})).claimed).toBe(false)
139
+ expect(twin.queries.some((query) => query.sql.startsWith('CREATE'))).toBe(false)
140
+ } finally {
141
+ twin.restore()
142
+ }
143
+ } finally {
144
+ lease.restore()
145
+ }
146
+ })
147
+
148
+ it('lets every delivery run when the table is missing and cannot be created', async () => {
149
+ const lease = loadLease({
150
+ queryImpl: async (sql: string) => {
151
+ if (sql.startsWith('SELECT to_regclass')) {
152
+ return { rows: [{ present: false }] }
153
+ }
154
+ if (sql.startsWith('CREATE')) {
155
+ throw Object.assign(new Error('permission denied for schema public'), { code: '42501' })
156
+ }
157
+ return { rows: [] }
158
+ },
159
+ })
160
+ try {
161
+ expect((await lease.claim('w', Buffer.from('{}'), {})).claimed).toBe(true)
162
+ const tried = lease.queries.length
163
+ expect((await lease.claim('w', Buffer.from('{}'), {})).claimed).toBe(true)
164
+ expect(lease.queries).toHaveLength(tried)
103
165
  } finally {
104
166
  lease.restore()
105
167
  }
@@ -4,9 +4,14 @@
4
4
  *
5
5
  * The client node calls this route, which:
6
6
  * 1. resolves the current user from the NextAuth session (never trusting a
7
- * client-supplied id),
7
+ * client-supplied id) and, when the request carries a password, goes on
8
+ * only if it is the account's own,
8
9
  * 2. runs a single DB transaction that detaches + anonymises business/legal
9
- * records (orders, withdrawal requests, bookings) so tracking survives,
10
+ * records (orders, withdrawal requests, bookings, downloads, gift cards
11
+ * the user bought or received) so tracking survives, takes the user's
12
+ * email out of the activity log and the sent-email ledger, leaves the
13
+ * invoices already issued as they are (an invoice must keep naming its
14
+ * buyer),
10
15
  * deletes the user's personal data (reviews, cart, favourites, chat
11
16
  * history), deletes the rows the user owns in the project's own tables —
12
17
  * the ones the AI made for the site, each through the one column the
@@ -1 +1 @@
1
- {"version":3,"file":"account-delete-route-generator.d.ts","sourceRoot":"","sources":["../../src/account-delete-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAaxE,MAAM,WAAW,yBAAyB;IAExC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAI3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAEhD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAID,eAAO,MAAM,8BAA8B,+CAAiC,CAAA;AAE5E,eAAO,MAAM,0BAA0B,aAAa,yBAAyB,KAAQ,MAqXpF,CAAA"}
1
+ {"version":3,"file":"account-delete-route-generator.d.ts","sourceRoot":"","sources":["../../src/account-delete-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAaxE,MAAM,WAAW,yBAAyB;IAExC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAI3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAEhD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAID,eAAO,MAAM,8BAA8B,+CAAiC,CAAA;AAE5E,eAAO,MAAM,0BAA0B,aAAa,yBAAyB,KAAQ,MAoapF,CAAA"}
@@ -48,10 +48,29 @@ const ANONYMIZE_TABLES = [
48
48
  'teleport_subscriptions',
49
49
  'teleport_abandoned_carts',
50
50
  'teleport_voucher_redemptions',
51
+ 'teleport_downloads',
51
52
  ];
52
53
  const EMAIL_COLUMNS = ['billing_email', 'shipping_email', 'customer_email', 'email'];
53
54
  // A booking also names the customer and carries their phone; both are cleared.
54
- const CLEARED_COLUMNS = { teleport_bookings: ['customer_name', 'customer_phone'] };
55
+ // A download keeps its count against the order's limit, without who fetched it
56
+ // from where.
57
+ const CLEARED_COLUMNS = {
58
+ teleport_bookings: ['customer_name', 'customer_phone'],
59
+ teleport_downloads: ['ip_address'],
60
+ };
61
+ // Tables that name the user only by their email: each column holding it takes
62
+ // the anonymised address (a gift card stays redeemable by its code) or a blank
63
+ // (an activity-log line keeps what happened, not who did it).
64
+ const EMAIL_REFERENCES = [
65
+ { table: 'teleport_gift_cards', column: 'purchaser_email', replacement: 'anonymised' },
66
+ { table: 'teleport_gift_cards', column: 'recipient_email', replacement: 'anonymised' },
67
+ { table: 'teleport_events', column: 'actor', replacement: 'blank' },
68
+ ];
69
+ const SENT_EMAILS_TABLE = 'teleport_sent_emails';
70
+
71
+ function anonymisedEmailOf(userId) {
72
+ return String(DELETED_EMAIL_PATTERN).split('{{userId}}').join(String(userId));
73
+ }
55
74
 
56
75
  async function tableColumns(client, table) {
57
76
  var r = await client.query(
@@ -94,6 +113,36 @@ async function deleteRowsByEmail(client, table, column, email) {
94
113
  await client.query('DELETE FROM ' + table + ' WHERE ' + column + ' = $1', [email]);
95
114
  }
96
115
 
116
+ async function replaceEmailReferences(client, email, anonymisedEmail) {
117
+ if (!email) { return; }
118
+ for (var i = 0; i < EMAIL_REFERENCES.length; i++) {
119
+ var ref = EMAIL_REFERENCES[i];
120
+ var cols = await tableColumns(client, ref.table);
121
+ if (cols.indexOf(ref.column) === -1) { continue; }
122
+ await client.query(
123
+ 'UPDATE ' + ref.table + ' SET ' + ref.column + ' = $1 WHERE lower(' + ref.column + ') = lower($2)',
124
+ [ref.replacement === 'anonymised' ? anonymisedEmail : '', email]
125
+ );
126
+ }
127
+ }
128
+
129
+ // The emails the site sent the user stay on record (which email, when, through
130
+ // which provider), without the address, the body or the values it was filled
131
+ // with.
132
+ async function blankSentEmailsTo(client, email) {
133
+ if (!email) { return; }
134
+ var cols = await tableColumns(client, SENT_EMAILS_TABLE);
135
+ if (cols.indexOf('recipient_email') === -1) { return; }
136
+ var sets = ["recipient_email = ''"];
137
+ if (cols.indexOf('recipients') !== -1) { sets.push('recipients = NULL'); }
138
+ if (cols.indexOf('body_html') !== -1) { sets.push("body_html = ''"); }
139
+ if (cols.indexOf('payload') !== -1) { sets.push('payload = NULL'); }
140
+ await client.query(
141
+ 'UPDATE ' + SENT_EMAILS_TABLE + ' SET ' + sets.join(', ') + ' WHERE lower(recipient_email) = lower($1)',
142
+ [email]
143
+ );
144
+ }
145
+
97
146
  // Rows the user owns in the project's OWN tables — the ones the AI made for
98
147
  // this site (saved items, requests, reviews …). Their link to the user is
99
148
  // ON DELETE SET NULL, so they outlived the account with a blank owner, and the
@@ -207,44 +256,34 @@ async function deleteOwnedRows(client, userId) {
207
256
  }
208
257
  }
209
258
 
210
- // Invoices are a financial/tax record that must survive, but they store the
211
- // customer's PII denormalised and link to the user only through order_id (no
212
- // user_id). Scrub the PII in place, matching invoices whose order belongs to the
213
- // user. MUST run BEFORE the orders row is anonymised (its user_id is still set).
214
- var INVOICE_PII_NULL_COLUMNS = [
215
- 'customer_name',
216
- 'customer_address',
217
- 'customer_city',
218
- 'customer_state',
219
- 'customer_zip',
220
- 'customer_country',
221
- 'customer_vat',
222
- 'customer_phone',
223
- ];
224
-
225
- async function anonymizeInvoices(client, ordersTable, invoicesTable, userId, syntheticEmail) {
226
- var invCols = await tableColumns(client, invoicesTable);
227
- if (invCols.indexOf('order_id') === -1) { return; }
228
- var orderCols = await tableColumns(client, ordersTable);
229
- if (orderCols.indexOf('user_id') === -1) { return; }
230
- var sets = [];
231
- var params = [];
232
- if (invCols.indexOf('customer_email') !== -1) {
233
- params.push(syntheticEmail);
234
- sets.push('customer_email = $' + params.length);
259
+ // The password a request confirms the deletion with, or null when it names
260
+ // none. A request without one deletes as before; one with a password deletes
261
+ // only when it is the account's own (the editor's delete-account form asks for
262
+ // it).
263
+ function readRequestPassword(req) {
264
+ var body = req.body;
265
+ if (typeof body === 'string') {
266
+ try { body = JSON.parse(body); } catch (e) { body = null; }
235
267
  }
236
- for (var i = 0; i < INVOICE_PII_NULL_COLUMNS.length; i++) {
237
- if (invCols.indexOf(INVOICE_PII_NULL_COLUMNS[i]) !== -1) {
238
- sets.push(INVOICE_PII_NULL_COLUMNS[i] + ' = NULL');
239
- }
268
+ if (!body || typeof body !== 'object' || body.password === undefined || body.password === null) {
269
+ return null;
270
+ }
271
+ return String(body.password);
272
+ }
273
+
274
+ // The sign-in check (utils/auth/hash-password.js verifyPassword): bcrypt over
275
+ // the SHA-256 of the password and AUTH_PEPPER. An account without a stored
276
+ // password (a social sign-in) matches no password.
277
+ function passwordMatches(password, storedHash) {
278
+ if (!storedHash || password.length > 1000) { return false; }
279
+ var bcrypt = require('bcryptjs');
280
+ var crypto = require('crypto');
281
+ var prepared = crypto.createHash('sha256').update(password + (process.env.AUTH_PEPPER || '')).digest('base64');
282
+ try {
283
+ return bcrypt.compareSync(prepared, String(storedHash));
284
+ } catch (e) {
285
+ return false;
240
286
  }
241
- if (sets.length === 0) { return; }
242
- params.push(userId);
243
- await client.query(
244
- 'UPDATE ' + invoicesTable + ' SET ' + sets.join(', ') +
245
- ' WHERE order_id IN (SELECT id FROM ' + ordersTable + ' WHERE user_id = $' + params.length + ')',
246
- params
247
- );
248
287
  }
249
288
 
250
289
  ${(0, transactional_email_code_1.generateFillTemplateFn)()}
@@ -261,6 +300,7 @@ ${(0, transactional_email_code_1.generateProviderSendFunction)(provider, {
261
300
  source: 'account-delete',
262
301
  sourceRef: 'api/account/delete-current',
263
302
  relativePrefix: '../../..',
303
+ withoutRecipientDetails: true,
264
304
  })}
265
305
 
266
306
  // \`locale\` is the language of the page the deletion was requested from
@@ -276,7 +316,7 @@ async function sendFarewellEmail(toEmail, tokenValues, userId, locale) {
276
316
  var copy = resolveFarewellEmailCopy(locale);
277
317
  var subject = fillTemplate(copy.subject, tokenValues);
278
318
  var html = fillTemplate(copy.body, tokenValues);
279
- await __sendProviderEmail({ from: from, fromName: EMAIL_FROM_NAME, to: toEmail, subject: subject, html: html, apiKey: apiKey, tokenValues: tokenValues, userId: userId });
319
+ await __sendProviderEmail({ from: from, fromName: EMAIL_FROM_NAME, to: toEmail, recordedTo: anonymisedEmailOf(userId), subject: subject, html: html, apiKey: apiKey, tokenValues: tokenValues, userId: userId });
280
320
  }
281
321
 
282
322
  module.exports = async function handler(req, res) {
@@ -296,10 +336,12 @@ module.exports = async function handler(req, res) {
296
336
  return res.status(401).json({ error: 'Unauthenticated' });
297
337
  }
298
338
 
339
+ var requestPassword = readRequestPassword(req);
299
340
  var client = getClient();
300
341
  var userEmail = '';
301
342
  var userName = '';
302
343
  var userFound = false;
344
+ var passwordRefused = false;
303
345
  var failed = false;
304
346
  // try/finally so the pg connection is ALWAYS closed — every early exit
305
347
  // (not-found, error) leaves via the finally, never leaking a connection.
@@ -312,14 +354,14 @@ module.exports = async function handler(req, res) {
312
354
  userFound = true;
313
355
  userEmail = userRes.rows[0].email || '';
314
356
  userName = userRes.rows[0].name || '';
315
-
316
- var syntheticEmail = String(DELETED_EMAIL_PATTERN).split('{{userId}}').join(String(userId));
357
+ passwordRefused =
358
+ requestPassword !== null && !passwordMatches(requestPassword, userRes.rows[0].password);
359
+ }
360
+ if (userFound && !passwordRefused) {
361
+ var syntheticEmail = anonymisedEmailOf(userId);
317
362
 
318
363
  await client.query('BEGIN');
319
364
  try {
320
- // Scrub invoice PII FIRST — invoices link to the user only through
321
- // order_id, so this must run while the orders row still carries user_id.
322
- await anonymizeInvoices(client, 'teleport_orders', 'teleport_invoices', userId, syntheticEmail);
323
365
  for (var a = 0; a < ANONYMIZE_TABLES.length; a++) {
324
366
  await anonymizeUserRows(client, ANONYMIZE_TABLES[a], userId, syntheticEmail);
325
367
  }
@@ -327,6 +369,8 @@ module.exports = async function handler(req, res) {
327
369
  await deleteUserRows(client, DELETE_TABLES[d], userId);
328
370
  }
329
371
  await deleteOwnedRows(client, userId);
372
+ await replaceEmailReferences(client, userEmail, syntheticEmail);
373
+ await blankSentEmailsTo(client, userEmail);
330
374
  // password_reset_tokens has no user_id — it is keyed by the email string.
331
375
  await deleteRowsByEmail(client, 'password_reset_tokens', 'email', userEmail);
332
376
  await client.query('DELETE FROM ' + AUTH_USERS_TABLE + ' WHERE id = $1', [userId]);
@@ -349,6 +393,9 @@ module.exports = async function handler(req, res) {
349
393
  if (!userFound) {
350
394
  return res.status(404).json({ error: 'Account not found' });
351
395
  }
396
+ if (passwordRefused) {
397
+ return res.status(403).json({ error: 'Incorrect password' });
398
+ }
352
399
 
353
400
  // Best-effort farewell email AFTER the successful commit (connection closed).
354
401
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"account-delete-route-generator.js","sourceRoot":"","sources":["../../src/account-delete-route-generator.ts"],"names":[],"mappings":";;;AAsBA,iEAA0D;AAC1D,qDAAuD;AACvD,uEAAoF;AACpF,yEAOmC;AAuBnC,+EAA+E;AAC/E,oFAAoF;AACvE,QAAA,8BAA8B,GAAG,yDAA8B,CAAA;AAErE,MAAM,0BAA0B,GAAG,CAAC,UAAqC,EAAE,EAAU,EAAE;IAC5F,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAA;IAC5D,MAAM,QAAQ,GACZ,OAAO,CAAC,aAAa,IAAI,oDAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3E,CAAC,CAAC,OAAO,CAAC,aAAa;QACvB,CAAC,CAAC,IAAI,CAAA;IACV,MAAM,mBAAmB,GACvB,OAAO,CAAC,mBAAmB,IAAI,yCAAyC,CAAA;IAE1E,OAAO,GAAG,IAAA,qCAAoB,GAAE;EAChC,IAAA,kEAAwC,GAAE;2BACjB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;oBACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAC1B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;yBAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;qBAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;0BAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;wBACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,+BAA+B,CAAC;0BACrE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;0BAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;EACxE,IAAA,qDAA0B,EAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiFtC,8BAAY,CAAC,+BAA+B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4I9C,IAAA,iDAAsB,GAAE;;EAExB,IAAA,uDAA4B,EAAC;QAC7B,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,iBAAiB;KAClC,CAAC;;EAEA,IAAA,uDAA4B,EAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4BAA4B;QACvC,cAAc,EAAE,UAAU;KAC3B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GA,QAAQ;QACN,CAAC,CAAC;;CAEL;QACG,CAAC,CAAC,EACN;;;CAGC,CAAA;AACD,CAAC,CAAA;AArXY,QAAA,0BAA0B,8BAqXtC"}
1
+ {"version":3,"file":"account-delete-route-generator.js","sourceRoot":"","sources":["../../src/account-delete-route-generator.ts"],"names":[],"mappings":";;;AA2BA,iEAA0D;AAC1D,qDAAuD;AACvD,uEAAoF;AACpF,yEAOmC;AAuBnC,+EAA+E;AAC/E,oFAAoF;AACvE,QAAA,8BAA8B,GAAG,yDAA8B,CAAA;AAErE,MAAM,0BAA0B,GAAG,CAAC,UAAqC,EAAE,EAAU,EAAE;IAC5F,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAA;IAC5D,MAAM,QAAQ,GACZ,OAAO,CAAC,aAAa,IAAI,oDAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3E,CAAC,CAAC,OAAO,CAAC,aAAa;QACvB,CAAC,CAAC,IAAI,CAAA;IACV,MAAM,mBAAmB,GACvB,OAAO,CAAC,mBAAmB,IAAI,yCAAyC,CAAA;IAE1E,OAAO,GAAG,IAAA,qCAAoB,GAAE;EAChC,IAAA,kEAAwC,GAAE;2BACjB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;oBACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAC1B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;yBAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;qBAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;0BAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;gCAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;wBACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,+BAA+B,CAAC;0BACrE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;0BAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;EACxE,IAAA,qDAA0B,EAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkItC,8BAAY,CAAC,+BAA+B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkI9C,IAAA,iDAAsB,GAAE;;EAExB,IAAA,uDAA4B,EAAC;QAC7B,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,iBAAiB;KAClC,CAAC;;EAEA,IAAA,uDAA4B,EAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4BAA4B;QACvC,cAAc,EAAE,UAAU;QAC1B,uBAAuB,EAAE,IAAI;KAC9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmHA,QAAQ;QACN,CAAC,CAAC;;CAEL;QACG,CAAC,CAAC,EACN;;;CAGC,CAAA;AACD,CAAC,CAAA;AApaY,QAAA,0BAA0B,8BAoatC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-route-generator.d.ts","sourceRoot":"","sources":["../../src/api-route-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAIb,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAuD9C,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AA4BD,eAAO,MAAM,6BAA6B,YAC/B,eAAe,iBACT,MAAM,eACR,sBAAsB,YAC1B,yBAAyB,KACjC,MAiXF,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAa,eAAe,KAAG,OAE7D,CAAA;AAED,eAAO,MAAM,sCAAsC,YACxC,eAAe,iBACT,MAAM,eACR,sBAAsB,YAC1B,yBAAyB,KACjC,MAicF,CAAA;AA4JD,eAAO,MAAM,oBAAoB,aACrB,YAAY,gBACR,OAAO,MAAM,EAAE,sBAAsB,CAAC,KACnD,MAsHF,CAAA;AAED,eAAO,MAAM,mBAAmB,eAClB,MAAM,aACP,MAAM,iBACF,MAAM,KACpB,MA4BF,CAAA;AAED,eAAO,MAAM,oBAAoB,aAAc,YAAY,KAAG,MAa7D,CAAA;AA+RD,eAAO,MAAM,+BAA+B,aAChC,YAAY,gBACR,OAAO,MAAM,EAAE,sBAAsB,CAAC,KACnD,MA0OF,CAAA;AAED,eAAO,MAAM,uBAAuB,aAAc,YAAY,KAAG,MAiBhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,cAC1B,aAAa,GAAG,SAAS,cACxB,MAAM,KACjB,MAAM,GAAG,IAYX,CAAA;AAED,eAAO,MAAM,mBAAmB,aAAc,YAAY,KAAG,MAAM,EAqBlE,CAAA"}
1
+ {"version":3,"file":"api-route-generator.d.ts","sourceRoot":"","sources":["../../src/api-route-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAIb,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAuD9C,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AA4BD,eAAO,MAAM,6BAA6B,YAC/B,eAAe,iBACT,MAAM,eACR,sBAAsB,YAC1B,yBAAyB,KACjC,MAiXF,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAa,eAAe,KAAG,OAE7D,CAAA;AAED,eAAO,MAAM,sCAAsC,YACxC,eAAe,iBACT,MAAM,eACR,sBAAsB,YAC1B,yBAAyB,KACjC,MAgcF,CAAA;AA4JD,eAAO,MAAM,oBAAoB,aACrB,YAAY,gBACR,OAAO,MAAM,EAAE,sBAAsB,CAAC,KACnD,MAsHF,CAAA;AAED,eAAO,MAAM,mBAAmB,eAClB,MAAM,aACP,MAAM,iBACF,MAAM,KACpB,MA4BF,CAAA;AAED,eAAO,MAAM,oBAAoB,aAAc,YAAY,KAAG,MAa7D,CAAA;AA+RD,eAAO,MAAM,+BAA+B,aAChC,YAAY,gBACR,OAAO,MAAM,EAAE,sBAAsB,CAAC,KACnD,MA0OF,CAAA;AAED,eAAO,MAAM,uBAAuB,aAAc,YAAY,KAAG,MAiBhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,cAC1B,aAAa,GAAG,SAAS,cACxB,MAAM,KACjB,MAAM,GAAG,IAYX,CAAA;AAED,eAAO,MAAM,mBAAmB,aAAc,YAAY,KAAG,MAAM,EAqBlE,CAAA"}
@@ -381,7 +381,7 @@ module.exports = async function handler(req, res) {
381
381
  for (var h = 0; h < hKeys.length; h++) {
382
382
  res.setHeader(hKeys[h], earlyRes.headers[hKeys[h]]);
383
383
  }
384
- await utils.settlePendingNodePromises(context);
384
+ await utils.handOffPendingNodePromises(context);
385
385
  res.status(earlyRes.status || 500).json(earlyRes.body || {});
386
386
  return;
387
387
  }
@@ -392,11 +392,11 @@ module.exports = async function handler(req, res) {
392
392
  if (result && result.__terminal) break;
393
393
  }
394
394
 
395
- // Land every fire-and-forget query BEFORE replying: the platform may freeze
396
- // this function the moment the response is sent, which would drop the write.
397
- // The visitor does not pay for this — the client dispatched this segment
398
- // without awaiting it (see seg.fireAndForget in the client runtime).
399
- await utils.settlePendingNodePromises(context);
395
+ // Every not-awaited step must still land: the platform may freeze this
396
+ // function the moment the response is sent, which would drop the work. On
397
+ // Vercel it finishes after the reply (waitUntil); elsewhere the reply waits
398
+ // for it (see handOffPendingNodePromises in the server runtime).
399
+ await utils.handOffPendingNodePromises(context);
400
400
  delete context.__request;
401
401
  delete context.__pendingNodePromises;
402
402
  // MUST be stripped before replying: the results payload below IS this
@@ -408,7 +408,7 @@ module.exports = async function handler(req, res) {
408
408
  res.status(200).json({ success: true, results: utils.segmentReply(SEGMENT_CONFIG, context, __incomingSnapshot) });
409
409
  } catch (error) {
410
410
  console.error('Workflow segment error:', error);
411
- if (__wfContext) { await utils.settlePendingNodePromises(__wfContext); }
411
+ if (__wfContext) { await utils.handOffPendingNodePromises(__wfContext); }
412
412
  res.status(500).json({ success: false, error: error.message || 'Internal server error' });
413
413
  }
414
414
  };
@@ -798,7 +798,7 @@ module.exports = async function handler(req, res) {
798
798
  }
799
799
  const result = await nodeHandler(resolved, context);
800
800
  if (result && result.__earlyResponse) {
801
- await utils.settlePendingNodePromises(context);
801
+ await utils.handOffPendingNodePromises(context);
802
802
  if (streamStarted) {
803
803
  res.write('data: ' + JSON.stringify({ type: 'error', error: (result.__earlyResponse.body && result.__earlyResponse.body.message) || 'Request rejected' }) + '\\n\\n');
804
804
  res.end();
@@ -823,10 +823,9 @@ module.exports = async function handler(req, res) {
823
823
  }
824
824
  }
825
825
 
826
- // See the non-streaming segment route: land every fire-and-forget query
827
- // before the response completes, or the platform may freeze this function
828
- // with the write still in flight.
829
- await utils.settlePendingNodePromises(context);
826
+ // See the non-streaming segment route: every not-awaited step must still
827
+ // land, after the reply on Vercel, before it anywhere else.
828
+ await utils.handOffPendingNodePromises(context);
830
829
  delete context.__request;
831
830
  delete context.__pendingNodePromises;
832
831
  // MUST be stripped before replying: the results payload below IS this
@@ -844,7 +843,7 @@ module.exports = async function handler(req, res) {
844
843
  }
845
844
  } catch (error) {
846
845
  console.error('Streaming workflow segment error:', error);
847
- if (__wfContext) { await utils.settlePendingNodePromises(__wfContext); }
846
+ if (__wfContext) { await utils.handOffPendingNodePromises(__wfContext); }
848
847
  if (streamStarted) {
849
848
  try {
850
849
  res.write('data: ' + JSON.stringify({ type: 'error', error: error.message || 'Internal server error' }) + '\\n\\n');
@@ -1 +1 @@
1
- {"version":3,"file":"api-route-generator.js","sourceRoot":"","sources":["../../src/api-route-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-route-generator.js","sourceRoot":"","sources":["../../src/api-route-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-generator.d.ts","sourceRoot":"","sources":["../../src/auth-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,EACf,MAAM,4BAA4B,CAAA;AAsBnC,eAAO,MAAM,6BAA6B,mBACxB,cAAc,GAAG,IAAI,KACpC,OAAO,MAAM,EAAE,MAAM,CA0BvB,CAAA;AAwID;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAQrD,CAAA;AAKD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAalD,CAAA;AAWD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,WACzB,OAAO,MAAM,EAAE,mBAAmB,EAAE,CAAC,GAAG,SAAS,eAC5C,sBAAsB,EAAE,KACpC,MAAM,EAQR,CAAA;AAwbD,eAAO,MAAM,uBAAuB,SAC5B,kBAAkB,qBACL,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAChD,MAoIF,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,QAAO,MA6ChD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAkD3C,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,MA4B3C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAwG5C,CAAA;AAMD,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,uBAAuB,SAC5B,kBAAkB,YACf,mBAAmB,KAC3B,MAiLF,CAAA;AA2ED,MAAM,WAAW,iBAAiB;IAIhC,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AA4FD,eAAO,MAAM,sBAAsB,SAC3B,kBAAkB,YACf,iBAAiB,KACzB,MA2bF,CAAA;AAoBD,eAAO,MAAM,8BAA8B,QAAO,MA6BjD,CAAA;AAED,eAAO,MAAM,8BAA8B,QAAO,MAiHjD,CAAA"}
1
+ {"version":3,"file":"auth-generator.d.ts","sourceRoot":"","sources":["../../src/auth-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,EACf,MAAM,4BAA4B,CAAA;AAsBnC,eAAO,MAAM,6BAA6B,mBACxB,cAAc,GAAG,IAAI,KACpC,OAAO,MAAM,EAAE,MAAM,CA0BvB,CAAA;AAwID;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAQrD,CAAA;AAKD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAalD,CAAA;AAWD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,WACzB,OAAO,MAAM,EAAE,mBAAmB,EAAE,CAAC,GAAG,SAAS,eAC5C,sBAAsB,EAAE,KACpC,MAAM,EAQR,CAAA;AA0bD,eAAO,MAAM,uBAAuB,SAC5B,kBAAkB,qBACL,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAChD,MAmKF,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,QAAO,MA6ChD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAkD3C,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,MA4B3C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAwG5C,CAAA;AAMD,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,uBAAuB,SAC5B,kBAAkB,YACf,mBAAmB,KAC3B,MAiLF,CAAA;AA2ED,MAAM,WAAW,iBAAiB;IAIhC,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AA4FD,eAAO,MAAM,sBAAsB,SAC3B,kBAAkB,YACf,iBAAiB,KACzB,MA2bF,CAAA;AAoBD,eAAO,MAAM,8BAA8B,QAAO,MA6BjD,CAAA;AAED,eAAO,MAAM,8BAA8B,QAAO,MAiHjD,CAAA"}
@@ -616,7 +616,9 @@ const generateProvidersSetup = (auth) => {
616
616
  if (!verifyPassword(String(credentials.password), user.password)) {
617
617
  throw new Error('InvalidCredentials');
618
618
  }
619
- return sanitizeUser(user);
619
+ const signedIn = sanitizeUser(user);
620
+ signedIn[TOKEN_PASSWORD_FINGERPRINT] = passwordFingerprint(user.password);
621
+ return signedIn;
620
622
  } catch (err) {
621
623
  if (err && err.message === 'InvalidCredentials') throw err;
622
624
  // A hashing/serialisation fault is an infrastructure problem, not a
@@ -688,6 +690,22 @@ const USER_REFRESH_INTERVAL_MS = ${exports.USER_REFRESH_INTERVAL_MS};
688
690
  // internal timestamp on every binding that enumerates the user object.
689
691
  const TOKEN_REFRESH_STAMP = '__userRefreshedAt';
690
692
 
693
+ // A short fingerprint of the account's stored password hash, carried in the
694
+ // token from sign-in (or from the first refresh of a token that has none). A
695
+ // password change, a reset included, changes it, and the refresh then ends the
696
+ // session: every session opened before the change is signed out at its next
697
+ // refresh. Keyed with NEXTAUTH_SECRET; never the hash itself, and like the
698
+ // stamp above never copied onto \`session.user\`.
699
+ const TOKEN_PASSWORD_FINGERPRINT = '__passwordFingerprint';
700
+
701
+ function passwordFingerprint(storedHash) {
702
+ return require('crypto')
703
+ .createHmac('sha256', String(process.env.NEXTAUTH_SECRET || ''))
704
+ .update('teleport-password-fingerprint:v1|' + (storedHash ? String(storedHash) : ''))
705
+ .digest('base64')
706
+ .slice(0, 16);
707
+ }
708
+
691
709
  const authOptions = {
692
710
  providers: providers,
693
711
  pages: {
@@ -733,6 +751,7 @@ const authOptions = {
733
751
  if (params.trigger !== 'update' && isFresh) {
734
752
  return token;
735
753
  }
754
+ let passwordChanged = false;
736
755
  try {
737
756
  if (token && token.email && typeof findUserByEmail === 'function') {
738
757
  const fresh = await findUserByEmail(String(token.email));
@@ -743,10 +762,23 @@ const authOptions = {
743
762
  token[fk[i]] = safe[fk[i]];
744
763
  }
745
764
  }
765
+ if (fresh) {
766
+ const currentFingerprint = passwordFingerprint(fresh.password);
767
+ if (typeof token[TOKEN_PASSWORD_FINGERPRINT] !== 'string') {
768
+ token[TOKEN_PASSWORD_FINGERPRINT] = currentFingerprint;
769
+ } else if (token[TOKEN_PASSWORD_FINGERPRINT] !== currentFingerprint) {
770
+ passwordChanged = true;
771
+ }
772
+ }
746
773
  }
747
774
  } catch (e) {
748
775
  // Keep the existing token on any DB hiccup — never sign the user out.
749
776
  }
777
+ if (passwordChanged) {
778
+ // NextAuth answers a jwt callback that throws by clearing the session
779
+ // cookie and returning no session: the visitor is signed out.
780
+ throw new Error('The account password changed since this session signed in');
781
+ }
750
782
  // Stamped even when the read threw, so an unreachable database costs one
751
783
  // attempt per interval instead of one per request.
752
784
  if (token) {
@@ -760,6 +792,7 @@ const authOptions = {
760
792
  if (token && session.user) {
761
793
  const skip = { iat: 1, exp: 1, jti: 1, sub: 1 };
762
794
  skip[TOKEN_REFRESH_STAMP] = 1;
795
+ skip[TOKEN_PASSWORD_FINGERPRINT] = 1;
763
796
  const keys = Object.keys(token);
764
797
  for (let i = 0; i < keys.length; i++) {
765
798
  if (!skip[keys[i]]) {