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
>