@fusionauth/angular-sdk 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,5 @@
1
1
  An SDK for using FusionAuth in Angular applications.
2
2
 
3
- **This is currently in beta testing. We’re working towards a 1.0
4
- release.**
5
-
6
3
  # Table of Contents
7
4
 
8
5
  - [Overview](#overview)
@@ -11,8 +8,6 @@ release.**
11
8
 
12
9
  - [Installation](#installation)
13
10
 
14
- - [Server Code Requirements](#server-code-requirements)
15
-
16
11
  - [Usage](#usage)
17
12
 
18
13
  - [Pre-built buttons](#pre-built-buttons)
@@ -23,6 +18,8 @@ release.**
23
18
 
24
19
  - [Example App](#example-app)
25
20
 
21
+ - [Quickstart](#quickstart)
22
+
26
23
  - [Documentation](#documentation)
27
24
 
28
25
  - [Releases](#releases)
@@ -33,12 +30,12 @@ this tag, and the corresponding end tag, are used to delineate what is pulled in
33
30
  Please also use ``` instead of indenting for code blocks. The backticks are translated correctly to adoc format.
34
31
  -->
35
32
 
33
+ # Overview
34
+
36
35
  <!--
37
36
  tag::forDocSite[]
38
37
  -->
39
38
 
40
- # Overview
41
-
42
39
  This SDK allows you to add login, logout, and registration buttons to
43
40
  your Angular application. You can do this via pre-built buttons, or with
44
41
  the FusionAuthService in your own components.
@@ -60,16 +57,18 @@ will be set:
60
57
  The access token can be presented to APIs to authorize the request and
61
58
  the refresh token can be used to get a new access token.
62
59
 
63
- Note that this SDK requires you to have a server that performs the OAuth
64
- token exchange. See [Server Code
65
- Requirements](#server-code-requirements) for more details.
60
+ There are 2 ways to interact with this SDK:
61
+ 1. By hosting your own server that performs the OAuth token exchange and meets the [server code requirements for FusionAuth Web SDKs](https://github.com/FusionAuth/fusionauth-javascript-sdk-express#server-code-requirements).
62
+ 2. By using the server hosted on your FusionAuth instance, i.e., not writing your own server code.
63
+
64
+ If you are hosting your own server, see [server code requirements](https://github.com/FusionAuth/fusionauth-javascript-sdk-express#server-code-requirements).
66
65
 
67
66
  You can use this library against any version of FusionAuth or any OIDC
68
67
  compliant identity server.
69
68
 
70
- # Getting Started
69
+ ## Getting Started
71
70
 
72
- ## Installation
71
+ ### Installation
73
72
 
74
73
  NPM:
75
74
 
@@ -83,9 +82,7 @@ Yarn:
83
82
  yarn add @fusionauth/angular-sdk
84
83
  ```
85
84
 
86
- ## Configuring FusionAuthModule
87
-
88
- To configure the SDK, wrap your app with `FusionAuthProvider`:
85
+ ### Configuring FusionAuthModule
89
86
 
90
87
  ```typescript
91
88
  import { NgModule } from '@angular/core';
@@ -99,7 +96,7 @@ import { FusionAuthModule } from '@fusionauth/angular-sdk';
99
96
  imports: [
100
97
  FusionAuthModule.forRoot({
101
98
  clientId: '', // Your FusionAuth client ID
102
- serverUrl: '', // The base URL of your server for the token exchange
99
+ serverUrl: '', // The base URL of the server that performs the token exchange
103
100
  redirectUri: '', // The URI that the user is directed to after the login/register/logout action
104
101
  }),
105
102
  ],
@@ -109,108 +106,9 @@ import { FusionAuthModule } from '@fusionauth/angular-sdk';
109
106
  export class AppModule { }
110
107
  ```
111
108
 
112
- ## Server Code Requirements
113
-
114
- Authenticating with FusionAuth requires you to set up a server that will
115
- be used to perform the OAuth token exchange. This server must have the
116
- following endpoints:
117
-
118
- ### `GET /app/login`
119
-
120
- This endpoint must:
121
-
122
- 1. Generate PKCE code.
123
- a. The code verifier should be saved in a secure HTTP-only cookie.
124
- b. The code challenge is passed along
125
- 2. Encode and save `redirect_url` from angular app to `state`.
126
- 3. Redirect browser to `/oauth2/authorize` with a `redirect_uri` to `/app/token-exchange`
127
-
128
- [Example
129
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/login.js)
130
-
131
- ### `GET /app/callback`
132
-
133
- This endpoint must:
134
-
135
- 1. Call
136
- [/oauth2/token](https://fusionauth.io/docs/v1/tech/oauth/endpoints#complete-the-authorization-code-grant-request)
137
- to complete the Authorization Code Grant request. The `code` comes from the request query parameter and
138
- `code_verifier` should be available in the secure HTTP-only cookie, while
139
- the rest of the parameters should be set/configured on the server
140
- side.
141
-
142
- 2. Once the token exchange succeeds, read the `app.at` from the
143
- response body and set it as a secure, HTTP-only cookie with the same
144
- name.
145
-
146
- 3. If you wish to support refresh tokens, repeat step 2 for the
147
- `app.rt` cookie.
148
-
149
- 4. Save the expiration time in a readable `app.at_exp` cookie. And save the `app.idt` id token in a readable cookie.
150
-
151
- 5. Redirect browser back to encoded url saved in `state`.
152
-
153
- 4. Call
154
- [/oauth2/userinfo](https://fusionauth.io/docs/v1/tech/oauth/endpoints#userinfo)
155
- to retrieve the user info object and respond back to the client with
156
- this object.
157
-
158
- [Example
159
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/callback.js)
160
-
161
- ### `GET /app/register`
162
-
163
- This endpoint is similar to `/login`. It must:
109
+ ## Usage
164
110
 
165
- 1. Generate PKCE code.
166
- a. The code verifier should be saved in a secure HTTP-only cookie.
167
- b. The code challenge is passed along
168
- 2. Encode and save `redirect_url` from angular app to `state`.
169
- 3. Redirect browser to `/oauth2/register` with a `redirect_uri` to `/app/callback`
170
-
171
- [Example
172
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/register.js)
173
-
174
- ### `GET /app/me`
175
-
176
- This endpoint must:
177
-
178
- 1. Use `app.at` from cookie and use as the Bearer token to call `/oauth2/userinfo`
179
- 2. Return json data
180
-
181
- [Example
182
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/me.js)
183
-
184
- ### `GET /app/logout`
185
-
186
- This endpoint must:
187
-
188
- 1. Clear the `app.at` and `app.rt` secure, HTTP-only
189
- cookies.
190
- 2. Clear the `app.at_exp` and `app.idt` secure cookies.
191
- 3. Redirect to `/oauth2/logout`
192
-
193
- [Example
194
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/logout.js)
195
-
196
- ### `POST /app/refresh` (optional)
197
-
198
- This endpoint is necessary if you wish to use refresh tokens. This
199
- endpoint must:
200
-
201
- 1. Call
202
- [/oauth2/token](https://fusionauth.io/docs/v1/tech/oauth/endpoints#refresh-token-grant-request)
203
- to get a new `app.at` and `app.rt`.
204
-
205
- 2. Update the `app.at`, `app.at_exp`, `app.idt`, and `app.rt` cookies from the
206
- response.
207
-
208
- [Example
209
- implementation](https://github.com/FusionAuth/fusionauth-example-angular-sdk/blob/main/server/routes/token-refresh.js)
210
-
211
- # Usage
212
-
213
- ## Pre-built buttons
111
+ ### Pre-built buttons
214
112
 
215
113
  There are three pre-styled buttons that are configured to perform
216
114
  login/logout/registration. They can be placed anywhere in your app as
@@ -241,7 +139,7 @@ export class LogoutComponent {}
241
139
  export class RegisterComponent {}
242
140
  ```
243
141
 
244
- ## Service usage
142
+ ### Service usage
245
143
 
246
144
  Alternatively, you may interact with the SDK Service by injecting the FusionAuthService into any component or service.
247
145
 
@@ -291,7 +189,7 @@ export class AppComponent implements OnInit {
291
189
  }
292
190
  ```
293
191
 
294
- ### State parameter
192
+ #### State parameter
295
193
 
296
194
  The `startLogin` and `startRegistration` functions both accept an optional string
297
195
  parameter called `state`. The login and register components can also be passed the
@@ -302,16 +200,15 @@ pass any value you would like for the state parameter, it is often used to indic
302
200
  which page the user was on before redirecting to login or registration, so that the
303
201
  user can be returned to that location after a successful authentication.
304
202
 
305
- ## Known Issues
203
+ ### Known Issues
204
+
205
+ None.
306
206
 
307
- # Example App
207
+ ## Quickstart
308
208
 
309
- See the [FusionAuth Angular SDK
310
- Example](https://github.com/FusionAuth/fusionauth-example-angular-sdk) for
311
- functional example of a Angular client that utilizes the SDK as well as an
312
- Express server that performs the token exchange.
209
+ See the [FusionAuth Angular Quickstart](https://fusionauth.io/docs/quickstarts/quickstart-javascript-angular-web) for a full tutorial on using FusionAuth and Angular.
313
210
 
314
- # Documentation
211
+ ## Documentation
315
212
 
316
213
  [Full library
317
214
  documentation](https://github.com/FusionAuth/fusionauth-angular-sdk/blob/main/docs/documentation.md)
@@ -320,25 +217,8 @@ documentation](https://github.com/FusionAuth/fusionauth-angular-sdk/blob/main/do
320
217
  end::forDocSite[]
321
218
  -->
322
219
 
323
- Use backticks for code in this readme. This readme gets turned into asciidoc and included on the fusionauth website, and backticks show the code in the best light there.
324
-
325
- # Releases
326
-
327
- To perform a release:
328
-
329
- - Pull the code to your local machine
330
-
331
- - Bump the version in [package.json](./projects/fusionauth-angular-sdk/package.json)
332
-
333
- - Run `npm run build-sdk`
334
-
335
- - Run `cd dist/fusionauth-angular-sdk`
336
-
337
- - Run `npm publish`
220
+ Use backticks for code in this readme. This readme is included on the FusionAuth website, and backticks show the code in the best light there.
338
221
 
339
- You may have to set up your machine to be able to publish, which will
340
- involve updating your .npmrc file.
222
+ ## Releases
341
223
 
342
- There’s information [here that you can
343
- use](https://dev.to/alexeagleson/how-to-create-and-publish-a-react-component-library-2oe)
344
- to do that (look for the `.npmrc` section).
224
+ To perform a release to NPM, create a release on GitHub. That will automatically publish a release to GitHub.
@@ -5,13 +5,8 @@ export class FusionAuthLoginButtonComponent {
5
5
  constructor(fusionAuth) {
6
6
  this.fusionAuth = fusionAuth;
7
7
  }
8
- async login() {
9
- if (!this.state) {
10
- await this.fusionAuth.startLogin();
11
- }
12
- else {
13
- await this.fusionAuth.startLogin(this.state);
14
- }
8
+ login() {
9
+ this.fusionAuth.startLogin(this.state);
15
10
  }
16
11
  }
17
12
  FusionAuthLoginButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthLoginButtonComponent, deps: [{ token: i1.FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -22,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22
17
  }], ctorParameters: function () { return [{ type: i1.FusionAuthService }]; }, propDecorators: { state: [{
23
18
  type: Input
24
19
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtbG9naW4tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2Z1c2lvbmF1dGgtbG9naW4uYnV0dG9uL2Z1c2lvbi1hdXRoLWxvZ2luLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLWxvZ2luLmJ1dHRvbi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQW9CLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQUcsQ0FBQztJQUVyRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3BDO2FBQU07WUFDTCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QztJQUVILENBQUM7OzRIQVpVLDhCQUE4QjtnSEFBOUIsOEJBQThCLDRFQ1IzQyxxRkFHQTs0RkRLYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsVUFBVTt3R0FLWCxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGdXNpb25BdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2Z1c2lvbi1hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmYS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGdXNpb25BdXRoTG9naW5CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnVzaW9uQXV0aDogRnVzaW9uQXV0aFNlcnZpY2UpIHt9XG5cbiAgYXN5bmMgbG9naW4oKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLmZ1c2lvbkF1dGguc3RhcnRMb2dpbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmZ1c2lvbkF1dGguc3RhcnRMb2dpbih0aGlzLnN0YXRlKTtcbiAgICB9XG5cbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImZhLWJ1dHRvblwiIChjbGljayk9XCJsb2dpbigpXCI+XG4gIDxzcGFuPkxvZ2luPC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtbG9naW4tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2Z1c2lvbmF1dGgtbG9naW4uYnV0dG9uL2Z1c2lvbi1hdXRoLWxvZ2luLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLWxvZ2luLmJ1dHRvbi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQW9CLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQUcsQ0FBQztJQUVyRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzRIQVBVLDhCQUE4QjtnSEFBOUIsOEJBQThCLDRFQ1IzQyxxRkFHQTs0RkRLYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsVUFBVTt3R0FLWCxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGdXNpb25BdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2Z1c2lvbi1hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmYS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdXNpb24tYXV0aC1sb2dpbi1idXR0b24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGdXNpb25BdXRoTG9naW5CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnVzaW9uQXV0aDogRnVzaW9uQXV0aFNlcnZpY2UpIHt9XG5cbiAgbG9naW4oKSB7XG4gICAgdGhpcy5mdXNpb25BdXRoLnN0YXJ0TG9naW4odGhpcy5zdGF0ZSk7XG4gIH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJmYS1idXR0b25cIiAoY2xpY2spPVwibG9naW4oKVwiPlxuICA8c3Bhbj5Mb2dpbjwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
@@ -6,12 +6,7 @@ export class FusionAuthRegisterButtonComponent {
6
6
  this.fusionAuth = fusionAuth;
7
7
  }
8
8
  register() {
9
- if (!this.state) {
10
- this.fusionAuth.startRegistration();
11
- }
12
- else {
13
- this.fusionAuth.startRegistration(this.state);
14
- }
9
+ this.fusionAuth.startRegistration(this.state);
15
10
  }
16
11
  }
17
12
  FusionAuthRegisterButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthRegisterButtonComponent, deps: [{ token: i1.FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -22,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
22
17
  }], ctorParameters: function () { return [{ type: i1.FusionAuthService }]; }, propDecorators: { state: [{
23
18
  type: Input
24
19
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2Z1c2lvbmF1dGgtcmVnaXN0ZXIuYnV0dG9uL2Z1c2lvbi1hdXRoLXJlZ2lzdGVyLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLXJlZ2lzdGVyLmJ1dHRvbi9mdXNpb24tYXV0aC1yZWdpc3Rlci1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8saUNBQWlDO0lBRzVDLFlBQ1UsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDcEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDOzsrSEFiVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQywrRUNSOUMsK0ZBR0E7NEZES2EsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGFBQWE7d0dBS2QsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnVzaW9uQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9mdXNpb24tYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmEtcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRnVzaW9uQXV0aFJlZ2lzdGVyQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZ1c2lvbkF1dGg6IEZ1c2lvbkF1dGhTZXJ2aWNlLFxuICApIHt9XG5cbiAgcmVnaXN0ZXIoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLmZ1c2lvbkF1dGguc3RhcnRSZWdpc3RyYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mdXNpb25BdXRoLnN0YXJ0UmVnaXN0cmF0aW9uKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImZhLWJ1dHRvblwiIChjbGljayk9XCJyZWdpc3RlcigpXCI+XG4gIDxzcGFuPlJlZ2lzdGVyIE5vdzwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9jb21wb25lbnRzL2Z1c2lvbmF1dGgtcmVnaXN0ZXIuYnV0dG9uL2Z1c2lvbi1hdXRoLXJlZ2lzdGVyLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdXNpb25hdXRoLWFuZ3VsYXItc2RrL3NyYy9saWIvY29tcG9uZW50cy9mdXNpb25hdXRoLXJlZ2lzdGVyLmJ1dHRvbi9mdXNpb24tYXV0aC1yZWdpc3Rlci1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8saUNBQWlDO0lBRzVDLFlBQ1UsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDcEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzsrSEFUVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQywrRUNSOUMsK0ZBR0E7NEZES2EsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGFBQWE7d0dBS2QsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnVzaW9uQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9mdXNpb24tYXV0aC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmEtcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVzaW9uLWF1dGgtcmVnaXN0ZXItYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRnVzaW9uQXV0aFJlZ2lzdGVyQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZ1c2lvbkF1dGg6IEZ1c2lvbkF1dGhTZXJ2aWNlLFxuICApIHt9XG5cbiAgcmVnaXN0ZXIoKSB7XG4gICAgdGhpcy5mdXNpb25BdXRoLnN0YXJ0UmVnaXN0cmF0aW9uKHRoaXMuc3RhdGUpO1xuICB9XG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiZmEtYnV0dG9uXCIgKGNsaWNrKT1cInJlZ2lzdGVyKClcIj5cbiAgPHNwYW4+UmVnaXN0ZXIgTm93PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
@@ -51,7 +51,7 @@ export class FusionAuthService {
51
51
  * @return {boolean} app.at_exp is present and not for a time in the past
52
52
  */
53
53
  isLoggedIn() {
54
- return !!this.getExpTime();
54
+ return (this.getExpTime() ?? 0) > new Date().getTime();
55
55
  }
56
56
  /**
57
57
  * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.
@@ -123,4 +123,4 @@ export class FusionAuthService {
123
123
  return expCookie ? parseInt(expCookie[1]) * 1000 : null;
124
124
  }
125
125
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9mdXNpb24tYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBQzlCLENBQUM7SUFFTDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVztRQUNmLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUNwQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBYSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxFQUFFO1lBQ1AsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtnQkFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCO2dCQUM1QyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FB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QzthQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGdXNpb25BdXRoQ29uZmlnLCBVc2VySW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xhc3MgdG8gdXNlIHdpdGggRnVzaW9uQXV0aCBiYWNrZW5kIGVuZHBvaW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1c2lvbkF1dGhTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogRnVzaW9uQXV0aENvbmZpZyxcbiAgKSB7IH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlICdtZScgZW5kcG9pbnQgdG8gcmV0cmlldmUgdXNlciBpbmZvLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJJbmZvPn0gdGhlIHVzZXIgaW5mbyByZXNwb25zZS5cbiAgICovXG4gIGFzeW5jIGdldFVzZXJJbmZvKCk6IFByb21pc2U8VXNlckluZm8+IHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy5tZVBhdGhcbiAgICAgID8gdGhpcy5jb25maWcubWVQYXRoXG4gICAgICA6ICcvYXBwL21lJztcbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVybEZvclBhdGgocGF0aCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVyaS5ocmVmLCB7XG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIH0pO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlc3AudGV4dCgpKSBhcyBVc2VySW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHRoZSAnYXBwLmF0X2V4cCcgY29va2llIGFuZCBpZiBwcmVzZW50IHNldHMgYSB0aW1lciB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4uXG4gICAqIFdpbGwgYXR0ZW1wdCB0byByZWZyZXNoIHRoZSBjb25maWd1cmVkIHNlY29uZHMgYmVmb3JlIHRoZSBhY2Nlc3MgdG9rZW4gZXhwaXJlcyAoZGVmYXVsdCBpcyB0ZW4gc2Vjb25kcykuXG4gICAqL1xuICBpbml0QXV0b1JlZnJlc2goKTogdm9pZCB7XG4gICAgY29uc3QgZXhwID0gdGhpcy5nZXRFeHBUaW1lKCk7XG4gICAgaWYgKGV4cCkge1xuICAgICAgY29uc3QgcmVmcmVzaEJlZm9yZVNlY29uZHMgPSB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgPyB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgOiAxMDtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgcmVmcmVzaFRpbWUgPSBleHAgLSAocmVmcmVzaEJlZm9yZVNlY29uZHMgKiAxMDAwKTtcbiAgICAgIGxldCB0aW1lVGlsbFRoZW4gPSByZWZyZXNoVGltZSAtIG5vdztcbiAgICAgIGlmICh0aW1lVGlsbFRoZW4gPD0gMCkge1xuICAgICAgICB0aW1lVGlsbFRoZW4gPSAwO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICB0aGlzLmluaXRBdXRvUmVmcmVzaCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9LCB0aW1lVGlsbFRoZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhhdCB0aGUgJ2FwcC5hdF9leHAnIGNvb2tpZSBpcyBwcmVzZW50IGFuZCBmb3IgYSB0aW1lIGluIHRoZSBmdXR1cmUgdG8gZGV0ZXJtaW5lIGxvZ2dlZC1pbiBzdGF0ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gYXBwLmF0X2V4cCBpcyBwcmVzZW50IGFuZCBub3QgZm9yIGEgdGltZSBpbiB0aGUgcGFzdFxuICAgKi9cbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldEV4cFRpbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyB0aGUgY29uZmlndXJlZCAncmVmcmVzaCcgZW5kcG9pbnQgdG8gYXR0ZW1wdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gY29va2llLlxuICAgKi9cbiAgYXN5bmMgcmVmcmVzaFRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLnRva2VuUmVmcmVzaFBhdGhcbiAgICAgID8gYCR7dGhpcy5jb25maWcudG9rZW5SZWZyZXNoUGF0aH0vJHt0aGlzLmNvbmZpZy5jbGllbnRJZH1gXG4gICAgICA6IGAvYXBwL3JlZnJlc2gvJHt0aGlzLmNvbmZpZy5jbGllbnRJZH1gO1xuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJsRm9yUGF0aChwYXRoKTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJpLmhyZWYsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyxcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIShyZXNwLnN0YXR1cyA+PSAyMDAgJiYgcmVzcC5zdGF0dXMgPCAzMDApKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Vycm9yIHJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGluIGZ1c2lvbmF1dGgnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlcyBhIHJlZGlyZWN0IHRvIHRoZSBjb25maWd1cmVkICdsb2dpbicgZW5kcG9pbnQuXG4gICAqL1xuICBzdGFydExvZ2luKHN0YXRlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0aCA9ICEhdGhpcy5jb25maWcubG9naW5QYXRoXG4gICAgICA/IHRoaXMuY29uZmlnLmxvZ2luUGF0aFxuICAgICAgOiAnL2FwcC9sb2dpbic7XG4gICAgISFzdGF0ZSA/IHRoaXMuZG9SZWRpcmVjdEZvclBhdGgocGF0aCwge3N0YXRlfSkgOiB0aGlzLmRvUmVkaXJlY3RGb3JQYXRoKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYSByZWRpcmVjdCB0byB0aGUgY29uZmlndXJlZCAncmVmcmVzaCcgZW5kcG9pbnQuXG4gICAqL1xuICBzdGFydFJlZ2lzdHJhdGlvbihzdGF0ZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLnJlZ2lzdGVyUGF0aFxuICAgICAgPyB0aGlzLmNvbmZpZy5yZWdpc3RlclBhdGhcbiAgICAgIDogJy9hcHAvcmVnaXN0ZXInO1xuICAgICEhc3RhdGUgPyB0aGlzLmRvUmVkaXJlY3RGb3JQYXRoKHBhdGgsIHtzdGF0ZX0pIDogdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGEgcmVkaXJlY3QgdG8gdGhlIGNvbmZpZ3VyZWQgJ2xvZ291dCcgZW5kcG9pbnQuXG4gICAqL1xuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgY29uc3QgcGF0aCA9ICEhdGhpcy5jb25maWcubG9nb3V0UGF0aFxuICAgICAgPyB0aGlzLmNvbmZpZy5sb2dvdXRQYXRoXG4gICAgICA6ICcvYXBwL2xvZ291dCc7XG4gICAgdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgZG9SZWRpcmVjdEZvclBhdGgocGF0aDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsYW55PiA9IHt9KSB7XG4gICAgcGF0aCA9IHBhdGggKyBgLyR7dGhpcy5jb25maWcuY2xpZW50SWR9YDtcbiAgICBpZiAodGhpcy5jb25maWcucmVkaXJlY3RVcmkpIHtcbiAgICAgIHBhcmFtc1sncmVkaXJlY3RfdXJpJ10gPSB0aGlzLmNvbmZpZy5yZWRpcmVjdFVyaTtcbiAgICB9XG4gICAgbGV0IGxvY2F0aW9uID0gdGhpcy5nZXRVcmxGb3JQYXRoKHBhdGgsIHBhcmFtcykgO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24obG9jYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxGb3JQYXRoKHBhdGg6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiBVUkwge1xuICAgIGxldCB1cmwgPSBuZXcgVVJMKHRoaXMuY29uZmlnLnNlcnZlclVybCk7XG4gICAgdXJsLnBhdGhuYW1lID0gcGF0aDtcbiAgICBpZiAoT2JqZWN0LmVudHJpZXMocGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcyk7XG4gICAgICB1cmwuc2VhcmNoID0gdXJsUGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cFRpbWUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgY29uc3QgZXhwQ29va2llID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7ICcpXG4gICAgICAubWFwKGMgPT4gYy5zcGxpdCgnPScpKVxuICAgICAgLmZpbmQoKFtuYW1lXSkgPT4gbmFtZSA9PT0gJ2FwcC5hdF9leHAnKTtcbiAgICByZXR1cm4gZXhwQ29va2llID8gcGFyc2VJbnQoZXhwQ29va2llWzFdKSAqIDEwMDAgOiBudWxsO1xuICB9XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVzaW9uLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Z1c2lvbmF1dGgtYW5ndWxhci1zZGsvc3JjL2xpYi9mdXNpb24tYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBQzlCLENBQUM7SUFFTDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVztRQUNmLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUNwQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBYSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxFQUFFO1lBQ1AsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtnQkFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCO2dCQUM1QyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FB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QyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDM0MsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGdXNpb25BdXRoQ29uZmlnLCBVc2VySW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xhc3MgdG8gdXNlIHdpdGggRnVzaW9uQXV0aCBiYWNrZW5kIGVuZHBvaW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1c2lvbkF1dGhTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogRnVzaW9uQXV0aENvbmZpZyxcbiAgKSB7IH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlICdtZScgZW5kcG9pbnQgdG8gcmV0cmlldmUgdXNlciBpbmZvLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFVzZXJJbmZvPn0gdGhlIHVzZXIgaW5mbyByZXNwb25zZS5cbiAgICovXG4gIGFzeW5jIGdldFVzZXJJbmZvKCk6IFByb21pc2U8VXNlckluZm8+IHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy5tZVBhdGhcbiAgICAgID8gdGhpcy5jb25maWcubWVQYXRoXG4gICAgICA6ICcvYXBwL21lJztcbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVybEZvclBhdGgocGF0aCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVyaS5ocmVmLCB7XG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgIH0pO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlc3AudGV4dCgpKSBhcyBVc2VySW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZm9yIHRoZSAnYXBwLmF0X2V4cCcgY29va2llIGFuZCBpZiBwcmVzZW50IHNldHMgYSB0aW1lciB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4uXG4gICAqIFdpbGwgYXR0ZW1wdCB0byByZWZyZXNoIHRoZSBjb25maWd1cmVkIHNlY29uZHMgYmVmb3JlIHRoZSBhY2Nlc3MgdG9rZW4gZXhwaXJlcyAoZGVmYXVsdCBpcyB0ZW4gc2Vjb25kcykuXG4gICAqL1xuICBpbml0QXV0b1JlZnJlc2goKTogdm9pZCB7XG4gICAgY29uc3QgZXhwID0gdGhpcy5nZXRFeHBUaW1lKCk7XG4gICAgaWYgKGV4cCkge1xuICAgICAgY29uc3QgcmVmcmVzaEJlZm9yZVNlY29uZHMgPSB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgPyB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaFNlY29uZHNCZWZvcmVFeHBpcnlcbiAgICAgICAgOiAxMDtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgcmVmcmVzaFRpbWUgPSBleHAgLSAocmVmcmVzaEJlZm9yZVNlY29uZHMgKiAxMDAwKTtcbiAgICAgIGxldCB0aW1lVGlsbFRoZW4gPSByZWZyZXNoVGltZSAtIG5vdztcbiAgICAgIGlmICh0aW1lVGlsbFRoZW4gPD0gMCkge1xuICAgICAgICB0aW1lVGlsbFRoZW4gPSAwO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgICB0aGlzLmluaXRBdXRvUmVmcmVzaCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgICB9XG4gICAgICB9LCB0aW1lVGlsbFRoZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgdGhhdCB0aGUgJ2FwcC5hdF9leHAnIGNvb2tpZSBpcyBwcmVzZW50IGFuZCBmb3IgYSB0aW1lIGluIHRoZSBmdXR1cmUgdG8gZGV0ZXJtaW5lIGxvZ2dlZC1pbiBzdGF0ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gYXBwLmF0X2V4cCBpcyBwcmVzZW50IGFuZCBub3QgZm9yIGEgdGltZSBpbiB0aGUgcGFzdFxuICAgKi9cbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0RXhwVGltZSgpID8/IDApID4gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGNvbmZpZ3VyZWQgJ3JlZnJlc2gnIGVuZHBvaW50IHRvIGF0dGVtcHQgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGNvb2tpZS5cbiAgICovXG4gIGFzeW5jIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy50b2tlblJlZnJlc2hQYXRoXG4gICAgICA/IGAke3RoaXMuY29uZmlnLnRva2VuUmVmcmVzaFBhdGh9LyR7dGhpcy5jb25maWcuY2xpZW50SWR9YFxuICAgICAgOiBgL2FwcC9yZWZyZXNoLyR7dGhpcy5jb25maWcuY2xpZW50SWR9YDtcbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVybEZvclBhdGgocGF0aCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKHVyaS5ocmVmLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCEocmVzcC5zdGF0dXMgPj0gMjAwICYmIHJlc3Auc3RhdHVzIDwgMzAwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdlcnJvciByZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBpbiBmdXNpb25hdXRoJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYSByZWRpcmVjdCB0byB0aGUgY29uZmlndXJlZCAnbG9naW4nIGVuZHBvaW50LlxuICAgKi9cbiAgc3RhcnRMb2dpbihzdGF0ZT86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLmxvZ2luUGF0aFxuICAgICAgPyB0aGlzLmNvbmZpZy5sb2dpblBhdGhcbiAgICAgIDogJy9hcHAvbG9naW4nO1xuICAgICEhc3RhdGUgPyB0aGlzLmRvUmVkaXJlY3RGb3JQYXRoKHBhdGgsIHtzdGF0ZX0pIDogdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGEgcmVkaXJlY3QgdG8gdGhlIGNvbmZpZ3VyZWQgJ3JlZnJlc2gnIGVuZHBvaW50LlxuICAgKi9cbiAgc3RhcnRSZWdpc3RyYXRpb24oc3RhdGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRoID0gISF0aGlzLmNvbmZpZy5yZWdpc3RlclBhdGhcbiAgICAgID8gdGhpcy5jb25maWcucmVnaXN0ZXJQYXRoXG4gICAgICA6ICcvYXBwL3JlZ2lzdGVyJztcbiAgICAhIXN0YXRlID8gdGhpcy5kb1JlZGlyZWN0Rm9yUGF0aChwYXRoLCB7c3RhdGV9KSA6IHRoaXMuZG9SZWRpcmVjdEZvclBhdGgocGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlcyBhIHJlZGlyZWN0IHRvIHRoZSBjb25maWd1cmVkICdsb2dvdXQnIGVuZHBvaW50LlxuICAgKi9cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGggPSAhIXRoaXMuY29uZmlnLmxvZ291dFBhdGhcbiAgICAgID8gdGhpcy5jb25maWcubG9nb3V0UGF0aFxuICAgICAgOiAnL2FwcC9sb2dvdXQnO1xuICAgIHRoaXMuZG9SZWRpcmVjdEZvclBhdGgocGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGRvUmVkaXJlY3RGb3JQYXRoKHBhdGg6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLGFueT4gPSB7fSkge1xuICAgIHBhdGggPSBwYXRoICsgYC8ke3RoaXMuY29uZmlnLmNsaWVudElkfWA7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlZGlyZWN0VXJpKSB7XG4gICAgICBwYXJhbXNbJ3JlZGlyZWN0X3VyaSddID0gdGhpcy5jb25maWcucmVkaXJlY3RVcmk7XG4gICAgfVxuICAgIGxldCBsb2NhdGlvbiA9IHRoaXMuZ2V0VXJsRm9yUGF0aChwYXRoLCBwYXJhbXMpIDtcbiAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXJsRm9yUGF0aChwYXRoOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogVVJMIHtcbiAgICBsZXQgdXJsID0gbmV3IFVSTCh0aGlzLmNvbmZpZy5zZXJ2ZXJVcmwpO1xuICAgIHVybC5wYXRobmFtZSA9IHBhdGg7XG4gICAgaWYgKE9iamVjdC5lbnRyaWVzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xuICAgICAgdXJsLnNlYXJjaCA9IHVybFBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBUaW1lKCk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IGV4cENvb2tpZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKVxuICAgICAgLm1hcChjID0+IGMuc3BsaXQoJz0nKSlcbiAgICAgIC5maW5kKChbbmFtZV0pID0+IG5hbWUgPT09ICdhcHAuYXRfZXhwJyk7XG4gICAgcmV0dXJuIGV4cENvb2tpZSA/IHBhcnNlSW50KGV4cENvb2tpZVsxXSkgKiAxMDAwIDogbnVsbDtcbiAgfVxufVxuIl19
@@ -57,7 +57,8 @@ class FusionAuthService {
57
57
  * @return {boolean} app.at_exp is present and not for a time in the past
58
58
  */
59
59
  isLoggedIn() {
60
- return !!this.getExpTime();
60
+ var _a;
61
+ return ((_a = this.getExpTime()) !== null && _a !== void 0 ? _a : 0) > new Date().getTime();
61
62
  }
62
63
  /**
63
64
  * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.
@@ -137,14 +138,7 @@ class FusionAuthLoginButtonComponent {
137
138
  this.fusionAuth = fusionAuth;
138
139
  }
139
140
  login() {
140
- return __awaiter(this, void 0, void 0, function* () {
141
- if (!this.state) {
142
- yield this.fusionAuth.startLogin();
143
- }
144
- else {
145
- yield this.fusionAuth.startLogin(this.state);
146
- }
147
- });
141
+ this.fusionAuth.startLogin(this.state);
148
142
  }
149
143
  }
150
144
  FusionAuthLoginButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthLoginButtonComponent, deps: [{ token: FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -176,12 +170,7 @@ class FusionAuthRegisterButtonComponent {
176
170
  this.fusionAuth = fusionAuth;
177
171
  }
178
172
  register() {
179
- if (!this.state) {
180
- this.fusionAuth.startRegistration();
181
- }
182
- else {
183
- this.fusionAuth.startRegistration(this.state);
184
- }
173
+ this.fusionAuth.startRegistration(this.state);
185
174
  }
186
175
  }
187
176
  FusionAuthRegisterButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthRegisterButtonComponent, deps: [{ token: FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -1 +1 @@
1
- {"version":3,"file":"fusionauth-angular-sdk.mjs","sources":["../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.service.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.module.ts","../../../projects/fusionauth-angular-sdk/src/public-api.ts","../../../projects/fusionauth-angular-sdk/src/fusionauth-angular-sdk.ts"],"sourcesContent":["import { FusionAuthConfig, UserInfo } from './types';\n\n/**\n * Service class to use with FusionAuth backend endpoints.\n */\nexport class FusionAuthService {\n\n constructor(\n private config: FusionAuthConfig,\n ) { }\n\n /**\n * Calls the 'me' endpoint to retrieve user info.\n * @return {Promise<UserInfo>} the user info response.\n */\n async getUserInfo(): Promise<UserInfo> {\n const path = !!this.config.mePath\n ? this.config.mePath\n : '/app/me';\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n credentials: 'include',\n });\n return JSON.parse(await resp.text()) as UserInfo;\n }\n\n /**\n * Checks for the 'app.at_exp' cookie and if present sets a timer to refresh the access token.\n * Will attempt to refresh the configured seconds before the access token expires (default is ten seconds).\n */\n initAutoRefresh(): void {\n const exp = this.getExpTime();\n if (exp) {\n const refreshBeforeSeconds = this.config.autoRefreshSecondsBeforeExpiry\n ? this.config.autoRefreshSecondsBeforeExpiry\n : 10;\n const now = new Date().getTime();\n const refreshTime = exp - (refreshBeforeSeconds * 1000);\n let timeTillThen = refreshTime - now;\n if (timeTillThen <= 0) {\n timeTillThen = 0;\n }\n setTimeout(async () => {\n try {\n await this.refreshToken();\n this.initAutoRefresh();\n } catch (e) {\n console.error(e)\n }\n }, timeTillThen);\n }\n }\n\n /**\n * Checks that the 'app.at_exp' cookie is present and for a time in the future to determine logged-in state.\n * @return {boolean} app.at_exp is present and not for a time in the past\n */\n isLoggedIn(): boolean {\n return !!this.getExpTime();\n }\n\n /**\n * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.\n */\n async refreshToken(): Promise<void> {\n const path = !!this.config.tokenRefreshPath\n ? `${this.config.tokenRefreshPath}/${this.config.clientId}`\n : `/app/refresh/${this.config.clientId}`;\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'text/plain',\n }\n });\n if (!(resp.status >= 200 && resp.status < 300)) {\n throw new Error('error refreshing access token in fusionauth');\n }\n }\n\n /**\n * Invokes a redirect to the configured 'login' endpoint.\n */\n startLogin(state?: string): void {\n const path = !!this.config.loginPath\n ? this.config.loginPath\n : '/app/login';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'refresh' endpoint.\n */\n startRegistration(state?: string): void {\n const path = !!this.config.registerPath\n ? this.config.registerPath\n : '/app/register';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'logout' endpoint.\n */\n logout(): void {\n const path = !!this.config.logoutPath\n ? this.config.logoutPath\n : '/app/logout';\n this.doRedirectForPath(path);\n }\n\n private doRedirectForPath(path: string, params: Record<string,any> = {}) {\n path = path + `/${this.config.clientId}`;\n if (this.config.redirectUri) {\n params['redirect_uri'] = this.config.redirectUri;\n }\n let location = this.getUrlForPath(path, params) ;\n window.location.assign(location);\n }\n\n private getUrlForPath(path: string, params: Record<string, any> = {}): URL {\n let url = new URL(this.config.serverUrl);\n url.pathname = path;\n if (Object.entries(params).length > 0) {\n const urlParams = new URLSearchParams(params);\n url.search = urlParams.toString();\n }\n return url;\n }\n\n private getExpTime(): number | null {\n const expCookie = document.cookie.split('; ')\n .map(c => c.split('='))\n .find(([name]) => name === 'app.at_exp');\n return expCookie ? parseInt(expCookie[1]) * 1000 : null;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-login',\n templateUrl: './fusion-auth-login-button.component.html',\n styleUrls: ['./fusion-auth-login-button.component.scss']\n})\nexport class FusionAuthLoginButtonComponent {\n @Input() state: string | undefined;\n\n constructor(private fusionAuth: FusionAuthService) {}\n\n async login() {\n if (!this.state) {\n await this.fusionAuth.startLogin();\n } else {\n await this.fusionAuth.startLogin(this.state);\n }\n\n }\n}\n","<button class=\"fa-button\" (click)=\"login()\">\n <span>Login</span>\n</button>\n","import { Component } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-logout',\n templateUrl: './fusion-auth-logout-button.component.html',\n styleUrls: ['./fusion-auth-logout-button.component.scss']\n})\nexport class FusionAuthLogoutButtonComponent {\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n logout() {\n this.fusionAuth.logout();\n }\n}\n","<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-register',\n templateUrl: './fusion-auth-register-button.component.html',\n styleUrls: ['./fusion-auth-register-button.component.scss']\n})\nexport class FusionAuthRegisterButtonComponent {\n @Input() state: string | undefined;\n\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n register() {\n if (!this.state) {\n this.fusionAuth.startRegistration();\n } else {\n this.fusionAuth.startRegistration(this.state);\n }\n }\n}\n","<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n","import { ModuleWithProviders, NgModule} from '@angular/core';\nimport { FusionAuthConfig } from './types';\nimport { FusionAuthService } from './fusion-auth.service';\nimport { FusionAuthLoginButtonComponent } from './components/fusionauth-login.button/fusion-auth-login-button.component';\nimport {\n FusionAuthLogoutButtonComponent\n} from './components/fusionauth-logout.button/fusion-auth-logout-button.component';\nimport {\n FusionAuthRegisterButtonComponent\n} from './components/fusionauth-register.button/fusion-auth-register-button.component';\n\n@NgModule({\n declarations: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ],\n imports: [\n ],\n exports: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ]\n})\nexport class FusionAuthModule {\n static forRoot(fusionAuthConfig: FusionAuthConfig): ModuleWithProviders<FusionAuthModule> {\n return {\n ngModule: FusionAuthModule,\n providers: [\n { provide: FusionAuthService, useValue: new FusionAuthService(fusionAuthConfig) }\n ],\n }\n }\n}\n","/*\n * Public API Surface of fusionauth-angular-sdk\n */\n\nexport * from './lib/fusion-auth.service';\nexport * from './lib/components/fusionauth-login.button/fusion-auth-login-button.component';\nexport * from './lib/components/fusionauth-logout.button/fusion-auth-logout-button.component';\nexport * from './lib/components/fusionauth-register.button/fusion-auth-register-button.component';\nexport * from './lib/fusion-auth.module';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FusionAuthService"],"mappings":"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"}
1
+ {"version":3,"file":"fusionauth-angular-sdk.mjs","sources":["../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.service.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.module.ts","../../../projects/fusionauth-angular-sdk/src/public-api.ts","../../../projects/fusionauth-angular-sdk/src/fusionauth-angular-sdk.ts"],"sourcesContent":["import { FusionAuthConfig, UserInfo } from './types';\n\n/**\n * Service class to use with FusionAuth backend endpoints.\n */\nexport class FusionAuthService {\n\n constructor(\n private config: FusionAuthConfig,\n ) { }\n\n /**\n * Calls the 'me' endpoint to retrieve user info.\n * @return {Promise<UserInfo>} the user info response.\n */\n async getUserInfo(): Promise<UserInfo> {\n const path = !!this.config.mePath\n ? this.config.mePath\n : '/app/me';\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n credentials: 'include',\n });\n return JSON.parse(await resp.text()) as UserInfo;\n }\n\n /**\n * Checks for the 'app.at_exp' cookie and if present sets a timer to refresh the access token.\n * Will attempt to refresh the configured seconds before the access token expires (default is ten seconds).\n */\n initAutoRefresh(): void {\n const exp = this.getExpTime();\n if (exp) {\n const refreshBeforeSeconds = this.config.autoRefreshSecondsBeforeExpiry\n ? this.config.autoRefreshSecondsBeforeExpiry\n : 10;\n const now = new Date().getTime();\n const refreshTime = exp - (refreshBeforeSeconds * 1000);\n let timeTillThen = refreshTime - now;\n if (timeTillThen <= 0) {\n timeTillThen = 0;\n }\n setTimeout(async () => {\n try {\n await this.refreshToken();\n this.initAutoRefresh();\n } catch (e) {\n console.error(e)\n }\n }, timeTillThen);\n }\n }\n\n /**\n * Checks that the 'app.at_exp' cookie is present and for a time in the future to determine logged-in state.\n * @return {boolean} app.at_exp is present and not for a time in the past\n */\n isLoggedIn(): boolean {\n return (this.getExpTime() ?? 0) > new Date().getTime();\n }\n\n /**\n * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.\n */\n async refreshToken(): Promise<void> {\n const path = !!this.config.tokenRefreshPath\n ? `${this.config.tokenRefreshPath}/${this.config.clientId}`\n : `/app/refresh/${this.config.clientId}`;\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'text/plain',\n }\n });\n if (!(resp.status >= 200 && resp.status < 300)) {\n throw new Error('error refreshing access token in fusionauth');\n }\n }\n\n /**\n * Invokes a redirect to the configured 'login' endpoint.\n */\n startLogin(state?: string): void {\n const path = !!this.config.loginPath\n ? this.config.loginPath\n : '/app/login';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'refresh' endpoint.\n */\n startRegistration(state?: string): void {\n const path = !!this.config.registerPath\n ? this.config.registerPath\n : '/app/register';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'logout' endpoint.\n */\n logout(): void {\n const path = !!this.config.logoutPath\n ? this.config.logoutPath\n : '/app/logout';\n this.doRedirectForPath(path);\n }\n\n private doRedirectForPath(path: string, params: Record<string,any> = {}) {\n path = path + `/${this.config.clientId}`;\n if (this.config.redirectUri) {\n params['redirect_uri'] = this.config.redirectUri;\n }\n let location = this.getUrlForPath(path, params) ;\n window.location.assign(location);\n }\n\n private getUrlForPath(path: string, params: Record<string, any> = {}): URL {\n let url = new URL(this.config.serverUrl);\n url.pathname = path;\n if (Object.entries(params).length > 0) {\n const urlParams = new URLSearchParams(params);\n url.search = urlParams.toString();\n }\n return url;\n }\n\n private getExpTime(): number | null {\n const expCookie = document.cookie.split('; ')\n .map(c => c.split('='))\n .find(([name]) => name === 'app.at_exp');\n return expCookie ? parseInt(expCookie[1]) * 1000 : null;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-login',\n templateUrl: './fusion-auth-login-button.component.html',\n styleUrls: ['./fusion-auth-login-button.component.scss']\n})\nexport class FusionAuthLoginButtonComponent {\n @Input() state: string | undefined;\n\n constructor(private fusionAuth: FusionAuthService) {}\n\n login() {\n this.fusionAuth.startLogin(this.state);\n }\n}\n","<button class=\"fa-button\" (click)=\"login()\">\n <span>Login</span>\n</button>\n","import { Component } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-logout',\n templateUrl: './fusion-auth-logout-button.component.html',\n styleUrls: ['./fusion-auth-logout-button.component.scss']\n})\nexport class FusionAuthLogoutButtonComponent {\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n logout() {\n this.fusionAuth.logout();\n }\n}\n","<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-register',\n templateUrl: './fusion-auth-register-button.component.html',\n styleUrls: ['./fusion-auth-register-button.component.scss']\n})\nexport class FusionAuthRegisterButtonComponent {\n @Input() state: string | undefined;\n\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n register() {\n this.fusionAuth.startRegistration(this.state);\n }\n}\n","<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n","import { ModuleWithProviders, NgModule} from '@angular/core';\nimport { FusionAuthConfig } from './types';\nimport { FusionAuthService } from './fusion-auth.service';\nimport { FusionAuthLoginButtonComponent } from './components/fusionauth-login.button/fusion-auth-login-button.component';\nimport {\n FusionAuthLogoutButtonComponent\n} from './components/fusionauth-logout.button/fusion-auth-logout-button.component';\nimport {\n FusionAuthRegisterButtonComponent\n} from './components/fusionauth-register.button/fusion-auth-register-button.component';\n\n@NgModule({\n declarations: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ],\n imports: [\n ],\n exports: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ]\n})\nexport class FusionAuthModule {\n static forRoot(fusionAuthConfig: FusionAuthConfig): ModuleWithProviders<FusionAuthModule> {\n return {\n ngModule: FusionAuthModule,\n providers: [\n { provide: FusionAuthService, useValue: new FusionAuthService(fusionAuthConfig) }\n ],\n }\n }\n}\n","/*\n * Public API Surface of fusionauth-angular-sdk\n */\n\nexport * from './lib/fusion-auth.service';\nexport * from './lib/components/fusionauth-login.button/fusion-auth-login-button.component';\nexport * from './lib/components/fusionauth-logout.button/fusion-auth-logout-button.component';\nexport * from './lib/components/fusionauth-register.button/fusion-auth-register-button.component';\nexport * from './lib/fusion-auth.module';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FusionAuthService"],"mappings":"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"}
@@ -54,7 +54,7 @@ class FusionAuthService {
54
54
  * @return {boolean} app.at_exp is present and not for a time in the past
55
55
  */
56
56
  isLoggedIn() {
57
- return !!this.getExpTime();
57
+ return (this.getExpTime() ?? 0) > new Date().getTime();
58
58
  }
59
59
  /**
60
60
  * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.
@@ -131,13 +131,8 @@ class FusionAuthLoginButtonComponent {
131
131
  constructor(fusionAuth) {
132
132
  this.fusionAuth = fusionAuth;
133
133
  }
134
- async login() {
135
- if (!this.state) {
136
- await this.fusionAuth.startLogin();
137
- }
138
- else {
139
- await this.fusionAuth.startLogin(this.state);
140
- }
134
+ login() {
135
+ this.fusionAuth.startLogin(this.state);
141
136
  }
142
137
  }
143
138
  FusionAuthLoginButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthLoginButtonComponent, deps: [{ token: FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -169,12 +164,7 @@ class FusionAuthRegisterButtonComponent {
169
164
  this.fusionAuth = fusionAuth;
170
165
  }
171
166
  register() {
172
- if (!this.state) {
173
- this.fusionAuth.startRegistration();
174
- }
175
- else {
176
- this.fusionAuth.startRegistration(this.state);
177
- }
167
+ this.fusionAuth.startRegistration(this.state);
178
168
  }
179
169
  }
180
170
  FusionAuthRegisterButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FusionAuthRegisterButtonComponent, deps: [{ token: FusionAuthService }], target: i0.ɵɵFactoryTarget.Component });
@@ -1 +1 @@
1
- {"version":3,"file":"fusionauth-angular-sdk.mjs","sources":["../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.service.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.module.ts","../../../projects/fusionauth-angular-sdk/src/public-api.ts","../../../projects/fusionauth-angular-sdk/src/fusionauth-angular-sdk.ts"],"sourcesContent":["import { FusionAuthConfig, UserInfo } from './types';\n\n/**\n * Service class to use with FusionAuth backend endpoints.\n */\nexport class FusionAuthService {\n\n constructor(\n private config: FusionAuthConfig,\n ) { }\n\n /**\n * Calls the 'me' endpoint to retrieve user info.\n * @return {Promise<UserInfo>} the user info response.\n */\n async getUserInfo(): Promise<UserInfo> {\n const path = !!this.config.mePath\n ? this.config.mePath\n : '/app/me';\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n credentials: 'include',\n });\n return JSON.parse(await resp.text()) as UserInfo;\n }\n\n /**\n * Checks for the 'app.at_exp' cookie and if present sets a timer to refresh the access token.\n * Will attempt to refresh the configured seconds before the access token expires (default is ten seconds).\n */\n initAutoRefresh(): void {\n const exp = this.getExpTime();\n if (exp) {\n const refreshBeforeSeconds = this.config.autoRefreshSecondsBeforeExpiry\n ? this.config.autoRefreshSecondsBeforeExpiry\n : 10;\n const now = new Date().getTime();\n const refreshTime = exp - (refreshBeforeSeconds * 1000);\n let timeTillThen = refreshTime - now;\n if (timeTillThen <= 0) {\n timeTillThen = 0;\n }\n setTimeout(async () => {\n try {\n await this.refreshToken();\n this.initAutoRefresh();\n } catch (e) {\n console.error(e)\n }\n }, timeTillThen);\n }\n }\n\n /**\n * Checks that the 'app.at_exp' cookie is present and for a time in the future to determine logged-in state.\n * @return {boolean} app.at_exp is present and not for a time in the past\n */\n isLoggedIn(): boolean {\n return !!this.getExpTime();\n }\n\n /**\n * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.\n */\n async refreshToken(): Promise<void> {\n const path = !!this.config.tokenRefreshPath\n ? `${this.config.tokenRefreshPath}/${this.config.clientId}`\n : `/app/refresh/${this.config.clientId}`;\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'text/plain',\n }\n });\n if (!(resp.status >= 200 && resp.status < 300)) {\n throw new Error('error refreshing access token in fusionauth');\n }\n }\n\n /**\n * Invokes a redirect to the configured 'login' endpoint.\n */\n startLogin(state?: string): void {\n const path = !!this.config.loginPath\n ? this.config.loginPath\n : '/app/login';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'refresh' endpoint.\n */\n startRegistration(state?: string): void {\n const path = !!this.config.registerPath\n ? this.config.registerPath\n : '/app/register';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'logout' endpoint.\n */\n logout(): void {\n const path = !!this.config.logoutPath\n ? this.config.logoutPath\n : '/app/logout';\n this.doRedirectForPath(path);\n }\n\n private doRedirectForPath(path: string, params: Record<string,any> = {}) {\n path = path + `/${this.config.clientId}`;\n if (this.config.redirectUri) {\n params['redirect_uri'] = this.config.redirectUri;\n }\n let location = this.getUrlForPath(path, params) ;\n window.location.assign(location);\n }\n\n private getUrlForPath(path: string, params: Record<string, any> = {}): URL {\n let url = new URL(this.config.serverUrl);\n url.pathname = path;\n if (Object.entries(params).length > 0) {\n const urlParams = new URLSearchParams(params);\n url.search = urlParams.toString();\n }\n return url;\n }\n\n private getExpTime(): number | null {\n const expCookie = document.cookie.split('; ')\n .map(c => c.split('='))\n .find(([name]) => name === 'app.at_exp');\n return expCookie ? parseInt(expCookie[1]) * 1000 : null;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-login',\n templateUrl: './fusion-auth-login-button.component.html',\n styleUrls: ['./fusion-auth-login-button.component.scss']\n})\nexport class FusionAuthLoginButtonComponent {\n @Input() state: string | undefined;\n\n constructor(private fusionAuth: FusionAuthService) {}\n\n async login() {\n if (!this.state) {\n await this.fusionAuth.startLogin();\n } else {\n await this.fusionAuth.startLogin(this.state);\n }\n\n }\n}\n","<button class=\"fa-button\" (click)=\"login()\">\n <span>Login</span>\n</button>\n","import { Component } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-logout',\n templateUrl: './fusion-auth-logout-button.component.html',\n styleUrls: ['./fusion-auth-logout-button.component.scss']\n})\nexport class FusionAuthLogoutButtonComponent {\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n logout() {\n this.fusionAuth.logout();\n }\n}\n","<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-register',\n templateUrl: './fusion-auth-register-button.component.html',\n styleUrls: ['./fusion-auth-register-button.component.scss']\n})\nexport class FusionAuthRegisterButtonComponent {\n @Input() state: string | undefined;\n\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n register() {\n if (!this.state) {\n this.fusionAuth.startRegistration();\n } else {\n this.fusionAuth.startRegistration(this.state);\n }\n }\n}\n","<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n","import { ModuleWithProviders, NgModule} from '@angular/core';\nimport { FusionAuthConfig } from './types';\nimport { FusionAuthService } from './fusion-auth.service';\nimport { FusionAuthLoginButtonComponent } from './components/fusionauth-login.button/fusion-auth-login-button.component';\nimport {\n FusionAuthLogoutButtonComponent\n} from './components/fusionauth-logout.button/fusion-auth-logout-button.component';\nimport {\n FusionAuthRegisterButtonComponent\n} from './components/fusionauth-register.button/fusion-auth-register-button.component';\n\n@NgModule({\n declarations: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ],\n imports: [\n ],\n exports: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ]\n})\nexport class FusionAuthModule {\n static forRoot(fusionAuthConfig: FusionAuthConfig): ModuleWithProviders<FusionAuthModule> {\n return {\n ngModule: FusionAuthModule,\n providers: [\n { provide: FusionAuthService, useValue: new FusionAuthService(fusionAuthConfig) }\n ],\n }\n }\n}\n","/*\n * Public API Surface of fusionauth-angular-sdk\n */\n\nexport * from './lib/fusion-auth.service';\nexport * from './lib/components/fusionauth-login.button/fusion-auth-login-button.component';\nexport * from './lib/components/fusionauth-logout.button/fusion-auth-logout-button.component';\nexport * from './lib/components/fusionauth-register.button/fusion-auth-register-button.component';\nexport * from './lib/fusion-auth.module';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FusionAuthService"],"mappings":"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"}
1
+ {"version":3,"file":"fusionauth-angular-sdk.mjs","sources":["../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.service.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-login.button/fusion-auth-login-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-logout.button/fusion-auth-logout-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.ts","../../../projects/fusionauth-angular-sdk/src/lib/components/fusionauth-register.button/fusion-auth-register-button.component.html","../../../projects/fusionauth-angular-sdk/src/lib/fusion-auth.module.ts","../../../projects/fusionauth-angular-sdk/src/public-api.ts","../../../projects/fusionauth-angular-sdk/src/fusionauth-angular-sdk.ts"],"sourcesContent":["import { FusionAuthConfig, UserInfo } from './types';\n\n/**\n * Service class to use with FusionAuth backend endpoints.\n */\nexport class FusionAuthService {\n\n constructor(\n private config: FusionAuthConfig,\n ) { }\n\n /**\n * Calls the 'me' endpoint to retrieve user info.\n * @return {Promise<UserInfo>} the user info response.\n */\n async getUserInfo(): Promise<UserInfo> {\n const path = !!this.config.mePath\n ? this.config.mePath\n : '/app/me';\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n credentials: 'include',\n });\n return JSON.parse(await resp.text()) as UserInfo;\n }\n\n /**\n * Checks for the 'app.at_exp' cookie and if present sets a timer to refresh the access token.\n * Will attempt to refresh the configured seconds before the access token expires (default is ten seconds).\n */\n initAutoRefresh(): void {\n const exp = this.getExpTime();\n if (exp) {\n const refreshBeforeSeconds = this.config.autoRefreshSecondsBeforeExpiry\n ? this.config.autoRefreshSecondsBeforeExpiry\n : 10;\n const now = new Date().getTime();\n const refreshTime = exp - (refreshBeforeSeconds * 1000);\n let timeTillThen = refreshTime - now;\n if (timeTillThen <= 0) {\n timeTillThen = 0;\n }\n setTimeout(async () => {\n try {\n await this.refreshToken();\n this.initAutoRefresh();\n } catch (e) {\n console.error(e)\n }\n }, timeTillThen);\n }\n }\n\n /**\n * Checks that the 'app.at_exp' cookie is present and for a time in the future to determine logged-in state.\n * @return {boolean} app.at_exp is present and not for a time in the past\n */\n isLoggedIn(): boolean {\n return (this.getExpTime() ?? 0) > new Date().getTime();\n }\n\n /**\n * Calls the configured 'refresh' endpoint to attempt to refresh the access token cookie.\n */\n async refreshToken(): Promise<void> {\n const path = !!this.config.tokenRefreshPath\n ? `${this.config.tokenRefreshPath}/${this.config.clientId}`\n : `/app/refresh/${this.config.clientId}`;\n const uri = this.getUrlForPath(path);\n const resp = await fetch(uri.href, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'text/plain',\n }\n });\n if (!(resp.status >= 200 && resp.status < 300)) {\n throw new Error('error refreshing access token in fusionauth');\n }\n }\n\n /**\n * Invokes a redirect to the configured 'login' endpoint.\n */\n startLogin(state?: string): void {\n const path = !!this.config.loginPath\n ? this.config.loginPath\n : '/app/login';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'refresh' endpoint.\n */\n startRegistration(state?: string): void {\n const path = !!this.config.registerPath\n ? this.config.registerPath\n : '/app/register';\n !!state ? this.doRedirectForPath(path, {state}) : this.doRedirectForPath(path);\n }\n\n /**\n * Invokes a redirect to the configured 'logout' endpoint.\n */\n logout(): void {\n const path = !!this.config.logoutPath\n ? this.config.logoutPath\n : '/app/logout';\n this.doRedirectForPath(path);\n }\n\n private doRedirectForPath(path: string, params: Record<string,any> = {}) {\n path = path + `/${this.config.clientId}`;\n if (this.config.redirectUri) {\n params['redirect_uri'] = this.config.redirectUri;\n }\n let location = this.getUrlForPath(path, params) ;\n window.location.assign(location);\n }\n\n private getUrlForPath(path: string, params: Record<string, any> = {}): URL {\n let url = new URL(this.config.serverUrl);\n url.pathname = path;\n if (Object.entries(params).length > 0) {\n const urlParams = new URLSearchParams(params);\n url.search = urlParams.toString();\n }\n return url;\n }\n\n private getExpTime(): number | null {\n const expCookie = document.cookie.split('; ')\n .map(c => c.split('='))\n .find(([name]) => name === 'app.at_exp');\n return expCookie ? parseInt(expCookie[1]) * 1000 : null;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-login',\n templateUrl: './fusion-auth-login-button.component.html',\n styleUrls: ['./fusion-auth-login-button.component.scss']\n})\nexport class FusionAuthLoginButtonComponent {\n @Input() state: string | undefined;\n\n constructor(private fusionAuth: FusionAuthService) {}\n\n login() {\n this.fusionAuth.startLogin(this.state);\n }\n}\n","<button class=\"fa-button\" (click)=\"login()\">\n <span>Login</span>\n</button>\n","import { Component } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-logout',\n templateUrl: './fusion-auth-logout-button.component.html',\n styleUrls: ['./fusion-auth-logout-button.component.scss']\n})\nexport class FusionAuthLogoutButtonComponent {\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n logout() {\n this.fusionAuth.logout();\n }\n}\n","<button class=\"fa-logout-button\" (click)=\"logout()\">\n <span>logout</span>\n</button>\n","import { Component, Input } from '@angular/core';\nimport { FusionAuthService } from '../../fusion-auth.service';\n\n@Component({\n selector: 'fa-register',\n templateUrl: './fusion-auth-register-button.component.html',\n styleUrls: ['./fusion-auth-register-button.component.scss']\n})\nexport class FusionAuthRegisterButtonComponent {\n @Input() state: string | undefined;\n\n constructor(\n private fusionAuth: FusionAuthService,\n ) {}\n\n register() {\n this.fusionAuth.startRegistration(this.state);\n }\n}\n","<button class=\"fa-button\" (click)=\"register()\">\n <span>Register Now</span>\n</button>\n","import { ModuleWithProviders, NgModule} from '@angular/core';\nimport { FusionAuthConfig } from './types';\nimport { FusionAuthService } from './fusion-auth.service';\nimport { FusionAuthLoginButtonComponent } from './components/fusionauth-login.button/fusion-auth-login-button.component';\nimport {\n FusionAuthLogoutButtonComponent\n} from './components/fusionauth-logout.button/fusion-auth-logout-button.component';\nimport {\n FusionAuthRegisterButtonComponent\n} from './components/fusionauth-register.button/fusion-auth-register-button.component';\n\n@NgModule({\n declarations: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ],\n imports: [\n ],\n exports: [\n FusionAuthLoginButtonComponent,\n FusionAuthLogoutButtonComponent,\n FusionAuthRegisterButtonComponent,\n ]\n})\nexport class FusionAuthModule {\n static forRoot(fusionAuthConfig: FusionAuthConfig): ModuleWithProviders<FusionAuthModule> {\n return {\n ngModule: FusionAuthModule,\n providers: [\n { provide: FusionAuthService, useValue: new FusionAuthService(fusionAuthConfig) }\n ],\n }\n }\n}\n","/*\n * Public API Surface of fusionauth-angular-sdk\n */\n\nexport * from './lib/fusion-auth.service';\nexport * from './lib/components/fusionauth-login.button/fusion-auth-login-button.component';\nexport * from './lib/components/fusionauth-logout.button/fusion-auth-logout-button.component';\nexport * from './lib/components/fusionauth-register.button/fusion-auth-register-button.component';\nexport * from './lib/fusion-auth.module';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FusionAuthService"],"mappings":"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"}
@@ -4,7 +4,7 @@ export declare class FusionAuthLoginButtonComponent {
4
4
  private fusionAuth;
5
5
  state: string | undefined;
6
6
  constructor(fusionAuth: FusionAuthService);
7
- login(): Promise<void>;
7
+ login(): void;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<FusionAuthLoginButtonComponent, never>;
9
9
  static ɵcmp: i0.ɵɵComponentDeclaration<FusionAuthLoginButtonComponent, "fa-login", never, { "state": "state"; }, {}, never, never>;
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusionauth/angular-sdk",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=13.0.0",