summaryrefslogtreecommitdiffhomepage
path: root/packages/console/core/src
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-10-08 17:03:42 -0400
committerFrank <[email protected]>2025-10-08 17:03:42 -0400
commitd18b6673e6f81472bf4486d911f20562c3c7ef91 (patch)
treead1ec363382623533b0d83e8b5778f3993fd9871 /packages/console/core/src
parentc93c0d402d3130c6e69129395993ac1776132234 (diff)
downloadopencode-d18b6673e6f81472bf4486d911f20562c3c7ef91.tar.gz
opencode-d18b6673e6f81472bf4486d911f20562c3c7ef91.zip
wip: zen
Diffstat (limited to 'packages/console/core/src')
-rw-r--r--packages/console/core/src/key.ts40
1 files changed, 33 insertions, 7 deletions
diff --git a/packages/console/core/src/key.ts b/packages/console/core/src/key.ts
index 938c1ae8f..3a4426d28 100644
--- a/packages/console/core/src/key.ts
+++ b/packages/console/core/src/key.ts
@@ -4,19 +4,45 @@ import { Actor } from "./actor"
import { and, Database, eq, isNull, sql } from "./drizzle"
import { Identifier } from "./identifier"
import { KeyTable } from "./schema/key.sql"
+import { AccountTable } from "./schema/account.sql"
+import { UserTable } from "./schema/user.sql"
+import { User } from "./user"
export namespace Key {
- export const list = async () => {
- const workspace = Actor.workspace()
+ export const list = fn(z.void(), async () => {
+ const userID = Actor.assert("user").properties.userID
+ const user = await User.fromID(userID)
const keys = await Database.use((tx) =>
tx
- .select()
+ .select({
+ id: KeyTable.id,
+ name: KeyTable.name,
+ key: KeyTable.key,
+ timeUsed: KeyTable.timeUsed,
+ userID: KeyTable.userID,
+ email: AccountTable.email,
+ })
.from(KeyTable)
- .where(and(eq(KeyTable.workspaceID, workspace), isNull(KeyTable.timeDeleted)))
- .orderBy(sql`${KeyTable.timeCreated} DESC`),
+ .innerJoin(UserTable, and(eq(KeyTable.userID, UserTable.id), eq(KeyTable.workspaceID, UserTable.workspaceID)))
+ .innerJoin(AccountTable, eq(UserTable.accountID, AccountTable.id))
+ .where(
+ and(
+ ...[
+ eq(KeyTable.workspaceID, Actor.workspace()),
+ isNull(KeyTable.timeDeleted),
+ ...(user.role === "admin" ? [] : [eq(KeyTable.userID, userID)]),
+ ],
+ ),
+ )
+ .orderBy(sql`${KeyTable.name} DESC`),
)
- return keys
- }
+ // only return value for user's keys
+ return keys.map((key) => ({
+ ...key,
+ key: key.userID === userID ? key.key : undefined,
+ keyDisplay: `${key.key.slice(0, 7)}...${key.key.slice(-4)}`,
+ }))
+ })
export const create = fn(
z.object({