@daruix/hub-auth 0.0.2
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.
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, signal, computed, Injectable } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
|
|
5
|
+
const HUB_ACCESS_TOKEN_KEY = new InjectionToken('HUB_ACCESS_TOKEN_KEY', {
|
|
6
|
+
providedIn: 'root',
|
|
7
|
+
factory: () => 'daruix_hub_access_token',
|
|
8
|
+
});
|
|
9
|
+
const HUB_REFRESH_TOKEN_KEY = new InjectionToken('HUB_REFRESH_TOKEN_KEY', {
|
|
10
|
+
providedIn: 'root',
|
|
11
|
+
factory: () => 'daruix_hub_refresh_token',
|
|
12
|
+
});
|
|
13
|
+
const HUB_USER_KEY = new InjectionToken('HUB_USER_KEY', {
|
|
14
|
+
providedIn: 'root',
|
|
15
|
+
factory: () => 'daruix_hub_user',
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
class HubSessionService {
|
|
19
|
+
accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);
|
|
20
|
+
refreshTokenKey = inject(HUB_REFRESH_TOKEN_KEY);
|
|
21
|
+
userKey = inject(HUB_USER_KEY);
|
|
22
|
+
usuarioSignal = signal(this.loadUserFromStorage(), ...(ngDevMode ? [{ debugName: "usuarioSignal" }] : /* istanbul ignore next */ []));
|
|
23
|
+
accessTokenSignal = signal(localStorage.getItem(this.accessTokenKey), ...(ngDevMode ? [{ debugName: "accessTokenSignal" }] : /* istanbul ignore next */ []));
|
|
24
|
+
refreshTokenSignal = signal(localStorage.getItem(this.refreshTokenKey), ...(ngDevMode ? [{ debugName: "refreshTokenSignal" }] : /* istanbul ignore next */ []));
|
|
25
|
+
usuario = this.usuarioSignal.asReadonly();
|
|
26
|
+
accessToken = this.accessTokenSignal.asReadonly();
|
|
27
|
+
refreshToken = this.refreshTokenSignal.asReadonly();
|
|
28
|
+
isLoggedIn = computed(() => !!this.accessToken() && !!this.usuario(), ...(ngDevMode ? [{ debugName: "isLoggedIn" }] : /* istanbul ignore next */ []));
|
|
29
|
+
userName = computed(() => this.usuario()?.nome ?? this.usuario()?.username ?? '', ...(ngDevMode ? [{ debugName: "userName" }] : /* istanbul ignore next */ []));
|
|
30
|
+
userPermissions = computed(() => this.usuario()?.permissions ?? [], ...(ngDevMode ? [{ debugName: "userPermissions" }] : /* istanbul ignore next */ []));
|
|
31
|
+
userApps = computed(() => this.usuario()?.apps ?? [], ...(ngDevMode ? [{ debugName: "userApps" }] : /* istanbul ignore next */ []));
|
|
32
|
+
hasPermission(permission) {
|
|
33
|
+
return this.userPermissions().includes(permission);
|
|
34
|
+
}
|
|
35
|
+
hasApp(appId) {
|
|
36
|
+
return this.userApps().includes(appId);
|
|
37
|
+
}
|
|
38
|
+
setSession(params) {
|
|
39
|
+
localStorage.setItem(this.userKey, JSON.stringify(params.usuario));
|
|
40
|
+
localStorage.setItem(this.accessTokenKey, params.accessToken);
|
|
41
|
+
localStorage.setItem(this.refreshTokenKey, params.refreshToken);
|
|
42
|
+
this.usuarioSignal.set(params.usuario);
|
|
43
|
+
this.accessTokenSignal.set(params.accessToken);
|
|
44
|
+
this.refreshTokenSignal.set(params.refreshToken);
|
|
45
|
+
}
|
|
46
|
+
setUsuario(usuario) {
|
|
47
|
+
localStorage.setItem(this.userKey, JSON.stringify(usuario));
|
|
48
|
+
this.usuarioSignal.set(usuario);
|
|
49
|
+
}
|
|
50
|
+
setAccessToken(accessToken) {
|
|
51
|
+
localStorage.setItem(this.accessTokenKey, accessToken);
|
|
52
|
+
this.accessTokenSignal.set(accessToken);
|
|
53
|
+
}
|
|
54
|
+
clearSession() {
|
|
55
|
+
localStorage.removeItem(this.userKey);
|
|
56
|
+
localStorage.removeItem(this.accessTokenKey);
|
|
57
|
+
localStorage.removeItem(this.refreshTokenKey);
|
|
58
|
+
this.usuarioSignal.set(null);
|
|
59
|
+
this.accessTokenSignal.set(null);
|
|
60
|
+
this.refreshTokenSignal.set(null);
|
|
61
|
+
}
|
|
62
|
+
reloadFromStorage() {
|
|
63
|
+
this.usuarioSignal.set(this.loadUserFromStorage());
|
|
64
|
+
this.accessTokenSignal.set(localStorage.getItem(this.accessTokenKey));
|
|
65
|
+
this.refreshTokenSignal.set(localStorage.getItem(this.refreshTokenKey));
|
|
66
|
+
}
|
|
67
|
+
loadUserFromStorage() {
|
|
68
|
+
const usuario = localStorage.getItem(this.userKey);
|
|
69
|
+
if (!usuario) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
return JSON.parse(usuario);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
localStorage.removeItem(this.userKey);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HubSessionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
81
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HubSessionService, providedIn: 'root' });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: HubSessionService, decorators: [{
|
|
84
|
+
type: Injectable,
|
|
85
|
+
args: [{
|
|
86
|
+
providedIn: 'root',
|
|
87
|
+
}]
|
|
88
|
+
}] });
|
|
89
|
+
|
|
90
|
+
const hubAuthInterceptor = (req, next) => {
|
|
91
|
+
const accessTokenKey = inject(HUB_ACCESS_TOKEN_KEY);
|
|
92
|
+
const token = localStorage.getItem(accessTokenKey);
|
|
93
|
+
if (!token) {
|
|
94
|
+
return next(req);
|
|
95
|
+
}
|
|
96
|
+
const authRequest = req.clone({
|
|
97
|
+
setHeaders: {
|
|
98
|
+
Authorization: `Bearer ${token}`,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
return next(authRequest);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const hubAuthGuard = () => {
|
|
105
|
+
const session = inject(HubSessionService);
|
|
106
|
+
const router = inject(Router);
|
|
107
|
+
session.reloadFromStorage();
|
|
108
|
+
if (session.isLoggedIn()) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
return router.createUrlTree(['/login']);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const hubPermissionGuard = (route) => {
|
|
115
|
+
const session = inject(HubSessionService);
|
|
116
|
+
const router = inject(Router);
|
|
117
|
+
session.reloadFromStorage();
|
|
118
|
+
const requiredPermission = route.data?.['permission'];
|
|
119
|
+
if (!requiredPermission) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
if (session.hasPermission(requiredPermission)) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return router.createUrlTree(['/unauthorized']);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Generated bundle index. Do not edit.
|
|
130
|
+
*/
|
|
131
|
+
|
|
132
|
+
export { HUB_ACCESS_TOKEN_KEY, HUB_REFRESH_TOKEN_KEY, HUB_USER_KEY, HubSessionService, hubAuthGuard, hubAuthInterceptor, hubPermissionGuard };
|
|
133
|
+
//# sourceMappingURL=daruix-hub-auth.mjs.map
|
|
@@ -0,0 +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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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@daruix/hub-auth",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^21.2.0",
|
|
6
|
+
"@angular/core": "^21.2.0",
|
|
7
|
+
"@angular/router": "^21.2.0",
|
|
8
|
+
"rxjs": "~7.8.0"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"tslib": "^2.3.0"
|
|
12
|
+
},
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"module": "fesm2022/daruix-hub-auth.mjs",
|
|
15
|
+
"typings": "types/daruix-hub-auth.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
"./package.json": {
|
|
18
|
+
"default": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./types/daruix-hub-auth.d.ts",
|
|
22
|
+
"default": "./fesm2022/daruix-hub-auth.mjs"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"type": "module"
|
|
26
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import { HttpInterceptorFn } from '@angular/common/http';
|
|
4
|
+
import { CanActivateFn } from '@angular/router';
|
|
5
|
+
|
|
6
|
+
interface HubUser {
|
|
7
|
+
id_usuario: number;
|
|
8
|
+
username: string;
|
|
9
|
+
nome: string;
|
|
10
|
+
email: string;
|
|
11
|
+
permissions?: string[];
|
|
12
|
+
apps?: string[];
|
|
13
|
+
}
|
|
14
|
+
interface HubSession {
|
|
15
|
+
usuario: HubUser | null;
|
|
16
|
+
accessToken: string | null;
|
|
17
|
+
refreshToken: string | null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare class HubSessionService {
|
|
21
|
+
private readonly accessTokenKey;
|
|
22
|
+
private readonly refreshTokenKey;
|
|
23
|
+
private readonly userKey;
|
|
24
|
+
private readonly usuarioSignal;
|
|
25
|
+
private readonly accessTokenSignal;
|
|
26
|
+
private readonly refreshTokenSignal;
|
|
27
|
+
readonly usuario: _angular_core.Signal<HubUser | null>;
|
|
28
|
+
readonly accessToken: _angular_core.Signal<string | null>;
|
|
29
|
+
readonly refreshToken: _angular_core.Signal<string | null>;
|
|
30
|
+
readonly isLoggedIn: _angular_core.Signal<boolean>;
|
|
31
|
+
readonly userName: _angular_core.Signal<string>;
|
|
32
|
+
readonly userPermissions: _angular_core.Signal<string[]>;
|
|
33
|
+
readonly userApps: _angular_core.Signal<string[]>;
|
|
34
|
+
hasPermission(permission: string): boolean;
|
|
35
|
+
hasApp(appId: string): boolean;
|
|
36
|
+
setSession(params: {
|
|
37
|
+
usuario: HubUser;
|
|
38
|
+
accessToken: string;
|
|
39
|
+
refreshToken: string;
|
|
40
|
+
}): void;
|
|
41
|
+
setUsuario(usuario: HubUser): void;
|
|
42
|
+
setAccessToken(accessToken: string): void;
|
|
43
|
+
clearSession(): void;
|
|
44
|
+
reloadFromStorage(): void;
|
|
45
|
+
private loadUserFromStorage;
|
|
46
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HubSessionService, never>;
|
|
47
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<HubSessionService>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
declare const hubAuthInterceptor: HttpInterceptorFn;
|
|
51
|
+
|
|
52
|
+
declare const hubAuthGuard: CanActivateFn;
|
|
53
|
+
|
|
54
|
+
declare const hubPermissionGuard: CanActivateFn;
|
|
55
|
+
|
|
56
|
+
declare const HUB_ACCESS_TOKEN_KEY: InjectionToken<string>;
|
|
57
|
+
declare const HUB_REFRESH_TOKEN_KEY: InjectionToken<string>;
|
|
58
|
+
declare const HUB_USER_KEY: InjectionToken<string>;
|
|
59
|
+
|
|
60
|
+
export { HUB_ACCESS_TOKEN_KEY, HUB_REFRESH_TOKEN_KEY, HUB_USER_KEY, HubSessionService, hubAuthGuard, hubAuthInterceptor, hubPermissionGuard };
|
|
61
|
+
export type { HubSession, HubUser };
|