Skip to content

Commit 83aeb97

Browse files
committed
repl
1 parent 165d85b commit 83aeb97

17 files changed

Lines changed: 1089 additions & 10 deletions

KeeperSdk/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@keeper-security/keeper-sdk-javascript",
3-
"version": "2.0.0",
3+
"version": "2.1.0",
44
"description": "High-level wrapper for Keeper Security JavaScript SDK",
55
"repository": {
66
"type": "git",
@@ -24,7 +24,7 @@
2424
"prepublishOnly": "npm run build"
2525
},
2626
"dependencies": {
27-
"@keeper-security/keeperapi": "18.1.1",
27+
"@keeper-security/keeperapi": "18.2.0",
2828
"@keeper-security/secrets-manager-core": "^17.5.0",
2929
"asmcrypto.js": "^2.3.2",
3030
"ts-node": "^10.7.0",

KeeperSdk/src/auth/ConsoleLogin.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,11 @@ async function syncVault(vault: KeeperVault): Promise<KeeperVault> {
341341
return vault
342342
}
343343

344+
export function closePrompt(): void {
345+
getReadlineManager().close()
346+
}
347+
344348
export function cleanup(vault: KeeperVault): void {
345349
vault.disconnect()
346-
getReadlineManager().close()
350+
closePrompt()
347351
}

KeeperSdk/src/auth/SessionManager.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,30 @@ export class SessionManager implements SessionStorage {
8383
public createOnDeviceConfig(host: string): (deviceConfig: DeviceConfig) => Promise<void> {
8484
return async (deviceConfig: DeviceConfig) => {
8585
this.sessionDevices.set(host, { ...deviceConfig })
86+
await this.persistDeviceConfig(host, deviceConfig)
87+
}
88+
}
89+
90+
private async persistDeviceConfig(host: string, deviceConfig: DeviceConfig): Promise<void> {
91+
if (!deviceConfig.deviceToken || !deviceConfig.privateKey) return
92+
93+
const username = this._lastUsername
94+
if (!username) return
95+
96+
try {
97+
const parsed = await this.configLoader.load()
98+
const config: KeeperJsonConfig = parsed && Object.keys(parsed).length > 0 ? parsed : {}
99+
100+
config.device_token = Buffer.from(deviceConfig.deviceToken).toString('base64url')
101+
config.private_key = Buffer.from(deviceConfig.privateKey).toString('base64url')
102+
config.user = username
103+
config.server = host
104+
105+
await this.configLoader.save(config)
106+
this._keeperConfig = null
107+
this._deviceCache = null
108+
} catch (err) {
109+
logger.warn('Failed to persist device config:', extractErrorMessage(err))
86110
}
87111
}
88112

@@ -135,12 +159,15 @@ export class SessionManager implements SessionStorage {
135159
const device = (parsed.devices || []).find(
136160
(configDevice) => configDevice.device_token === user.last_device!.device_token
137161
)
138-
if (device?.server_info) {
139-
const serverInfo = device.server_info.find((entry) => entry.server === host)
140-
if (serverInfo) {
141-
serverInfo.clone_code = encodedCloneCode
142-
updated = true
162+
if (device) {
163+
device.server_info = device.server_info || []
164+
let serverInfo = device.server_info.find((entry) => entry.server === host)
165+
if (!serverInfo) {
166+
serverInfo = { server: host }
167+
device.server_info.push(serverInfo)
143168
}
169+
serverInfo.clone_code = encodedCloneCode
170+
updated = true
144171
}
145172
}
146173

KeeperSdk/src/auth/node/FileConfigLoader.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export class FileConfigLoader implements ConfigLoader {
2929

3030
async save(config: KeeperJsonConfig): Promise<void> {
3131
const configPath = path.join(this.configDir, 'config.json')
32+
await fs.mkdir(this.configDir, { recursive: true, mode: 0o700 })
3233
await fs.writeFile(configPath, JSON.stringify(config, null, 2), {
3334
mode: 0o600,
3435
})

KeeperSdk/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export type {
1616
ConfigurationServerConfig,
1717
ConfigurationDeviceConfig,
1818
} from './auth/SessionManager'
19-
export { login, cleanup, prompt, suppressLogs, loadKeeperConfig, resolveServer } from './auth/ConsoleLogin'
19+
export { login, cleanup, closePrompt, prompt, suppressLogs, loadKeeperConfig, resolveServer } from './auth/ConsoleLogin'
2020
export { connectSdkPlatform, getSdkPlatform, isSdkPlatformConnected } from './platform'
2121
export type { SdkPlatform, SdkReadline, SdkRuntime } from './platform'
2222
export type { SessionRestoreInput } from './auth/sessionRestore'

0 commit comments

Comments
 (0)