@ackplus/nest-auth-react 1.1.31-beta.5 → 1.1.33
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/dist/context/auth-context.d.ts +12 -1
- package/dist/context/auth-context.js +7 -0
- package/dist/context/auth-context.js.map +1 -1
- package/dist/context/auth-provider.js +106 -9
- package/dist/context/auth-provider.js.map +1 -1
- package/dist/guards/with-require-permission.d.ts +15 -0
- package/dist/guards/with-require-permission.js +56 -0
- package/dist/guards/with-require-permission.js.map +1 -0
- package/dist/guards/with-require-role.d.ts +15 -0
- package/dist/guards/with-require-role.js +56 -0
- package/dist/guards/with-require-role.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/next/create-next-auth-helpers.d.ts +7 -1
- package/dist/next/create-next-auth-helpers.js +6 -2
- package/dist/next/create-next-auth-helpers.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthClient, IAuthUser, ClientSession, AuthError, AuthStatus, ILoginRequest, ISignupRequest, ITokenPair, IAuthResponse, IVerify2faRequest, IVerify2faResponse } from '@ackplus/nest-auth-client';
|
|
1
|
+
import { AuthClient, IAuthUser, ClientSession, AuthError, AuthStatus, ILoginRequest, ISignupRequest, ITokenPair, IAuthResponse, IVerify2faRequest, IVerify2faResponse, IForgotPasswordRequest, IVerifyEmailRequest, IResendVerificationRequest, IChangePasswordRequest, IMessageResponse, IVerifyOtpResponse, IResetPasswordWithTokenRequest } from '@ackplus/nest-auth-client';
|
|
2
2
|
export interface AuthContextValue {
|
|
3
3
|
status: AuthStatus;
|
|
4
4
|
user: IAuthUser | null;
|
|
@@ -13,6 +13,17 @@ export interface AuthContextValue {
|
|
|
13
13
|
refresh: () => Promise<ITokenPair>;
|
|
14
14
|
verifySession: () => Promise<boolean>;
|
|
15
15
|
verify2fa: (dto: IVerify2faRequest) => Promise<IVerify2faResponse>;
|
|
16
|
+
forgotPassword: (dto: IForgotPasswordRequest) => Promise<IMessageResponse>;
|
|
17
|
+
verifyForgotPasswordOtp: (dto: {
|
|
18
|
+
email?: string;
|
|
19
|
+
phone?: string;
|
|
20
|
+
otp: string;
|
|
21
|
+
}) => Promise<IVerifyOtpResponse>;
|
|
22
|
+
resetPassword: (dto: IResetPasswordWithTokenRequest) => Promise<IMessageResponse>;
|
|
23
|
+
changePassword: (dto: IChangePasswordRequest) => Promise<IMessageResponse>;
|
|
24
|
+
verifyEmail: (dto: IVerifyEmailRequest) => Promise<IMessageResponse>;
|
|
25
|
+
resendVerification: (dto: IResendVerificationRequest) => Promise<IMessageResponse>;
|
|
26
|
+
send2fa: (method?: 'email' | 'phone') => Promise<IMessageResponse>;
|
|
16
27
|
setMode: (mode: 'header' | 'cookie') => void;
|
|
17
28
|
getMode: () => 'header' | 'cookie';
|
|
18
29
|
setTenantId: (id: string) => void;
|
|
@@ -13,6 +13,13 @@ const defaultContextValue = {
|
|
|
13
13
|
refresh: () => Promise.reject(new Error('AuthProvider not found')),
|
|
14
14
|
verifySession: () => Promise.reject(new Error('AuthProvider not found')),
|
|
15
15
|
verify2fa: () => Promise.reject(new Error('AuthProvider not found')),
|
|
16
|
+
forgotPassword: () => Promise.reject(new Error('AuthProvider not found')),
|
|
17
|
+
verifyForgotPasswordOtp: () => Promise.reject(new Error('AuthProvider not found')),
|
|
18
|
+
resetPassword: () => Promise.reject(new Error('AuthProvider not found')),
|
|
19
|
+
changePassword: () => Promise.reject(new Error('AuthProvider not found')),
|
|
20
|
+
verifyEmail: () => Promise.reject(new Error('AuthProvider not found')),
|
|
21
|
+
resendVerification: () => Promise.reject(new Error('AuthProvider not found')),
|
|
22
|
+
send2fa: () => Promise.reject(new Error('AuthProvider not found')),
|
|
16
23
|
setMode: () => { throw new Error('AuthProvider not found'); },
|
|
17
24
|
getMode: () => 'header',
|
|
18
25
|
setTenantId: () => { throw new Error('AuthProvider not found'); },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-context.js","sourceRoot":"","sources":["../../src/context/auth-context.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-context.js","sourceRoot":"","sources":["../../src/context/auth-context.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAyFtC,MAAM,mBAAmB,GAAqB;IAC1C,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,KAAK;IACtB,MAAM,EAAE,IAAW;IAEnB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEpE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzE,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClF,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEzE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACtE,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAE7E,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAElE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ;IACvB,WAAW,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACjE,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;CAC/B,CAAC;AAKF,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAmB,mBAAmB,CAAC,CAAC;AAEhF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -48,10 +48,17 @@ export function AuthProvider({ client, initialState, autoLoadMe = true, onUnauth
|
|
|
48
48
|
}
|
|
49
49
|
const loadUser = async () => {
|
|
50
50
|
try {
|
|
51
|
-
await client.verifySession();
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
const verfyResponce = await client.verifySession();
|
|
52
|
+
if (verfyResponce?.valid) {
|
|
53
|
+
setUser(client.getUser());
|
|
54
|
+
setSession(client.getSession());
|
|
55
|
+
setStatus('authenticated');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
setUser(null);
|
|
59
|
+
setSession(null);
|
|
60
|
+
setStatus('unauthenticated');
|
|
61
|
+
}
|
|
55
62
|
}
|
|
56
63
|
catch {
|
|
57
64
|
setUser(null);
|
|
@@ -123,11 +130,13 @@ export function AuthProvider({ client, initialState, autoLoadMe = true, onUnauth
|
|
|
123
130
|
const verifySession = useCallback(async () => {
|
|
124
131
|
setError(null);
|
|
125
132
|
try {
|
|
126
|
-
await client.verifySession();
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
133
|
+
const verifyResponce = await client.verifySession();
|
|
134
|
+
if (verifyResponce?.valid) {
|
|
135
|
+
setUser(client.getUser());
|
|
136
|
+
setSession(client.getSession());
|
|
137
|
+
setStatus('authenticated');
|
|
138
|
+
}
|
|
139
|
+
return verifyResponce?.valid;
|
|
131
140
|
}
|
|
132
141
|
catch (err) {
|
|
133
142
|
setError(err);
|
|
@@ -148,6 +157,80 @@ export function AuthProvider({ client, initialState, autoLoadMe = true, onUnauth
|
|
|
148
157
|
throw err;
|
|
149
158
|
}
|
|
150
159
|
}, [client]);
|
|
160
|
+
const forgotPassword = useCallback(async (dto) => {
|
|
161
|
+
setError(null);
|
|
162
|
+
try {
|
|
163
|
+
return await client.forgotPassword(dto);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
setError(err);
|
|
167
|
+
throw err;
|
|
168
|
+
}
|
|
169
|
+
}, [client]);
|
|
170
|
+
const verifyForgotPasswordOtp = useCallback(async (dto) => {
|
|
171
|
+
setError(null);
|
|
172
|
+
try {
|
|
173
|
+
return await client.verifyForgotPasswordOtp(dto);
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
setError(err);
|
|
177
|
+
throw err;
|
|
178
|
+
}
|
|
179
|
+
}, [client]);
|
|
180
|
+
const resetPassword = useCallback(async (dto) => {
|
|
181
|
+
setError(null);
|
|
182
|
+
try {
|
|
183
|
+
return await client.resetPassword(dto);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
setError(err);
|
|
187
|
+
throw err;
|
|
188
|
+
}
|
|
189
|
+
}, [client]);
|
|
190
|
+
const changePassword = useCallback(async (dto) => {
|
|
191
|
+
setError(null);
|
|
192
|
+
try {
|
|
193
|
+
return await client.changePassword(dto);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
setError(err);
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
199
|
+
}, [client]);
|
|
200
|
+
const verifyEmail = useCallback(async (dto) => {
|
|
201
|
+
setError(null);
|
|
202
|
+
try {
|
|
203
|
+
const response = await client.verifyEmail(dto);
|
|
204
|
+
if (user) {
|
|
205
|
+
setUser({ ...user, isVerified: true });
|
|
206
|
+
}
|
|
207
|
+
return response;
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
setError(err);
|
|
211
|
+
throw err;
|
|
212
|
+
}
|
|
213
|
+
}, [client, user]);
|
|
214
|
+
const resendVerification = useCallback(async (dto) => {
|
|
215
|
+
setError(null);
|
|
216
|
+
try {
|
|
217
|
+
return await client.resendVerification(dto);
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
setError(err);
|
|
221
|
+
throw err;
|
|
222
|
+
}
|
|
223
|
+
}, [client]);
|
|
224
|
+
const send2fa = useCallback(async (method = 'email') => {
|
|
225
|
+
setError(null);
|
|
226
|
+
try {
|
|
227
|
+
return await client.send2fa(method);
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
setError(err);
|
|
231
|
+
throw err;
|
|
232
|
+
}
|
|
233
|
+
}, [client]);
|
|
151
234
|
const setMode = useCallback((mode) => {
|
|
152
235
|
client.setMode(mode);
|
|
153
236
|
}, [client]);
|
|
@@ -174,6 +257,13 @@ export function AuthProvider({ client, initialState, autoLoadMe = true, onUnauth
|
|
|
174
257
|
refresh,
|
|
175
258
|
verifySession,
|
|
176
259
|
verify2fa,
|
|
260
|
+
forgotPassword,
|
|
261
|
+
verifyForgotPasswordOtp,
|
|
262
|
+
resetPassword,
|
|
263
|
+
changePassword,
|
|
264
|
+
verifyEmail,
|
|
265
|
+
resendVerification,
|
|
266
|
+
send2fa,
|
|
177
267
|
setMode,
|
|
178
268
|
getMode,
|
|
179
269
|
setTenantId,
|
|
@@ -190,6 +280,13 @@ export function AuthProvider({ client, initialState, autoLoadMe = true, onUnauth
|
|
|
190
280
|
refresh,
|
|
191
281
|
verifySession,
|
|
192
282
|
verify2fa,
|
|
283
|
+
forgotPassword,
|
|
284
|
+
verifyForgotPasswordOtp,
|
|
285
|
+
resetPassword,
|
|
286
|
+
changePassword,
|
|
287
|
+
verifyEmail,
|
|
288
|
+
resendVerification,
|
|
289
|
+
send2fa,
|
|
193
290
|
setMode,
|
|
194
291
|
getMode,
|
|
195
292
|
setTenantId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/context/auth-provider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/context/auth-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
export interface WithRequirePermissionOptions {
|
|
3
|
+
permission: string | string[];
|
|
4
|
+
matchAll?: boolean;
|
|
5
|
+
LoadingComponent?: ComponentType;
|
|
6
|
+
FallbackComponent?: ComponentType;
|
|
7
|
+
onAccessDenied?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface WithRequirePermissionInjectedProps {
|
|
10
|
+
hasPermission: boolean;
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
isAuthenticated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function withRequirePermission<P extends object>(WrappedComponent: ComponentType<P>, options: WithRequirePermissionOptions): ComponentType<Omit<P, keyof WithRequirePermissionInjectedProps>>;
|
|
15
|
+
export declare function createRequirePermissionHOC(defaultOptions: Partial<WithRequirePermissionOptions>): <P extends object>(WrappedComponent: ComponentType<P>, overrideOptions?: Partial<WithRequirePermissionOptions>) => ComponentType<Omit<P, keyof WithRequirePermissionInjectedProps>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { useAuthStatus } from '../hooks/use-auth-status';
|
|
3
|
+
import { useHasPermission } from '../hooks/use-has-role';
|
|
4
|
+
export function withRequirePermission(WrappedComponent, options) {
|
|
5
|
+
const { permission, matchAll = false, LoadingComponent, FallbackComponent, onAccessDenied, } = options;
|
|
6
|
+
const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
|
|
7
|
+
function WithRequirePermissionWrapper(props) {
|
|
8
|
+
const { isLoading, isAuthenticated } = useAuthStatus();
|
|
9
|
+
const hasRequiredPermission = useHasPermission(permission, matchAll);
|
|
10
|
+
const accessDenied = !isAuthenticated || !hasRequiredPermission;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!isLoading && accessDenied && onAccessDenied) {
|
|
13
|
+
onAccessDenied();
|
|
14
|
+
}
|
|
15
|
+
}, [isLoading, accessDenied]);
|
|
16
|
+
if (isLoading) {
|
|
17
|
+
if (LoadingComponent) {
|
|
18
|
+
return React.createElement(LoadingComponent);
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (accessDenied) {
|
|
23
|
+
if (onAccessDenied) {
|
|
24
|
+
if (LoadingComponent) {
|
|
25
|
+
return React.createElement(LoadingComponent);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (FallbackComponent) {
|
|
30
|
+
return React.createElement(FallbackComponent);
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const injectedProps = {
|
|
35
|
+
hasPermission: hasRequiredPermission,
|
|
36
|
+
isLoading,
|
|
37
|
+
isAuthenticated,
|
|
38
|
+
};
|
|
39
|
+
return React.createElement(WrappedComponent, { ...props, ...injectedProps });
|
|
40
|
+
}
|
|
41
|
+
WithRequirePermissionWrapper.displayName = `WithRequirePermission(${displayName})`;
|
|
42
|
+
return WithRequirePermissionWrapper;
|
|
43
|
+
}
|
|
44
|
+
export function createRequirePermissionHOC(defaultOptions) {
|
|
45
|
+
return function (WrappedComponent, overrideOptions) {
|
|
46
|
+
const mergedOptions = {
|
|
47
|
+
...defaultOptions,
|
|
48
|
+
...overrideOptions,
|
|
49
|
+
};
|
|
50
|
+
if (!mergedOptions.permission) {
|
|
51
|
+
throw new Error('withRequirePermission: permission option is required');
|
|
52
|
+
}
|
|
53
|
+
return withRequirePermission(WrappedComponent, mergedOptions);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=with-require-permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-require-permission.js","sourceRoot":"","sources":["../../src/guards/with-require-permission.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAwEzD,MAAM,UAAU,qBAAqB,CACjC,gBAAkC,EAClC,OAAqC;IAErC,MAAM,EACF,UAAU,EACV,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACjB,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,IAAI,WAAW,CAAC;IAEzF,SAAS,4BAA4B,CAAC,KAAwD;QAC1F,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAAC;QACvD,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,CAAC,eAAe,IAAI,CAAC,qBAAqB,CAAC;QAEhE,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,SAAS,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;gBAC/C,cAAc,EAAE,CAAC;YACrB,CAAC;QACL,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAG9B,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAGD,IAAI,YAAY,EAAE,CAAC;YAEf,IAAI,cAAc,EAAE,CAAC;gBACjB,IAAI,gBAAgB,EAAE,CAAC;oBACnB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAGD,MAAM,aAAa,GAAuC;YACtD,aAAa,EAAE,qBAAqB;YACpC,SAAS;YACT,eAAe;SAClB,CAAC;QAEF,OAAO,KAAK,CAAC,aAAa,CACtB,gBAAgB,EAChB,EAAE,GAAG,KAAK,EAAE,GAAG,aAAa,EAAO,CACtC,CAAC;IACN,CAAC;IAED,4BAA4B,CAAC,WAAW,GAAG,yBAAyB,WAAW,GAAG,CAAC;IAEnF,OAAO,4BAA4B,CAAC;AACxC,CAAC;AA0BD,MAAM,UAAU,0BAA0B,CAAC,cAAqD;IAC5F,OAAO,UACH,gBAAkC,EAClC,eAAuD;QAEvD,MAAM,aAAa,GAAG;YAClB,GAAG,cAAc;YACjB,GAAG,eAAe;SACW,CAAC;QAElC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
export interface WithRequireRoleOptions {
|
|
3
|
+
role: string | string[];
|
|
4
|
+
matchAll?: boolean;
|
|
5
|
+
LoadingComponent?: ComponentType;
|
|
6
|
+
FallbackComponent?: ComponentType;
|
|
7
|
+
onAccessDenied?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface WithRequireRoleInjectedProps {
|
|
10
|
+
hasRole: boolean;
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
isAuthenticated: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function withRequireRole<P extends object>(WrappedComponent: ComponentType<P>, options: WithRequireRoleOptions): ComponentType<Omit<P, keyof WithRequireRoleInjectedProps>>;
|
|
15
|
+
export declare function createRequireRoleHOC(defaultOptions: Partial<WithRequireRoleOptions>): <P extends object>(WrappedComponent: ComponentType<P>, overrideOptions?: Partial<WithRequireRoleOptions>) => ComponentType<Omit<P, keyof WithRequireRoleInjectedProps>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { useAuthStatus } from '../hooks/use-auth-status';
|
|
3
|
+
import { useHasRole } from '../hooks/use-has-role';
|
|
4
|
+
export function withRequireRole(WrappedComponent, options) {
|
|
5
|
+
const { role, matchAll = false, LoadingComponent, FallbackComponent, onAccessDenied, } = options;
|
|
6
|
+
const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
|
|
7
|
+
function WithRequireRoleWrapper(props) {
|
|
8
|
+
const { isLoading, isAuthenticated } = useAuthStatus();
|
|
9
|
+
const hasRequiredRole = useHasRole(role, matchAll);
|
|
10
|
+
const accessDenied = !isAuthenticated || !hasRequiredRole;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!isLoading && accessDenied && onAccessDenied) {
|
|
13
|
+
onAccessDenied();
|
|
14
|
+
}
|
|
15
|
+
}, [isLoading, accessDenied]);
|
|
16
|
+
if (isLoading) {
|
|
17
|
+
if (LoadingComponent) {
|
|
18
|
+
return React.createElement(LoadingComponent);
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (accessDenied) {
|
|
23
|
+
if (onAccessDenied) {
|
|
24
|
+
if (LoadingComponent) {
|
|
25
|
+
return React.createElement(LoadingComponent);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (FallbackComponent) {
|
|
30
|
+
return React.createElement(FallbackComponent);
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const injectedProps = {
|
|
35
|
+
hasRole: hasRequiredRole,
|
|
36
|
+
isLoading,
|
|
37
|
+
isAuthenticated,
|
|
38
|
+
};
|
|
39
|
+
return React.createElement(WrappedComponent, { ...props, ...injectedProps });
|
|
40
|
+
}
|
|
41
|
+
WithRequireRoleWrapper.displayName = `WithRequireRole(${displayName})`;
|
|
42
|
+
return WithRequireRoleWrapper;
|
|
43
|
+
}
|
|
44
|
+
export function createRequireRoleHOC(defaultOptions) {
|
|
45
|
+
return function (WrappedComponent, overrideOptions) {
|
|
46
|
+
const mergedOptions = {
|
|
47
|
+
...defaultOptions,
|
|
48
|
+
...overrideOptions,
|
|
49
|
+
};
|
|
50
|
+
if (!mergedOptions.role) {
|
|
51
|
+
throw new Error('withRequireRole: role option is required');
|
|
52
|
+
}
|
|
53
|
+
return withRequireRole(WrappedComponent, mergedOptions);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=with-require-role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-require-role.js","sourceRoot":"","sources":["../../src/guards/with-require-role.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAwEnD,MAAM,UAAU,eAAe,CAC3B,gBAAkC,EAClC,OAA+B;IAE/B,MAAM,EACF,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACjB,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,IAAI,WAAW,CAAC;IAEzF,SAAS,sBAAsB,CAAC,KAAkD;QAC9E,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAAC;QACvD,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC;QAE1D,SAAS,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,SAAS,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;gBAC/C,cAAc,EAAE,CAAC;YACrB,CAAC;QACL,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAG9B,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,gBAAgB,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAGD,IAAI,YAAY,EAAE,CAAC;YAEf,IAAI,cAAc,EAAE,CAAC;gBACjB,IAAI,gBAAgB,EAAE,CAAC;oBACnB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAGD,MAAM,aAAa,GAAiC;YAChD,OAAO,EAAE,eAAe;YACxB,SAAS;YACT,eAAe;SAClB,CAAC;QAEF,OAAO,KAAK,CAAC,aAAa,CACtB,gBAAgB,EAChB,EAAE,GAAG,KAAK,EAAE,GAAG,aAAa,EAAO,CACtC,CAAC;IACN,CAAC;IAED,sBAAsB,CAAC,WAAW,GAAG,mBAAmB,WAAW,GAAG,CAAC;IAEvE,OAAO,sBAAsB,CAAC;AAClC,CAAC;AAoBD,MAAM,UAAU,oBAAoB,CAAC,cAA+C;IAChF,OAAO,UACH,gBAAkC,EAClC,eAAiD;QAEjD,MAAM,aAAa,GAAG;YAClB,GAAG,cAAc;YACjB,GAAG,eAAe;SACK,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,eAAe,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC,CAAC;AACN,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,9 +10,11 @@ export { AuthGuard, AuthGuardProps } from './guards/auth-guard';
|
|
|
10
10
|
export { GuestGuard, GuestGuardProps } from './guards/guest-guard';
|
|
11
11
|
export { RequireRole, RequireRoleProps } from './guards/require-role';
|
|
12
12
|
export { RequirePermission, RequirePermissionProps } from './guards/require-permission';
|
|
13
|
+
export { withRequireRole, createRequireRoleHOC, WithRequireRoleOptions, WithRequireRoleInjectedProps, } from './guards/with-require-role';
|
|
14
|
+
export { withRequirePermission, createRequirePermissionHOC, WithRequirePermissionOptions, WithRequirePermissionInjectedProps, } from './guards/with-require-permission';
|
|
13
15
|
export { createNextAuthHelpers, NextAuthHelpers, ServerAuthState } from './next/create-next-auth-helpers';
|
|
14
16
|
export { NextAuthProvider, NextAuthProviderProps } from './next/next-auth-provider';
|
|
15
17
|
export { CrossTabSync, createCrossTabSync, SyncEvent, SyncEventType, SyncHandler } from './sync/cross-tab-sync';
|
|
16
|
-
export type { IAuthUser as AuthUser, ClientSession as AuthSession, AuthStatus, AuthState, AuthError, ITokenPair as TokenPair, ILoginRequest as LoginDto, ISignupRequest as SignupDto, IAuthResponse as AuthResponse, AuthClientConfig, } from '@ackplus/nest-auth-client';
|
|
18
|
+
export type { IAuthUser as AuthUser, ClientSession as AuthSession, AuthStatus, AuthState, AuthError, ITokenPair as TokenPair, ILoginRequest as LoginDto, ISignupRequest as SignupDto, IAuthResponse as AuthResponse, AuthClientConfig, IForgotPasswordRequest as ForgotPasswordDto, IResetPasswordWithTokenRequest as ResetPasswordDto, IChangePasswordRequest as ChangePasswordDto, IVerifyEmailRequest as VerifyEmailDto, IResendVerificationRequest as ResendVerificationDto, IVerify2faRequest as Verify2faDto, IVerify2faResponse as Verify2faResponse, IMessageResponse as MessageResponse, IVerifyOtpResponse as VerifyOtpResponse, } from '@ackplus/nest-auth-client';
|
|
17
19
|
export { AuthClient } from '@ackplus/nest-auth-client';
|
|
18
20
|
export { hasRole, hasPermission, hasAnyAccess, hasAllAccess } from '@ackplus/nest-auth-client';
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ export { AuthGuard } from './guards/auth-guard';
|
|
|
10
10
|
export { GuestGuard } from './guards/guest-guard';
|
|
11
11
|
export { RequireRole } from './guards/require-role';
|
|
12
12
|
export { RequirePermission } from './guards/require-permission';
|
|
13
|
+
export { withRequireRole, createRequireRoleHOC, } from './guards/with-require-role';
|
|
14
|
+
export { withRequirePermission, createRequirePermissionHOC, } from './guards/with-require-permission';
|
|
13
15
|
export { createNextAuthHelpers } from './next/create-next-auth-helpers';
|
|
14
16
|
export { NextAuthProvider } from './next/next-auth-provider';
|
|
15
17
|
export { CrossTabSync, createCrossTabSync } from './sync/cross-tab-sync';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAuC,MAAM,yBAAyB,CAAC;AAI5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIpE,OAAO,EAAE,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAuC,MAAM,yBAAyB,CAAC;AAI5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIpE,OAAO,EAAE,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EACH,eAAe,EACf,oBAAoB,GAGvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,qBAAqB,EACrB,0BAA0B,GAG7B,MAAM,kCAAkC,CAAC;AAI1C,OAAO,EAAE,qBAAqB,EAAoC,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAyB,MAAM,2BAA2B,CAAC;AAIpF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAyC,MAAM,uBAAuB,CAAC;AA8BhH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -17,4 +17,10 @@ export interface NextAuthHelpers {
|
|
|
17
17
|
session: ClientSession | null;
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
export
|
|
20
|
+
export interface NextAuthHelpersConfig extends AuthClientConfig {
|
|
21
|
+
cookieNames?: {
|
|
22
|
+
accessToken?: string;
|
|
23
|
+
refreshToken?: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare function createNextAuthHelpers(config: NextAuthHelpersConfig): NextAuthHelpers;
|
|
@@ -4,6 +4,10 @@ const COOKIE_NAMES = {
|
|
|
4
4
|
REFRESH_TOKEN: 'refresh_token',
|
|
5
5
|
};
|
|
6
6
|
export function createNextAuthHelpers(config) {
|
|
7
|
+
const cookieNames = {
|
|
8
|
+
accessToken: config.cookieNames?.accessToken || COOKIE_NAMES.ACCESS_TOKEN,
|
|
9
|
+
refreshToken: config.cookieNames?.refreshToken || COOKIE_NAMES.REFRESH_TOKEN,
|
|
10
|
+
};
|
|
7
11
|
const getServerAuth = async (request) => {
|
|
8
12
|
try {
|
|
9
13
|
let accessToken;
|
|
@@ -11,11 +15,11 @@ export function createNextAuthHelpers(config) {
|
|
|
11
15
|
const cookieHeader = request.headers.get('cookie');
|
|
12
16
|
if (cookieHeader) {
|
|
13
17
|
const cookies = parseCookies(cookieHeader);
|
|
14
|
-
accessToken = cookies[
|
|
18
|
+
accessToken = cookies[cookieNames.accessToken];
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
21
|
else {
|
|
18
|
-
accessToken = request.cookies.get(
|
|
22
|
+
accessToken = request.cookies.get(cookieNames.accessToken)?.value;
|
|
19
23
|
}
|
|
20
24
|
if (!accessToken) {
|
|
21
25
|
return { user: null, session: null };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-next-auth-helpers.js","sourceRoot":"","sources":["../../src/next/create-next-auth-helpers.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,UAAU,GAIb,MAAM,2BAA2B,CAAC;AAkCnC,MAAM,YAAY,GAAG;IACjB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-next-auth-helpers.js","sourceRoot":"","sources":["../../src/next/create-next-auth-helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ackplus/nest-auth-react",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.33",
|
|
4
4
|
"description": "React SDK for NestJS authentication - hooks, guards, and Next.js integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"react": "^18.0.0 || ^19.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@ackplus/nest-auth-client": "1.1.
|
|
41
|
+
"@ackplus/nest-auth-client": "1.1.33"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"typescript": "^5.7.3",
|