feat: add better-auth api-key plugin, import endpoint, and API key UI

This commit is contained in:
2026-06-28 05:30:48 +08:00
parent c4bede20d4
commit f7eda2bfc0
15 changed files with 3701 additions and 3 deletions
+43
View File
@@ -135,3 +135,46 @@ export const passkeyRelations = relations(passkey, ({ one }) => ({
references: [user.id],
}),
}))
export const apikey = pgTable(
"apikey",
{
id: text("id").primaryKey(),
configId: text("config_id").notNull().default("default"),
name: text("name"),
start: text("start"),
referenceId: text("reference_id").notNull(),
prefix: text("prefix"),
key: text("key").notNull(),
refillInterval: integer("refill_interval"),
refillAmount: integer("refill_amount"),
lastRefillAt: timestamp("last_refill_at"),
enabled: boolean("enabled").default(true).notNull(),
rateLimitEnabled: boolean("rate_limit_enabled").default(true).notNull(),
rateLimitTimeWindow: integer("rate_limit_time_window"),
rateLimitMax: integer("rate_limit_max"),
requestCount: integer("request_count").default(0).notNull(),
remaining: integer("remaining"),
lastRequest: timestamp("last_request"),
expiresAt: timestamp("expires_at"),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at")
.defaultNow()
.$onUpdate(() => new Date())
.notNull(),
permissions: text("permissions"),
metadata: text("metadata"),
},
(table) => [
index("apikey_config_id_idx").on(table.configId),
index("apikey_reference_id_idx").on(table.referenceId),
index("apikey_key_idx").on(table.key),
],
)
export const apikeyRelations = relations(apikey, ({ one }) => ({
user: one(user, {
fields: [apikey.referenceId],
references: [user.id],
}),
}))