CHAPTER 25 · PRACTICE WORKSPACE

身份、uid 與權限模型(概念模擬)

完成明確標示非真實登入的 Auth 與權限概念模擬

02 Checkpoint 1 1/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01已完成

呈現登入與登出狀態

修改檔案:script.js

完成後看見:畫面清楚顯示目前 mock user 或未登入

TASK-02本階段處理

完成教學模擬登入流程

修改檔案:script.js

完成後看見:空白與錯誤 Email 不會登入,示範帳號取得固定 mock uid

TASK-03稍後處理

以 uid 判斷資料權限

修改檔案:script.js

完成後看見:只有資料 owner uid 可編輯

WORKSPACE

本階段實作區

已完成 TASK-01;先核對可見結果,再前往 TASK-02。

FOCUS TASK · TASK-02

現在只處理:完成教學模擬登入流程

修改:script.js

完成後:空白與錯誤 Email 不會登入,示範帳號取得固定 mock uid

講解時展開:2 個小型比較

輸入驗證 vs mockSignIn|錯誤不應登入

比較:Email 格式與空白檢查在登入前完成,通過後才取得固定 mock uid。

現在做:在 Checkpoint 2 先送出 not-an-email,確認 auth-state=「教學模擬:請輸入有效 Email」且沒有 uid;再輸入 student@example.com 送出,確認 auth-state 含 uid=uid-student

看預期與證據

預期:錯誤 Email 不建立 mock user;student@example.com 才取得固定 uid-student。

證據:留下錯誤 Email 與示範帳號兩條 status/auth-state 證據,證明驗證先於 mock user 建立。

登入錯誤 vs 成功|狀態轉換要可觀察

比較:錯誤輸入保留未登入狀態,示範帳號才進入成功狀態;兩條路徑都要實際操作。

現在做:在 Checkpoint 2 依序測 wrong-emailguest@example.com、登出;記錄錯誤後未登入、guest 取得 uid-guest 且不可編輯、登出後回到未登入三個狀態,再以 student@example.com 重跑成功路線。

看預期與證據

預期:錯誤、guest、unauth 與 owner 四種結果可分辨;只有 student@example.com 取得 uid-student 並進入 owner 路線。

證據:留下四列 Email/auth-state/permission/edit.disabled 表格,證明錯誤、guest、unauth 與 owner 不是同一個結果。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 1 確認未登入文字與停用編輯正確,再以空白、錯誤 Email、student@example.com 依序準備測試 mockSignIn。
  2. B|預測:先以空白與錯誤 Email 送出,確認不會建立 mock user;再輸入教材示範帳號並登入,確認畫面取得固定 mock uid。
  3. C|實作:在 script.js 的 mockSignIn() 完成「完成教學模擬登入流程」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 mockSignIn() 與 script.js,最後重跑原操作。
  5. E|驗收:錯誤 Email 不會登入,示範帳號取得固定 mock uid

完成條件:DONE-02:空白與錯誤 Email 不會登入,示範帳號取得固定 mock uid

教學模擬,不是真實登入沒有 Firebase SDK、token 或伺服器 Rules。

Auth 與 uid 權限

狀態尚未渲染

資料 owner:uid-student

尚未檢查權限

CONTINUE

繼續完成 TASK-02

前往 Checkpoint 2,依要求完成「完成教學模擬登入流程」。

前往 Checkpoint 2:完成 TASK-02

CHAPTER HANDOFF

從 subscriber 身份,交棒到本機資料操作

接收第 24 章:沿用 subscriber trace、safe render、unsubscribe 與失敗重試的觀察證據;本章只承接概念,不搬同一份 runtime 資料,改判斷誰是誰、誰能編輯。

交給第 26 章:完成後帶著明確 mock uid、owner/guest/unauth 權限矩陣與「UI 隱藏不等於 Rules」證據;下一章直接做本機待辦事項的 render 與 localStorage,不重做 Auth 概念。

前往第 26 章:本機待辦事項 CRUD、render、localStorage