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
Properties
_activeSyncPromises
• Private _activeSyncPromises: Map<string, Promise<void>>
Defined in
_cachedStartCreateSessionResponses
• Private _cachedStartCreateSessionResponses: Map<string,
StartCreateSessionResponse>
Defined in
_queuedSyncPromises
• Private _queuedSyncPromises: Map<string, Promise<void>>
Defined in
_resolveLoad
• Private _resolveLoad: () => void
Type declaration
▸ (): void
Returns
void
Defined in
_subscriptions
• Private _subscriptions: (state: AppState) =>
void[] = []
Defined in
api
• api: API
API client for RPC calls
Defined in
loaded
• loaded: Promise<void>
Promise that is resolved when the app has been fully loaded
Defined in
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
state
• state: AppState
Application state
Defined in
version
• version: string = "3.0"
App version
Defined in
Accessors
account
• get account(): null | Account
Current account
Returns
null | Account
Defined in
auditedItems
• get auditedItems(): { item: VaultItem ;
vault: Vault }[]
Returns
{ item: VaultItem ; vault: Vault
}[]
Defined in
authInfo
• get authInfo(): null | AuthInfo
Authentication Information, such as active sessions, trusted devices etc.
Returns
null | AuthInfo
Defined in
count
• get count(): Object
Returns
Object
| Name | Type |
|---|---|
attachments |
number |
currentHost |
number |
favorites |
number |
recent |
number |
report |
number |
total |
number |
Defined in
mainVault
• get mainVault(): null | Vault
The current users main, or "private" Vault
Returns
null | Vault
Defined in
offline
• get offline(): boolean
Returns
boolean
Defined in
orgs
• get orgs(): Org[]
The current accounts organizations
Returns
Org[]
Defined in
remembersMasterKey
• get remembersMasterKey(): boolean
Returns
boolean
Defined in
session
• get session(): null | Session
Current session
Returns
null | Session
Defined in
settings
• get settings(): Settings
Application settings
Returns
Defined in
storage
• get storage(): Storage
Returns
Defined in
syncComplete
• get syncComplete(): Promise<void[]>
Promise that resolves once all current synchronization processes are complete
Returns
Promise<void[]>
Defined in
vaults
• get vaults(): Vault[]
The current accounts vaults
Returns
Vault[]
Defined in
Methods
_logout
▸ Private _logout(): Promise<void>
Returns
Promise<void>
Defined in
_migrateFavorites
▸ Private _migrateFavorites(vault): void
Migrate favorites from "old" favoriting mechanism
deprecated
Parameters
| Name | Type |
|---|---|
vault |
Vault |
Returns
void
Defined in
_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
_syncVault
▸ Private _syncVault(vault): Promise<null |
Vault>
Parameters
| Name | Type |
|---|---|
vault |
Object |
vault.id |
string |
vault.revision? |
string |
Returns
Promise<null | Vault>
Defined in
_unlocked
▸ Private _unlocked(): Promise<void>
Returns
Promise<void>
Defined in
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
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
autoHandleInvites
▸ autoHandleInvites(): Promise<void>
Returns
Promise<void>
Defined in
changePassword
▸ changePassword(password): Promise<void>
Updates the users master password
Parameters
| Name | Type |
|---|---|
password |
string |
Returns
Promise<void>
Defined in
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
createAttachment
▸ createAttachment(itemId, file, name?):
Promise<Attachment>
============= ATTACHMENTS =============
Parameters
| Name | Type |
|---|---|
itemId |
string |
file |
File |
name? |
string |
Returns
Promise<Attachment>
Defined in
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
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
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
createOrg
▸ createOrg(name): Promise<Org>
Create a new Orgganization
Parameters
| Name | Type |
|---|---|
name |
string |
Returns
Promise<Org>
Defined in
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
deleteAccount
▸ deleteAccount(): Promise<void>
Returns
Promise<void>
Defined in
deleteAttachment
▸ deleteAttachment(itemId, att): Promise<void>
Parameters
| Name | Type |
|---|---|
itemId |
string |
att |
Attachment | AttachmentInfo |
Returns
Promise<void>
Defined in
deleteInvite
▸ deleteInvite(invite): Promise<void>
Deletes an Invite
Parameters
| Name | Type |
|---|---|
invite |
Invite |
Returns
Promise<void>
Defined in
deleteItems
▸ deleteItems(items): Promise<void>
Delete a number of items
Parameters
| Name | Type |
|---|---|
items |
VaultItem[] |
Returns
Promise<void>
Defined in
deleteOrg
▸ deleteOrg(id): Promise<void>
Parameters
| Name | Type |
|---|---|
id |
string |
Returns
Promise<void>
Defined in
deleteVault
▸ deleteVault(id): Promise<void>
Delete Vault
Parameters
| Name | Type |
|---|---|
id |
string |
Returns
Promise<void>
Defined in
downloadAttachment
▸ downloadAttachment(att):
Promise<Attachment>
Parameters
| Name | Type |
|---|---|
att |
AttachmentInfo |
Returns
Promise<Attachment>
Defined in
fetchAccount
▸ fetchAccount(): Promise<void>
Fetches the users Account info from the Server
Returns
Promise<void>
Defined in
fetchAuthInfo
▸ fetchAuthInfo(): Promise<void>
Fetches the users Account info from the Server
Returns
Promise<void>
Defined in
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
fetchOrgs
▸ fetchOrgs(): Promise<void>
Fetch all organizations the current account is a member of
Returns
Promise<void>
Defined in
fetchVault
▸ fetchVault(__namedParameters): Promise<null |
Vault>
Parameters
| Name | Type |
|---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
__namedParameters.revision? |
string |
Returns
Promise<null | Vault>
Defined in
forgetMasterKey
▸ forgetMasterKey(): Promise<void>
Returns
Promise<void>
Defined in
getAccountFeatures
▸ getAccountFeatures(): AccountFeatures
Returns
Defined in
getAccountProvisioning
▸ getAccountProvisioning():
AccountProvisioning
========= PROVISIONING =========
Returns
Defined in
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
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
getItemsForHost
▸ getItemsForHost(host): { item: VaultItem ;
vault: Vault }[]
Parameters
| Name | Type |
|---|---|
host |
string |
Returns
{ item: VaultItem ; vault: Vault
}[]
Defined in
getItemsForUrl
▸ getItemsForUrl(url): { item: VaultItem ;
vault: Vault }[]
Parameters
| Name | Type |
|---|---|
url |
string |
Returns
{ item: VaultItem ; vault: Vault
}[]
Defined in
getOrg
▸ getOrg(id): undefined | Org
Get the organization with the given id
Parameters
| Name | Type |
|---|---|
id |
string |
Returns
undefined | Org
Defined in
getOrgFeatures
▸ getOrgFeatures(org): OrgFeatures
Parameters
| Name | Type |
|---|---|
org |
OrgInfo |
Returns
Defined in
getOrgProvisioning
▸ getOrgProvisioning(__namedParameters):
OrgProvisioning
Parameters
| Name | Type |
|---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
Returns
Defined in
getVault
▸ getVault(id): undefined | Vault
Get the Vault with the given id
Parameters
| Name | Type |
|---|---|
id |
string |
Returns
undefined | Vault
Defined in
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
isEditable
▸ isEditable(vault): undefined | boolean
Parameters
| Name | Type |
|---|---|
vault |
Vault |
Returns
undefined | boolean
Defined in
isMainVault
▸ isMainVault(vault): null | boolean
Parameters
| Name | Type |
|---|---|
vault |
Vault |
Returns
null | boolean
Defined in
load
▸ load(): Promise<void>
Load application state from persistent storage
Returns
Promise<void>
Defined in
lock
▸ lock(): Promise<void>
Locks the app and wipes all sensitive information from memory.
Returns
Promise<void>
Defined in
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
logout
▸ logout(): Promise<void>
Logs out user and clears all sensitive information
Returns
Promise<void>
Defined in
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
putOrg
▸ putOrg(org): void
Update the given organization locally
Parameters
| Name | Type |
|---|---|
org |
Org |
Returns
void
Defined in
putVault
▸ putVault(vault): void
Locally update the given vault object
Parameters
| Name | Type |
|---|---|
vault |
Vault |
Returns
void
Defined in
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
reload
▸ reload(): Promise<void>
Returns
Promise<void>
Defined in
rememberMasterKey
▸ rememberMasterKey(authenticatorId): Promise<void>
Parameters
| Name | Type |
|---|---|
authenticatorId |
string |
Returns
Promise<void>
Defined in
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
revokeSession
▸ revokeSession(__namedParameters): Promise<void>
Revokes the given Session
Parameters
| Name | Type |
|---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
Returns
Promise<void>
Defined in
rotateOrgKeys
▸ rotateOrgKeys(org): Promise<Org>
Parameters
| Name | Type |
|---|---|
org |
Org |
Returns
Promise<Org>
Defined in
save
▸ save(): Promise<void>
Save application state to persistent storage
Returns
Promise<void>
Defined in
saveVault
▸ saveVault(vault): Promise<void>
Commit changes to vault object and save locally
Parameters
| Name | Type |
|---|---|
vault |
Vault |
Returns
Promise<void>
Defined in
setSettings
▸ setSettings(obj): Promise<void>
Update application settings
Parameters
| Name | Type |
|---|---|
obj |
Partial<Settings> |
Returns
Promise<void>
Defined in
setState
▸ setState(state): void
Updates the app state
Parameters
| Name | Type |
|---|---|
state |
Partial<AppState> |
Returns
void
Defined in
setStats
▸ setStats(obj): Promise<void>
Update usage data
Parameters
| Name | Type |
|---|---|
obj |
Partial<Stats> |
Returns
Promise<void>
Defined in
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
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
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
syncVaults
▸ syncVaults(): Promise<void>
Synchronize all vaults the current user has access to.
Returns
Promise<void>
Defined in
synchronize
▸ synchronize(): Promise<void>
Synchronizes the current account and all of the accounts organizations and vaults
Returns
Promise<void>
Defined in
toggleFavorite
▸ toggleFavorite(id, favorite): Promise<void>
Parameters
| Name | Type |
|---|---|
id |
string |
favorite |
boolean |
Returns
Promise<void>
Defined in
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
unlock
▸ unlock(password): Promise<void>
Unlocks the current Account and all available [[Vaults]].
Parameters
| Name | Type |
|---|---|
password |
string |
Returns
Promise<void>
Defined in
unlockWithMasterKey
▸ unlockWithMasterKey(key): Promise<void>
Parameters
| Name | Type |
|---|---|
key |
Uint8Array |
Returns
Promise<void>
Defined in
unlockWithRememberedMasterKey
▸ unlockWithRememberedMasterKey(authToken): Promise<void>
Parameters
| Name | Type |
|---|---|
authToken |
string |
Returns
Promise<void>
Defined in
unsubscribe
▸ unsubscribe(fn): void
Unsubscribes a function previously subscribed through subscribe.
Parameters
| Name | Type |
|---|---|
fn |
(state: AppState) => void |
Returns
void
Defined in
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
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
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
updateLastUsed
▸ updateLastUsed(item): Promise<void>
Parameters
| Name | Type |
|---|---|
item |
VaultItem |
Returns
Promise<void>
Defined in
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
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
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
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>