@daruix/hub-auth 0.0.2 → 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.
|
@@ -27,13 +27,13 @@ class HubSessionService {
|
|
|
27
27
|
refreshToken = this.refreshTokenSignal.asReadonly();
|
|
28
28
|
isLoggedIn = computed(() => !!this.accessToken() && !!this.usuario(), ...(ngDevMode ? [{ debugName: "isLoggedIn" }] : /* istanbul ignore next */ []));
|
|
29
29
|
userName = computed(() => this.usuario()?.nome ?? this.usuario()?.username ?? '', ...(ngDevMode ? [{ debugName: "userName" }] : /* istanbul ignore next */ []));
|
|
30
|
-
userPermissions = computed(() => this.usuario()?.
|
|
31
|
-
|
|
30
|
+
userPermissions = computed(() => this.usuario()?.permissoes ?? [], ...(ngDevMode ? [{ debugName: "userPermissions" }] : /* istanbul ignore next */ []));
|
|
31
|
+
userModules = computed(() => this.usuario()?.modulos ?? [], ...(ngDevMode ? [{ debugName: "userModules" }] : /* istanbul ignore next */ []));
|
|
32
32
|
hasPermission(permission) {
|
|
33
33
|
return this.userPermissions().includes(permission);
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
return this.
|
|
35
|
+
hasModule(moduleSlug) {
|
|
36
|
+
return this.userModules().some((modulo) => modulo.slug === moduleSlug);
|
|
37
37
|
}
|
|
38
38
|
setSession(params) {
|
|
39
39
|
localStorage.setItem(this.userKey, JSON.stringify(params.usuario));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daruix-hub-auth.mjs","sources":["../../../projects/hub-auth/src/lib/tokens/hub-auth-storage.tokens.ts","../../../projects/hub-auth/src/lib/services/hub-session.service.ts","../../../projects/hub-auth/src/lib/interceptors/hub-auth.interceptor.ts","../../../projects/hub-auth/src/lib/guards/hub-auth.guard.ts","../../../projects/hub-auth/src/lib/guards/hub-permission.guard.ts","../../../projects/hub-auth/src/daruix-hub-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const HUB_ACCESS_TOKEN_KEY = new InjectionToken<string>(\r\n 'HUB_ACCESS_TOKEN_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_access_token',\r\n }\r\n);\r\n\r\nexport const HUB_REFRESH_TOKEN_KEY = new InjectionToken<string>(\r\n 'HUB_REFRESH_TOKEN_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_refresh_token',\r\n }\r\n);\r\n\r\nexport const HUB_USER_KEY = new InjectionToken<string>(\r\n 'HUB_USER_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_user',\r\n }\r\n);\r\n","import { computed, inject, Injectable, signal } from '@angular/core';\r\n\r\nimport { HubUser } from '../models/hub-auth.models';\r\nimport {\r\n HUB_ACCESS_TOKEN_KEY,\r\n HUB_REFRESH_TOKEN_KEY,\r\n HUB_USER_KEY,\r\n} from '../tokens/hub-auth-storage.tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HubSessionService {\r\n private readonly accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);\r\n private readonly refreshTokenKey = inject(HUB_REFRESH_TOKEN_KEY);\r\n private readonly userKey = inject(HUB_USER_KEY);\r\n\r\n private readonly usuarioSignal = signal<HubUser | null>(\r\n this.loadUserFromStorage()\r\n );\r\n\r\n private readonly accessTokenSignal = signal<string | null>(\r\n localStorage.getItem(this.accessTokenKey)\r\n );\r\n\r\n private readonly refreshTokenSignal = signal<string | null>(\r\n localStorage.getItem(this.refreshTokenKey)\r\n );\r\n\r\n readonly usuario = this.usuarioSignal.asReadonly();\r\n readonly accessToken = this.accessTokenSignal.asReadonly();\r\n readonly refreshToken = this.refreshTokenSignal.asReadonly();\r\n\r\n readonly isLoggedIn = computed(() =>\r\n !!this.accessToken() && !!this.usuario()\r\n );\r\n\r\n readonly userName = computed(() =>\r\n this.usuario()?.nome ?? this.usuario()?.username ?? ''\r\n );\r\n\r\n readonly userPermissions = computed(() =>\r\n this.usuario()?.permissions ?? []\r\n );\r\n\r\n readonly userApps = computed(() =>\r\n this.usuario()?.apps ?? []\r\n );\r\n\r\n hasPermission(permission: string): boolean {\r\n return this.userPermissions().includes(permission);\r\n }\r\n\r\n hasApp(appId: string): boolean {\r\n return this.userApps().includes(appId);\r\n }\r\n\r\n setSession(params: {\r\n usuario: HubUser;\r\n accessToken: string;\r\n refreshToken: string;\r\n }): void {\r\n localStorage.setItem(this.userKey, JSON.stringify(params.usuario));\r\n localStorage.setItem(this.accessTokenKey, params.accessToken);\r\n localStorage.setItem(this.refreshTokenKey, params.refreshToken);\r\n\r\n this.usuarioSignal.set(params.usuario);\r\n this.accessTokenSignal.set(params.accessToken);\r\n this.refreshTokenSignal.set(params.refreshToken);\r\n }\r\n\r\n setUsuario(usuario: HubUser): void {\r\n localStorage.setItem(this.userKey, JSON.stringify(usuario));\r\n this.usuarioSignal.set(usuario);\r\n }\r\n\r\n setAccessToken(accessToken: string): void {\r\n localStorage.setItem(this.accessTokenKey, accessToken);\r\n this.accessTokenSignal.set(accessToken);\r\n }\r\n\r\n clearSession(): void {\r\n localStorage.removeItem(this.userKey);\r\n localStorage.removeItem(this.accessTokenKey);\r\n localStorage.removeItem(this.refreshTokenKey);\r\n\r\n this.usuarioSignal.set(null);\r\n this.accessTokenSignal.set(null);\r\n this.refreshTokenSignal.set(null);\r\n }\r\n\r\n reloadFromStorage(): void {\r\n this.usuarioSignal.set(this.loadUserFromStorage());\r\n this.accessTokenSignal.set(localStorage.getItem(this.accessTokenKey));\r\n this.refreshTokenSignal.set(localStorage.getItem(this.refreshTokenKey));\r\n }\r\n\r\n private loadUserFromStorage(): HubUser | null {\r\n const usuario = localStorage.getItem(this.userKey);\r\n\r\n if (!usuario) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(usuario) as HubUser;\r\n } catch {\r\n localStorage.removeItem(this.userKey);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { HUB_ACCESS_TOKEN_KEY } from '../tokens/hub-auth-storage.tokens';\r\n\r\nexport const hubAuthInterceptor: HttpInterceptorFn = (req, next) => {\r\n const accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);\r\n const token = localStorage.getItem(accessTokenKey);\r\n\r\n if (!token) {\r\n return next(req);\r\n }\r\n\r\n const authRequest = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n\r\n return next(authRequest);\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\n\r\nimport { HubSessionService } from '../services/hub-session.service';\r\n\r\nexport const hubAuthGuard: CanActivateFn = () => {\r\n const session = inject(HubSessionService);\r\n const router = inject(Router);\r\n\r\n session.reloadFromStorage();\r\n\r\n if (session.isLoggedIn()) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree(['/login']);\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\n\r\nimport { HubSessionService } from '../services/hub-session.service';\r\n\r\nexport const hubPermissionGuard: CanActivateFn = (route) => {\r\n const session = inject(HubSessionService);\r\n const router = inject(Router);\r\n\r\n session.reloadFromStorage();\r\n\r\n const requiredPermission = route.data?.['permission'] as string | undefined;\r\n\r\n if (!requiredPermission) {\r\n return true;\r\n }\r\n\r\n if (session.hasPermission(requiredPermission)) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree(['/unauthorized']);\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daruix-hub-auth.mjs","sources":["../../../projects/hub-auth/src/lib/tokens/hub-auth-storage.tokens.ts","../../../projects/hub-auth/src/lib/services/hub-session.service.ts","../../../projects/hub-auth/src/lib/interceptors/hub-auth.interceptor.ts","../../../projects/hub-auth/src/lib/guards/hub-auth.guard.ts","../../../projects/hub-auth/src/lib/guards/hub-permission.guard.ts","../../../projects/hub-auth/src/daruix-hub-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const HUB_ACCESS_TOKEN_KEY = new InjectionToken<string>(\r\n 'HUB_ACCESS_TOKEN_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_access_token',\r\n }\r\n);\r\n\r\nexport const HUB_REFRESH_TOKEN_KEY = new InjectionToken<string>(\r\n 'HUB_REFRESH_TOKEN_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_refresh_token',\r\n }\r\n);\r\n\r\nexport const HUB_USER_KEY = new InjectionToken<string>(\r\n 'HUB_USER_KEY',\r\n {\r\n providedIn: 'root',\r\n factory: () => 'daruix_hub_user',\r\n }\r\n);\r\n","import { computed, inject, Injectable, signal } from '@angular/core';\r\n\r\nimport { HubUser } from '../models/hub-auth.models';\r\nimport {\r\n HUB_ACCESS_TOKEN_KEY,\r\n HUB_REFRESH_TOKEN_KEY,\r\n HUB_USER_KEY,\r\n} from '../tokens/hub-auth-storage.tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HubSessionService {\r\n private readonly accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);\r\n private readonly refreshTokenKey = inject(HUB_REFRESH_TOKEN_KEY);\r\n private readonly userKey = inject(HUB_USER_KEY);\r\n\r\n private readonly usuarioSignal = signal<HubUser | null>(\r\n this.loadUserFromStorage()\r\n );\r\n\r\n private readonly accessTokenSignal = signal<string | null>(\r\n localStorage.getItem(this.accessTokenKey)\r\n );\r\n\r\n private readonly refreshTokenSignal = signal<string | null>(\r\n localStorage.getItem(this.refreshTokenKey)\r\n );\r\n\r\n readonly usuario = this.usuarioSignal.asReadonly();\r\n readonly accessToken = this.accessTokenSignal.asReadonly();\r\n readonly refreshToken = this.refreshTokenSignal.asReadonly();\r\n\r\n readonly isLoggedIn = computed(() =>\r\n !!this.accessToken() && !!this.usuario()\r\n );\r\n\r\n readonly userName = computed(() =>\r\n this.usuario()?.nome ?? this.usuario()?.username ?? ''\r\n );\r\n\r\n readonly userPermissions = computed(() =>\r\n this.usuario()?.permissoes ?? []\r\n );\r\n\r\n readonly userModules = computed(() =>\r\n this.usuario()?.modulos ?? []\r\n );\r\n\r\n hasPermission(permission: string): boolean {\r\n return this.userPermissions().includes(permission);\r\n }\r\n\r\n hasModule(moduleSlug: string): boolean {\r\n return this.userModules().some((modulo) => modulo.slug === moduleSlug);\r\n }\r\n\r\n\r\n setSession(params: {\r\n usuario: HubUser;\r\n accessToken: string;\r\n refreshToken: string;\r\n }): void {\r\n localStorage.setItem(this.userKey, JSON.stringify(params.usuario));\r\n localStorage.setItem(this.accessTokenKey, params.accessToken);\r\n localStorage.setItem(this.refreshTokenKey, params.refreshToken);\r\n\r\n this.usuarioSignal.set(params.usuario);\r\n this.accessTokenSignal.set(params.accessToken);\r\n this.refreshTokenSignal.set(params.refreshToken);\r\n }\r\n\r\n setUsuario(usuario: HubUser): void {\r\n localStorage.setItem(this.userKey, JSON.stringify(usuario));\r\n this.usuarioSignal.set(usuario);\r\n }\r\n\r\n setAccessToken(accessToken: string): void {\r\n localStorage.setItem(this.accessTokenKey, accessToken);\r\n this.accessTokenSignal.set(accessToken);\r\n }\r\n\r\n clearSession(): void {\r\n localStorage.removeItem(this.userKey);\r\n localStorage.removeItem(this.accessTokenKey);\r\n localStorage.removeItem(this.refreshTokenKey);\r\n\r\n this.usuarioSignal.set(null);\r\n this.accessTokenSignal.set(null);\r\n this.refreshTokenSignal.set(null);\r\n }\r\n\r\n reloadFromStorage(): void {\r\n this.usuarioSignal.set(this.loadUserFromStorage());\r\n this.accessTokenSignal.set(localStorage.getItem(this.accessTokenKey));\r\n this.refreshTokenSignal.set(localStorage.getItem(this.refreshTokenKey));\r\n }\r\n\r\n private loadUserFromStorage(): HubUser | null {\r\n const usuario = localStorage.getItem(this.userKey);\r\n\r\n if (!usuario) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(usuario) as HubUser;\r\n } catch {\r\n localStorage.removeItem(this.userKey);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { HttpInterceptorFn } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { HUB_ACCESS_TOKEN_KEY } from '../tokens/hub-auth-storage.tokens';\r\n\r\nexport const hubAuthInterceptor: HttpInterceptorFn = (req, next) => {\r\n const accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);\r\n const token = localStorage.getItem(accessTokenKey);\r\n\r\n if (!token) {\r\n return next(req);\r\n }\r\n\r\n const authRequest = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n\r\n return next(authRequest);\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\n\r\nimport { HubSessionService } from '../services/hub-session.service';\r\n\r\nexport const hubAuthGuard: CanActivateFn = () => {\r\n const session = inject(HubSessionService);\r\n const router = inject(Router);\r\n\r\n session.reloadFromStorage();\r\n\r\n if (session.isLoggedIn()) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree(['/login']);\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\n\r\nimport { HubSessionService } from '../services/hub-session.service';\r\n\r\nexport const hubPermissionGuard: CanActivateFn = (route) => {\r\n const session = inject(HubSessionService);\r\n const router = inject(Router);\r\n\r\n session.reloadFromStorage();\r\n\r\n const requiredPermission = route.data?.['permission'] as string | undefined;\r\n\r\n if (!requiredPermission) {\r\n return true;\r\n }\r\n\r\n if (session.hasPermission(requiredPermission)) {\r\n return true;\r\n }\r\n\r\n return router.createUrlTree(['/unauthorized']);\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,40 @@
|
|
|
1
|
+
import * as _daruix_hub_auth from '@daruix/hub-auth';
|
|
1
2
|
import * as _angular_core from '@angular/core';
|
|
2
3
|
import { InjectionToken } from '@angular/core';
|
|
3
4
|
import { HttpInterceptorFn } from '@angular/common/http';
|
|
4
5
|
import { CanActivateFn } from '@angular/router';
|
|
5
6
|
|
|
7
|
+
interface HubRemoteModule {
|
|
8
|
+
remote_name: string;
|
|
9
|
+
remote_entry: string;
|
|
10
|
+
exposed_module: string;
|
|
11
|
+
}
|
|
12
|
+
interface HubModulo {
|
|
13
|
+
slug: string;
|
|
14
|
+
nome: string;
|
|
15
|
+
rota: string;
|
|
16
|
+
icone: string;
|
|
17
|
+
permissao: string;
|
|
18
|
+
desktop_enabled: boolean;
|
|
19
|
+
mobile_enabled: boolean;
|
|
20
|
+
mfe_enabled: boolean;
|
|
21
|
+
legacy_enabled: boolean;
|
|
22
|
+
favorito: boolean;
|
|
23
|
+
remote: HubRemoteModule | null;
|
|
24
|
+
}
|
|
6
25
|
interface HubUser {
|
|
7
26
|
id_usuario: number;
|
|
8
27
|
username: string;
|
|
9
28
|
nome: string;
|
|
10
29
|
email: string;
|
|
11
|
-
|
|
12
|
-
|
|
30
|
+
tipo_usuario: string;
|
|
31
|
+
grupo: string;
|
|
32
|
+
permissoes: string[];
|
|
33
|
+
modulos: HubModulo[];
|
|
34
|
+
origem: string;
|
|
35
|
+
ativo: boolean;
|
|
36
|
+
is_staff: boolean;
|
|
37
|
+
is_superuser: boolean;
|
|
13
38
|
}
|
|
14
39
|
interface HubSession {
|
|
15
40
|
usuario: HubUser | null;
|
|
@@ -30,9 +55,9 @@ declare class HubSessionService {
|
|
|
30
55
|
readonly isLoggedIn: _angular_core.Signal<boolean>;
|
|
31
56
|
readonly userName: _angular_core.Signal<string>;
|
|
32
57
|
readonly userPermissions: _angular_core.Signal<string[]>;
|
|
33
|
-
readonly
|
|
58
|
+
readonly userModules: _angular_core.Signal<_daruix_hub_auth.HubModulo[]>;
|
|
34
59
|
hasPermission(permission: string): boolean;
|
|
35
|
-
|
|
60
|
+
hasModule(moduleSlug: string): boolean;
|
|
36
61
|
setSession(params: {
|
|
37
62
|
usuario: HubUser;
|
|
38
63
|
accessToken: string;
|
|
@@ -58,4 +83,4 @@ declare const HUB_REFRESH_TOKEN_KEY: InjectionToken<string>;
|
|
|
58
83
|
declare const HUB_USER_KEY: InjectionToken<string>;
|
|
59
84
|
|
|
60
85
|
export { HUB_ACCESS_TOKEN_KEY, HUB_REFRESH_TOKEN_KEY, HUB_USER_KEY, HubSessionService, hubAuthGuard, hubAuthInterceptor, hubPermissionGuard };
|
|
61
|
-
export type { HubSession, HubUser };
|
|
86
|
+
export type { HubModulo, HubRemoteModule, HubSession, HubUser };
|