Files
pos-system/pencil-design/docs/auth-workflow-guide.md

319 lines
7.6 KiB
Markdown

# Auth Workflow Documentation | Tài liệu Quy trình Xác thực
## Mục lục
1. [Tổng quan](#1-tổng-quan)
2. [Customer Authentication](#2-customer-authentication)
3. [Staff Authentication](#3-staff-authentication)
4. [Admin Authentication](#4-admin-authentication)
5. [Branch Authentication](#5-branch-authentication)
6. [Password Recovery](#6-password-recovery)
---
## 1. Tổng Quan
### So sánh 4 vai trò
| Yếu tố | Customer | Staff | Admin | Branch |
|--------|----------|-------|-------|--------|
| **Phương thức** | Phone + OTP | Email/Phone + Password | Email + Password | Email/Phone + Password |
| **Social Login** | ✅ Có | ❌ Không | ❌ Không | ❌ Không |
| **Đăng ký** | Tự đăng ký | Admin cấp | System cấp | Admin cấp |
| **2FA** | OTP | Tùy chọn | Bắt buộc | Tùy chọn |
| **Theme** | 🟠 Orange | 🟢 Green | 🔵 Blue | 🟠 Orange |
### Responsive Breakpoints
| Device | Width | Layout |
|--------|-------|--------|
| Desktop | 1440px | Split screen hoặc Centered card |
| Tablet | 1024px | Centered card (landscape) |
| Mobile | 390px | Full-width vertical |
---
## 2. Customer Authentication
### 2.1 Login Flow
```mermaid
flowchart TB
subgraph START["👤 KHÁCH HÀNG"]
A1[Mở app/web]
end
subgraph INPUT["📱 NHẬP SĐT"]
B1[Chọn quốc gia]
B2[Nhập số điện thoại]
B3[Gửi OTP]
end
subgraph OTP["🔢 XÁC THỰC OTP"]
C1[Nhận SMS]
C2[Nhập 6 số OTP]
C3{OTP đúng?}
C4[❌ Sai - Nhập lại]
C5[⏱️ Gửi lại sau 60s]
end
subgraph SUCCESS["✅ THÀNH CÔNG"]
D1[Xác thực OK]
D2[Chuyển trang chính]
end
A1 --> B1 --> B2 --> B3
B3 --> C1 --> C2 --> C3
C3 -->|Sai| C4 --> C2
C3 -->|Hết lần| C5 --> B3
C3 -->|Đúng| D1 --> D2
```
### 2.2 Social Login Flow
```mermaid
flowchart LR
A[Chọn mạng xã hội] --> B{Loại?}
B -->|Google| C[Google OAuth]
B -->|Apple| D[Apple Sign-in]
B -->|Zalo| E[Zalo OAuth]
B -->|Facebook| F[Facebook OAuth]
C & D & E & F --> G[Lấy profile]
G --> H{Đã có tài khoản?}
H -->|Có| I[Liên kết & Đăng nhập]
H -->|Không| J[Tạo mới & Đăng nhập]
I & J --> K[✅ Thành công]
```
### 2.3 Register Flow
```mermaid
flowchart TB
subgraph INFO["📝 THÔNG TIN"]
A1[Nhập họ tên]
A2[Nhập SĐT]
A3[Nhập email - tùy chọn]
A4[Đồng ý điều khoản]
end
subgraph VERIFY["🔐 XÁC THỰC"]
B1[Gửi OTP]
B2[Nhập OTP]
B3{Xác thực OK?}
end
subgraph COMPLETE["🎉 HOÀN TẤT"]
C1[Tạo tài khoản]
C2[Chuyển trang chính]
end
A1 --> A2 --> A3 --> A4
A4 --> B1 --> B2 --> B3
B3 -->|Thất bại| B1
B3 -->|Thành công| C1 --> C2
```
### Screens
| Bước | Screen | Files |
|------|--------|-------|
| Login | Phone input | `customer-desktop.pen`, `customer-tablet.pen`, `customer-mobile.pen` |
| OTP | OTP verify | Tích hợp trong login page |
| Register | Form đăng ký | `register/customer-*.pen` |
---
## 3. Staff Authentication
### Login Flow
```mermaid
flowchart TB
subgraph START["👨‍💼 NHÂN VIÊN"]
A1[Mở app POS]
end
subgraph LOGIN["🔐 ĐĂNG NHẬP"]
B1[Nhập tài khoản được cấp]
B2[Nhập mật khẩu]
B3{Xác thực?}
B4[❌ Sai - Thử lại]
end
subgraph SHIFT["⏰ CA LÀM"]
C1[Chọn chi nhánh]
C2[Bắt đầu ca]
C3[Vào POS chính]
end
A1 --> B1 --> B2 --> B3
B3 -->|Sai| B4 --> B1
B3 -->|Đúng| C1 --> C2 --> C3
```
### Screens
| Bước | Screen | Files |
|------|--------|-------|
| Login | Email/Password | `staff-desktop.pen`, `staff-tablet.pen`, `staff-mobile.pen` |
---
## 4. Admin Authentication
### Login Flow
```mermaid
flowchart TB
subgraph START["🔒 ADMIN"]
A1[Truy cập admin panel]
end
subgraph AUTH["🛡️ BẢO MẬT CAO"]
B1[Nhập email admin]
B2[Nhập mật khẩu]
B3{Xác thực?}
B4[❌ Sai - 5 lần khóa 30p]
end
subgraph 2FA["🔐 XÁC THỰC 2 LỚP"]
C1[Nhập mã 2FA]
C2[Authenticator App]
C3{Mã đúng?}
end
subgraph SUCCESS["✅ ĐĂNG NHẬP"]
D1[Ghi log audit]
D2[Vào dashboard admin]
end
A1 --> B1 --> B2 --> B3
B3 -->|Sai| B4 --> B1
B3 -->|Đúng| C1
C1 --> C2 --> C3
C3 -->|Sai| C1
C3 -->|Đúng| D1 --> D2
```
### Security Features
- 🔒 Khóa sau 5 lần nhập sai (30 phút)
- 🛡️ Bắt buộc 2FA
- 📝 Ghi log đăng nhập
- ⏱️ Session timeout 30 phút
### Screens
| Bước | Screen | Files |
|------|--------|-------|
| Login | Email/Password + 2FA | `admin-desktop.pen`, `admin-tablet.pen`, `admin-mobile.pen` |
---
## 5. Branch Authentication
### Login Flow
```mermaid
flowchart TB
subgraph START["🏪 CHI NHÁNH"]
A1[Truy cập portal]
end
subgraph AUTH["🔐 ĐĂNG NHẬP"]
B1[Nhập email chi nhánh]
B2[Nhập mật khẩu]
B3{Xác thực?}
end
subgraph DASHBOARD["📊 QUẢN LÝ"]
C1[Xem thống kê]
C2[Quản lý nhân viên]
C3[Báo cáo doanh thu]
end
A1 --> B1 --> B2 --> B3
B3 -->|Sai| B1
B3 -->|Đúng| C1
C1 --> C2 --> C3
```
### Screens
| Bước | Screen | Files |
|------|--------|-------|
| Login | Email/Password | `branch-desktop.pen`, `branch-tablet.pen`, `branch-mobile.pen` |
---
## 6. Password Recovery
### Forgot Password Flow
```mermaid
flowchart TB
subgraph REQUEST["📧 YÊU CẦU"]
A1[Nhấn Quên mật khẩu]
A2[Nhập email/SĐT]
A3[Gửi yêu cầu]
end
subgraph VERIFY["✉️ XÁC MINH"]
B1[Nhận email/SMS]
B2[Click link reset]
B3[Hoặc nhập code]
end
subgraph RESET["🔄 ĐẶT LẠI"]
C1[Nhập mật khẩu mới]
C2[Xác nhận mật khẩu]
C3{Hợp lệ?}
C4[❌ Không đủ mạnh]
end
subgraph DONE["✅ HOÀN TẤT"]
D1[Cập nhật thành công]
D2[Chuyển trang login]
end
A1 --> A2 --> A3
A3 --> B1 --> B2 --> C1
B1 --> B3 --> C1
C1 --> C2 --> C3
C3 -->|Yếu| C4 --> C1
C3 -->|Mạnh| D1 --> D2
```
### Password Requirements
```
Yêu cầu mật khẩu:
- Tối thiểu 8 ký tự
- Có chữ hoa (A-Z)
- Có chữ thường (a-z)
- Có số (0-9)
- Có ký tự đặc biệt (!@#$%^&*)
```
### Screens
| Bước | Screen | Files |
|------|--------|-------|
| Request | Form nhập email | `forgot-password/desktop.pen`, `tablet.pen`, `mobile.pen` |
| Confirm | Thông báo đã gửi | Tích hợp trong forgot-password |
| Reset | Form đặt lại | (Cần tạo thêm) |
---
## Tổng hợp Files
```
src/pages/auth/
├── login/
│ ├── customer-{desktop,tablet,mobile}.pen
│ ├── staff-{desktop,tablet,mobile}.pen
│ ├── admin-{desktop,tablet,mobile}.pen
│ └── branch-{desktop,tablet,mobile}.pen
├── register/
│ └── customer-{desktop,tablet,mobile}.pen
├── forgot-password/
│ └── {desktop,tablet,mobile}.pen
└── workflow/
├── otp-verify.pen # OTP input + Success state
├── password-reset.pen # Form + Success state
├── two-factor-auth.pen # 2FA for Admin
└── email-sent.pen # Confirmation screen
```
**Tổng: 22 files** (18 auth pages + 4 workflow screens)