UNPKG

@netology-group/account

Version:
114 lines (81 loc) 2.76 kB
Account client [![](https://data.jsdelivr.com/v1/package/npm/@netology-group/account/badge?style=rounded)](https://www.jsdelivr.com/package/npm/@netology-group/account) ![](https://img.shields.io/npm/dt/@netology-group/account.svg) ![](https://img.shields.io/npm/dm/@netology-group/account.svg) ## How to use ### Import module ```javascript import { Account, IdP as Provider } from 'account' ``` ### Initialize ```javascript 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`](./test/account/account.test.js#L105-L131) 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: ```javascript 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. ```javascript account.tokenData() .then((_: /*: TokenData */) => { /* do something */ }) ``` #### Revoke refresh token ```javascript account.revokeRefreshToken() .then((_: /*: TokenData */) => { /* do something */ }) ``` #### Store token ```javascript const tokenData /*: TokenData */ = {} account .store(tokenData) .then((_ /*: TokenData */) => { /* do something */ }) ``` #### Load token ```javascript account .load() .then((_ /*: TokenData */) => { /* do something */ }) ``` #### Remove token ```javascript 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. ```javascript 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 */}) ```