security(auth): 新增 member/provider 角色 middleware #71
Reference in New Issue
Block a user
Delete Branch "security/implement-role-middleware"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
摘要
實作 OpenSpec change
add-role-middleware,補上待辦 H1:/api/member/*、/api/provider/*原本只有auth:sanctum,任何已登入帳號都能跨角色建立課程、預約與評價。EnsureMember、EnsureProvider(結構同EnsureAdmin),註冊 aliasmember、provider並掛到對應路由群組403 { status: false, message: "無權限存取" };未登入仍由auth:sanctum回 401;register/login 不受影響/reviews/{id}/helpful、/logout、/user)維持原狀Commits
16ccb4csecurity(auth):功能、測試、Swagger、tasks(審查安全變更請看這個 commit)90fc8f2style:pint 格式化routes/api.php、app/Docs/*、BookingListTest.php(既有格式問題,純格式;已驗證 route:list 與 l5-swagger 產出不變)測試
RoleAuthorizationTest(13 tests):member/provider/admin/未登入跨角色測試,並驗證越權請求不寫入資料php artisan test(含 GD 的容器):252 passed,0 skippedopenspec validate --specs通過審查
strict-reviewer:PASS尚未完成
POST /api/provider/offers、provider token 呼叫POST /api/member/bookings,確認皆 403部署
無 migration、無新套件、無環境變數;合併後由 deploy 的
route:cache生效。回滾:revert 後重新部署。後續
合併後另開 PR 執行歸檔(
/opsx:archive),並同步更新CLAUDE.md授權規範與openspec/config.yaml中「member/provider 只有 auth:sanctum」的過時描述。🤖 Generated with Claude Code
補上待辦 H1:/api/member/*、/api/provider/* 原本只掛 auth:sanctum, 任何已登入帳號都能跨角色建立課程、預約與評價。 - 新增 EnsureMember、EnsureProvider(結構同 EnsureAdmin),註冊 alias member、provider,掛到對應路由群組;角色不符回 403 { status: false, message: "無權限存取" },未登入仍由 auth:sanctum 回 401 - provider middleware 不檢查審核狀態,未通過審核的教練仍可送審 - 新增 RoleAuthorizationTest:member/provider/admin/未登入跨角色測試, 並驗證越權請求不產生資料;跨角色共用路由(通知、未讀訊息數)不受影響 - Swagger:member/provider 端點的 403 描述補上角色不符,補齊列表端點 403 - 更新 BookingListTest docblock 的過時描述 - 完成 tasks 1.1–4.3;5.1、5.2 手動驗證尚未執行 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>