Skip to main content

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.