您在這裡

疑難雜症: 用戶權限設定正確, 但卻無法編輯 node ?

bobju's 的頭像
bobju 在 2010-06-03 (四) 20:28 發表

這個問題是自問自答, 為了避免日後 somebody 重蹈覆轍, 所以在此寫下一篇紀念文, 僅供參考. XD

1 問題詳述:
1.1 在 管理者主選單 > User magagement > Permissions 下:
1.1.1 對於 特定 role 的 user 存取 特定 content type 的 node 的 權限設定 都正確, 找不出錯誤.
1.1.2 但該 user 卻一直無法編輯原本預期可以編輯的 node , 包括:
1.1.2.1 在檢視該 node 時, 原本預期應該出現的 edit tag 沒出現.
1.1.2.2 若直接打 url 編輯, 如: [site-url]/node/4/edit , 則出現如下訊息:
Access denied
You are not authorized to access this page.
1.1.3 那麼問題究竟出在哪呢?

2 經過追蹤求證, 才發現原來:
2.1 這個 node 當初是 admin 所建, 而後來 admin 將 author 指派給 該 user. 但這不是造成問題的真正原因.
2.2 真正原因在於: 當初 admin 編輯該 node 的內容時, 是以 full html 的 input format 儲存的.
2.3 而指派到該 user 後, 由於該 user 的 roles 通通沒有使用 full html 的 input format 的權限, 所以就不能編輯該 node.

3 解決問題的關鍵: 在於 node 的內容需要編輯, 而內容的 input format 也是有權限要設定的.
3.1 但是它的設定不在 管理者主選單 > User management > Permissions 下, 而是在:
3.2 管理者主選單 > Site configuration > Input formats 下.
3.3 這裏完成設定後, 該 user 即可編輯 該 node. 設定細節可參考 檢視 FCKeditor 編輯儲存後的文章, 文字顏色沒跟著儲存進去?

4 心得:
4.1 一開始遇到這問題, 若往 管理者主選單 > User management > Permissions 設定的方向去想, 那就恭喜您有一整早可以好好練功了. 任憑你:
4.1.1 試過各種權限設定組合,
4.1.2 不厭其煩地清除過 n 次的 cache,
4.1.3 滿懷希望又終究失望地重建 m 次的 permission table,
4.1.3.1 補充: 管理者主選單 > Content management > Post settings 下的 Rebuild permissions 按下去, 即可重建 permission table.
4.1.4 最後疑神疑鬼地追到資料庫裏去, 看看 node, node_revisions, node_access 究竟隱藏了什麼魔鬼在裏面, 忙了一大圈, 終究還是解決不了問題. 因為一開始就方向錯誤.
4.2 而真正解決問題的關鍵實在是太簡單, 但卻又太容易被誤導了, 所以需要特別貼文留下關鍵字提醒一下以後會遇到的人.
4.3 遇過這問題的人不在少數, 至少 drupal 官網討論串就有一大串, 如: In reply to the above posts.