# 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)