Skip to content

Comments

feat: 管理者権限をrole-based claimに刷新#260

Open
newt239 wants to merge 2 commits intomasterfrom
feat/refactor-admin-auth
Open

feat: 管理者権限をrole-based claimに刷新#260
newt239 wants to merge 2 commits intomasterfrom
feat/refactor-admin-auth

Conversation

@newt239
Copy link
Member

@newt239 newt239 commented Feb 18, 2026

概要

管理者権限の仕組みを単一の admin claim から、役職別の account(会計)/ infra(インフラ)claim に刷新します。
また、コード内に散在していた権限チェックを OpenAPI スコープによる一元管理に移行しました。

主な変更点

権限モデルの変更

  • admin という汎用 claim を廃止し、account(会計)と infra(インフラ)の役職 claim に分割
  • AdminClaims = []string{"account", "infra"} として pkg/admin/admin.go で一元定義
  • isAdmin フラグ(GET /user/me)はいずれかの役職 claim を持つユーザーで true になる

認可チェックの整理

  • コード内の重複チェック(CheckUserIsAdmin)を削除し、OpenAPI スコープで一元管理
    • POST /activity/checkout/{userId}: BearerAuth: [infra] に変更、コード内チェック削除
    • POST /mail: BearerAuth: [infra] に変更(旧 admin)、コード内チェック削除
    • PUT /budget/{budgetId}/admin: BearerAuth: [account] に変更(旧 admin
  • PUT /activity/record/{recordId} は条件付き認可のため CheckUserHasClaim(..., "infra") を使用(OpenAPI で表現不可のため残存)

POST /group/admin 新エンドポイント追加

  • infra claim を持つユーザーが任意の claim を持つグループを作成できる専用エンドポイント
  • POST /groupisAdminGroup フィールドを廃止し、専用エンドポイントに分離

テストデータ更新(schema/test/insert_test.sql

  • admin グループ → infra グループ(山田次郎)に変更
  • 新たに account グループ(田中太郎)を追加

仕様書追加

  • docs/admin_spec.md: 管理者権限・グループ管理の仕様書を新規追加

テスト手順

docs/admin_spec.md のセクション「ローカル環境でのテスト手順」を参照してください。

🤖 Generated with Claude Code

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Feb 18, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
spec-core 34842e9 Commit Preview URL

Branch Preview URL
Feb 18 2026, 02:58 PM

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

管理者権限を単一の admin claim から役職別(account / infra)claim に分割し、認可チェックを OpenAPI スコープ中心へ移行するPRです。あわせて、管理者用グループ作成のための専用エンドポイント追加と、関連するSQL/シード/ドキュメント更新が含まれます。

Changes:

  • admin claim 廃止 → account/infra へ刷新し、AdminClaims を導入して参照箇所/SQLを更新
  • POST /mail / POST /activity/checkout/{userId} / PUT /budget/{budgetId}/admin などの認可を OpenAPI スコープへ移行(コード内チェック削除/変更)
  • POST /group/admin を追加し、グループ作成フローと仕様書/シードデータを更新

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
schema/test/insert_test.sql admin から infra/account グループへテストシードを更新
pkg/user/users.go isAdmin 判定SQLに AdminClaims を渡すよう更新
pkg/mail/post_mail.go 管理者チェック削除(OpenAPIスコープ側へ移行)
pkg/group/post_group_admin.go 新規:POST /group/admin のユースケース実装
pkg/group/post_group.go isAdminGroup ロジック削除(通常グループ作成に寄せる)
pkg/group/group.go adminグループ判定を AdminClaims ベースに変更
pkg/group/get_user_user_id_group.go グループ取得SQLへ AdminClaims を渡すよう更新
pkg/group/get_group_group_id.go グループ詳細取得SQLへ AdminClaims を渡すよう更新
pkg/group/get_group.go グループ一覧取得SQLへ AdminClaims を渡すよう更新
pkg/db/sql/user/select_user_profile_from_user_id.sql is_adminIN /*adminClaims*/ で判定するよう変更
pkg/db/sql/group/select_group_is_admin_group.sql adminグループ判定を IN /*adminClaims*/ に変更
pkg/db/sql/group/select_group_from_user_id.sql adminグループ判定JOINを IN /*adminClaims*/ に変更
pkg/db/sql/group/select_group_from_group_id.sql adminグループ判定JOINを IN /*adminClaims*/ に変更
pkg/db/sql/group/select_group.sql adminグループ判定JOINを IN /*adminClaims*/ に変更
pkg/db/sql/admin/select_user_is_admin.sql 管理者判定を IN /*adminClaims*/ に変更
pkg/db/sql/admin/select_user_has_claim.sql 新規:特定claim保有チェック用SQLを追加
pkg/api/spec.gen.go OpenAPI生成物の更新
pkg/api/server/post_group_admin.go 新規:POST /group/admin ハンドラ追加
pkg/api/server.gen.go 新エンドポイント登録とスコープ(infra/account)更新
pkg/api/models.gen.go ReqPostGroupAdmin 追加、ReqPostGroup から isAdminGroup 削除(生成物)
pkg/admin/admin.go AdminClaims 導入、CheckUserHasClaim 追加
pkg/activity/put_activity_record_record_id.go 他人編集の条件付き認可を infra claim に変更
pkg/activity/post_activity_checkout_user_id.go コード内管理者チェック削除(OpenAPIスコープへ移行)
document/schemas/req_post_group_admin.yml 新規:POST /group/admin 用schema追加
document/schemas/req_post_group.yml isAdminGroup フィールド削除
document/schemas.yml ReqPostGroupAdmin をcomponentsへ追加
document/paths/mail.yml POST /mail のスコープを infra に変更
document/paths/group_admin.yml 新規:POST /group/admin パス定義追加
document/paths/budget_budget_id_admin.yml PUT /budget/{budgetId}/adminaccount スコープへ変更
document/paths/activity_checkout_user_id.yml POST /activity/checkout/{userId}infra スコープへ変更
document/paths.yml /group/admin パスを追加
document/bundle.gen.yml OpenAPIバンドル生成物の更新
docs/admin_spec.md 新規:権限/グループ管理仕様とローカルテスト手順の追加

@newt239 newt239 requested a review from saka-naname February 19, 2026 09:41
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.

1 participant