MCPcopy
hub / github.com/21st-dev/1code / storeOAuthToken

Function storeOAuthToken

src/main/lib/trpc/routers/claude-code.ts:51–103  ·  view source on GitHub ↗

* Store OAuth token - now uses multi-account system * If setAsActive is true, also sets this account as active

(oauthToken: string, setAsActive = true)

Source from the content-addressed store, hash-verified

49 * If setAsActive is true, also sets this account as active
50 */
51function storeOAuthToken(oauthToken: string, setAsActive = true): string {
52 const authManager = getAuthManager()
53 const user = authManager.getUser()
54
55 const encryptedToken = encryptToken(oauthToken)
56 const db = getDatabase()
57 const newId = createId()
58
59 // Store in new multi-account table
60 db.insert(anthropicAccounts)
61 .values({
62 id: newId,
63 oauthToken: encryptedToken,
64 displayName: "Anthropic Account",
65 connectedAt: new Date(),
66 desktopUserId: user?.id ?? null,
67 })
68 .run()
69
70 if (setAsActive) {
71 // Set as active account
72 db.insert(anthropicSettings)
73 .values({
74 id: "singleton",
75 activeAccountId: newId,
76 updatedAt: new Date(),
77 })
78 .onConflictDoUpdate({
79 target: anthropicSettings.id,
80 set: {
81 activeAccountId: newId,
82 updatedAt: new Date(),
83 },
84 })
85 .run()
86 }
87
88 // Also update legacy table for backward compatibility
89 db.delete(claudeCodeCredentials)
90 .where(eq(claudeCodeCredentials.id, "default"))
91 .run()
92
93 db.insert(claudeCodeCredentials)
94 .values({
95 id: "default",
96 oauthToken: encryptedToken,
97 connectedAt: new Date(),
98 userId: user?.id ?? null,
99 })
100 .run()
101
102 return newId
103}
104
105/**
106 * Claude Code OAuth router for desktop

Callers 1

claude-code.tsFile · 0.85

Calls 6

getAuthManagerFunction · 0.90
getDatabaseFunction · 0.90
createIdFunction · 0.90
encryptTokenFunction · 0.70
getUserMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected