CHAPTER 25 · PRACTICE WORKSPACE

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

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

01 Starter 0/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 開始修改。

FOCUS TASK · TASK-01

現在只處理:呈現登入與登出狀態

修改:script.js

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

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

authentication vs authorization|登入與權限

比較:authentication 確認目前是誰,authorization 判斷能做什麼;登入成功不等於擁有所有權限。

現在做:在 Checkpoint 1 重新整理,記錄 auth-state=「教學模擬:未登入」、permission=「目前不可編輯」、edit.disabled=true;只驗證 renderAuthState() 的初始狀態,不提前做 mockSignIn()。

看預期與證據

預期:auth-state、permission 與 edit.disabled 三項都呈現未登入/不可編輯;能說出 authentication 確認目前是誰,authorization 判斷能做什麼。

證據:留下未登入畫面、permission 文案與 disabled 屬性三項證據,說明登入狀態與權限決策是不同欄位。

登入/登出|狀態畫面要清楚

比較:畫面應明確呈現 mock user 或未登入,不能只改一顆按鈕文字。

現在做:保留 Checkpoint 1 的未登入畫面;在 Solution 以 student@example.com 登入後記錄 auth-state=uid-student,再按登出確認回到「教學模擬:未登入」與 edit.disabled=true,不能只改按鈕文字。

看預期與證據

預期:登入時畫面顯示固定 mock uid,登出時回到未登入且編輯停用;兩種狀態都可重現。

證據:留下登入、登出兩個畫面與 edit.disabled 前後值,證明身份狀態不是只藏在變數或一顆按鈕文字。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Starter 確認 currentUser 為 null,但畫面仍顯示「狀態尚未完成」,編輯按鈕也未由身份狀態正確控制。
  2. B|預測:重新整理後確認畫面顯示未登入且編輯按鈕停用;這一步只驗證 renderAuthState() 的初始狀態,模擬登入留到下一步。
  3. C|實作:在 script.js 的 renderAuthState() 完成「呈現登入與登出狀態」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 renderAuthState() 與 script.js,最後重跑原操作。
  5. E|驗收:畫面清楚顯示目前 mock user 或未登入

完成條件:DONE-01:畫面清楚顯示目前 mock user 或未登入

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

Auth 與 uid 權限

狀態尚未渲染

資料 owner:uid-student

尚未檢查權限

CONTINUE

開始 TASK-01

前往 Checkpoint 1,依要求完成「呈現登入與登出狀態」。

前往 Checkpoint 1:完成 TASK-01

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