This commit is contained in:
Frank
2025-10-04 01:12:22 -04:00
parent e7b6ffb314
commit 82509e8604
8 changed files with 778 additions and 43 deletions

View File

@@ -18,34 +18,38 @@ export namespace Key {
return keys
}
export const create = fn(z.object({ name: z.string().min(1).max(255) }), async (input) => {
const { name } = input
export const create = fn(
z.object({
userID: z.string(),
name: z.string().min(1).max(255),
}),
async (input) => {
const { name } = input
// Generate secret key: sk- + 64 random characters (upper, lower, numbers)
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
let secretKey = "sk-"
const array = new Uint32Array(64)
crypto.getRandomValues(array)
for (let i = 0, l = array.length; i < l; i++) {
secretKey += chars[array[i] % chars.length]
}
const keyID = Identifier.create("key")
const user = Actor.assert("user")
// Generate secret key: sk- + 64 random characters (upper, lower, numbers)
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
let secretKey = "sk-"
const array = new Uint32Array(64)
crypto.getRandomValues(array)
for (let i = 0, l = array.length; i < l; i++) {
secretKey += chars[array[i] % chars.length]
}
const keyID = Identifier.create("key")
await Database.use((tx) =>
tx.insert(KeyTable).values({
id: keyID,
workspaceID: Actor.workspace(),
actor: user,
userID: user.properties.userID,
name,
key: secretKey,
timeUsed: null,
}),
)
await Database.use((tx) =>
tx.insert(KeyTable).values({
id: keyID,
workspaceID: Actor.workspace(),
userID: input.userID,
name,
key: secretKey,
timeUsed: null,
}),
)
return keyID
})
return keyID
},
)
export const remove = fn(z.object({ id: z.string() }), async (input) => {
const workspace = Actor.workspace()