@rangs/auth0-lib 0.0.17 → 0.0.19

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.
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, Injectable, effect, NgModule, Component } from '@angular/core';
2
+ import { signal, computed, Injectable, effect, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@auth0/auth0-angular';
4
4
  import { AuthModule as AuthModule$1 } from '@auth0/auth0-angular';
5
5
  import { BehaviorSubject, firstValueFrom } from 'rxjs';
6
- import { CommonModule } from '@angular/common';
7
6
 
8
7
  class CredentialingService {
9
8
  store = new Map();
@@ -124,6 +123,10 @@ class RoleContextService {
124
123
  const raw = localStorage.getItem(this.STORAGE_KEY);
125
124
  return raw ? JSON.parse(raw) : null;
126
125
  }
126
+ // Internal store for Cloud Front URL
127
+ applyCloudUrl(ctx) {
128
+ this.cloudFrontUrlSignal.set(ctx);
129
+ }
127
130
  // Load Cloud Front URL
128
131
  getCloudFrontUrl() {
129
132
  const raw = localStorage.getItem(this.STORAGE_KEY);
@@ -225,24 +228,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
225
228
  }]
226
229
  }], ctorParameters: () => [{ type: i1.AuthService }] });
227
230
 
228
- class AuthModule {
229
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
230
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, imports: [AuthModule$1,
231
- TermsConditionsComponent] });
232
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, providers: [RoleContextService, TokenService], imports: [AuthModule$1,
233
- TermsConditionsComponent] });
234
- }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, decorators: [{
236
- type: NgModule,
237
- args: [{
238
- imports: [
239
- AuthModule$1,
240
- TermsConditionsComponent,
241
- ],
242
- providers: [RoleContextService, TokenService]
243
- }]
244
- }] });
245
-
246
231
  class LegalService {
247
232
  _config = signal({
248
233
  companyName: 'Inspection Depot, Inc',
@@ -268,44 +253,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
268
253
  args: [{ providedIn: 'root' }]
269
254
  }] });
270
255
 
271
- class PrivacyPolicyComponent {
256
+ class TermsConditionsComponent {
272
257
  legal;
273
- website = computed(() => this.config().websiteUrl, ...(ngDevMode ? [{ debugName: "website" }] : []));
274
- privacyEmail = computed(() => this.config().privacyEmail, ...(ngDevMode ? [{ debugName: "privacyEmail" }] : []));
275
258
  constructor(legal) {
276
259
  this.legal = legal;
277
260
  }
278
261
  get config() {
279
262
  return this.legal.config;
280
263
  }
281
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: PrivacyPolicyComponent, deps: [{ token: LegalService }], target: i0.ɵɵFactoryTarget.Component });
282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: PrivacyPolicyComponent, isStandalone: true, selector: "app-privacy-policy", ngImport: i0, template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
264
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: LegalService }], target: i0.ɵɵFactoryTarget.Component });
265
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: TermsConditionsComponent, isStandalone: false, selector: "app-terms-conditions", ngImport: i0, template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] });
283
266
  }
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TermsConditionsComponent, decorators: [{
285
268
  type: Component,
286
- args: [{ imports: [
287
- CommonModule
288
- ], standalone: true, selector: 'app-privacy-policy', template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] }]
269
+ args: [{ standalone: false, selector: 'app-terms-conditions', template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] }]
289
270
  }], ctorParameters: () => [{ type: LegalService }] });
290
271
 
291
- class TermsConditionsComponent {
272
+ class PrivacyPolicyComponent {
292
273
  legal;
274
+ website = computed(() => this.config().websiteUrl, ...(ngDevMode ? [{ debugName: "website" }] : []));
275
+ privacyEmail = computed(() => this.config().privacyEmail, ...(ngDevMode ? [{ debugName: "privacyEmail" }] : []));
293
276
  constructor(legal) {
294
277
  this.legal = legal;
295
278
  }
296
279
  get config() {
297
280
  return this.legal.config;
298
281
  }
299
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TermsConditionsComponent, deps: [{ token: LegalService }], target: i0.ɵɵFactoryTarget.Component });
300
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: TermsConditionsComponent, isStandalone: true, selector: "app-terms-conditions", ngImport: i0, template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
282
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: PrivacyPolicyComponent, deps: [{ token: LegalService }], target: i0.ɵɵFactoryTarget.Component });
283
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: PrivacyPolicyComponent, isStandalone: false, selector: "app-privacy-policy", ngImport: i0, template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] });
301
284
  }
302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TermsConditionsComponent, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: PrivacyPolicyComponent, decorators: [{
303
286
  type: Component,
304
- args: [{ imports: [
305
- CommonModule
306
- ], standalone: true, selector: 'app-terms-conditions', template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] }]
287
+ args: [{ standalone: false, selector: 'app-privacy-policy', template: "<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>", styles: [".legal-container{max-width:920px;margin:auto;padding:48px 24px;font-family:Inter,Roboto,sans-serif;line-height:1.75;color:#2c2c2c}.legal-container h1{font-size:34px;margin-bottom:8px}.legal-container .updated{font-size:13px;color:#777;margin-bottom:32px}.legal-container h2{margin-top:36px;font-size:20px;color:#1f4fd8}.legal-container ul{padding-left:22px}.legal-container a{color:#1f4fd8;text-decoration:none;font-weight:500}.legal-container address{margin-top:20px;font-style:normal}\n"] }]
307
288
  }], ctorParameters: () => [{ type: LegalService }] });
308
289
 
290
+ class AuthModule {
291
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
292
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, declarations: [TermsConditionsComponent,
293
+ PrivacyPolicyComponent], imports: [AuthModule$1], exports: [TermsConditionsComponent,
294
+ PrivacyPolicyComponent] });
295
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, providers: [RoleContextService, TokenService, LegalService], imports: [AuthModule$1] });
296
+ }
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, decorators: [{
298
+ type: NgModule,
299
+ args: [{
300
+ declarations: [
301
+ TermsConditionsComponent,
302
+ PrivacyPolicyComponent
303
+ ],
304
+ imports: [
305
+ AuthModule$1
306
+ ],
307
+ exports: [
308
+ TermsConditionsComponent,
309
+ PrivacyPolicyComponent
310
+ ],
311
+ providers: [RoleContextService, TokenService, LegalService]
312
+ }]
313
+ }] });
314
+
309
315
  /**
310
316
  * Generated bundle index. Do not edit.
311
317
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rangs-auth0-lib.mjs","sources":["../../../projects/auth0-lib/src/lib/services/credentialing.service.ts","../../../projects/auth0-lib/src/lib/services/role-context.service.ts","../../../projects/auth0-lib/src/lib/services/token.service.ts","../../../projects/auth0-lib/src/lib/auth.module.ts","../../../projects/auth0-lib/src/lib/src/legal.service.ts","../../../projects/auth0-lib/src/lib/src/privacy-policy/privacy-policy.component.ts","../../../projects/auth0-lib/src/lib/src/privacy-policy/privacy-policy.component.html","../../../projects/auth0-lib/src/lib/src/terms-conditions/terms-conditions.component.ts","../../../projects/auth0-lib/src/lib/src/terms-conditions/terms-conditions.component.html","../../../projects/auth0-lib/src/rangs-auth0-lib.ts"],"sourcesContent":["import { computed, Injectable, Signal, signal } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialingService {\r\n\r\n\r\n private store = new Map<string, ReturnType<typeof signal<any>>>();\r\n\r\n /** Get signal for a key (auto-create if missing) */\r\n get<T>(key: string): Signal<T | null> {\r\n if (!this.store.has(key)) {\r\n this.store.set(key, signal<T | null>(null));\r\n }\r\n return computed(() => this.store.get(key)!());\r\n }\r\n\r\n /** Set value for a key */\r\n set<T>(key: string, value: T): void {\r\n if (!this.store.has(key)) {\r\n this.store.set(key, signal<T | null>(value));\r\n } else {\r\n this.store.get(key)!.set(value);\r\n }\r\n }\r\n\r\n /** Optional: clear single key */\r\n clear(key: string): void {\r\n this.store.delete(key);\r\n }\r\n\r\n /** Optional: clear everything */\r\n clearAll(): void {\r\n this.store.clear();\r\n }\r\n\r\n}\r\n","import { Injectable, signal, computed, effect } from '@angular/core';\r\nimport { RoleContextModel } from './role-context.model';\r\n//import { NgxPermissionsService } from 'ngx-permissions';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { TempUserModel } from './temp-user.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleContextService {\r\n\r\n private readonly STORAGE_KEY = 'im-role-context';\r\n private readonly bc = new BroadcastChannel('im-role-context-channel');\r\n\r\n // Store role context in signal (without permissions)\r\n private contextSignal = signal<RoleContextModel | null>(this.getStoredContext());\r\n context = this.contextSignal;\r\n\r\n // Store role context in signal (without permissions)\r\n private tempUserContextSignal = signal<TempUserModel | null>(null);\r\n tempUserContext = this.tempUserContextSignal;\r\n\r\n /** For opening side Nav after tenant/role switch */\r\n private sidNav = new BehaviorSubject<RoleContextModel | null>(null);\r\n readonly sidNav$ = this.sidNav.asObservable();\r\n\r\n // Store role context in signal (without permissions)\r\n private cloudFrontUrlSignal = signal<string | null>(this.getCloudFrontUrl());\r\n cloudFrontUrl = this.cloudFrontUrlSignal;\r\n\r\n constructor(\r\n // private permissionsService: NgxPermissionsService\r\n ) {\r\n\r\n /** Sync from BroadcastChannel */\r\n this.bc.onmessage = (ev) => {\r\n if (!this.isSameContext(ev.data)) {\r\n this.showCustomPopup();\r\n }\r\n };\r\n\r\n /** Sync from LocalStorage events (multi-tab) */\r\n window.addEventListener('storage', (ev) => {\r\n if (ev.key === this.STORAGE_KEY) {\r\n const newCtx = ev.newValue ? JSON.parse(ev.newValue) : null;\r\n if (!this.isSameContext(newCtx)) {\r\n this.showCustomPopup();\r\n }\r\n }\r\n });\r\n\r\n // 🔥 IMPORTANT: Load permissions in memory — DO NOT save them\r\n effect(() => {\r\n const ctx = this.contextSignal();\r\n });\r\n }\r\n\r\n isSameContext(newCtx: RoleContextModel | null): boolean {\r\n const current = this.contextSignal();\r\n return !!current && !!newCtx && current.roleName === newCtx.roleName && current.tenantId === newCtx.tenantId;\r\n }\r\n\r\n private showCustomPopup() {\r\n const modal = document.getElementById('roleChangeModal')!;\r\n modal.style.display = 'flex';\r\n\r\n const okBtn = document.getElementById('roleChangeOkBtn')!;\r\n okBtn.onclick = () => {\r\n window.location.href = window.location.origin;\r\n };\r\n }\r\n\r\n // Set role context WITHOUT saving permissions to storage\r\n setContext(ctx: RoleContextModel | null) {\r\n // Clone without permissions\r\n const saveCtx = ctx ? { ...ctx, permissions: undefined } : null;\r\n this.applyContext(saveCtx, true);\r\n\r\n // Notify subscribers\r\n this.sidNav.next(ctx);\r\n\r\n }\r\n\r\n clearContext() {\r\n this.applyContext(null, true);\r\n }\r\n\r\n clearTempUserContext() {\r\n this.applyTempUserContext(null);\r\n }\r\n\r\n\r\n // Internal store + broadcast\r\n private applyContext(ctx: RoleContextModel | null, broadcast: boolean) {\r\n if (ctx) {\r\n\r\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(ctx));\r\n } else {\r\n localStorage.removeItem(this.STORAGE_KEY);\r\n }\r\n\r\n this.contextSignal.set(ctx);\r\n\r\n if (broadcast) this.bc.postMessage(ctx);\r\n }\r\n\r\n // Internal store for Temp User Context\r\n applyTempUserContext(ctx: TempUserModel | null) {\r\n this.tempUserContextSignal.set(ctx);\r\n\r\n }\r\n // Load existing context (no permissions)\r\n private getStoredContext(): RoleContextModel | null {\r\n const raw = localStorage.getItem(this.STORAGE_KEY);\r\n return raw ? JSON.parse(raw) : null;\r\n }\r\n\r\n // Load Cloud Front URL\r\n private getCloudFrontUrl(): string | null {\r\n const raw = localStorage.getItem(this.STORAGE_KEY);\r\n return raw ?? null;\r\n }\r\n\r\n // Role check used by directive\r\n hasAnyRole(roles: string[]) {\r\n return computed(() => {\r\n const currentRole = this.contextSignal()?.roleName?.toLowerCase();\r\n return roles.some(r => r.toLowerCase() === currentRole);\r\n });\r\n }\r\n\r\n notAnyRole(roles: string[]) {\r\n return computed(() => !this.hasAnyRole(roles)());\r\n }\r\n\r\n hasRole(role: string) {\r\n return computed(() => {\r\n const currentRole = this.contextSignal()?.roleName?.toLowerCase();\r\n return currentRole === role.toLowerCase();\r\n });\r\n }\r\n\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n constructor(private auth: AuthService) { }\r\n\r\n\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n return await firstValueFrom(this.auth.isAuthenticated$);\r\n }\r\n\r\n\r\n async getUserId(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.['user_id'] ?? null;\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return null;\r\n }\r\n }\r\n\r\n async getUserEmail(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n //console.log(user);\r\n return user?.email ?? null;\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return null;\r\n }\r\n }\r\n\r\n async getUserFirstName(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.given_name ?? '';\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return '';\r\n }\r\n }\r\n async getUserLastName(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.family_name ?? '';\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return '';\r\n }\r\n }\r\n\r\n async getUserFullName(): Promise<string> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n const fullName = `${user?.family_name ?? ''} ${user?.given_name ?? ''}`.trim();\r\n return fullName || '';\r\n } catch (err) {\r\n console.warn('User not available:', err);\r\n return '';\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AuthModule as OAuthModule } from '@auth0/auth0-angular';\r\nimport { RoleContextService,TokenService } from './services';\r\nimport { TermsConditionsComponent } from '../public-api';\r\n\r\n@NgModule({\r\n imports: [\r\n OAuthModule,\r\n TermsConditionsComponent,\r\n \r\n ],\r\n providers: [RoleContextService, TokenService]\r\n})\r\nexport class AuthModule { }\r\n","import { Injectable, signal, WritableSignal } from '@angular/core';\r\nimport { LegalConfig } from './legal.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LegalService {\r\n\r\n private readonly _config: WritableSignal<LegalConfig> = signal({\r\n companyName: 'Inspection Depot, Inc',\r\n companyType: 'LLC',\r\n websiteUrl: 'https://www.bootog.com',\r\n supportEmail: 'support@bootog.com',\r\n privacyEmail: 'privacy@bootog.com',\r\n address: '3131 St Johns Bluff Rd S, Jacksonville, FL 32246',\r\n country: 'United States',\r\n privacyLastUpdated: 'September 30, 2025',\r\n termsLastUpdated: 'October 18, 2025'\r\n });\r\n\r\n readonly config = this._config.asReadonly();\r\n\r\n /** Optional: update dynamically from API / env / tenant */\r\n update(config: Partial<LegalConfig>) {\r\n this._config.update(c => ({ ...c, ...config }));\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, OnInit } from '@angular/core';\r\nimport { LegalService } from '../legal.service';\r\n@Component({\r\n imports: [\r\n CommonModule\r\n ],\r\n standalone: true,\r\n selector: 'app-privacy-policy',\r\n templateUrl: './privacy-policy.component.html',\r\n styleUrl: './privacy-policy.component.scss',\r\n})\r\nexport class PrivacyPolicyComponent {\r\n\r\n website = computed(() => this.config().websiteUrl);\r\n privacyEmail = computed(() => this.config().privacyEmail);\r\n\r\n constructor(private legal: LegalService) { }\r\n get config() {\r\n return this.legal.config;\r\n }\r\n\r\n}\r\n","<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { LegalService } from '../legal.service';\r\n@Component({\r\n imports: [\r\n CommonModule\r\n ],\r\n standalone: true,\r\n selector: 'app-terms-conditions',\r\n templateUrl: './terms-conditions.component.html',\r\n styleUrl: './terms-conditions.component.scss',\r\n})\r\nexport class TermsConditionsComponent {\r\n\r\n constructor(private legal: LegalService) { }\r\n\r\n get config() {\r\n return this.legal.config;\r\n }\r\n}\r\n","<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["OAuthModule","i1.LegalService"],"mappings":"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"}
1
+ {"version":3,"file":"rangs-auth0-lib.mjs","sources":["../../../projects/auth0-lib/src/lib/services/credentialing.service.ts","../../../projects/auth0-lib/src/lib/services/role-context.service.ts","../../../projects/auth0-lib/src/lib/services/token.service.ts","../../../projects/auth0-lib/src/lib/src/legal.service.ts","../../../projects/auth0-lib/src/lib/src/terms-conditions/terms-conditions.component.ts","../../../projects/auth0-lib/src/lib/src/terms-conditions/terms-conditions.component.html","../../../projects/auth0-lib/src/lib/src/privacy-policy/privacy-policy.component.ts","../../../projects/auth0-lib/src/lib/src/privacy-policy/privacy-policy.component.html","../../../projects/auth0-lib/src/lib/auth.module.ts","../../../projects/auth0-lib/src/rangs-auth0-lib.ts"],"sourcesContent":["import { computed, Injectable, Signal, signal } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialingService {\r\n\r\n\r\n private store = new Map<string, ReturnType<typeof signal<any>>>();\r\n\r\n /** Get signal for a key (auto-create if missing) */\r\n get<T>(key: string): Signal<T | null> {\r\n if (!this.store.has(key)) {\r\n this.store.set(key, signal<T | null>(null));\r\n }\r\n return computed(() => this.store.get(key)!());\r\n }\r\n\r\n /** Set value for a key */\r\n set<T>(key: string, value: T): void {\r\n if (!this.store.has(key)) {\r\n this.store.set(key, signal<T | null>(value));\r\n } else {\r\n this.store.get(key)!.set(value);\r\n }\r\n }\r\n\r\n /** Optional: clear single key */\r\n clear(key: string): void {\r\n this.store.delete(key);\r\n }\r\n\r\n /** Optional: clear everything */\r\n clearAll(): void {\r\n this.store.clear();\r\n }\r\n\r\n}\r\n","import { Injectable, signal, computed, effect } from '@angular/core';\r\nimport { RoleContextModel } from './role-context.model';\r\n//import { NgxPermissionsService } from 'ngx-permissions';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { TempUserModel } from './temp-user.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleContextService {\r\n\r\n private readonly STORAGE_KEY = 'im-role-context';\r\n private readonly bc = new BroadcastChannel('im-role-context-channel');\r\n\r\n // Store role context in signal (without permissions)\r\n private contextSignal = signal<RoleContextModel | null>(this.getStoredContext());\r\n context = this.contextSignal;\r\n\r\n // Store role context in signal (without permissions)\r\n private tempUserContextSignal = signal<TempUserModel | null>(null);\r\n tempUserContext = this.tempUserContextSignal;\r\n\r\n /** For opening side Nav after tenant/role switch */\r\n private sidNav = new BehaviorSubject<RoleContextModel | null>(null);\r\n readonly sidNav$ = this.sidNav.asObservable();\r\n\r\n // Store role context in signal (without permissions)\r\n private cloudFrontUrlSignal = signal<string | null>(this.getCloudFrontUrl());\r\n cloudFrontUrl = this.cloudFrontUrlSignal;\r\n\r\n constructor(\r\n // private permissionsService: NgxPermissionsService\r\n ) {\r\n\r\n /** Sync from BroadcastChannel */\r\n this.bc.onmessage = (ev) => {\r\n if (!this.isSameContext(ev.data)) {\r\n this.showCustomPopup();\r\n }\r\n };\r\n\r\n /** Sync from LocalStorage events (multi-tab) */\r\n window.addEventListener('storage', (ev) => {\r\n if (ev.key === this.STORAGE_KEY) {\r\n const newCtx = ev.newValue ? JSON.parse(ev.newValue) : null;\r\n if (!this.isSameContext(newCtx)) {\r\n this.showCustomPopup();\r\n }\r\n }\r\n });\r\n\r\n // 🔥 IMPORTANT: Load permissions in memory — DO NOT save them\r\n effect(() => {\r\n const ctx = this.contextSignal();\r\n });\r\n }\r\n\r\n isSameContext(newCtx: RoleContextModel | null): boolean {\r\n const current = this.contextSignal();\r\n return !!current && !!newCtx && current.roleName === newCtx.roleName && current.tenantId === newCtx.tenantId;\r\n }\r\n\r\n private showCustomPopup() {\r\n const modal = document.getElementById('roleChangeModal')!;\r\n modal.style.display = 'flex';\r\n\r\n const okBtn = document.getElementById('roleChangeOkBtn')!;\r\n okBtn.onclick = () => {\r\n window.location.href = window.location.origin;\r\n };\r\n }\r\n\r\n // Set role context WITHOUT saving permissions to storage\r\n setContext(ctx: RoleContextModel | null) {\r\n // Clone without permissions\r\n const saveCtx = ctx ? { ...ctx, permissions: undefined } : null;\r\n this.applyContext(saveCtx, true);\r\n\r\n // Notify subscribers\r\n this.sidNav.next(ctx);\r\n\r\n }\r\n\r\n clearContext() {\r\n this.applyContext(null, true);\r\n }\r\n\r\n clearTempUserContext() {\r\n this.applyTempUserContext(null);\r\n }\r\n\r\n\r\n // Internal store + broadcast\r\n private applyContext(ctx: RoleContextModel | null, broadcast: boolean) {\r\n if (ctx) {\r\n\r\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(ctx));\r\n } else {\r\n localStorage.removeItem(this.STORAGE_KEY);\r\n }\r\n\r\n this.contextSignal.set(ctx);\r\n\r\n if (broadcast) this.bc.postMessage(ctx);\r\n }\r\n\r\n // Internal store for Temp User Context\r\n applyTempUserContext(ctx: TempUserModel | null) {\r\n this.tempUserContextSignal.set(ctx);\r\n\r\n }\r\n // Load existing context (no permissions)\r\n private getStoredContext(): RoleContextModel | null {\r\n const raw = localStorage.getItem(this.STORAGE_KEY);\r\n return raw ? JSON.parse(raw) : null;\r\n }\r\n\r\n\r\n // Internal store for Cloud Front URL\r\n applyCloudUrl(ctx: string | null) {\r\n this.cloudFrontUrlSignal.set(ctx);\r\n }\r\n\r\n // Load Cloud Front URL\r\n private getCloudFrontUrl(): string | null {\r\n const raw = localStorage.getItem(this.STORAGE_KEY);\r\n return raw ?? null;\r\n }\r\n\r\n // Role check used by directive\r\n hasAnyRole(roles: string[]) {\r\n return computed(() => {\r\n const currentRole = this.contextSignal()?.roleName?.toLowerCase();\r\n return roles.some(r => r.toLowerCase() === currentRole);\r\n });\r\n }\r\n\r\n notAnyRole(roles: string[]) {\r\n return computed(() => !this.hasAnyRole(roles)());\r\n }\r\n\r\n hasRole(role: string) {\r\n return computed(() => {\r\n const currentRole = this.contextSignal()?.roleName?.toLowerCase();\r\n return currentRole === role.toLowerCase();\r\n });\r\n }\r\n\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { AuthService } from '@auth0/auth0-angular';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n constructor(private auth: AuthService) { }\r\n\r\n\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n return await firstValueFrom(this.auth.isAuthenticated$);\r\n }\r\n\r\n\r\n async getUserId(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.['user_id'] ?? null;\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return null;\r\n }\r\n }\r\n\r\n async getUserEmail(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n //console.log(user);\r\n return user?.email ?? null;\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return null;\r\n }\r\n }\r\n\r\n async getUserFirstName(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.given_name ?? '';\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return '';\r\n }\r\n }\r\n async getUserLastName(): Promise<string | null> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n return user?.family_name ?? '';\r\n } catch (err) {\r\n console.warn('User ID not available:', err);\r\n return '';\r\n }\r\n }\r\n\r\n async getUserFullName(): Promise<string> {\r\n try {\r\n const user = await firstValueFrom(this.auth.user$);\r\n const fullName = `${user?.family_name ?? ''} ${user?.given_name ?? ''}`.trim();\r\n return fullName || '';\r\n } catch (err) {\r\n console.warn('User not available:', err);\r\n return '';\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, signal, WritableSignal } from '@angular/core';\r\nimport { LegalConfig } from './legal.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LegalService {\r\n\r\n private readonly _config: WritableSignal<LegalConfig> = signal({\r\n companyName: 'Inspection Depot, Inc',\r\n companyType: 'LLC',\r\n websiteUrl: 'https://www.bootog.com',\r\n supportEmail: 'support@bootog.com',\r\n privacyEmail: 'privacy@bootog.com',\r\n address: '3131 St Johns Bluff Rd S, Jacksonville, FL 32246',\r\n country: 'United States',\r\n privacyLastUpdated: 'September 30, 2025',\r\n termsLastUpdated: 'October 18, 2025'\r\n });\r\n\r\n readonly config = this._config.asReadonly();\r\n\r\n /** Optional: update dynamically from API / env / tenant */\r\n update(config: Partial<LegalConfig>) {\r\n this._config.update(c => ({ ...c, ...config }));\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LegalService } from '../legal.service';\r\n@Component({\r\n standalone: false,\r\n selector: 'app-terms-conditions',\r\n templateUrl: './terms-conditions.component.html',\r\n styleUrl: './terms-conditions.component.scss',\r\n})\r\nexport class TermsConditionsComponent {\r\n\r\n constructor(private legal: LegalService) { }\r\n\r\n get config() {\r\n return this.legal.config;\r\n }\r\n}\r\n","<section class=\"legal-container\">\r\n\r\n <h1>Website Terms of Use</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().termsLastUpdated }}\r\n </p>\r\n\r\n <h2>Acceptance of Terms</h2>\r\n <p>\r\n By accessing {{ config().websiteUrl }},\r\n you agree to be bound by these Terms of Use\r\n provided by {{ config().companyName }}.\r\n </p>\r\n\r\n <h2>Eligibility</h2>\r\n <p>\r\n This Website is available only to users 18 years or older\r\n residing in the United States.\r\n </p>\r\n\r\n <h2>Intellectual Property</h2>\r\n <p>\r\n All content is owned by {{ config().companyName }}\r\n and protected by intellectual property laws.\r\n </p>\r\n\r\n <h2>Limitation of Liability</h2>\r\n <p>\r\n {{ config().companyName }} shall not be liable for damages\r\n arising from the use of this Website.\r\n </p>\r\n\r\n <h2>Governing Law</h2>\r\n <p>\r\n These terms are governed by the laws of the State of Florida.\r\n </p>\r\n\r\n <h2>Contact</h2>\r\n <p>\r\n Questions may be sent to\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </p>\r\n\r\n</section>","import { Component, computed, OnInit } from '@angular/core';\r\nimport { LegalService } from '../legal.service';\r\n@Component({\r\n standalone: false,\r\n selector: 'app-privacy-policy',\r\n templateUrl: './privacy-policy.component.html',\r\n styleUrl: './privacy-policy.component.scss',\r\n})\r\nexport class PrivacyPolicyComponent {\r\n\r\n website = computed(() => this.config().websiteUrl);\r\n privacyEmail = computed(() => this.config().privacyEmail);\r\n\r\n constructor(private legal: LegalService) { }\r\n get config() {\r\n return this.legal.config;\r\n }\r\n\r\n}\r\n","<section class=\"legal-container\">\r\n\r\n <h1>Website Privacy Policy</h1>\r\n <p class=\"updated\">\r\n Last Updated: {{ config().privacyLastUpdated }}\r\n </p>\r\n\r\n <h2>Introduction</h2>\r\n <p>\r\n {{ config().companyName }}, a {{ config().companyType }},\r\n respects your privacy and is committed to protecting it.\r\n This policy explains how we collect, use, and safeguard information\r\n when you visit\r\n <a [href]=\"website()\" target=\"_blank\">{{ website() }}</a>.\r\n </p>\r\n\r\n <h2>Children Under the Age of 16</h2>\r\n <p>\r\n Our Website is not intended for children under 16 years of age.\r\n We do not knowingly collect personal information from children.\r\n If you believe we have collected such information, contact us at\r\n <a [href]=\"'mailto:' + privacyEmail()\">\r\n {{ privacyEmail() }}\r\n </a>.\r\n </p>\r\n\r\n <h2>Information We Collect</h2>\r\n <ul>\r\n <li>Personal identifiers (name, email, phone)</li>\r\n <li>Internet and device information</li>\r\n <li>Usage and interaction data</li>\r\n </ul>\r\n\r\n <h2>How We Use Information</h2>\r\n <ul>\r\n <li>To operate and maintain services</li>\r\n <li>To communicate with users</li>\r\n <li>To improve performance and security</li>\r\n <li>To comply with legal obligations</li>\r\n </ul>\r\n\r\n <h2>Disclosure of Information</h2>\r\n <p>\r\n We may share information with service providers, affiliates,\r\n or when required by law.\r\n </p>\r\n\r\n <h2>Data Security</h2>\r\n <p>\r\n While we implement reasonable safeguards, no system is 100% secure.\r\n </p>\r\n\r\n <h2>Contact Information</h2>\r\n <address>\r\n {{ config().companyName }}<br />\r\n {{ config().address }}<br />\r\n {{ config().country }}<br />\r\n Email:\r\n <a [href]=\"'mailto:' + config().supportEmail\">\r\n {{ config().supportEmail }}\r\n </a>\r\n </address>\r\n\r\n</section>","import { NgModule } from '@angular/core';\r\nimport { AuthModule as OAuthModule } from '@auth0/auth0-angular';\r\nimport { RoleContextService, TokenService } from './services';\r\nimport { TermsConditionsComponent } from './src/terms-conditions/terms-conditions.component';\r\nimport { PrivacyPolicyComponent } from './src/privacy-policy/privacy-policy.component';\r\nimport { LegalService } from '../public-api';\r\n@NgModule({\r\n declarations: [\r\n TermsConditionsComponent,\r\n PrivacyPolicyComponent\r\n ],\r\n imports: [\r\n OAuthModule\r\n ],\r\n exports: [\r\n TermsConditionsComponent,\r\n PrivacyPolicyComponent\r\n ],\r\n providers: [RoleContextService, TokenService, LegalService]\r\n})\r\nexport class AuthModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LegalService","OAuthModule"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
- import * as i1 from '@auth0/auth0-angular';
4
- import { AuthService } from '@auth0/auth0-angular';
5
3
  import * as _rangs_auth0_lib from '@rangs/auth0-lib';
4
+ import * as i3 from '@auth0/auth0-angular';
5
+ import { AuthService } from '@auth0/auth0-angular';
6
6
  import * as rxjs from 'rxjs';
7
7
 
8
8
  interface LegalConfig {
@@ -31,12 +31,22 @@ declare class TermsConditionsComponent {
31
31
  constructor(legal: LegalService);
32
32
  get config(): i0.Signal<_rangs_auth0_lib.LegalConfig>;
33
33
  static ɵfac: i0.ɵɵFactoryDeclaration<TermsConditionsComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<TermsConditionsComponent, "app-terms-conditions", never, {}, {}, never, never, true, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<TermsConditionsComponent, "app-terms-conditions", never, {}, {}, never, never, false, never>;
35
+ }
36
+
37
+ declare class PrivacyPolicyComponent {
38
+ private legal;
39
+ website: i0.Signal<string>;
40
+ privacyEmail: i0.Signal<string>;
41
+ constructor(legal: LegalService);
42
+ get config(): i0.Signal<_rangs_auth0_lib.LegalConfig>;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrivacyPolicyComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrivacyPolicyComponent, "app-privacy-policy", never, {}, {}, never, never, false, never>;
35
45
  }
36
46
 
37
47
  declare class AuthModule {
38
48
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthModule, never>;
39
- static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, never, [typeof i1.AuthModule, typeof TermsConditionsComponent], never>;
49
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, [typeof TermsConditionsComponent, typeof PrivacyPolicyComponent], [typeof i3.AuthModule], [typeof TermsConditionsComponent, typeof PrivacyPolicyComponent]>;
40
50
  static ɵinj: i0.ɵɵInjectorDeclaration<AuthModule>;
41
51
  }
42
52
 
@@ -105,6 +115,7 @@ declare class RoleContextService {
105
115
  private applyContext;
106
116
  applyTempUserContext(ctx: TempUserModel | null): void;
107
117
  private getStoredContext;
118
+ applyCloudUrl(ctx: string | null): void;
108
119
  private getCloudFrontUrl;
109
120
  hasAnyRole(roles: string[]): i0.Signal<boolean>;
110
121
  notAnyRole(roles: string[]): i0.Signal<boolean>;
@@ -140,15 +151,5 @@ declare class CredentialingService {
140
151
  static ɵprov: i0.ɵɵInjectableDeclaration<CredentialingService>;
141
152
  }
142
153
 
143
- declare class PrivacyPolicyComponent {
144
- private legal;
145
- website: i0.Signal<string>;
146
- privacyEmail: i0.Signal<string>;
147
- constructor(legal: LegalService);
148
- get config(): i0.Signal<_rangs_auth0_lib.LegalConfig>;
149
- static ɵfac: i0.ɵɵFactoryDeclaration<PrivacyPolicyComponent, never>;
150
- static ɵcmp: i0.ɵɵComponentDeclaration<PrivacyPolicyComponent, "app-privacy-policy", never, {}, {}, never, never, true, never>;
151
- }
152
-
153
154
  export { AuthModule, CredentialingService, LegalService, PrivacyPolicyComponent, RoleContextService, TermsConditionsComponent, TokenService };
154
155
  export type { LegalConfig, RoleContextModel, TempUserModel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangs/auth0-lib",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0",