Skip to content

fix: 既存メンバーの共有URLアクセス時にロールを表示する (#97) - #151

Merged
rictaworks merged 1 commit into
rictaworks:mainfrom
shin4141:feature/97-existing-membership-banner
Aug 14, 2026
Merged

fix: 既存メンバーの共有URLアクセス時にロールを表示する (#97)#151
rictaworks merged 1 commit into
rictaworks:mainfrom
shin4141:feature/97-existing-membership-banner

Conversation

@shin4141

Copy link
Copy Markdown
Contributor

Issue #97 で決定された要件 A を実装します。

変更

  • 共有URLの初回取得で既存membershipが返った場合に、現在のロールを確認できるバナーを表示
  • 初回参加の「ボードに参加しました」と、既存メンバーの「このボードに参加済みです」を明確に分離
  • ownerRole を実際のowner表示経路へ接続
  • ownerの既存membership表示と、従来の初回参加表示を守る回帰テストを追加

Before / after

  • Before: owner/既存メンバーは直接キャンバスへ進み、ロール表示バナーが描画されない
  • After: 共有URLを開くと「あなたは既に『ボード名』の ロール です」と表示され、閉じる操作もできる

テスト

  • node --test test/board-invite-panel.test.mjs: 7 tests / 7 pass
  • node --test test/*.test.mjs: 252 tests / 252 pass
  • npm run lint: PASS
  • npm run build: PASS

ユーザーテスト手順

  1. オーナーまたは既に参加済みのメンバーでログインする
  2. 参加済みボードの共有URLを開く
  3. キャンバス上部に「このボードに参加済みです」と表示されることを確認する
  4. メッセージ内にボード名と現在のロール(オーナー/編集者/コメント可/閲覧者)が表示されることを確認する
  5. 閉じるボタンでメッセージが消えることを確認する
  6. 未参加アカウントでは、従来どおりロール選択→参加後に「ボードに参加しました」と表示されることを確認する

実アカウントや本番環境は使用せず、既存のAPI response shapeをdeterministic testで検証しています。

Fixes #97


Model: Codex (GPT-5)

@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

@shin4141 is attempting to deploy a commit to the Rictaworks' projects Team on Vercel.

A member of the Team first needs to authorize it.

@rictaworks

Copy link
Copy Markdown
Owner

レビュー結果: 指摘事項はありません。

変更範囲をセキュリティ優先で確認しました。認証・認可の変更や、新たな XSS・CSRF・情報漏えいにつながる経路は見つかりませんでした。ボード名とロールは React 上で安全に描画され、membership 情報も既存の認可済み API 応答に限定されています。

確認結果:


Reviewed by GPT-5 (Codex)

Copy link
Copy Markdown
Owner

レビュー結果(issue受け入れ要件・規約適合)

Issue #97 受け入れ要件

「方針決定:A を採用」コメントの実装方針補足を基準に確認。いずれも満たしています。

  • オーナー/既存メンバーが共有URL経由で200を受けた際に「あなたは既にこのボードの〇〇です」相当のバナーを表示
  • ownerRole に実行経路が接続された(resolveRoleLabelKey('owner') → 'ownerRole' の削除は不要のまま維持)
  • 新規参加バナーとは別の文言・トーンで区別(existingMembershipHeading / existingMembershipDescription を新規キーとして追加)
  • PR fix: 共有URLからの参加後に成功メッセージとロール名を表示する (#89) #92 のテスト手順のうち到達可能になった項目を復活、依然到達不能な項目(別Googleアカウントでの参加検証)は引き続き除外
  • test/board-invite-panel.test.mjs にテスト追加

(補足)追加テストは、抽出した純粋関数(createExistingMembershipNotice / createMembershipBannerContent)を直接呼ぶ形式で、useEffect の配線自体(GET /boards/:share_token が200を返した際に自動でこれらの関数を呼び出す結線)は通していません。ただしこのファイルの既存テストも同じ流儀で統一されており、慣習からの逸脱ではないため必須の指摘ではありません。

規約チェック

CC.md/OWASP10.md/QC10.md/CRAP.md/development-principles.md/TM.md のいずれも指摘なし

確認できた適合ポイント:

  • XSS対策:board.title はサーバー由来値だが dangerouslySetInnerHTML 未使用でReactのテキストノードとして描画(TM.md T6準拠)
  • アクセス制御:403/404/エラー時は確実に通知をクリアしており古い会員情報の残留なし
  • ハードコード禁止:新規文言はすべて ja.json に追加、コンポーネント直書きなし
  • 既存の BoardJoinSuccessBanner パターンを再利用(CRAP準拠)

参考情報

CI(gh pr checks 151)はVercel(デプロイ権限待ちのfail、内容起因ではない)を除き全てpass(Backend RSpec/RuboCop/Brakeman、Frontend ESLint/build&test、Go test/lint)。


レビュー実施: Claude Sonnet 5

@rictaworks
rictaworks merged commit 2cdbee1 into rictaworks:main Aug 14, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[不具合] 参加成功メッセージがオーナーには構造上表示されず、ownerRole が実行経路の無いコードになっている

2 participants