-
Notifications
You must be signed in to change notification settings - Fork 17
ptt 帳號認證機制 Email
Chuan-Heng Hsiao edited this page Apr 19, 2021
·
3 revisions
https://github.com/Ptt-official-app/go-pttbbs/issues/79
c-pttbbs 有新的 ptt 帳號認證機制
https://github.com/ptt/pttbbs/commit/5715b35f510f48eb5092d32882f1aa09181dc3a1
將 follow c-pttbbs 的新的 ptt 帳號認證機制.
分成聯絡 email 和 認證 email: 聯絡 email:
- 會檢查 unique email.
- 會 update pttbbs 裡的 email 欄位.
- n 天內 (n = 1) 最多只能換一次.
認證 email (idemail):
- 會檢查 unique idemail.
- 會多 ${BBSHOME}/${USERHOME}/.PASSWD2. UserLevel2 暫時放在這裡.
- n 天內 (n = 100) 最多只能換一次.
- 在 attempt-change-password / attempt-change-email / attempt-set-id-email 做 2FA.
implementation 的 demo 可以在 https://www.devptt.site 裡看到~
聯絡 email:
- attempt-change-email (進到更改聯絡信箱頁. 按下 submit 時所 call 的 function):
-
go-openmiddleware:
- 確認 unique email.
- 確認 client 是 ok 的. (不確定有沒有效.)
- 將 passwd / email / client-info 丟給 go-pttbbs. 讓 go-pttbbs 檢查 password 並且產生 token.
- 將 email / token 組成 url. 寄信給 user 確認.
-
go-pttbbs:
- 檢查是否是 ok 的 user.
- 檢查 password.
- 產生 token 並 return.
-
go-openmiddleware:
- change-email (user 在 email 按 link 以後. 先回到 html. html 在 load 時直接 call change-email):
-
go-openmiddleware
- 跟 go-pttbbs 詢問 email-token 的 info (go-pttbbs 會在這層擋掉不 ok 的 user).
- 根據 email-token 的 info. 先在 db 嘗試 create 一個 not-set 的 data (擋掉 unique)
- 跟 go-pttbbs update email.
- 在 db 裡 update is-set.
-
go-pttbbs
- 確認 user 和 token 是相符的.
- 更改 pttbbs email.
- return.
-
go-openmiddleware
認證 email:
- attempt-set-id-email (進到更改認證信箱頁. 按下 submit 時所 call 的 function):
-
go-openmiddleware:
- 確認 unique email.
- 確認 client 是 ok 的. (不確定有沒有效.)
- 將 passwd / email / client-info 丟給 go-pttbbs. 讓 go-pttbbs 檢查 password 並且產生 token.
- 將 email / token 組成 url. 寄信給 user 確認.
-
go-pttbbs:
- 檢查是否是 ok 的 user.
- 檢查 password.
- 檢查是否是 ok 的認證 email.
- 產生 token 並 return.
-
go-openmiddleware:
- set-id-email (user 在 email 按 link 以後. 先回到 html. html 在 load 時直接 call set-id-email):
-
go-openmiddleware
- 跟 go-pttbbs 詢問 email-token 的 info (go-pttbbs 會在這層擋掉不 ok 的 user).
- 根據 email-token 的 info. 先在 db 嘗試 create 一個 not-set 的 data (擋掉 unique)
- 跟 go-pttbbs update email.
- 在 db 裡 update is-set.
-
go-pttbbs
- 確認 user 和 token 是相符的.
- 在 ${BBSHOME}/${USERHOME}/.PASSWD2 設定 user-level2
- return.
-
go-openmiddleware