mirror of
https://github.com/better-auth/better-auth.git
synced 2026-05-27 01:16:55 -05:00
fix: handle serial and false cases in generateId (#7474)
This commit is contained in:
@@ -566,6 +566,45 @@ describe("base context creation", () => {
|
||||
expect(id.length).toBeGreaterThan(0);
|
||||
}
|
||||
});
|
||||
|
||||
it("should return uuid when generateId is 'uuid'", async () => {
|
||||
const res = await initBase({
|
||||
advanced: {
|
||||
database: {
|
||||
generateId: "uuid",
|
||||
},
|
||||
},
|
||||
});
|
||||
const id = res.generateId({ model: "user" });
|
||||
expect(typeof id).toBe("string");
|
||||
expect(id).toMatch(
|
||||
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
|
||||
);
|
||||
});
|
||||
|
||||
it("should return false when generateId is 'serial'", async () => {
|
||||
const res = await initBase({
|
||||
advanced: {
|
||||
database: {
|
||||
generateId: "serial",
|
||||
},
|
||||
},
|
||||
});
|
||||
const id = res.generateId({ model: "user" });
|
||||
expect(id).toBe(false);
|
||||
});
|
||||
|
||||
it("should return false when generateId is false", async () => {
|
||||
const res = await initBase({
|
||||
advanced: {
|
||||
database: {
|
||||
generateId: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
const id = res.generateId({ model: "user" });
|
||||
expect(id).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("password configuration", () => {
|
||||
|
||||
@@ -159,8 +159,15 @@ export async function createAuthContext(
|
||||
if (typeof (options.advanced as any)?.generateId === "function") {
|
||||
return (options.advanced as any).generateId({ model, size });
|
||||
}
|
||||
if (typeof options?.advanced?.database?.generateId === "function") {
|
||||
return options.advanced.database.generateId({ model, size });
|
||||
const dbGenerateId = options?.advanced?.database?.generateId;
|
||||
if (typeof dbGenerateId === "function") {
|
||||
return dbGenerateId({ model, size });
|
||||
}
|
||||
if (dbGenerateId === "uuid") {
|
||||
return crypto.randomUUID();
|
||||
}
|
||||
if (dbGenerateId === "serial" || dbGenerateId === false) {
|
||||
return false;
|
||||
}
|
||||
return generateId(size);
|
||||
};
|
||||
|
||||
@@ -444,10 +444,10 @@ export function createApiKey({
|
||||
});
|
||||
await setApiKey(ctx, apiKey, opts);
|
||||
} else if (opts.storage === "secondary-storage") {
|
||||
const id =
|
||||
ctx.context.generateId({
|
||||
model: API_KEY_TABLE_NAME,
|
||||
}) ?? generateId();
|
||||
const generatedId = ctx.context.generateId({
|
||||
model: API_KEY_TABLE_NAME,
|
||||
});
|
||||
const id = generatedId || generateId();
|
||||
apiKey = {
|
||||
...data,
|
||||
id,
|
||||
|
||||
Reference in New Issue
Block a user