UNPKG

@codaglobal/ng-jwt-authentication

Version:

<a> <br> <h1 align="center">ng-jwt-authentication</h1> </a>

190 lines (138 loc) 6.53 kB
<a> <br> <h1 align="center">ng-jwt-authentication</h1> </a> <p align="center"> Ingenious plug-in to handle client side JWT token authentication </p> <br> ## Table of contents 1. [Getting Started](#getting-started) 2. [Installation instructions](#installation-instructions) 3. [Configurations](#configuration) 4. [API](#api) 5. [Contributing](#contribution) ## Getting Started ng-jwt-authentication contains all HttpClient methods bundled with JWT authentication. ## Installation instructions Install `ng-jwt-authentication` from `npm`: ```bash npm install @codaglobal/ng-jwt-authentication --save ``` Add needed package to NgModule imports: ```typescript import { JwtAuthenticationModule } from 'ng-jwt-authentication'; const config = { refreshUrl: string, //optional headerKeyName: string, //optional accessTokenKey: string, //optional refreshTokenKey: string, //optional expiresInKey: string, //optional jwtResponse: string //optional }; @NgModule({ ... imports: [JwtAuthenticationModule.forRoot(config),...] ... }) ``` Add service to your page: ```typescript import { JwtAuthenticationService } from 'ng-jwt-authentication'; ... constructor(private httpService: JwtAuthenticationService, ...) { ... } someMethod() { this.httpService.jwtAuthPost('YOUR-API-URL-HERE', body, headers).subscribe((data) => { ... }, (error) => { ... }); } ``` <a name="configuration"></a> ## Configurations The configurations in the below table should be set globally in module import and passed as config. | Name | Type | Default | Description |-------------------|-------------|-----------------|------------- | `refreshUrl` | `String` | null | The URL to send refresh token and get the new access token. | `headerKeyName` | `String` | `Authorization` | [Optional]. Key Name to send the access token in every request. | `accessTokenKey` | `String` | `accessToken` | [Optional]. Key name of access token from the backend response. | `refreshTokenKey` | `String` | `refreshToken` | [Optional]. Key name of refresh token from the backend response. | `expiresInKey` | `String` | `expiresIn` | [Optional]. Key name of expires-in from the backend response. | `jwtResponse` | `String` | `body` | [Optional]. Values: `body` or `header`. Send/receive the tokens in body or header in refresh token call. <a name="api"></a> ## API API contents: - method [saveJwtToken(`accessToken: string`, `refreshToken: string`, `expiresIn: string`)](#jwtSaveToken) - method [jwtAuthGet(`url: string`, `options?: Object`)](#jwtAuthGet) - method [jwtAuthPost(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPost) - method [jwtAuthPut(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPut) - method [jwtAuthDelete(`url: string`, `options?: Object`)](#jwtAuthDelete) - method [jwtAuthPatch(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPatch) <hr/><a name="jwtSaveToken"></a> [saveJwtToken(`accessToken: string`, `refreshToken: string`, `expiresIn: string`)](#jwtSaveToken) <br/> Method to save `Access Token`, `Refresh Token`, and `Expires In` values in browser cookies. | argument | type | description |--------------------|--------|--------------- | **`accessToken`** | string | Access token | **`refreshToken`** | string | Refresh token | **`expiresIn`** | string | Expires In <hr/><a name="jwtAuthGet"></a> [jwtAuthGet(`url: string`, `options?: Object`)](#jwtAuthGet) <br/> Method to send `GET` request with jwt token. | argument | type | description |---------------|--------|------------ | **`url`** | string | Request url | **`options`** | object | Optional. `{ headers?: HttpHeaders; observe?: any }`. <br> Send custom headers in the request. Set `observe: 'response'` to get complete response. Default is `observe: 'body'`. <hr/><a name="jwtAuthPost"></a> [jwtAuthPost(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPost) <br/> Method to send `Post` request with jwt token. | argument | type | description |---------------|--------|------------ | **`url`** | string | Request url | **`body`** | string | Request body | **`options`** | object | Optional. `{ headers?: HttpHeaders; observe?: any }`. <br> Send custom headers in the request. Set `observe: 'response'` to get complete response. Default is `observe: 'body'`. <hr/><a name="jwtAuthPut"></a> [jwtAuthPut(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPut) <br/> Method to send `Put` request with jwt token. | argument | type | description |---------------|--------|------------ | **`url`** | string | Request url | **`body`** | string | Request body | **`options`** | object | Optional. `{ headers?: HttpHeaders; observe?: any }`. <br> Send custom headers in the request. Set `observe: 'response'` to get complete response. Default is `observe: 'body'`. <hr/><a name="jwtAuthDelete"></a> [jwtAuthDelete(`url: string`, `options?: Object`)](#jwtAuthDelete) <br/> Method to send `Delete` request with jwt token. | argument | type | description |---------------|--------|------------ | **`url`** | string | Request url | **`body`** | string | Request body | **`options`** | object | Optional. `{ headers?: HttpHeaders; observe?: any }`. <br> Send custom headers in the request. Set `observe: 'response'` to get complete response. Default is `observe: 'body'`. <hr/><a name="jwtAuthPatch"></a> [jwtAuthPatch(`url: string`, `body: any`, `options?: Object`)](#jwtAuthPatch) <br/> Method to send `Post` request with jwt token. | argument | type | description |---------------|--------|------------ | **`url`** | string | Request url | **`body`** | string | Request body | **`options`** | object | Optional. `{ headers?: HttpHeaders; observe?: any }`. <br> Send custom headers in the request. Set `observe: 'response'` to get complete response. Default is `observe: 'body'`. ### How to build lib for development To run the wrapper project: - clone repository - `npm install` - `ng serve` To update library and check the changes: - Go to projects > angular-jwt - `ng build angular-jwt` // it will build the changes in library and serve it to the wrapper project. ## Contribution Are very welcome! And remember, contribution is not only PRs and code, but any help with docs or helping other developers to solve issues are very appreciated! Thanks in advance! ### License MIT