2.0.2-alpha12 • Published 6 years ago

@tanker/fake-authentication v2.0.2-alpha12

Weekly downloads
116
License
Apache-2.0
Repository
github
Last release
6 years ago

Tanker Fake Authentication

This package aims at reducing the friction when starting new projects, by delaying the integration of Tanker Identity in your application server. It interacts with a Tanker server, that stores private identities. getPrivateIdentity() returns the private identity associated with the provided user id. If the provided user id is new, a private identity is created. Those private identities can be used to start a Tanker session.

getPublicIdentities() can be used to return a list of public identities from a list of user ids. For missing user ids, provisional identities are returned. The returned list can be passed to functions that expect a list of users to share with.

API

Construction

import FakeAuthentication from '@tanker/fake-authentication';

const fakeAuth = new FakeAuthentication(appId);

Get a private identity

getPrivateIdentity() returns the private identity associated with the provided user id. If the user id does not exists, a new private identity is created and stored for reuse. It is guaranteed that this function will always return the same private identity given a user id.

If getPublicIdentities() was called before getPrivateIdentity() for a given user id, a private provisional identity is also returned by getPrivateIdentity(). This provisional identity may have been used to share with that user id before it was registered on Tanker. Note that the provisional identity must be associated with the private identity (either automatically with FileKit, VerificationUI or using attachProvisionalIdentity()) to enable access to the resources shared with the provisional identity, before the user id was registered with Tanker.

From an email

const userId = 'cedric@sample.com';
const { privateIdentity, privateProvisionalIdentity } = await fakeAuth.getPrivateIdentity(userId);

From a user id

const userId = 'silvie';
const { privateIdentity, privateProvisionalIdentity } = await fakeAuth.getPrivateIdentity(userId);

Using a generated user id

generateUserId() can be used to create disposable or anonymous identities. In that case no provisional identity will be returned.

const userId = fakeAuth.generateUserId();
const { privateIdentity } = await fakeAuth.getPrivateIdentity(userId);

Generate a user id

generateUserId() generates a random user id that can be given to getPrivateIdentity() to generate disposable or anonymous identities.

const userId = await fakeAuth.generateUserId();

Get public identities

getPublicIdentities() returns an array of public identities from an array of user ids. The order of the returned public identities is guaranteed to match the order of the provided user ids.

const userIds = ['alice@sample.io', 'bob@company.com'];
const publicIdentities = await fakeAuth.getPublicIdentities(userIds);

// then use it with Tanker or FileKit
await tanker.encrypt(someData, { shareWithUsers: publicIdentities });
await fileKit.upload(someFile, { shareWithUsers: publicIdentities });

How to use Tanker Fake Authentication

Fake Authentication with FileKit

const email = 'cedric@sample.com';
const { privateIdentity, privateProvisionalIdentity } = await fakeAuth.getPrivateIdentity(email);

await fileKit.start(email, privateIdentity, privateProvisionalIdentity);

Fake Authentication with FileKit (Anonymous disposable session)

In that case FileKit will start a disposable Tanker session. The session will work only once and on a single device.

const {disposablePrivateIdentity} = await fakeAuth.getDisposablePrivateIdentity();

await fileKit.startDisposableSession(disposablePrivateIdentity);

Fake Authentication with Tanker

const email = 'cedric@sample.com';
const { privateIdentity, privateProvisionalIdentity } = await fakeAuth.getPrivateIdentity(email);

const status = await tanker.start(privateIdentity);
switch(status) {
  case 'IDENTITY_REGISTRATION_NEEDED': {
    const verificationKey = await fetchItFromYourAppServer(); // See @tanker/identity
    await tanker.registerIdentity({email, verificationKey});
    await tanker.attachProvisionalIdentity(privateProvisionalIdentity);
    break;
  }
  case 'IDENTITY_VERIFICATION_NEEDED': {
    const verificationKey = await fetchItFromYourAppServer(); // See @tanker/identity
    await tanker.verifyIdentity(verificationKey);
    break;
  }
}

Fake Authentication using the verification UI

const email = 'cedric@sample.com';
const { privateIdentity, privateProvisionalIdentity } = await fakeAuth.getPrivateIdentity(email);

const tanker = new Tanker(config);

// The verification UI will start Tanker
const verificationUI = new VerificationUI(tanker);
await verificationUI.start(email, privateIdentity, privateProvisionalIdentity);
// Once start is done, Tanker is in a ready state
3.0.0

3 years ago

3.0.0-beta1

3 years ago

3.0.0-alpha1

3 years ago

2.32.2

3 years ago

2.32.2-beta1

3 years ago

2.32.0

3 years ago

2.32.1

3 years ago

2.32.0-alpha42

3 years ago

2.32.1-beta1

3 years ago

2.32.0-beta6

3 years ago

2.32.0-beta7

3 years ago

2.32.0-beta4

3 years ago

2.32.0-beta2

3 years ago

2.30.0

4 years ago

2.32.0-alpha1

3 years ago

2.31.0-beta1

4 years ago

2.31.0

4 years ago

2.29.0-beta1

4 years ago

2.29.1-beta1

4 years ago

2.29.0

4 years ago

2.29.1

4 years ago

2.31.0-alpha1

4 years ago

2.30.0-beta3

4 years ago

2.30.0-beta2

4 years ago

2.30.0-beta1

4 years ago

2.30.0-alpha2

4 years ago

2.30.0-alpha3

4 years ago

2.30.0-alpha1

4 years ago

2.29.0-alpha1

4 years ago

2.28.0-beta1

4 years ago

2.28.0

4 years ago

2.27.0

4 years ago

2.26.0

4 years ago

2.26.0-beta1

4 years ago

2.26.0-alpha1

4 years ago

2.26.0-alpha2

4 years ago

2.27.0-beta1

4 years ago

2.27.0-alpha1

4 years ago

2.24.0-beta3

4 years ago

2.24.0-beta1

4 years ago

2.23.2-alpha1

4 years ago

2.23.2-alpha2

4 years ago

2.23.2-alpha3

4 years ago

2.23.2-alpha4

4 years ago

2.23.2-alpha5

4 years ago

2.24.1-alpha0

4 years ago

2.24.1-alpha1

4 years ago

2.25.0-beta1

4 years ago

2.24.1-alpha2

4 years ago

2.24.1-alpha3

4 years ago

2.24.0-alpha1

4 years ago

2.24.1-alpha4

4 years ago

2.25.0

4 years ago

2.25.0-alpha2

4 years ago

2.25.0-alpha3

4 years ago

2.25.0-alpha1

4 years ago

2.24.1

4 years ago

2.24.0

4 years ago

2.23.1

4 years ago

2.23.1-alpha10

4 years ago

2.23.1-beta1

4 years ago

2.23.1-alpha7

4 years ago

2.23.1-alpha8

4 years ago

2.23.1-alpha6

4 years ago

2.23.1-alpha3

4 years ago

2.23.1-alpha4

4 years ago

2.23.1-alpha1

4 years ago

2.23.1-alpha2

4 years ago

2.23.0-beta3

4 years ago

2.23.0-beta2

4 years ago

2.23.0

4 years ago

2.23.0-alpha6

4 years ago

2.23.0-beta1

4 years ago

2.23.0-alpha5

4 years ago

2.23.0-alpha4

4 years ago

2.22.0

4 years ago

2.22.0-alpha1

4 years ago

2.21.0-beta1

4 years ago

2.21.0

4 years ago

2.21.0-alpha1

4 years ago

2.20.1-alpha1

4 years ago

2.20.0

4 years ago

2.20.0-beta1

4 years ago

2.19.1-beta1

4 years ago

2.19.1

4 years ago

2.19.0

4 years ago

2.19.0-beta1

4 years ago

2.17.2-alpha1

4 years ago

2.15.1

4 years ago

2.18.0

4 years ago

2.17.1

4 years ago

2.16.1

4 years ago

2.17.1-beta1

4 years ago

2.17.0-alpha1

4 years ago

2.17.0

4 years ago

2.16.0

4 years ago

2.16.0-beta1

4 years ago

2.15.0-beta1

4 years ago

2.15.0

4 years ago

2.15.0-alpha2

4 years ago

2.15.0-alpha3

4 years ago

2.15.0-alpha1

4 years ago

2.14.0

4 years ago

2.14.0-beta1

4 years ago

2.14.0-alpha2

4 years ago

2.13.2-beta1

4 years ago

2.13.2-beta2

4 years ago

2.13.1-beta1

4 years ago

2.13.1

4 years ago

2.13.0

4 years ago

2.13.0-beta1

4 years ago

2.12.1-beta1

5 years ago

2.12.0-beta1

5 years ago

2.12.0

5 years ago

2.12.0-alpha2

5 years ago

2.12.0-alpha1

5 years ago

2.11.1-alpha3

5 years ago

2.11.0

5 years ago

2.11.0-beta1

5 years ago

2.11.0-alpha1

5 years ago

2.10.0-beta1

5 years ago

2.10.0

5 years ago

2.9.2-alpha3

5 years ago

2.9.2-alpha2

5 years ago

2.9.2-alpha1

5 years ago

2.9.1

5 years ago

2.9.1-beta2

5 years ago

2.9.1-alpha2

5 years ago

2.9.1-alpha1

5 years ago

2.9.0

5 years ago

2.9.0-alpha1

5 years ago

2.9.0-beta1

5 years ago

2.8.0

5 years ago

2.8.0-beta1

5 years ago

2.7.0

5 years ago

2.6.5-alpha1

5 years ago

2.6.4

5 years ago

2.6.4-beta1

5 years ago

2.6.4-beta2

5 years ago

2.6.3

5 years ago

2.6.3-beta1

5 years ago

2.6.2-beta1

5 years ago

2.6.2-beta2

5 years ago

2.6.2

5 years ago

2.6.1

5 years ago

2.6.1-beta1

5 years ago

2.6.0

5 years ago

2.6.0-beta2

5 years ago

2.6.0-beta1

5 years ago

2.5.1-alpha2

5 years ago

2.5.1-alpha1

5 years ago

2.5.0-beta1

5 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.4.0-beta1

5 years ago

2.3.1

6 years ago

2.3.1-beta1

6 years ago

2.3.1-beta2

6 years ago

2.3.0

6 years ago

2.3.0-beta1

6 years ago

2.2.7-beta1

6 years ago

2.2.7

6 years ago

2.2.6

6 years ago

2.2.6-alpha1

6 years ago

2.2.5

6 years ago

2.2.5-beta1

6 years ago

2.2.4

6 years ago

2.2.4-beta1

6 years ago

2.2.3

6 years ago

2.2.3-beta1

6 years ago

2.2.2

6 years ago

2.2.2-beta1

6 years ago

2.2.1

6 years ago

2.2.1-beta2

6 years ago

2.2.1-beta1

6 years ago

2.2.0

6 years ago

2.2.0-beta1

6 years ago

2.1.4

6 years ago

2.1.4-beta1

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.2-beta3

6 years ago

2.1.2-beta2

6 years ago

2.1.2-beta1

6 years ago

2.1.1

6 years ago

2.1.1-beta3

6 years ago

2.1.1-beta2

6 years ago

2.1.1-beta1

6 years ago

2.0.2-alpha16

6 years ago

2.0.2-alpha15

6 years ago

2.0.2-alpha14

6 years ago

2.0.2-alpha13

6 years ago

2.0.2-alpha12

6 years ago

2.0.2-alpha11

6 years ago

2.0.2-alpha9

6 years ago

2.0.2-alpha8

6 years ago

2.0.2-alpha7

6 years ago

2.0.2-alpha5

6 years ago

2.0.2-alpha4

6 years ago

2.0.2-alpha3

6 years ago