@ackplus/nest-auth-client 1.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -0
- package/dist/client/auth-client.d.ts +60 -0
- package/dist/client/auth-client.d.ts.map +1 -0
- package/dist/client/auth-client.js +383 -0
- package/dist/client/auth-client.js.map +1 -0
- package/dist/client/event-emitter.d.ts +27 -0
- package/dist/client/event-emitter.d.ts.map +1 -0
- package/dist/client/event-emitter.js +46 -0
- package/dist/client/event-emitter.js.map +1 -0
- package/dist/client/refresh-queue.d.ts +16 -0
- package/dist/client/refresh-queue.d.ts.map +1 -0
- package/dist/client/refresh-queue.js +63 -0
- package/dist/client/refresh-queue.js.map +1 -0
- package/dist/http/axios.adapter.d.ts +3 -0
- package/dist/http/axios.adapter.d.ts.map +1 -0
- package/dist/http/axios.adapter.js +55 -0
- package/dist/http/axios.adapter.js.map +1 -0
- package/dist/http/fetch.adapter.d.ts +5 -0
- package/dist/http/fetch.adapter.d.ts.map +1 -0
- package/dist/http/fetch.adapter.js +50 -0
- package/dist/http/fetch.adapter.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/storage/cookie.storage.d.ts +22 -0
- package/dist/storage/cookie.storage.d.ts.map +1 -0
- package/dist/storage/cookie.storage.js +79 -0
- package/dist/storage/cookie.storage.js.map +1 -0
- package/dist/storage/local.storage.d.ts +11 -0
- package/dist/storage/local.storage.d.ts.map +1 -0
- package/dist/storage/local.storage.js +56 -0
- package/dist/storage/local.storage.js.map +1 -0
- package/dist/storage/memory.storage.d.ts +9 -0
- package/dist/storage/memory.storage.d.ts.map +1 -0
- package/dist/storage/memory.storage.js +18 -0
- package/dist/storage/memory.storage.js.map +1 -0
- package/dist/storage/session.storage.d.ts +11 -0
- package/dist/storage/session.storage.d.ts.map +1 -0
- package/dist/storage/session.storage.js +56 -0
- package/dist/storage/session.storage.js.map +1 -0
- package/dist/token/jwt-utils.d.ts +7 -0
- package/dist/token/jwt-utils.d.ts.map +1 -0
- package/dist/token/jwt-utils.js +49 -0
- package/dist/token/jwt-utils.js.map +1 -0
- package/dist/token/token-manager.d.ts +29 -0
- package/dist/token/token-manager.d.ts.map +1 -0
- package/dist/token/token-manager.js +102 -0
- package/dist/token/token-manager.js.map +1 -0
- package/dist/types/auth.types.d.ts +33 -0
- package/dist/types/auth.types.d.ts.map +1 -0
- package/dist/types/auth.types.js +2 -0
- package/dist/types/auth.types.js.map +1 -0
- package/dist/types/config.types.d.ts +73 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +17 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/utils/role-utils.d.ts +12 -0
- package/dist/utils/role-utils.d.ts.map +1 -0
- package/dist/utils/role-utils.js +43 -0
- package/dist/utils/role-utils.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-utils.js","sourceRoot":"","sources":["../../src/token/jwt-utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvC,MAAM,UAAU,SAAS,CAAC,KAAgC;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,CAAC;QACD,OAAO,SAAS,CAAa,KAAK,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AASD,MAAM,UAAU,cAAc,CAC1B,KAAiC,EACjC,mBAA2B,CAAC;IAE5B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,gBAAgB,CAAC;AACjD,CAAC;AAQD,MAAM,UAAU,sBAAsB,CAAC,KAAiC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACxC,CAAC;AAQD,MAAM,UAAU,oBAAoB,CAAC,KAAiC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAC7B,CAAC;AAQD,MAAM,UAAU,kBAAkB,CAAC,KAA6C;IAC5E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAG1B,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ITokenPair as TokenPair } from '@ackplus/nest-auth-contracts';
|
|
2
|
+
import { AccessTokenType } from '../types/config.types';
|
|
3
|
+
import { StorageAdapter } from '../types/config.types';
|
|
4
|
+
export interface TokenManagerConfig {
|
|
5
|
+
storage: StorageAdapter;
|
|
6
|
+
accessTokenType: AccessTokenType;
|
|
7
|
+
refreshThreshold?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class TokenManager {
|
|
10
|
+
private storage;
|
|
11
|
+
private mode;
|
|
12
|
+
private refreshThreshold;
|
|
13
|
+
constructor(config: TokenManagerConfig);
|
|
14
|
+
setMode(mode: 'header' | 'cookie'): void;
|
|
15
|
+
getMode(): 'header' | 'cookie';
|
|
16
|
+
isCookieMode(): boolean;
|
|
17
|
+
isHeaderMode(): boolean;
|
|
18
|
+
setTokens(tokens: TokenPair): Promise<void>;
|
|
19
|
+
getAccessToken(): Promise<string | null>;
|
|
20
|
+
getRefreshToken(): Promise<string | null>;
|
|
21
|
+
getTokens(): Promise<TokenPair | null>;
|
|
22
|
+
clearTokens(): Promise<void>;
|
|
23
|
+
isAccessTokenExpired(): Promise<boolean>;
|
|
24
|
+
isRefreshTokenExpired(): Promise<boolean>;
|
|
25
|
+
hasValidTokens(): Promise<boolean>;
|
|
26
|
+
needsRefresh(): Promise<boolean>;
|
|
27
|
+
getAuthorizationHeader(): Promise<string | null>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=token-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAavD,MAAM,WAAW,kBAAkB;IAE/B,OAAO,EAAE,cAAc,CAAC;IAExB,eAAe,EAAE,eAAe,CAAC;IAEjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AASD,qBAAa,YAAY;IACrB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,kBAAkB;IAStC,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAOxC,OAAO,IAAI,QAAQ,GAAG,QAAQ;IAO9B,YAAY,IAAI,OAAO;IAOvB,YAAY,IAAI,OAAO;IAOjB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3C,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWzC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IActC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYxC,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYzC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBlC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAehC,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAYzD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { isTokenExpired } from './jwt-utils';
|
|
2
|
+
const STORAGE_KEYS = {
|
|
3
|
+
ACCESS_TOKEN: 'access_token',
|
|
4
|
+
REFRESH_TOKEN: 'refresh_token',
|
|
5
|
+
EXPIRES_AT: 'expires_at',
|
|
6
|
+
};
|
|
7
|
+
export class TokenManager {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.storage = config.storage;
|
|
10
|
+
this.mode = config.accessTokenType;
|
|
11
|
+
this.refreshThreshold = config.refreshThreshold ?? 60;
|
|
12
|
+
}
|
|
13
|
+
setMode(mode) {
|
|
14
|
+
this.mode = mode;
|
|
15
|
+
}
|
|
16
|
+
getMode() {
|
|
17
|
+
return this.mode || 'header';
|
|
18
|
+
}
|
|
19
|
+
isCookieMode() {
|
|
20
|
+
return this.getMode() === 'cookie';
|
|
21
|
+
}
|
|
22
|
+
isHeaderMode() {
|
|
23
|
+
return this.getMode() === 'header';
|
|
24
|
+
}
|
|
25
|
+
async setTokens(tokens) {
|
|
26
|
+
if (this.isCookieMode()) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
await Promise.resolve(this.storage.set(STORAGE_KEYS.ACCESS_TOKEN, tokens.accessToken));
|
|
30
|
+
await Promise.resolve(this.storage.set(STORAGE_KEYS.REFRESH_TOKEN, tokens.refreshToken));
|
|
31
|
+
}
|
|
32
|
+
async getAccessToken() {
|
|
33
|
+
if (this.isCookieMode()) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const token = this.storage.get(STORAGE_KEYS.ACCESS_TOKEN);
|
|
37
|
+
return Promise.resolve(token);
|
|
38
|
+
}
|
|
39
|
+
async getRefreshToken() {
|
|
40
|
+
if (this.isCookieMode()) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const token = this.storage.get(STORAGE_KEYS.REFRESH_TOKEN);
|
|
44
|
+
return Promise.resolve(token);
|
|
45
|
+
}
|
|
46
|
+
async getTokens() {
|
|
47
|
+
const accessToken = await this.getAccessToken();
|
|
48
|
+
const refreshToken = await this.getRefreshToken();
|
|
49
|
+
if (!accessToken || !refreshToken) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return { accessToken, refreshToken };
|
|
53
|
+
}
|
|
54
|
+
async clearTokens() {
|
|
55
|
+
await Promise.resolve(this.storage.remove(STORAGE_KEYS.ACCESS_TOKEN));
|
|
56
|
+
await Promise.resolve(this.storage.remove(STORAGE_KEYS.REFRESH_TOKEN));
|
|
57
|
+
await Promise.resolve(this.storage.remove(STORAGE_KEYS.EXPIRES_AT));
|
|
58
|
+
}
|
|
59
|
+
async isAccessTokenExpired() {
|
|
60
|
+
const token = await this.getAccessToken();
|
|
61
|
+
if (!token) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
const expired = isTokenExpired(token, this.refreshThreshold);
|
|
65
|
+
return expired ?? true;
|
|
66
|
+
}
|
|
67
|
+
async isRefreshTokenExpired() {
|
|
68
|
+
const token = await this.getRefreshToken();
|
|
69
|
+
if (!token) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
const expired = isTokenExpired(token);
|
|
73
|
+
return expired ?? true;
|
|
74
|
+
}
|
|
75
|
+
async hasValidTokens() {
|
|
76
|
+
if (this.isCookieMode()) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const accessExpired = await this.isAccessTokenExpired();
|
|
80
|
+
const refreshExpired = await this.isRefreshTokenExpired();
|
|
81
|
+
return !accessExpired || !refreshExpired;
|
|
82
|
+
}
|
|
83
|
+
async needsRefresh() {
|
|
84
|
+
if (this.isCookieMode()) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const accessExpired = await this.isAccessTokenExpired();
|
|
88
|
+
const refreshExpired = await this.isRefreshTokenExpired();
|
|
89
|
+
return accessExpired && !refreshExpired;
|
|
90
|
+
}
|
|
91
|
+
async getAuthorizationHeader() {
|
|
92
|
+
if (this.isCookieMode()) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const token = await this.getAccessToken();
|
|
96
|
+
if (!token) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
return `Bearer ${token}`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=token-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';
|
|
2
|
+
export interface ClientSession {
|
|
3
|
+
id: string;
|
|
4
|
+
userId: string;
|
|
5
|
+
expiresAt?: Date;
|
|
6
|
+
createdAt?: Date;
|
|
7
|
+
accessToken?: string;
|
|
8
|
+
refreshToken?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AuthState {
|
|
11
|
+
status: AuthStatus;
|
|
12
|
+
user: import('@ackplus/nest-auth-contracts').IAuthUser | null;
|
|
13
|
+
session: ClientSession | null;
|
|
14
|
+
error: AuthError | null;
|
|
15
|
+
}
|
|
16
|
+
export interface AuthError {
|
|
17
|
+
message: string;
|
|
18
|
+
code?: string;
|
|
19
|
+
statusCode?: number;
|
|
20
|
+
details?: Record<string, any>;
|
|
21
|
+
}
|
|
22
|
+
export interface DecodedJwt {
|
|
23
|
+
userId?: string;
|
|
24
|
+
sub?: string;
|
|
25
|
+
user_id?: string;
|
|
26
|
+
exp?: number;
|
|
27
|
+
iat?: number;
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
tenantId?: string;
|
|
30
|
+
type?: string;
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=auth.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../src/types/auth.types.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAKzE,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAKD,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,OAAO,8BAA8B,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9D,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B;AAKD,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAKD,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.js","sourceRoot":"","sources":["../../src/types/auth.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { IAuthUser as AuthUser, ITokenPair as TokenPair } from '@ackplus/nest-auth-contracts';
|
|
2
|
+
import { AuthError } from './auth.types';
|
|
3
|
+
export interface StorageAdapter {
|
|
4
|
+
get(key: string): Promise<string | null> | string | null;
|
|
5
|
+
set(key: string, value: string): Promise<void> | void;
|
|
6
|
+
remove(key: string): Promise<void> | void;
|
|
7
|
+
clear?(): Promise<void> | void;
|
|
8
|
+
}
|
|
9
|
+
export interface HttpAdapter {
|
|
10
|
+
request<T = any>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
|
|
11
|
+
}
|
|
12
|
+
export interface HttpRequestOptions {
|
|
13
|
+
url: string;
|
|
14
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
body?: any;
|
|
17
|
+
credentials?: 'include' | 'omit' | 'same-origin';
|
|
18
|
+
timeout?: number;
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
export interface HttpResponse<T = any> {
|
|
22
|
+
status: number;
|
|
23
|
+
data: T;
|
|
24
|
+
headers: Record<string, string>;
|
|
25
|
+
ok: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface Logger {
|
|
28
|
+
debug?(message: string, ...args: any[]): void;
|
|
29
|
+
info?(message: string, ...args: any[]): void;
|
|
30
|
+
warn?(message: string, ...args: any[]): void;
|
|
31
|
+
error?(message: string, ...args: any[]): void;
|
|
32
|
+
}
|
|
33
|
+
export interface EndpointConfig {
|
|
34
|
+
login?: string;
|
|
35
|
+
signup?: string;
|
|
36
|
+
logout?: string;
|
|
37
|
+
refresh?: string;
|
|
38
|
+
me?: string;
|
|
39
|
+
forgotPassword?: string;
|
|
40
|
+
verifyForgotPasswordOtp?: string;
|
|
41
|
+
resetPassword?: string;
|
|
42
|
+
verifyEmail?: string;
|
|
43
|
+
resendVerification?: string;
|
|
44
|
+
changePassword?: string;
|
|
45
|
+
send2fa?: string;
|
|
46
|
+
verify2fa?: string;
|
|
47
|
+
verifySession?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const DEFAULT_ENDPOINTS: Required<EndpointConfig>;
|
|
50
|
+
export type AccessTokenType = 'header' | 'cookie' | null;
|
|
51
|
+
export interface AuthClientConfig {
|
|
52
|
+
baseUrl: string;
|
|
53
|
+
endpoints?: EndpointConfig;
|
|
54
|
+
accessTokenType?: AccessTokenType;
|
|
55
|
+
storage?: StorageAdapter;
|
|
56
|
+
httpAdapter?: HttpAdapter;
|
|
57
|
+
logger?: Logger;
|
|
58
|
+
tenantId?: string | (() => string | undefined);
|
|
59
|
+
tenantHeader?: string;
|
|
60
|
+
autoRefresh?: boolean;
|
|
61
|
+
refreshThreshold?: number;
|
|
62
|
+
onAuthStateChange?: (user: AuthUser | null) => void;
|
|
63
|
+
onTokenRefreshed?: (tokens: TokenPair) => void;
|
|
64
|
+
onLogout?: () => void;
|
|
65
|
+
onError?: (error: AuthError) => void;
|
|
66
|
+
}
|
|
67
|
+
export interface RequestOptions {
|
|
68
|
+
timeout?: number;
|
|
69
|
+
headers?: Record<string, string>;
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
skipRefresh?: boolean;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const DEFAULT_ENDPOINTS = {
|
|
2
|
+
login: '/auth/login',
|
|
3
|
+
signup: '/auth/signup',
|
|
4
|
+
logout: '/auth/logout',
|
|
5
|
+
refresh: '/auth/refresh',
|
|
6
|
+
me: '/auth/me',
|
|
7
|
+
forgotPassword: '/auth/forgot-password',
|
|
8
|
+
verifyForgotPasswordOtp: '/auth/verify-forgot-password-otp',
|
|
9
|
+
resetPassword: '/auth/reset-password',
|
|
10
|
+
verifyEmail: '/auth/verify-email',
|
|
11
|
+
resendVerification: '/auth/send-email-verification',
|
|
12
|
+
changePassword: '/auth/change-password',
|
|
13
|
+
send2fa: '/auth/2fa/send',
|
|
14
|
+
verify2fa: '/auth/2fa/verify',
|
|
15
|
+
verifySession: '/auth/verify-session',
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=config.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"AA8HA,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACvD,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;IACxB,EAAE,EAAE,UAAU;IACd,cAAc,EAAE,uBAAuB;IACvC,uBAAuB,EAAE,kCAAkC;IAC3D,aAAa,EAAE,sBAAsB;IACrC,WAAW,EAAE,oBAAoB;IACjC,kBAAkB,EAAE,+BAA+B;IACnD,cAAc,EAAE,uBAAuB;IACvC,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,kBAAkB;IAC7B,aAAa,EAAE,sBAAsB;CACxC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IAuthUser as AuthUser } from '@ackplus/nest-auth-contracts';
|
|
2
|
+
export declare function hasRole(user: AuthUser | null | undefined, role: string | string[], matchAll?: boolean): boolean;
|
|
3
|
+
export declare function hasPermission(user: AuthUser | null | undefined, permission: string | string[], matchAll?: boolean): boolean;
|
|
4
|
+
export declare function hasAnyAccess(user: AuthUser | null | undefined, requirements: {
|
|
5
|
+
roles?: string[];
|
|
6
|
+
permissions?: string[];
|
|
7
|
+
}): boolean;
|
|
8
|
+
export declare function hasAllAccess(user: AuthUser | null | undefined, requirements: {
|
|
9
|
+
roles?: string[];
|
|
10
|
+
permissions?: string[];
|
|
11
|
+
}): boolean;
|
|
12
|
+
//# sourceMappingURL=role-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-utils.d.ts","sourceRoot":"","sources":["../../src/utils/role-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAsBrE,wBAAgB,OAAO,CACnB,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAYT;AAsBD,wBAAgB,aAAa,CACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,QAAQ,GAAE,OAAe,GAC1B,OAAO,CAYT;AAgBD,wBAAgB,YAAY,CACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,YAAY,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3D,OAAO,CAYT;AAgBD,wBAAgB,YAAY,CACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,YAAY,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3D,OAAO,CAYT"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function hasRole(user, role, matchAll = false) {
|
|
2
|
+
if (!user || !user.roles || user.roles.length === 0) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const roles = Array.isArray(role) ? role : [role];
|
|
6
|
+
if (matchAll) {
|
|
7
|
+
return roles.every(r => user.roles.includes(r));
|
|
8
|
+
}
|
|
9
|
+
return roles.some(r => user.roles.includes(r));
|
|
10
|
+
}
|
|
11
|
+
export function hasPermission(user, permission, matchAll = false) {
|
|
12
|
+
if (!user || !user.permissions || user.permissions.length === 0) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const permissions = Array.isArray(permission) ? permission : [permission];
|
|
16
|
+
if (matchAll) {
|
|
17
|
+
return permissions.every(p => user.permissions.includes(p));
|
|
18
|
+
}
|
|
19
|
+
return permissions.some(p => user.permissions.includes(p));
|
|
20
|
+
}
|
|
21
|
+
export function hasAnyAccess(user, requirements) {
|
|
22
|
+
if (!user)
|
|
23
|
+
return false;
|
|
24
|
+
const hasRequiredRole = requirements.roles && requirements.roles.length > 0
|
|
25
|
+
? hasRole(user, requirements.roles)
|
|
26
|
+
: false;
|
|
27
|
+
const hasRequiredPermission = requirements.permissions && requirements.permissions.length > 0
|
|
28
|
+
? hasPermission(user, requirements.permissions)
|
|
29
|
+
: false;
|
|
30
|
+
return hasRequiredRole || hasRequiredPermission;
|
|
31
|
+
}
|
|
32
|
+
export function hasAllAccess(user, requirements) {
|
|
33
|
+
if (!user)
|
|
34
|
+
return false;
|
|
35
|
+
const hasRequiredRoles = requirements.roles && requirements.roles.length > 0
|
|
36
|
+
? hasRole(user, requirements.roles, true)
|
|
37
|
+
: true;
|
|
38
|
+
const hasRequiredPermissions = requirements.permissions && requirements.permissions.length > 0
|
|
39
|
+
? hasPermission(user, requirements.permissions, true)
|
|
40
|
+
: true;
|
|
41
|
+
return hasRequiredRoles && hasRequiredPermissions;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=role-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-utils.js","sourceRoot":"","sources":["../../src/utils/role-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ackplus/nest-auth-client",
|
|
3
|
+
"version": "1.1.29",
|
|
4
|
+
"description": "NestJS authentication for REST APIs",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"query-builder",
|
|
23
|
+
"rest",
|
|
24
|
+
"api",
|
|
25
|
+
"frontend",
|
|
26
|
+
"backend",
|
|
27
|
+
"filtering",
|
|
28
|
+
"pagination",
|
|
29
|
+
"relations",
|
|
30
|
+
"typescript",
|
|
31
|
+
"nestjs",
|
|
32
|
+
"react",
|
|
33
|
+
"angular",
|
|
34
|
+
"vue"
|
|
35
|
+
],
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/ack-solutions/nest-auth"
|
|
39
|
+
},
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"author": "Ackplus",
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"jwt-decode": "^4.0.0",
|
|
44
|
+
"tslib": "^2.3.0",
|
|
45
|
+
"@ackplus/nest-auth-contracts": "1.1.29"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"typescript": "^5.7.3"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"clean": "rm -rf dist tsconfig.build.tsbuildinfo",
|
|
52
|
+
"build": "pnpm clean && tsc -p tsconfig.build.json",
|
|
53
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
54
|
+
"lint": "eslint \"src/**/*.ts\" --fix"
|
|
55
|
+
}
|
|
56
|
+
}
|