OAuth2Client
@auvious/common / Exports / OAuth2Client
Class: OAuth2Client
oauth2 client implementation for auvious' services.
At the moment a login method with the password grant is supported.
More info: https://alexbilbie.com/guide-to-oauth-2-grants
Hierarchy
EventFiringClient<OAuth2ClientHandlers>↳
OAuth2Client
Table of contents
Constructors
Properties
- GUEST_ROUTE
- LOGIN_ROUTE
- TOKEN_STORAGE_KEY
- _clientId
- _clientSecret
- _eventHandlers
- _postman
- _realEventHandlers
- _saveTokenOnLocalStorage
- _token
- _useStandardOAuth2
- log
- preemptiveTokenRefreshTask
- refreshTokenProviderFn
- tokenProviderFn
- CLIENT_ID
- OAUTH2_TOKEN_ROUTE
- TOKEN_REFRESH_ROUTE
Accessors
Methods
- _cleanEventHandlers
- _setEventHandlers
- attachOAuth2Handler
- auviousOAuth2RefreshToken
- deleteToken
- guestLogin
- loadToken
- login
- loginGuest
- loginTemplate
- logout
- refreshToken
- refreshTokenExpired
- refreshTokenRequested
- refreshTokenUsingProviderFn
- saveToken
- setupPreemptiveTokenRefresh
- standardOAuth2Login
- standardOAuth2RefreshToken
Constructors
constructor
• new OAuth2Client(clientId, clientSecret, serverUrl?, saveTokenOnLocalStorage?, eventHandlers?, useStandardOAuth2?, timers)
Parameters
| Name | Type | Default value |
|---|---|---|
clientId | string | undefined |
clientSecret | string | undefined |
serverUrl | string | "/" |
saveTokenOnLocalStorage | boolean | true |
eventHandlers | OAuth2ClientHandlers | null |
useStandardOAuth2 | boolean | false |
timers | Timers | undefined |
Overrides
EventFiringClient<OAuth2ClientHandlers\>.constructor
Properties
GUEST_ROUTE
• GUEST_ROUTE: string = "/security/guest"
LOGIN_ROUTE
• LOGIN_ROUTE: string = "/security/authenticate/login"
TOKEN_STORAGE_KEY
• TOKEN_STORAGE_KEY: string = "auvious.oauth2.client.token"
_clientId
• Private _clientId: string
_clientSecret
• Private _clientSecret: string
_eventHandlers
• Protected _eventHandlers: OAuth2ClientHandlers
Inherited from
EventFiringClient._eventHandlers
_postman
• Private _postman: Postman
_realEventHandlers
• Protected _realEventHandlers: any
Inherited from
EventFiringClient._realEventHandlers
_saveTokenOnLocalStorage
• Private _saveTokenOnLocalStorage: boolean
_token
• Private _token: IOAuth2Token
_useStandardOAuth2
• Private _useStandardOAuth2: boolean
log
• Protected log: Logger
Inherited from
EventFiringClient.log
preemptiveTokenRefreshTask
• Private preemptiveTokenRefreshTask: any
refreshTokenProviderFn
• Private refreshTokenProviderFn: (refreshToken: any) => Promise<IJwtTokenResponse>
Type declaration
▸ (refreshToken): Promise<IJwtTokenResponse>
Parameters
| Name | Type |
|---|---|
refreshToken | any |
Returns
Promise<IJwtTokenResponse>
tokenProviderFn
• Private tokenProviderFn: () => Promise<IJwtTokenResponse>
Type declaration
▸ (): Promise<IJwtTokenResponse>
Returns
Promise<IJwtTokenResponse>
CLIENT_ID
▪ Static Private CLIENT_ID: string = "auvious"
OAUTH2_TOKEN_ROUTE
▪ Static OAUTH2_TOKEN_ROUTE: string = "/security/oauth/token"
TOKEN_REFRESH_ROUTE
▪ Static TOKEN_REFRESH_ROUTE: string = "/security/authenticate/refresh"
Accessors
_defaultHandlers
• Protected get _defaultHandlers(): OAuth2ClientHandlers
Returns
Overrides
EventFiringClient._defaultHandlers
clientId
• get clientId(): string
Gets the oauth2 client id.
Returns
string
clientSecret
• get clientSecret(): string
Gets the oauth2 client secret.
Returns
string
isAuthenticated
• get isAuthenticated(): boolean
Checks if the token instance exists.
When an authenticated client gets an authentication error (due to expiration) it should issue a refresh_token grant.
However, non authenticated client should issue a password grant to login.
Returns
boolean
postman
• Private get postman(): Postman
Returns
token
• get token(): IOAuth2Token
Gets the current token of the authenticated user. Can be undefined.
Returns
Methods
_cleanEventHandlers
▸ Protected _cleanEventHandlers(): void
Clean event handler callbacks.
We actually just reassign to the default callbacks.
Returns
void
Inherited from
EventFiringClient._cleanEventHandlers
_setEventHandlers
▸ Protected _setEventHandlers(handlers): void
Sets event handler callbacks.
Every event handler callback defaults to _defaultHandlers which just prints the event to console.
An event callback that was not passed in the argument, will default to either:
- the previous callback is ever set.
- the _defaultHandlers's corresponding callback.
The default behaviour when appendToPrevious = true is to append the handlers passed in the arguments.
If appendToPrevious is set to false the previous handlers will be cleaned before we the the argument handlers.
Parameters
| Name | Type |
|---|---|
handlers | OAuth2ClientHandlers |
Returns
void
Inherited from
EventFiringClient._setEventHandlers
attachOAuth2Handler
▸ attachOAuth2Handler(handlers): void
Exposes the internal auth event handlers.
Parameters
| Name | Type | Description |
|---|---|---|
handlers | OAuth2ClientHandlers | : OAuth2ClientHandlers |
Returns
void
auviousOAuth2RefreshToken
▸ Private auviousOAuth2RefreshToken(): Promise<IOAuth2Token>
Returns
Promise<IOAuth2Token>
deleteToken
▸ Private deleteToken(): void
Removes the token json from local storage.
Returns
void
guestLogin
▸ guestLogin(username, firstName?, lastName?): Promise<IGuestUser>
Simpler (used by Epi) guest login.
Parameters
| Name | Type |
|---|---|
username | string |
firstName? | string |
lastName? | string |
Returns
Promise<IGuestUser>
loadToken
▸ Private loadToken(): void
Loads the token json from local storage. Returns undefined if no exists.
Returns
void
login
▸ login(clientId, username, password, organization): Promise<IOAuth2Token>
Login method w/o password grant.
Parameters
| Name | Type | Description |
|---|---|---|
clientId | string | the subdomain of the request. |
username | string | user username to login. |
password | string | user password to validate. |
organization | string | the organization to sign in. |
Returns
Promise<IOAuth2Token>
loginGuest
▸ loginGuest(clientId, email, organization, firstName, lastName?): Promise<IGuestUser>
Login method for guest.
Parameters
| Name | Type | Description |
|---|---|---|
clientId | string | the subdomain of the request. |
email | string | - |
organization | string | - |
firstName | string | - |
lastName? | string | - |
Returns
Promise<IGuestUser>
loginTemplate
▸ loginTemplate(tokenProviderFn, refreshTokenProviderFn?): Promise<IOAuth2Token>
Parameters
| Name | Type |
|---|---|
tokenProviderFn | () => Promise<IJwtTokenResponse> |
refreshTokenProviderFn? | (refreshToken: string) => Promise<IJwtTokenResponse> |
Returns
Promise<IOAuth2Token>
logout
▸ logout(): Promise<void>
Logout the client.
Cleans the oauth2 token from the client.
Returns
Promise<void>
refreshToken
▸ refreshToken(tokenToRefresh?): Promise<IOAuth2Token>
Refresh method with refresh_token grant.
Parameters
| Name | Type | Default value |
|---|---|---|
tokenToRefresh | IOAuth2Token | null |
Returns
Promise<IOAuth2Token>
refreshTokenExpired
▸ refreshTokenExpired(): void
Fires the corresponding event of the expired token.
Returns
void
refreshTokenRequested
▸ refreshTokenRequested(): Promise<IOAuth2Token>
Handles the refresh of the expired token.
Returns
Promise<IOAuth2Token>
refreshTokenUsingProviderFn
▸ Private refreshTokenUsingProviderFn(): Promise<IOAuth2Token>
Returns
Promise<IOAuth2Token>
saveToken
▸ Private saveToken(token): void
Saves the token json to local storage. If not authenticated, it ensures the token json is deleted from local storage.
Parameters
| Name | Type |
|---|---|
token | IOAuth2Token |
Returns
void
setupPreemptiveTokenRefresh
▸ Private setupPreemptiveTokenRefresh(): void
Returns
void
standardOAuth2Login
▸ standardOAuth2Login(username, password): Promise<IOAuth2Token>
Standard OAuth2 Login.
Parameters
| Name | Type | Description |
|---|---|---|
username | string | username |
password | string | password |
Returns
Promise<IOAuth2Token>
standardOAuth2RefreshToken
▸ Private standardOAuth2RefreshToken(): Promise<IOAuth2Token>
Returns
Promise<IOAuth2Token>