Skip to main content
Route handler là ranh giới tin cậy giữa browser hoặc provider bên ngoài với application services. Source có 28 handler files; Route catalog liệt kê đầy đủ URL và method.

Trình tự kiểm tra một admin mutation

1

Kiểm tra nguồn request

Handler có mutation kiểm tra same-origin khi gọi isSameOriginRequest().
2

Xác thực phiên

getAuthenticatedUserFromRequest() trả user cùng active tower và permission set.
3

Kiểm tra quyền

Handler kiểm tra route access, sau đó kiểm tra CRUD hoặc specialized action tùy intent.
4

Giới hạn và parse input

Upload, reminder và webhook dùng giới hạn body riêng. Handler chỉ chuyển input đã parse sang service.
5

Gọi persistence path

Generic module dùng repository; workflow phức tạp dùng domain service và transaction riêng.

Chọn handler khi phát triển

Hợp đồng request cho tính công nợ và lập phiếu thu

POST /admin/workflow nhận dữ liệu biểu mẫu qua request.formData(). Hai intent dưới đây dùng cùng handler; intent chọn thao tác, còn returnTo phải trỏ đến màn hình được phép cho thao tác đó. Tòa nhà và người thực hiện được lấy từ phiên qua activeTowerId và email.
calculateBillingPeriod() tạo Bills, BillLines và AuditLogs trong một Prisma transaction. Response thành công chứa data.notice = "billing-calculated" và data.count là số bảng kê đã tạo.

Quyền, response và lỗi

Handler kiểm tra nguồn request, phiên, màn hình nằm trong danh sách cho phép, quyền truy cập màn hình và quyền thao tác trước khi gọi service. Quyền thao tác là calculate_billing hoặc create_receipt tương ứng. jsonRedirect() trả JSON chứa đích điều hướng, không phải HTTP 302. Lỗi database đi qua mapDatabaseError() và dùng mã/status từ bộ ánh xạ đó. Không áp dụng bảng response này cho mọi handler khác.

Ví dụ request và response mẫu

Response khi thành công (HTTP 200):
Response khi phiên đăng nhập hết hạn hoặc chưa đăng nhập (HTTP 401):
Response khi không đủ quyền thao tác trên route (HTTP 403):
Xem hướng dẫn Tính công nợ, Lập phiếu thu và Use case và workflow để đối chiếu hành vi với màn hình.

Response behavior

Các route dùng ba kiểu response:
  • JSON success/error qua api-response.ts;
  • redirect kèm notice hoặc error cho form navigation;
  • raw file/stream response cho export và attachment.
Không giả định mọi handler trả cùng schema. Not confirmed by current source code: một middleware authorization chung thay thế các checks trong handler.