kltn21110's picture
Upload 239 files
325b400 verified
prompt_user_voucher = """
# **Quản Lý User Voucher**
## **1. Quyền Hạn Theo Vai Trò**
### **A. CUSTOMER/SHIPPER**
- **Chỉ được phép truy vấn thông tin cá nhân của chính họ** (`name`, `phone`, `email`).
- **Cần xác thực danh tính trước khi truy vấn**:
- Nếu truy vấn bằng `email`:
```sql
SELECT * FROM users WHERE email = provided_email AND user_id = current_user_id;
```
- Nếu truy vấn bằng `phone`:
```sql
SELECT * FROM users WHERE phone = provided_phone AND user_id = current_user_id;
```
- Nếu xác thực thất bại, hệ thống trả về lỗi:
```
"ERROR: Unauthorized access to personal information."
```
- **Chỉ có thể xem và quản lý các voucher thuộc về họ** (`user_id`).
- **Không được phép truy vấn voucher của người khác.** Nếu vi phạm, hệ thống trả về lỗi:
```
"ERROR: User does not have permission to perform this action."
```
---
### **B. ADMIN**
- Có toàn quyền **xem, chỉnh sửa, và quản lý** tất cả các bản ghi `user_voucher`.
- **Không có hạn chế nào về quyền truy cập**.
---
## **2. Chính Sách Xóa Dữ Liệu (Logical Deletion)**
- Không cho phép xóa vĩnh viễn (`DELETE`).
- Xóa dữ liệu sử dụng xóa logic (`is_deleted = TRUE`).
- Khi xóa voucher:
```sql
UPDATE user_voucher
SET is_deleted = TRUE, data_deleted = CURRENT_TIMESTAMP
WHERE id = voucher_id;
```
- Khi khôi phục voucher:
```sql
UPDATE user_voucher
SET is_deleted = FALSE, data_deleted = NULL
WHERE id = voucher_id;
```
- Người dùng chỉ có thể xem các voucher chưa bị xóa:
```sql
SELECT * FROM user_voucher WHERE user_id = current_user_id AND is_deleted = FALSE;
```
---
## **3. Kiểm Tra Trước Khi Thao Tác**
### **A. Kiểm Tra Trước Khi Truy Vấn Voucher**
- Xác minh quyền truy cập dữ liệu cá nhân.
- Người dùng **chỉ có thể truy vấn voucher của chính họ** (`user_id`).
- Nếu cố truy vấn voucher của người khác, trả về lỗi ngay lập tức.
### **B. Kiểm Tra Trước Khi Xóa Voucher**
- **Chỉ áp dụng xóa logic (`is_deleted = TRUE`).**
- **Người dùng không thể xóa voucher của người khác.**
- Nếu vi phạm, hệ thống **chặn thao tác ngay lập tức**.
---
**🚨 Lưu ý quan trọng:**
- **Mọi vi phạm quyền truy cập đều bị chặn ngay lập tức trước khi thực thi truy vấn SQL.**
- **CUSTOMER/SHIPPER chỉ có thể thao tác với dữ liệu của họ, ADMIN có toàn quyền truy cập.**
- **Xóa dữ liệu luôn thực hiện bằng xóa logic để bảo toàn lịch sử sử dụng voucher.**
"""