Docs
Better auth

Phân quyền

Phân quyền cho User

Để phân quyền cho user, cần 2 bước:

  • Tạo file user.ts
  • Tạo Role trong bảng dữ liệu

Tạo riêng file lib/user.ts

import { auth } from "@/lib/auth";

export async function getCurrentUser(headers: Headers) {
  const user = await auth.api.getUser({ headers });
  return user;
}

export async function isAdmin(headers: Headers) {
  const user = await getCurrentUser(headers);
  return user?.role === "ADMIN";
}

export async function isSubscriber(headers: Headers) {
  const user = await getCurrentUser(headers);
  return user?.role === "SUBSCRIBER";
}

Tạo Role cho bảng dữ liệu

Thêm role vào schema

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  password  String?
  name      String?
  role      Role     @default(USER)
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

enum Role {
  ADMIN
  USER
  SUBSCRIBER
}

Chạy lệnh cập nhật bảng

npx prisma generate
npx prisma migrate dev --name add-user-role