[Woay] Các hình thức xác thực
===
# Tổng quan về xác thực
### Facebook:
- Dùng Facebook để xác thực
- Sẽ redirect về callback_url đã setup trước
- Sau đó service lấy token từ URL -> Tạo user
- -> Generate ra JWT
### SMS:
- Hiện tại dùng Facebook AccountKit
- Các bước sau đó tương tự Facebook
### Play Code:
- Hệ thống sinh ra 1 lượng mã lưu trong database
- Các mã này dùng cho 1 vòng quay xác định
- Mã sử dụng các ký tự A-Z,0-9; Độ dài 6, 8 hoặc 10 ký tự
- Vòng quay bổ sung thêm:
- wheel.prodivder: String, regx: domain
- Client sẽ gọi 1 API kiểm tra code, nếu hợp lệ:
- Tạo 1 user mới với các thông tin:
- name=CODE
- provider_id='<code.id>'
- provider=wheel.provider
- prodvider_raw=
```
{
type: 'playcode',
provider: wheel.provider,
wheel_id: wheel.id,
code: CODE
}
```
- trả về JWT
### No Auth
- Sẽ có 1 user đặc biệt là Anonymous
- Vòng quay sử dụng No Auth sẽ trả về JWT của user này trong WHEEL_SETTINGS
# Hiện thực Playcode
### Table PlayCode:
```json=0
{
"id": integer,
"value": string,
"wheel_id": integer,
"name": string,
"email": string,
"phone": string,
"ext_id": string,
"meta": string // json
}
```
### API
#### Tạo N code (for partner)
POST /api.play-code
```json=
{
"wheel_id": 0,
"is_random": true,
"amount_of_code": 0,
"length": 0,
"code_rule": {
"use_upper": true,
"use_lower": true,
"use_numeric": true
},
"prefix": "string",
"code": "string"
}
```
#### Lấy list code (for partner)
GET /api.wheel/:id/play-code
```
{
}
```
#### Submit code lấy JWT (for customer)
- POST: API /api.wheel/:uid/playcode
```json
{
"code": "THISISCODE"
}
```
### Các API khi chơi game:
- API claim: Tương tự flow cũ
- API reward: Tương tự flow cũ