Padloc Logo Docs & Resources

Class: App

app.App

The App class is the user-facing top level component encapsulating all functionality of the Padloc client app. It is responsible for managing state, client-side persistence and synchronization with the Server and exposes methods for manipulating a users Account, Organizations and Vaults.

App is completely platform-agnostic and can be used in any environment capable of running JavaScript. It does however rely on platform-specific providers for a number of features like storage and encryption which can be "plugged in" as needed.

Encryption

The @padloc/core module does not provide or depend on any specific implementation of cryptographic primitives but instead relies on the CryptoProvider interface to provide those.

Users of the App class (and of the @padloc/core package in general) are responsible for ensuring that a secure implemenation of the CryptoProvider interface is available before using any methods that require cryptographic functionality. This is done through the crypto.setProvider function (see example below).

Platform API

Certain functionality requires access to some platform APIs. For this, an implementation of the Platform interface can be provided via platform.setPlatform.

Persistent Storage

Persistent storage is provided by an implementation of the Storage interface.

Data Transport

The Sender interface handles communication with the Server instance through a RPC Request-Response cycle. The implementation provided should match the Receiver implementation used in the Server instance.

Initialization Example

@import { setProvider } from "@padloc/core/src/crypto";
@import { setPlatform } from "@padloc/core/src/platform";

setProvider(new NodeCryptoProvider());
setPlatform(new NodePlatform());

const app = new App(new LevelDBStorage(), new HTTPSender());

app.loaded.then(() => console.log("app ready!");

Constructors

constructor

new App(sender)

Parameters

Name Type
sender Sender

Defined in

core/src/app.ts:314

Properties

_activeSyncPromises

Private _activeSyncPromises: Map<string, Promise<void>>

Defined in

core/src/app.ts:425


_cachedStartCreateSessionResponses

Private _cachedStartCreateSessionResponses: Map<string, StartCreateSessionResponse>

Defined in

core/src/app.ts:429


_queuedSyncPromises

Private _queuedSyncPromises: Map<string, Promise<void>>

Defined in

core/src/app.ts:424


_resolveLoad

Private _resolveLoad: () => void

Type declaration

▸ (): void

Returns

void

Defined in

core/src/app.ts:309


_subscriptions

Private _subscriptions: (state: AppState) => void[] = []

Defined in

core/src/app.ts:427


api

api: API

API client for RPC calls

Defined in

core/src/app.ts:304


loaded

loaded: Promise<void>

Promise that is resolved when the app has been fully loaded

Defined in

core/src/app.ts:312


publish

publish: (...args: any[]) => void

Type declaration

▸ (...args): void

Notifies all subscribers of a state change

Parameters
Name Type
...args any[]
Returns

void

Defined in

core/src/app.ts:545


state

state: AppState

Application state

Defined in

core/src/app.ts:307


version

version: string = "3.0"

App version

Defined in

core/src/app.ts:301

Accessors

account

get account(): null | Account

Current account

Returns

null | Account

Defined in

core/src/app.ts:336


auditedItems

get auditedItems(): { item: VaultItem ; vault: Vault }[]

Returns

{ item: VaultItem ; vault: Vault }[]

Defined in

core/src/app.ts:378


authInfo

get authInfo(): null | AuthInfo

Authentication Information, such as active sessions, trusted devices etc.

Returns

null | AuthInfo

Defined in

core/src/app.ts:341


count

get count(): Object

Returns

Object

Name Type
attachments number
currentHost number
favorites number
recent number
report number
total number

Defined in

core/src/app.ts:390


mainVault

get mainVault(): null | Vault

The current users main, or "private" Vault

Returns

null | Vault

Defined in

core/src/app.ts:366


offline

get offline(): boolean

Returns

boolean

Defined in

core/src/app.ts:370


orgs

get orgs(): Org[]

The current accounts organizations

Returns

Org[]

Defined in

core/src/app.ts:351


remembersMasterKey

get remembersMasterKey(): boolean

Returns

boolean

Defined in

core/src/app.ts:374


session

get session(): null | Session

Current session

Returns

null | Session

Defined in

core/src/app.ts:346


settings

get settings(): Settings

Application settings

Returns

Settings

Defined in

core/src/app.ts:361


storage

get storage(): Storage

Returns

Storage

Defined in

core/src/app.ts:326


syncComplete

get syncComplete(): Promise<void[]>

Promise that resolves once all current synchronization processes are complete

Returns

Promise<void[]>

Defined in

core/src/app.ts:331


vaults

get vaults(): Vault[]

The current accounts vaults

Returns

Vault[]

Defined in

core/src/app.ts:356

Methods

_logout

Private _logout(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:689


_migrateFavorites

Private _migrateFavorites(vault): void

Migrate favorites from "old" favoriting mechanism

deprecated

Parameters

Name Type
vault Vault

Returns

void

Defined in

core/src/app.ts:1209


_queueSync

Private _queueSync(obj, fn): Promise<any>

================ HELPER METHODS ================

Parameters

Name Type
obj Object
obj.id string
fn (obj: { id: string }) => Promise<any>

Returns

Promise<any>

Defined in

core/src/app.ts:2009


_syncVault

Private _syncVault(vault): Promise<null | Vault>

Parameters

Name Type
vault Object
vault.id string
vault.revision? string

Returns

Promise<null | Vault>

Defined in

core/src/app.ts:1402


_unlocked

Private _unlocked(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:2049


acceptInvite

acceptInvite(invite, secret): Promise<boolean>

Accept an Invite

Parameters

Name Type Description
invite Invite -
secret string The secret confirmation code, provided to the user by the organization owner

Returns

Promise<boolean>

Defined in

core/src/app.ts:1852


addItems

addItems(items, __namedParameters): Promise<void>

Adds a number of items to the given vault

Parameters

Name Type
items VaultItem[]
__namedParameters Object
__namedParameters.id string

Returns

Promise<void>

Defined in

core/src/app.ts:1426


autoHandleInvites

autoHandleInvites(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:1901


changePassword

changePassword(password): Promise<void>

Updates the users master password

Parameters

Name Type
password string

Returns

Promise<void>

Defined in

core/src/app.ts:713


confirmInvite

confirmInvite(invite): Promise<OrgMember>

Confirm an Invite after it has been accepted by the invitee. This will verify the invitees information and then add them to the organization.

Parameters

Name Type
invite Invite

Returns

Promise<OrgMember>

The newly created member object.

Defined in

core/src/app.ts:1867


createAttachment

createAttachment(itemId, file, name?): Promise<Attachment>

============= ATTACHMENTS =============

Parameters

Name Type
itemId string
file File
name? string

Returns

Promise<Attachment>

Defined in

core/src/app.ts:1930


createGroup

createGroup(org, name, members, vaults): Promise<Group>

Creates a new Group in the given org

Parameters

Name Type
org Org
name string
members { email: string }[]
vaults { id: string ; readonly: boolean }[]

Returns

Promise<Group>

Defined in

core/src/app.ts:1672


createInvites

createInvites(__namedParameters, emails, purpose?): Promise<Invite[]>

Create a new Invite

Parameters

Name Type
__namedParameters Org
emails string[]
purpose? InvitePurpose

Returns

Promise<Invite[]>

Defined in

core/src/app.ts:1818


createItem

createItem(__namedParameters): Promise<VaultItem>

Creates a new VaultItem

Parameters

Name Type
__namedParameters Object
__namedParameters.fields? Field[]
__namedParameters.icon? string
__namedParameters.name string
__namedParameters.tags? string[]
__namedParameters.vault Object
__namedParameters.vault.id string

Returns

Promise<VaultItem>

Defined in

core/src/app.ts:1434


createOrg

createOrg(name): Promise<Org>

Create a new Orgganization

Parameters

Name Type
name string

Returns

Promise<Org>

Defined in

core/src/app.ts:1587


createVault

createVault(name, org, members?, groups?): Promise<Vault>

Create a new Vault

Parameters

Name Type Default value
name string undefined
org Org undefined
members { accountId?: string ; email: string ; readonly: boolean }[] []
groups { name: string ; readonly: boolean }[] []

Returns

Promise<Vault>

Defined in

core/src/app.ts:986


deleteAccount

deleteAccount(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:684


deleteAttachment

deleteAttachment(itemId, att): Promise<void>

Parameters

Name Type
itemId string
att Attachment | AttachmentInfo

Returns

Promise<void>

Defined in

core/src/app.ts:1969


deleteInvite

deleteInvite(invite): Promise<void>

Deletes an Invite

Parameters

Name Type
invite Invite

Returns

Promise<void>

Defined in

core/src/app.ts:1894


deleteItems

deleteItems(items): Promise<void>

Delete a number of items

Parameters

Name Type
items VaultItem[]

Returns

Promise<void>

Defined in

core/src/app.ts:1485


deleteOrg

deleteOrg(id): Promise<void>

Parameters

Name Type
id string

Returns

Promise<void>

Defined in

core/src/app.ts:1666


deleteVault

deleteVault(id): Promise<void>

Delete Vault

Parameters

Name Type
id string

Returns

Promise<void>

Defined in

core/src/app.ts:1086


downloadAttachment

downloadAttachment(att): Promise<Attachment>

Parameters

Name Type
att AttachmentInfo

Returns

Promise<Attachment>

Defined in

core/src/app.ts:1952


fetchAccount

fetchAccount(): Promise<void>

Fetches the users Account info from the Server

Returns

Promise<void>

Defined in

core/src/app.ts:741


fetchAuthInfo

fetchAuthInfo(): Promise<void>

Fetches the users Account info from the Server

Returns

Promise<void>

Defined in

core/src/app.ts:758


fetchOrg

fetchOrg(__namedParameters): Promise<Org>

Fetch the Organization object with the given id

Parameters

Name Type
__namedParameters Object
__namedParameters.id string
__namedParameters.revision? string

Returns

Promise<Org>

Defined in

core/src/app.ts:1610


fetchOrgs

fetchOrgs(): Promise<void>

Fetch all organizations the current account is a member of

Returns

Promise<void>

Defined in

core/src/app.ts:1596


fetchVault

fetchVault(__namedParameters): Promise<null | Vault>

Parameters

Name Type
__namedParameters Object
__namedParameters.id string
__namedParameters.revision? string

Returns

Promise<null | Vault>

Defined in

core/src/app.ts:1132


forgetMasterKey

forgetMasterKey(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:932


getAccountFeatures

getAccountFeatures(): AccountFeatures

Returns

AccountFeatures

Defined in

core/src/app.ts:1995


getAccountProvisioning

getAccountProvisioning(): AccountProvisioning

========= PROVISIONING =========

Returns

AccountProvisioning

Defined in

core/src/app.ts:1987


getInvite

getInvite(orgId, id): Promise<null | Invite>

Get an Invite based on the organization id and invite id.

Parameters

Name Type
orgId string
id string

Returns

Promise<null | Invite>

Defined in

core/src/app.ts:1839


getItem

getItem(id): null | { item: VaultItem ; vault: Vault }

Get the VaultItem and Vault for the given item id

Parameters

Name Type
id string

Returns

null | { item: VaultItem ; vault: Vault }

Defined in

core/src/app.ts:1414


getItemsForHost

getItemsForHost(host): { item: VaultItem ; vault: Vault }[]

Parameters

Name Type
host string

Returns

{ item: VaultItem ; vault: Vault }[]

Defined in

core/src/app.ts:1531


getItemsForUrl

getItemsForUrl(url): { item: VaultItem ; vault: Vault }[]

Parameters

Name Type
url string

Returns

{ item: VaultItem ; vault: Vault }[]

Defined in

core/src/app.ts:1559


getOrg

getOrg(id): undefined | Org

Get the organization with the given id

Parameters

Name Type
id string

Returns

undefined | Org

Defined in

core/src/app.ts:1575


getOrgFeatures

getOrgFeatures(org): OrgFeatures

Parameters

Name Type
org OrgInfo

Returns

OrgFeatures

Defined in

core/src/app.ts:1999


getOrgProvisioning

getOrgProvisioning(__namedParameters): OrgProvisioning

Parameters

Name Type
__namedParameters Object
__namedParameters.id string

Returns

OrgProvisioning

Defined in

core/src/app.ts:1991


getVault

getVault(id): undefined | Vault

Get the Vault with the given id

Parameters

Name Type
id string

Returns

undefined | Vault

Defined in

core/src/app.ts:970


hasWritePermissions

hasWritePermissions(vault): undefined | boolean

Whether the current user has write permissions to the given vault.

Parameters

Name Type
vault Vault

Returns

undefined | boolean

Defined in

core/src/app.ts:1387


isEditable

isEditable(vault): undefined | boolean

Parameters

Name Type
vault Vault

Returns

undefined | boolean

Defined in

core/src/app.ts:1397


isMainVault

isMainVault(vault): null | boolean

Parameters

Name Type
vault Vault

Returns

null | boolean

Defined in

core/src/app.ts:981


load

load(): Promise<void>

Load application state from persistent storage

Returns

Promise<void>

Defined in

core/src/app.ts:444


lock

lock(): Promise<void>

Locks the app and wipes all sensitive information from memory.

Returns

Promise<void>

Defined in

core/src/app.ts:503


login

login(email, password, verify?, addTrustedDevice?): Promise<void>

Log in user, creating a new Session, loading Account info and fetching all of the users Organizations and Vaults.

Parameters

Name Type
email string
password string
verify? string
addTrustedDevice? boolean

Returns

Promise<void>

Defined in

core/src/app.ts:633


logout

logout(): Promise<void>

Logs out user and clears all sensitive information

Returns

Promise<void>

Defined in

core/src/app.ts:679


moveItems

moveItems(items, target): Promise<VaultItem[]>

Move items from their current vault to the target vault

Parameters

Name Type
items VaultItem[]
target Vault

Returns

Promise<VaultItem[]>

Defined in

core/src/app.ts:1521


putOrg

putOrg(org): void

Update the given organization locally

Parameters

Name Type
org Org

Returns

void

Defined in

core/src/app.ts:1580


putVault

putVault(vault): void

Locally update the given vault object

Parameters

Name Type
vault Vault

Returns

void

Defined in

core/src/app.ts:975


recoverAccount

recoverAccount(__namedParameters): Promise<void>

Initiates account recovery allowing a user to regain control of their account in case they forget their master password. This results in the following:

  • All of the accounts cryptographic keys are rotated.
  • The accounts sensitive data is encrypted with the new master password.
  • The accounts authentication info is updated to reflect the password change.
  • The accounts private vault is reset (and the data within it lost).
  • The cryptographic keys of all Organizations owned by the account will be rotated and all members suspended until reconfirmed.
  • The accounts memberships to any Orgganizations not owned by it will be suspended until reconfirmed.

The user will automatically get logged in during this process so a separate login is not necessary.

Parameters

Name Type
__namedParameters Object
__namedParameters.email string
__namedParameters.password string
__namedParameters.verify string

Returns

Promise<void>

Defined in

core/src/app.ts:830


reload

reload(): Promise<void>

Returns

Promise<void>

Defined in

core/src/app.ts:478


rememberMasterKey

rememberMasterKey(authenticatorId): Promise<void>

Parameters

Name Type
authenticatorId string

Returns

Promise<void>

Defined in

core/src/app.ts:911


removeMember

removeMember(org, member): Promise<void>

Removes a member from the given org

Parameters

Name Type
org Org
member OrgMember

Returns

Promise<void>

Defined in

core/src/app.ts:1786


revokeSession

revokeSession(__namedParameters): Promise<void>

Revokes the given Session

Parameters

Name Type
__namedParameters Object
__namedParameters.id string

Returns

Promise<void>

Defined in

core/src/app.ts:808


rotateOrgKeys

rotateOrgKeys(org): Promise<Org>

Parameters

Name Type
org Org

Returns

Promise<Org>

Defined in

core/src/app.ts:878


save

save(): Promise<void>

Save application state to persistent storage

Returns

Promise<void>

Defined in

core/src/app.ts:432


saveVault

saveVault(vault): Promise<void>

Commit changes to vault object and save locally

Parameters

Name Type
vault Vault

Returns

Promise<void>

Defined in

core/src/app.ts:1079


setSettings

setSettings(obj): Promise<void>

Update application settings

Parameters

Name Type
obj Partial<Settings>

Returns

Promise<void>

Defined in

core/src/app.ts:567


setState

setState(state): void

Updates the app state

Parameters

Name Type
state Partial<AppState>

Returns

void

Defined in

core/src/app.ts:554


setStats

setStats(obj): Promise<void>

Update usage data

Parameters

Name Type
obj Partial<Stats>

Returns

Promise<void>

Defined in

core/src/app.ts:560


signup

signup(__namedParameters): Promise<void>

Creates a new Padloc Account and signs in the user.

Parameters

Name Type
__namedParameters Object
__namedParameters.authToken string
__namedParameters.email string
__namedParameters.invite? Object
__namedParameters.invite.id string
__namedParameters.invite.org string
__namedParameters.name string
__namedParameters.password string

Returns

Promise<void>

Defined in

core/src/app.ts:582


subscribe

subscribe(fn): () => void

Notifies of changes to the app state via the provided function

Parameters

Name Type
fn (state: AppState) => void

Returns

fn

A unsubscribe function

▸ (): void

Returns

void

Defined in

core/src/app.ts:530


syncVault

syncVault(vault): Promise<Vault>

Synchronize the given Vault

Parameters

Name Type
vault Object
vault.id string
vault.name? string
vault.revision? string

Returns

Promise<Vault>

Defined in

core/src/app.ts:1092


syncVaults

syncVaults(): Promise<void>

Synchronize all vaults the current user has access to.

Returns

Promise<void>

Defined in

core/src/app.ts:1097


synchronize

synchronize(): Promise<void>

Synchronizes the current account and all of the accounts organizations and vaults

Returns

Promise<void>

Defined in

core/src/app.ts:512


toggleFavorite

toggleFavorite(id, favorite): Promise<void>

Parameters

Name Type
id string
favorite boolean

Returns

Promise<void>

Defined in

core/src/app.ts:1475


transferOwnership

transferOwnership(org, member): Promise<void>

Transfers an organizations ownership to a different member

Parameters

Name Type
org Org
member OrgMember

Returns

Promise<void>

Defined in

core/src/app.ts:1799


unlock

unlock(password): Promise<void>

Unlocks the current Account and all available [[Vaults]].

Parameters

Name Type
password string

Returns

Promise<void>

Defined in

core/src/app.ts:489


unlockWithMasterKey

unlockWithMasterKey(key): Promise<void>

Parameters

Name Type
key Uint8Array

Returns

Promise<void>

Defined in

core/src/app.ts:958


unlockWithRememberedMasterKey

unlockWithRememberedMasterKey(authToken): Promise<void>

Parameters

Name Type
authToken string

Returns

Promise<void>

Defined in

core/src/app.ts:944


unsubscribe

unsubscribe(fn): void

Unsubscribes a function previously subscribed through subscribe.

Parameters

Name Type
fn (state: AppState) => void

Returns

void

Defined in

core/src/app.ts:538


updateAccount

updateAccount(transform): Promise<void>

Updates the users Account information

Parameters

Name Type Description
transform (account: Account) => Promise<any> A function applying the changes to the account

Returns

Promise<void>

Defined in

core/src/app.ts:770


updateGroup

updateGroup(org, __namedParameters, __namedParameters): Promise<Group>

Updates a Groups name and members

Parameters

Name Type
org Org
__namedParameters Object
__namedParameters.name string
__namedParameters Object
__namedParameters.members? { email: string }[]
__namedParameters.name? string
__namedParameters.vaults? { id: string ; readonly: boolean }[]

Returns

Promise<Group>

Defined in

core/src/app.ts:1698


updateItem

updateItem(item, upd): Promise<void>

Update a given VaultItems name, fields, tags and attachments

Parameters

Name Type
item VaultItem
upd Object
upd.attachments? AttachmentInfo[]
upd.auditResults? AuditResult[]
upd.fields? Field[]
upd.lastAudited? Date
upd.name? string
upd.tags? string[]

Returns

Promise<void>

Defined in

core/src/app.ts:1458


updateLastUsed

updateLastUsed(item): Promise<void>

Parameters

Name Type
item VaultItem

Returns

Promise<void>

Defined in

core/src/app.ts:1479


updateMember

updateMember(org, __namedParameters, __namedParameters): Promise<OrgMember>

Update a members assigned Vaults, Groups and OrgRole.

Parameters

Name Type
org Org
__namedParameters OrgMember
__namedParameters Object
__namedParameters.groups? string[]
__namedParameters.role? OrgRole
__namedParameters.status? OrgMemberStatus
__namedParameters.vaults? { id: string ; readonly: boolean }[]

Returns

Promise<OrgMember>

Defined in

core/src/app.ts:1733


updateOrg

updateOrg(id, transform): Promise<Org>

Update the organization with the given id.

Parameters

Name Type Description
id string -
transform (org: Org) => Promise<any> Function applying the changes

Returns

Promise<Org>

Defined in

core/src/app.ts:1640


updateVault

updateVault(__namedParameters, tries?): Promise<null | Vault>

Parameters

Name Type Default value
__namedParameters Object undefined
__namedParameters.id string undefined
tries number 0

Returns

Promise<null | Vault>

Defined in

core/src/app.ts:1222


updateVaultAccess

updateVaultAccess(orgId, id, name, members?, groups?): Promise<void>

Update Vault name and access (not the vaults contents)

Parameters

Name Type Default value
orgId string undefined
id string undefined
name string undefined
members { email: string ; id?: string ; readonly: boolean }[] []
groups { name: string ; readonly: boolean }[] []

Returns

Promise<void>

Defined in

core/src/app.ts:1031