fix(together): JWT なしリクエストで invite_code を返さないよう修正
This commit is contained in:
parent
2ecd960a54
commit
100064693d
|
|
@ -10,6 +10,14 @@
|
||||||
|
|
||||||
- **posimai-boki** は独立リポジトリで Gitea/GitHub へ push 済み。追加分を出したときは `cd posimai-boki && npm run deploy`
|
- **posimai-boki** は独立リポジトリで Gitea/GitHub へ push 済み。追加分を出したときは `cd posimai-boki && npm run deploy`
|
||||||
- **article-keeper フォルダ削除**(エクスプローラーから手動削除): Firebase プロジェクトは削除済み。キーは git 未追跡なので履歴汚染なし。フォルダを消すだけで OK。
|
- **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 を送っていることをログで確認してから削除
|
||||||
|
|
||||||
## 次にやること(優先順)
|
## 次にやること(優先順)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2775,7 +2775,9 @@ ${excerpt}
|
||||||
if (!(await togetherEnsureMember(pool, res, req.params.groupId, username, jwtUserId))) return;
|
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]);
|
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: 'グループが見つかりません' });
|
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) {
|
} catch (e) {
|
||||||
res.status(500).json({ error: 'Internal server error' });
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue