Skip to content
Closed

Repl #246

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion KeeperSdk/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions KeeperSdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@keeper-security/keeper-sdk-javascript",
"version": "2.0.0",
"version": "2.1.0",
"description": "High-level wrapper for Keeper Security JavaScript SDK",
"repository": {
"type": "git",
Expand All @@ -24,7 +24,7 @@
"prepublishOnly": "npm run build"
},
"dependencies": {
"@keeper-security/keeperapi": "18.1.1",
"@keeper-security/keeperapi": "18.2.0",
"@keeper-security/secrets-manager-core": "^17.5.0",
"asmcrypto.js": "^2.3.2",
"ts-node": "^10.7.0",
Expand Down
6 changes: 5 additions & 1 deletion KeeperSdk/src/auth/ConsoleLogin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,11 @@ async function syncVault(vault: KeeperVault): Promise<KeeperVault> {
return vault
}

export function closePrompt(): void {
getReadlineManager().close()
}

export function cleanup(vault: KeeperVault): void {
vault.disconnect()
getReadlineManager().close()
closePrompt()
}
37 changes: 32 additions & 5 deletions KeeperSdk/src/auth/SessionManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,30 @@ export class SessionManager implements SessionStorage {
public createOnDeviceConfig(host: string): (deviceConfig: DeviceConfig) => Promise<void> {
return async (deviceConfig: DeviceConfig) => {
this.sessionDevices.set(host, { ...deviceConfig })
await this.persistDeviceConfig(host, deviceConfig)
}
}

private async persistDeviceConfig(host: string, deviceConfig: DeviceConfig): Promise<void> {
if (!deviceConfig.deviceToken || !deviceConfig.privateKey) return

const username = this._lastUsername
if (!username) return

try {
const parsed = await this.configLoader.load()
const config: KeeperJsonConfig = parsed && Object.keys(parsed).length > 0 ? parsed : {}

config.device_token = Buffer.from(deviceConfig.deviceToken).toString('base64url')
config.private_key = Buffer.from(deviceConfig.privateKey).toString('base64url')
config.user = username
config.server = host

await this.configLoader.save(config)
this._keeperConfig = null
this._deviceCache = null
} catch (err) {
logger.warn('Failed to persist device config:', extractErrorMessage(err))
}
}

Expand Down Expand Up @@ -135,12 +159,15 @@ export class SessionManager implements SessionStorage {
const device = (parsed.devices || []).find(
(configDevice) => configDevice.device_token === user.last_device!.device_token
)
if (device?.server_info) {
const serverInfo = device.server_info.find((entry) => entry.server === host)
if (serverInfo) {
serverInfo.clone_code = encodedCloneCode
updated = true
if (device) {
device.server_info = device.server_info || []
let serverInfo = device.server_info.find((entry) => entry.server === host)
if (!serverInfo) {
serverInfo = { server: host }
device.server_info.push(serverInfo)
}
serverInfo.clone_code = encodedCloneCode
updated = true
}
}

Expand Down
1 change: 1 addition & 0 deletions KeeperSdk/src/auth/node/FileConfigLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export class FileConfigLoader implements ConfigLoader {

async save(config: KeeperJsonConfig): Promise<void> {
const configPath = path.join(this.configDir, 'config.json')
await fs.mkdir(this.configDir, { recursive: true, mode: 0o700 })
await fs.writeFile(configPath, JSON.stringify(config, null, 2), {
mode: 0o600,
})
Expand Down
2 changes: 1 addition & 1 deletion KeeperSdk/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export type {
ConfigurationServerConfig,
ConfigurationDeviceConfig,
} from './auth/SessionManager'
export { login, cleanup, prompt, suppressLogs, loadKeeperConfig, resolveServer } from './auth/ConsoleLogin'
export { login, cleanup, closePrompt, prompt, suppressLogs, loadKeeperConfig, resolveServer } from './auth/ConsoleLogin'
export { connectSdkPlatform, getSdkPlatform, isSdkPlatformConnected } from './platform'
export type { SdkPlatform, SdkReadline, SdkRuntime } from './platform'
export type { SessionRestoreInput } from './auth/sessionRestore'
Expand Down
Loading
Loading