@rangs/auth0-lib 0.0.4 → 0.0.6

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,13 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, effect, computed, Injectable, NgModule } from '@angular/core';
3
- import * as i1 from 'ngx-permissions';
4
- import { NgxPermissionsModule } from 'ngx-permissions';
5
- import * as i1$1 from '@auth0/auth0-angular';
3
+ import * as i1 from '@auth0/auth0-angular';
6
4
  import { AuthModule as AuthModule$1 } from '@auth0/auth0-angular';
7
5
  import { BehaviorSubject, firstValueFrom } from 'rxjs';
8
6
 
9
7
  class RoleContextService {
10
- permissionsService;
11
8
  STORAGE_KEY = 'im-role-context';
12
9
  bc = new BroadcastChannel('im-role-context-channel');
13
10
  // Store role context in signal (without permissions)
@@ -16,8 +13,7 @@ class RoleContextService {
16
13
  /** For opening side Nav after tenant/role switch */
17
14
  sidNav = new BehaviorSubject(null);
18
15
  sidNav$ = this.sidNav.asObservable();
19
- constructor(permissionsService) {
20
- this.permissionsService = permissionsService;
16
+ constructor() {
21
17
  /** Sync from BroadcastChannel */
22
18
  this.bc.onmessage = (ev) => {
23
19
  if (!this.isSameContext(ev.data)) {
@@ -36,19 +32,16 @@ class RoleContextService {
36
32
  // 🔥 IMPORTANT: Load permissions in memory — DO NOT save them
37
33
  effect(() => {
38
34
  const ctx = this.contextSignal();
39
- this.permissionsService.flushPermissions();
35
+ // this.permissionsService.flushPermissions();
40
36
  if (ctx?.permissions?.length) {
41
37
  // Load only in memory, not persisted
42
- this.permissionsService.loadPermissions(ctx.permissions);
38
+ // this.permissionsService.loadPermissions(ctx.permissions);
43
39
  }
44
40
  });
45
41
  }
46
42
  isSameContext(newCtx) {
47
43
  const current = this.contextSignal();
48
- return !!current &&
49
- !!newCtx &&
50
- current.roleName === newCtx.roleName &&
51
- current.tenantId === newCtx.tenantId;
44
+ return !!current && !!newCtx && current.roleName === newCtx.roleName && current.tenantId === newCtx.tenantId;
52
45
  }
53
46
  showCustomPopup() {
54
47
  const modal = document.getElementById('roleChangeModal');
@@ -65,14 +58,14 @@ class RoleContextService {
65
58
  this.applyContext(saveCtx, true);
66
59
  // Permissions still applied in memory
67
60
  if (ctx?.permissions) {
68
- this.permissionsService.flushPermissions();
69
- this.permissionsService.loadPermissions(ctx.permissions);
61
+ // this.permissionsService.flushPermissions();
62
+ // this.permissionsService.loadPermissions(ctx.permissions);
70
63
  }
71
64
  // Notify subscribers
72
65
  this.sidNav.next(ctx);
73
66
  }
74
67
  clearContext() {
75
- this.permissionsService.flushPermissions();
68
+ //this.permissionsService.flushPermissions();
76
69
  this.applyContext(null, true);
77
70
  }
78
71
  // Internal store + broadcast
@@ -103,7 +96,13 @@ class RoleContextService {
103
96
  notAnyRole(roles) {
104
97
  return computed(() => !this.hasAnyRole(roles)());
105
98
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RoleContextService, deps: [{ token: i1.NgxPermissionsService }], target: i0.ɵɵFactoryTarget.Injectable });
99
+ hasRole(role) {
100
+ return computed(() => {
101
+ const currentRole = this.contextSignal()?.roleName?.toLowerCase();
102
+ return currentRole === role.toLowerCase();
103
+ });
104
+ }
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RoleContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
107
106
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RoleContextService, providedIn: 'root' });
108
107
  }
109
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: RoleContextService, decorators: [{
@@ -111,7 +110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
111
110
  args: [{
112
111
  providedIn: 'root'
113
112
  }]
114
- }], ctorParameters: () => [{ type: i1.NgxPermissionsService }] });
113
+ }], ctorParameters: () => [] });
115
114
 
116
115
  class TokenService {
117
116
  auth;
@@ -134,7 +133,7 @@ class TokenService {
134
133
  async getUserEmail() {
135
134
  try {
136
135
  const user = await firstValueFrom(this.auth.user$);
137
- console.log(user);
136
+ //console.log(user);
138
137
  return user?.email ?? null;
139
138
  }
140
139
  catch (err) {
@@ -173,7 +172,7 @@ class TokenService {
173
172
  return '';
174
173
  }
175
174
  }
176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TokenService, deps: [{ token: i1$1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TokenService, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
177
176
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TokenService, providedIn: 'root' });
178
177
  }
179
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: TokenService, decorators: [{
@@ -181,20 +180,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
181
180
  args: [{
182
181
  providedIn: 'root'
183
182
  }]
184
- }], ctorParameters: () => [{ type: i1$1.AuthService }] });
183
+ }], ctorParameters: () => [{ type: i1.AuthService }] });
185
184
 
186
185
  class AuthModule {
187
186
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
188
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, imports: [NgxPermissionsModule,
187
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, imports: [
188
+ // NgxPermissionsModule,
189
189
  AuthModule$1] });
190
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, providers: [RoleContextService, TokenService], imports: [NgxPermissionsModule,
190
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, providers: [RoleContextService, TokenService], imports: [
191
+ // NgxPermissionsModule,
191
192
  AuthModule$1] });
192
193
  }
193
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AuthModule, decorators: [{
194
195
  type: NgModule,
195
196
  args: [{
196
197
  imports: [
197
- NgxPermissionsModule,
198
+ // NgxPermissionsModule,
198
199
  AuthModule$1
199
200
  ],
200
201
  providers: [RoleContextService, TokenService]
@@ -1 +1 @@
1
- {"version":3,"file":"rangs-auth0-lib.mjs","sources":["../../../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/rangs-auth0-lib.ts"],"sourcesContent":["import { Injectable, signal, computed, effect } from '@angular/core';\r\nimport { RoleContextModel } from './role-context.model';\r\nimport { NgxPermissionsService } from 'ngx-permissions';\r\nimport { BehaviorSubject } from 'rxjs';\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 /** 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 constructor(private permissionsService: NgxPermissionsService) {\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 this.permissionsService.flushPermissions();\r\n\r\n if (ctx?.permissions?.length) {\r\n // Load only in memory, not persisted\r\n this.permissionsService.loadPermissions(ctx.permissions);\r\n }\r\n });\r\n }\r\n\r\n\r\n isSameContext(newCtx: RoleContextModel | null): boolean {\r\n const current = this.contextSignal();\r\n\r\n return !!current &&\r\n !!newCtx &&\r\n current.roleName === newCtx.roleName &&\r\n current.tenantId === newCtx.tenantId;\r\n}\r\n\r\n\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 // Permissions still applied in memory\r\n if (ctx?.permissions) {\r\n this.permissionsService.flushPermissions();\r\n this.permissionsService.loadPermissions(ctx.permissions);\r\n }\r\n\r\n // Notify subscribers\r\n this.sidNav.next(ctx);\r\n\r\n }\r\n\r\n clearContext() {\r\n this.permissionsService.flushPermissions();\r\n this.applyContext(null, true);\r\n }\r\n\r\n // Internal store + broadcast\r\n private applyContext(ctx: RoleContextModel | null, broadcast: boolean) {\r\n if (ctx) {\r\n const { permissions, ...storeOnly } = ctx;\r\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(storeOnly));\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 // 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 // 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 \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 { NgxPermissionsModule } from 'ngx-permissions';\r\nimport { AuthModule as OAuthModule } from '@auth0/auth0-angular';\r\nimport { RoleContextService,TokenService } from './services';\r\n\r\n@NgModule({\r\n imports: [\r\n NgxPermissionsModule,\r\n OAuthModule\r\n ],\r\n providers: [RoleContextService, TokenService]\r\n})\r\nexport class AuthModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","OAuthModule"],"mappings":"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"}
1
+ {"version":3,"file":"rangs-auth0-lib.mjs","sources":["../../../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/rangs-auth0-lib.ts"],"sourcesContent":["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\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 /** 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 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 // this.permissionsService.flushPermissions();\r\n\r\n if (ctx?.permissions?.length) {\r\n // Load only in memory, not persisted\r\n // this.permissionsService.loadPermissions(ctx.permissions);\r\n }\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 // Permissions still applied in memory\r\n if (ctx?.permissions) {\r\n // this.permissionsService.flushPermissions();\r\n // this.permissionsService.loadPermissions(ctx.permissions);\r\n }\r\n\r\n // Notify subscribers\r\n this.sidNav.next(ctx);\r\n\r\n }\r\n\r\n clearContext() {\r\n //this.permissionsService.flushPermissions();\r\n this.applyContext(null, true);\r\n }\r\n\r\n // Internal store + broadcast\r\n private applyContext(ctx: RoleContextModel | null, broadcast: boolean) {\r\n if (ctx) {\r\n const { permissions, ...storeOnly } = ctx;\r\n localStorage.setItem(this.STORAGE_KEY, JSON.stringify(storeOnly));\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 // 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 // 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\n//import { NgxPermissionsModule } from 'ngx-permissions';\r\nimport { AuthModule as OAuthModule } from '@auth0/auth0-angular';\r\nimport { RoleContextService,TokenService } from './services';\r\n\r\n@NgModule({\r\n imports: [\r\n // NgxPermissionsModule,\r\n OAuthModule\r\n ],\r\n providers: [RoleContextService, TokenService]\r\n})\r\nexport class AuthModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["OAuthModule"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,13 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import * as i1 from 'ngx-permissions';
3
- import { NgxPermissionsService } from 'ngx-permissions';
4
- import * as i2 from '@auth0/auth0-angular';
2
+ import * as i1 from '@auth0/auth0-angular';
5
3
  import { AuthService } from '@auth0/auth0-angular';
6
4
  import * as rxjs from 'rxjs';
7
5
 
8
6
  declare class AuthModule {
9
7
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, never, [typeof i1.NgxPermissionsModule, typeof i2.AuthModule], never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AuthModule, never, [typeof i1.AuthModule], never>;
11
9
  static ɵinj: i0.ɵɵInjectorDeclaration<AuthModule>;
12
10
  }
13
11
 
@@ -31,10 +29,10 @@ interface RoleContextModel {
31
29
  permissions?: string[];
32
30
  roles: string[];
33
31
  address: string;
32
+ tenantBio: string;
34
33
  }
35
34
 
36
35
  declare class RoleContextService {
37
- private permissionsService;
38
36
  private readonly STORAGE_KEY;
39
37
  private readonly bc;
40
38
  private contextSignal;
@@ -42,7 +40,7 @@ declare class RoleContextService {
42
40
  /** For opening side Nav after tenant/role switch */
43
41
  private sidNav;
44
42
  readonly sidNav$: rxjs.Observable<RoleContextModel | null>;
45
- constructor(permissionsService: NgxPermissionsService);
43
+ constructor();
46
44
  isSameContext(newCtx: RoleContextModel | null): boolean;
47
45
  private showCustomPopup;
48
46
  setContext(ctx: RoleContextModel | null): void;
@@ -51,6 +49,7 @@ declare class RoleContextService {
51
49
  private getStoredContext;
52
50
  hasAnyRole(roles: string[]): i0.Signal<boolean>;
53
51
  notAnyRole(roles: string[]): i0.Signal<boolean>;
52
+ hasRole(role: string): i0.Signal<boolean>;
54
53
  static ɵfac: i0.ɵɵFactoryDeclaration<RoleContextService, never>;
55
54
  static ɵprov: i0.ɵɵInjectableDeclaration<RoleContextService>;
56
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangs/auth0-lib",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0",