From 990f84c21aba84534e62db5d59242cbf7f63ce3e Mon Sep 17 00:00:00 2001 From: Hank Date: Sun, 18 Oct 2026 00:47:01 +0800 Subject: [PATCH] =?UTF-8?q?chore(docs):=20=E6=A8=99=E8=A8=98=20H1=E3=80=81?= =?UTF-8?q?H2=20=E5=AE=8C=E6=88=90=E4=B8=A6=E6=96=BC=20.env.example=20?= =?UTF-8?q?=E8=A8=BB=E6=98=8E=E6=AD=A3=E5=BC=8F=E7=92=B0=E5=A2=83=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - todo 文件:H1 由 PR #71、#72 完成;H2 已於 VPS 確認 APP_DEBUG=false、APP_ENV=production、未使用預設 DB 密碼 - .env.example:APP_DEBUG 上方加註正式環境必須的值 Co-Authored-By: Claude Opus 5.5 --- .env.example | 1 + .../2026-10-14-project-review-todo.md | 26 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index 798fb8a..39eca6e 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,7 @@ APP_NAME=Laravel APP_ENV=local APP_KEY= +# 正式環境必須設為 APP_ENV=production、APP_DEBUG=false,否則錯誤頁會洩漏堆疊追蹤與環境變數 APP_DEBUG=true APP_TIMEZONE=UTC APP_URL=http://localhost diff --git a/docs/analysis/2026-10-14-project-review-todo.md b/docs/analysis/2026-10-14-project-review-todo.md index 77fd134..e62e323 100644 --- a/docs/analysis/2026-10-14-project-review-todo.md +++ b/docs/analysis/2026-10-14-project-review-todo.md @@ -13,8 +13,8 @@ | # | 優先 | 項目 | 是否走 OpenSpec | 建議 change 名稱 | |---|------|------|----------------|------------------| -| H1 | 🔴 高 | member/provider 路由缺角色 middleware | 是 | `add-role-middleware` | -| H2 | 🔴 高 | 正式環境 `APP_DEBUG` 與預設值風險 | 否(設定確認)+ 視情況改 `.env.example` | — | +| H1 | ✅ 已完成(PR #71、#72) | member/provider 路由缺角色 middleware | 是 | `add-role-middleware` | +| H2 | ✅ 已完成(2026-10-18 確認) | 正式環境 `APP_DEBUG` 與預設值風險 | 否(設定確認)+ 視情況改 `.env.example` | — | | M1 | 🟡 中 | AuthController 過大、無 FormRequest/Service 層 | 是 | `refactor-auth-controller` | | M2 | 🟡 中 | 預約名額邏輯重複 | 是 | `extract-booking-service` | | M3 | 🟡 中(已下修,見內文) | 通知派送的例外處理與失敗可觀測性 | 視範圍而定 | `harden-notification-dispatch` | @@ -40,12 +40,12 @@ - 目前只有 `ReviewController`、refresh 端點自己檢查角色,其餘端點無防護。 **待辦** -- [ ] 新增 `EnsureMember`、`EnsureProvider` middleware(仿 `app/Http/Middleware/EnsureAdmin.php`),並在 `bootstrap/app.php` 註冊 alias -- [ ] 套用到 `member`、`provider` 路由群組 -- [ ] 通知、即時訊息這類「member + provider 共用」群組維持現狀,但需確認 admin 是否應被排除 -- [ ] 新增 Feature 測試(仿 `tests/Feature/AdminEndpointAuthTest.php`):每個角色 × 每組路由,期望 403 -- [ ] 更新 spec:`provider-auth`、`admin-auth`;視需要新增 `role-authorization` spec -- [ ] 更新 Swagger 註解(`app/Docs/*`)的 403 回應 +- [x] 新增 `EnsureMember`、`EnsureProvider` middleware(仿 `app/Http/Middleware/EnsureAdmin.php`),並在 `bootstrap/app.php` 註冊 alias +- [x] 套用到 `member`、`provider` 路由群組 +- [ ] 通知、即時訊息這類「member + provider 共用」群組維持現狀,但需確認 admin 是否應被排除(未定案:本次維持現狀,admin 是否排除另案決定) +- [x] 新增 Feature 測試(仿 `tests/Feature/AdminEndpointAuthTest.php`):每個角色 × 每組路由,期望 403 +- [x] 更新 spec:`provider-auth`、`admin-auth`;視需要新增 `role-authorization` spec(實際做法:新增 `role-authorization` 主規格,未修改 `provider-auth`、`admin-auth`) +- [x] 更新 Swagger 註解(`app/Docs/*`)的 403 回應 **驗收條件(草案,需轉為 spec Scenario)** 1. member 呼叫任一 `/api/provider/*` 回 403 @@ -70,11 +70,11 @@ 若 VPS 上 `.env` 沿用相同值,錯誤頁會洩漏堆疊追蹤、環境變數與 SQL。 **待辦** -- [ ] **需要你確認**:登入 VPS 檢查實際 `.env` 的 `APP_DEBUG`、`APP_ENV`(我無法從此環境確認) -- [ ] 確認 `config:cache` 後的實際值:`docker compose exec app php artisan tinker --execute="dump(config('app.debug'));"` -- [ ] `.env.example` 加註解說明正式環境必須 `APP_DEBUG=false` -- [ ] 評估是否在 deploy.yml 加入啟動檢查:`APP_ENV=production` 且 `APP_DEBUG` 為 false,否則部署失敗 -- [ ] 本機 `.env` 中的 DB 密碼為弱密碼(`cfdivepass`),確認正式環境未使用 +- [x] **需要你確認**:登入 VPS 檢查實際 `.env` 的 `APP_DEBUG`、`APP_ENV`(我無法從此環境確認)(2026-10-18:`APP_DEBUG=false`、`APP_ENV=production`) +- [x] 確認 `config:cache` 後的實際值:`docker compose exec app php artisan tinker --execute="dump(config('app.debug'));"` +- [x] `.env.example` 加註解說明正式環境必須 `APP_DEBUG=false` +- [x] 評估是否在 deploy.yml 加入啟動檢查:`APP_ENV=production` 且 `APP_DEBUG` 為 false,否則部署失敗(2026-10-18 決定暫不做:正式環境已確認,需要時另開 change) +- [x] 本機 `.env` 中的 DB 密碼為弱密碼(`cfdivepass`),確認正式環境未使用(2026-10-18:正式環境未使用預設密碼,且 MySQL 未對外開 port) **備註** 這項大多是設定確認,不一定需要 OpenSpec change;若加入部署檢查則屬 `env-cloud-annotations` spec 範圍。