security(auth): 新增 member/provider 角色 middleware #71

Merged
a620906209 merged 2 commits from security/implement-role-middleware into master 2026-10-17 16:12:03 +00:00

2 Commits

Author SHA1 Message Date
a620906209 90fc8f2d49 style: 以 pint 格式化 routes、Docs 與 BookingListTest
Run Tests / test (pull_request) Successful in 36s
純格式調整,不改變行為。這四個檔案在 master 上即未通過 pint,
因本次功能變更觸及而一併修正,以符合變更檔案需通過 pint 的審查要求。

- 已驗證 route:list 除角色 middleware 外無差異
- 已驗證 l5-swagger 產出的 JSON 在格式化前後完全相同

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 23:57:30 +08:00
a620906209 16ccb4c18c security(auth): 新增 member/provider 角色 middleware
補上待辦 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>
2026-10-17 23:57:16 +08:00