@apart-tech/intelligence-core 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -10,5 +10,11 @@ export declare class UserService {
|
|
|
10
10
|
getById(id: string): Promise<User | null>;
|
|
11
11
|
getByAuth0Sub(auth0Sub: string): Promise<User | null>;
|
|
12
12
|
getMemberships(userId: string): Promise<MembershipWithOrg[]>;
|
|
13
|
+
setClaudeToken(userId: string, plainToken: string): Promise<void>;
|
|
14
|
+
getClaudeToken(userId: string): Promise<string | null>;
|
|
15
|
+
deleteClaudeToken(userId: string): Promise<void>;
|
|
16
|
+
setApartRefreshToken(userId: string, plainToken: string): Promise<void>;
|
|
17
|
+
getApartRefreshToken(userId: string): Promise<string | null>;
|
|
18
|
+
deleteApartRefreshToken(userId: string): Promise<void>;
|
|
13
19
|
}
|
|
14
20
|
//# sourceMappingURL=user-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../src/services/user-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../src/services/user-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnF,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,CAAC;AAO5E,qBAAa,WAAW;IACV,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAE9B,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAsBV,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIzC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAIrD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAO5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAStD,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS5D,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM7D"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { encryptAesGcm, decryptAesGcm, deriveKey } from "../lib/crypto.js";
|
|
2
|
+
function getEncryptionKey() {
|
|
3
|
+
const secret = process.env.AGENT_KEY_SECRET ?? "apart-default-agent-key-secret-change-me";
|
|
4
|
+
return deriveKey(secret);
|
|
5
|
+
}
|
|
1
6
|
export class UserService {
|
|
2
7
|
db;
|
|
3
8
|
constructor(db) {
|
|
@@ -35,5 +40,49 @@ export class UserService {
|
|
|
35
40
|
include: { organization: true },
|
|
36
41
|
});
|
|
37
42
|
}
|
|
43
|
+
async setClaudeToken(userId, plainToken) {
|
|
44
|
+
const encrypted = encryptAesGcm(plainToken, getEncryptionKey());
|
|
45
|
+
await this.db.user.update({
|
|
46
|
+
where: { id: userId },
|
|
47
|
+
data: { claudeOauthTokenEncrypted: encrypted, updatedAt: new Date() },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async getClaudeToken(userId) {
|
|
51
|
+
const user = await this.db.user.findUnique({
|
|
52
|
+
where: { id: userId },
|
|
53
|
+
select: { claudeOauthTokenEncrypted: true },
|
|
54
|
+
});
|
|
55
|
+
if (!user?.claudeOauthTokenEncrypted)
|
|
56
|
+
return null;
|
|
57
|
+
return decryptAesGcm(user.claudeOauthTokenEncrypted, getEncryptionKey());
|
|
58
|
+
}
|
|
59
|
+
async deleteClaudeToken(userId) {
|
|
60
|
+
await this.db.user.update({
|
|
61
|
+
where: { id: userId },
|
|
62
|
+
data: { claudeOauthTokenEncrypted: null, updatedAt: new Date() },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async setApartRefreshToken(userId, plainToken) {
|
|
66
|
+
const encrypted = encryptAesGcm(plainToken, getEncryptionKey());
|
|
67
|
+
await this.db.user.update({
|
|
68
|
+
where: { id: userId },
|
|
69
|
+
data: { apartRefreshTokenEncrypted: encrypted, updatedAt: new Date() },
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async getApartRefreshToken(userId) {
|
|
73
|
+
const user = await this.db.user.findUnique({
|
|
74
|
+
where: { id: userId },
|
|
75
|
+
select: { apartRefreshTokenEncrypted: true },
|
|
76
|
+
});
|
|
77
|
+
if (!user?.apartRefreshTokenEncrypted)
|
|
78
|
+
return null;
|
|
79
|
+
return decryptAesGcm(user.apartRefreshTokenEncrypted, getEncryptionKey());
|
|
80
|
+
}
|
|
81
|
+
async deleteApartRefreshToken(userId) {
|
|
82
|
+
await this.db.user.update({
|
|
83
|
+
where: { id: userId },
|
|
84
|
+
data: { apartRefreshTokenEncrypted: null, updatedAt: new Date() },
|
|
85
|
+
});
|
|
86
|
+
}
|
|
38
87
|
}
|
|
39
88
|
//# sourceMappingURL=user-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-service.js","sourceRoot":"","sources":["../../src/services/user-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-service.js","sourceRoot":"","sources":["../../src/services/user-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -37,7 +37,9 @@ model User {
|
|
|
37
37
|
name String? @db.VarChar(200)
|
|
38
38
|
avatarUrl String? @map("avatar_url") @db.Text
|
|
39
39
|
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
|
|
40
|
-
updatedAt
|
|
40
|
+
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz
|
|
41
|
+
claudeOauthTokenEncrypted String? @map("claude_oauth_token_encrypted") @db.Text
|
|
42
|
+
apartRefreshTokenEncrypted String? @map("apart_refresh_token_encrypted") @db.Text
|
|
41
43
|
|
|
42
44
|
memberships Membership[]
|
|
43
45
|
|