From 100064693d433e6f130a66ab63c58566be2877f5 Mon Sep 17 00:00:00 2001 From: posimai Date: Tue, 21 Apr 2026 19:40:55 +0900 Subject: [PATCH] =?UTF-8?q?fix(together):=20JWT=20=E3=81=AA=E3=81=97?= =?UTF-8?q?=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88=E3=81=A7=20invite?= =?UTF-8?q?=5Fcode=20=E3=82=92=E8=BF=94=E3=81=95=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=82=88=E3=81=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- STATUS.md | 8 ++++++++ server.js | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/STATUS.md b/STATUS.md index 42454793..c8db8faf 100644 --- a/STATUS.md +++ b/STATUS.md @@ -10,6 +10,14 @@ - **posimai-boki** は独立リポジトリで Gitea/GitHub へ push 済み。追加分を出したときは `cd posimai-boki && npm run deploy` - **article-keeper フォルダ削除**(エクスプローラーから手動削除): Firebase プロジェクトは削除済み。キーは git 未追跡なので履歴汚染なし。フォルダを消すだけで OK。 +- **contact.html の Formspree ID 設定**: formspree.io でフォームを作成し `YOUR_FORM_ID` を差し替え → 実送信テスト → Store 本番化ブロッカー解消。 + +## Together legacy path 廃止計画(2026-04-21) + +- **現状**: `jwtUserId` なし(`?u=` のみ)でメンバー照合が通る経路を許容中(warn ログあり) +- **invite_code 漏洩は修正済み**: JWT なしリクエストでは `invite_code` をレスポンスから除外(2026-04-21 パッチ適用) +- **legacy path 廃止期限**: 2026-04-28(今週末)を目安に `togetherEnsureMember` の legacy 経路を削除し、JWT 必須化する +- **廃止前確認**: Together クライアント側が全リクエストで JWT を送っていることをログで確認してから削除 ## 次にやること(優先順) diff --git a/server.js b/server.js index 4e350e1e..c811e264 100644 --- a/server.js +++ b/server.js @@ -2775,7 +2775,9 @@ ${excerpt} if (!(await togetherEnsureMember(pool, res, req.params.groupId, username, jwtUserId))) return; const result = await pool.query('SELECT id, name, invite_code, created_at FROM together_groups WHERE id=$1', [req.params.groupId]); if (result.rows.length === 0) return res.status(404).json({ error: 'グループが見つかりません' }); - res.json(result.rows[0]); + const group = result.rows[0]; + if (!jwtUserId) delete group.invite_code; + res.json(group); } catch (e) { res.status(500).json({ error: 'Internal server error' }); }