qipp-services-auth

1.2.0 • Public • Published

qipp-services-auth Build Status npm version js-standard-style

General

The auth provider offers an interface to init the authentication with the auth backend, to allow the consumption of the API and to renew the access if unauthorized.

Install

npm i qipp-services-auth

Diagram

                                                    auth.state
                                                    ----------

+--------+                        +-------------+   [inactive]
|        |                        |             |
| Client |    1. auth.init()      | Auth Server |   [pending]
|        |<-----------------------+             |
|        |       GET csrf-token   |             |   [handshake] or [failed]
|        +--+                     |             |
|        |  | 2. auth.storeAccessTokenAndUserId()   [authorized]
|        |<-+                     |             |
|        |                        |             |
|        |    3. λ API request    |             |
|        +----------------------->|             |
|        |                        |             |
|        |    4. 401 unauthorized |             |
|        |<-----------------------+             |
|        |                        |             |
|        |    5. auth.getNewAccessToken()       |
|        +<-----------------------+             |   [authorized] or [failed]
|        |       client_id        |             |
|        |                        |             |
|        |    6. λ API request    |             |
|        +----------------------->|             |
|        |                        |             |
+--------+                        +-------------+

Angular usage

Use the init() method to get the csrf-token from the auth server:

auth.init().then(function (csrfToken) {
    // Do something.
}

Inside the promise fulfillment function, use the storeAccessTokenAndUserId() method:

auth.init().then(function (csrfToken) {
    // Login or register process here.
    auth.storeAccessTokenAndUserId(credentials)
}

Note that the credentials must be provided as an object:

{ access_token: xxx, user_id: yyy }

Then the client makes an API request.

This request is rejected as the access token is invalid or expired.

Use the getNewAccessToken() method which expects two arguments. The response argument is the returned promise from the initial http request. This method is internally used by the resource provider in the qipp-services-resource module to perform the same API request again:

auth.getNewAccessToken(request, response).then(function () {
    // Do something.
})

If you don't want the API request to be performed again, the same method can also be called with a third boolean argument set to true (first and second arguments set to empty objects):

auth.getNewAccessToken({}, {}, true).then(function () {
    // Do something.
})

Tools

Linting with StandardJS

Please refer to the JavaScript Standard Style for general rules.

npm run lint

Unit testing with Karma

npm test

Requirements

Angular

Qipp modules

Licence

Released under the MIT license by qipp.

Readme

Keywords

Package Sidebar

Install

npm i qipp-services-auth

Weekly Downloads

0

Version

1.2.0

License

MIT

Last publish

Collaborators

  • qipp