/lastpass-node

🔐 Lastpass client for Node.js

Primary LanguageJavaScript

lastpass-node

Lastpass client for Node.js

About

I always see people using other password integrations with Node.js, like 1Password, and that made me sad. I really like Lastpass, but it seems they aren't too dev friendly. This changes that! Now it's extremely easy to access your Lastpass Vault, securely, and with a promised based API.

Getting started

  1. Install and save the package

    npm i -S lastpass
  2. Import the package

    import Lastpass from 'lastpass'; // ES6
    // OR
    var Lastpass = require('lastpass').default; // ES5
  3. Instantiate the class Lastpass

    const lpass = new Lastpass();

Methods

new Lastpass([username])

Parameters:

  • username: Lastpass account username (probably an email) used to set the account from which to load a vault blob file (if it exists);

    • Type: string
    • Required: false

loadVault(username, password, [twoFactor])

Parameters:

  • username: Lastpass account username (probably an email)

    • Type: string
    • Required: true
  • password: Lastpass account password

    • Type: string
    • Required: true
  • twoFactor: Two factor authentication pin (if it's needed and none is provided an error will be thrown)

    • Type: string
    • Required: false

Returns:

  • Promise: resolves to undefined

loadVaultFile([vaultFile])

Parameters:

  • vaultFile: Absolute path to location of a stored vault blob. Defaults to ~/.lastpass-vault-${USERNAME} if a username is set, otherwise to ~/.lastpass-vault.

    • Type: string
    • Required: false

Returns:

  • Promise: resolves to undefined

saveVaultFile([vaultFile, options])

Parameters:

  • vaultFile: Absolute path to store a vault blob file. Defaults to ~/.lastpass-vault-${USERNAME} if a username is set, otherwise to ~/.lastpass-vault.

    • Type: string
    • Required: false
  • options: File options for saving the file. Defaults to { encoding: 'binary', mode: 0o400 } for safe keeping.

    • Type: object
    • Required: false

Returns:

  • Promise: resolves to undefined

getVault()

Parameters:

  • none

Returns:

  • Buffer: encrypted contents of the vault blob from Lastpass

getAccounts(username, password, [search])

Parameters:

  • username: Lastpass account username (probably an email)

    • Type: string
    • Required: true
  • password: Lastpass account password

    • Type: string
    • Required: true
  • search: Object containing a keyword to search for and options for fuzzaldrin. If a this object isn't provided, or a keyword isn't set all accounts will be returned. The options object defaults to { key: 'name' }.

    • Type: object
    • Required: false

Returns:

  • Promise: resolves to an Array of matched accounts

Credit

This wouldn't be possible without the amazing lastpass-ruby and lastpass-cli.