上週的內容中,後端已經可以成功的從 OAuth 獲取使用者的資料,而這周要透過從 OAuth 獲取的使用者資料實作使用者的驗證。
在開始之前,如果上週的內容沒有完成的話可以選擇將程式碼複製下來:
https://github.com/nycu-sdc/full-stack-advanced-backend
git clone <https://github.com/NYCU-SDC/full-stack-advanced-backend.git>
cd full-stack-advanced-backend
git checkout feat/add-google-oauth
而一開始,需要先設計要儲存的格式,可以透過上週實作的 UserInfo 來實作類似的結構。
type UserInfo struct {
ID string
Email string
Name string
}
在之前的內容中有提到,要在 Database 內新增不同的 Schema 會需要做幾件事:
需要新增的檔案結構如下:
├── internal
│ ├── database
│ │ ├── migrations
│ │ │ ├── 2_user.down.sql
│ │ │ ├── 2_user.up.sql
│ ├── user
│ │ ├── queries.sql
可以現在 internal/database/migrations 內放入 Migration Up 及 Migration Down 的檔案
2_user.up.sql :CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
sid VARCHAR(255) UNIQUE NOT NULL,
role VARCHAR(50) NOT NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
2_user.down.sql :