added admin system
This commit is contained in:
@@ -1,20 +1,24 @@
|
||||
import { betterAuth } from "better-auth";
|
||||
import { betterAuth, Session } from "better-auth";
|
||||
import { localization } from "better-auth-localization";
|
||||
import { drizzleAdapter } from "@better-auth/drizzle-adapter";
|
||||
import { headers } from "next/headers";
|
||||
import db from "./db";
|
||||
import { user, session, account, verification } from "./model";
|
||||
import * as schema from "./model/auth-schema";
|
||||
|
||||
|
||||
export const auth = betterAuth({
|
||||
database: drizzleAdapter(db, {
|
||||
provider: "sqlite",
|
||||
schema: {
|
||||
user,
|
||||
session,
|
||||
account,
|
||||
verification,
|
||||
},
|
||||
schema: schema
|
||||
}),
|
||||
user:{
|
||||
additionalFields: {
|
||||
admin: {
|
||||
type: "boolean",
|
||||
default: false,
|
||||
}
|
||||
}
|
||||
},
|
||||
emailAndPassword: {
|
||||
enabled: true,
|
||||
},
|
||||
@@ -25,4 +29,16 @@ export const auth = betterAuth({
|
||||
fallbackLocale: "default" // Fallback to English
|
||||
})
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
export async function requireAdmin() {
|
||||
const session = await auth.api.getSession({
|
||||
headers: await headers()
|
||||
});
|
||||
|
||||
if (!session) {
|
||||
return { authenticated: false, admin: false };
|
||||
}
|
||||
|
||||
return { authenticated: true, admin: session.user.admin, session };
|
||||
}
|
||||
@@ -9,6 +9,7 @@ export const user = sqliteTable("user", {
|
||||
.default(false)
|
||||
.notNull(),
|
||||
image: text("image"),
|
||||
admin: integer("admin", { mode: "boolean" }).default(false).notNull(),
|
||||
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||
.notNull(),
|
||||
|
||||
Reference in New Issue
Block a user