@netology-group/account

2.5.1 • Public • Published

Account client

How to use

Import module

import { Account, IdP as Provider } from 'account'

Initialize

const config = {
  label: '<account_label>'
}

const provider = new Provider({
  endpoint: 'http://domain.name'
})
// You can write your own provider or use default IdP provider

const account = new Account(config, provider, window.localStorage)
// You can bypass any storage provider which implements [Provider](./src/identity-provider.js.flow#14) interface

Modes

Account supports two modes: id & label.

These modes are pretty the same. Main difference is that in id mode Account uses audience suffix at any request.

Clarify label

id & label modes require a label to be known. But you actually may not.

There is special fetchLabel method which allows to request actual label for the account. It uses me placeholer for the request's URL. For instance:

Account.fetchLabel(
  { refresh_token: '<token>' },
  new IdP(/* idp config */),
  /* here you may use your own placeholder. `me` by default */
).then(({ id: acc_label }) => {
  /* do stuff here */
})

Request access token

  • access_token will be automatically refreshed if applicable.
account.tokenData()
  .then((_: /*: TokenData */) => { /* do something */ })

Revoke refresh token

account.revokeRefreshToken()
  .then((_: /*: TokenData */) => { /* do something */ })

Store token

const tokenData /*: TokenData */ = {}
account
  .store(tokenData)
  .then((_ /*: TokenData */) => { /* do something */ })

Load token

account
  .load()
  .then((_ /*: TokenData */) => { /* do something */ })

Remove token

account
  .remove()
  .then((_ /*: TokenData */) => { /* do something */ })

Utilities

TokenProvider

TokenProvider is used to provide an interface to access the valid token on each request. Valid refresh_token is needed to initialize TokenProvider properly.

const { Account, TokenProvider } = Account
const account = new Account(/* proper configuration */)

let provider = new TokenProvider({ refresh_token: '<refresh_token>' }, account)
// or
provider = new TokenProvider({ refresh_token: '<refresh_token>' })
provider
  .iEngine(account)
  .initialize()

provider.token().then(access_token => {/* do smth */})

Readme

Keywords

Package Sidebar

Install

npm i @netology-group/account

Weekly Downloads

18

Version

2.5.1

License

MIT

Unpacked Size

55.7 kB

Total Files

16

Last publish

Collaborators

  • flyer3d
  • dkvovik
  • opensource-netology-group
  • aenesterov
  • alexkonst