Authorization & Security
Phân quyền truy cập và bảo đảm mọi màn hình/action được bảo vệ đúng. Kiểm tra quyền cả ở UI (ẩn nút) và backend (Action/API từ chối khi không đủ quyền).
Phân quyền truy cập
Sử dụng withAuth, withOrg, <Authorization>
Với các logic cần phân quyền, đã sử dụng đúng cơ chế của dự án:
- withAuth — bảo vệ theo phiên đăng nhập (user phải login).
- withOrg — bảo vệ theo tổ chức (user chỉ truy cập đúng org).
- <Authorization>, usePermission (hoặc HOC/guard tương ứng) — kiểm tra role/permission trước khi render hoặc cho phép thao tác.
Ví dụ: Trang chỉ admin mới vào được thì wrap bằng component hoặc HOC kiểm tra role; API/Server Action gọi service cũng kiểm tra quyền (through withAuth/withOrg) trước khi thực hiện.
Ví dụ
1. Ẩn nút trên UI nếu không đủ quyền
2. Dùng <Authorization> để kiểm tra trước khi render
import { Authorization } from "@/components/molecules";
export default function AdminPage() {
return (
<Authorization resource="advance" action="new">
<Button as={Link} href={`${orgLink}/advances/new`} icon={PlusIcon}>
{t("common.new")}
</Button>
</Authorization>
);
}
Kiểm tra phân quyền cho tất cả action của màn hình
Đã kiểm tra và xử lý phân quyền đúng cho tất cả action của màn hình: không chỉ ẩn nút trên UI mà backend/Server Action cũng phải kiểm tra quyền, tránh user gọi trực tiếp API và thực hiện thao tác không được phép.