nextauthz 1.3.25 → 1.3.27
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/index.js +8 -7
- package/dist/index.mjs +8 -7
- package/package.json +1 -1
- package/src/AuthProvider.tsx +14 -9
package/dist/index.js
CHANGED
|
@@ -64,7 +64,7 @@ function createAuthContext(option) {
|
|
|
64
64
|
const AuthProvider = ({ children }) => {
|
|
65
65
|
const storage = option?.storage ?? "cookie";
|
|
66
66
|
const tokenKey = option?.tokenKey ?? "access_token";
|
|
67
|
-
|
|
67
|
+
const rolePath = option?.rolePath ?? "role";
|
|
68
68
|
(0, import_react.useEffect)(() => {
|
|
69
69
|
(0, import_react_token_manager.configureTokenManager)({ storage });
|
|
70
70
|
}, [storage]);
|
|
@@ -80,18 +80,20 @@ function createAuthContext(option) {
|
|
|
80
80
|
setAuth,
|
|
81
81
|
setAuthChecked
|
|
82
82
|
} = useAuthStore();
|
|
83
|
+
const extractRole = (userObj) => {
|
|
84
|
+
if (!userObj || !rolePath) return null;
|
|
85
|
+
return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
|
|
86
|
+
};
|
|
83
87
|
(0, import_react.useEffect)(() => {
|
|
84
88
|
const storedUser = manager.getSingleToken("user");
|
|
85
|
-
const role2 = manager.getSingleToken("role");
|
|
86
89
|
const token = manager.getSingleToken(tokenKey);
|
|
87
90
|
if (token && !manager.isExpired(token)) {
|
|
88
91
|
try {
|
|
89
92
|
setAuth(true);
|
|
90
93
|
if (storedUser) {
|
|
91
94
|
const parsedUser = JSON.parse(storedUser);
|
|
92
|
-
const parsedRole = JSON.parse(role2);
|
|
93
95
|
setUser(parsedUser);
|
|
94
|
-
setRole(
|
|
96
|
+
setRole(extractRole(parsedUser));
|
|
95
97
|
}
|
|
96
98
|
} catch {
|
|
97
99
|
resetAuth();
|
|
@@ -106,11 +108,10 @@ function createAuthContext(option) {
|
|
|
106
108
|
manager.setTokens({
|
|
107
109
|
...tokens,
|
|
108
110
|
[tokenKey]: tokenValue,
|
|
109
|
-
user: JSON.stringify(userData ?? null)
|
|
110
|
-
role: JSON.stringify(user?.account_type ?? null)
|
|
111
|
+
user: JSON.stringify(userData ?? null)
|
|
111
112
|
});
|
|
112
113
|
if (userData) setUser(userData);
|
|
113
|
-
setRole(role2 ??
|
|
114
|
+
setRole(role2 ?? extractRole(userData));
|
|
114
115
|
setAuth(true);
|
|
115
116
|
setAuthChecked(true);
|
|
116
117
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -37,7 +37,7 @@ function createAuthContext(option) {
|
|
|
37
37
|
const AuthProvider = ({ children }) => {
|
|
38
38
|
const storage = option?.storage ?? "cookie";
|
|
39
39
|
const tokenKey = option?.tokenKey ?? "access_token";
|
|
40
|
-
|
|
40
|
+
const rolePath = option?.rolePath ?? "role";
|
|
41
41
|
useEffect(() => {
|
|
42
42
|
configureTokenManager({ storage });
|
|
43
43
|
}, [storage]);
|
|
@@ -53,18 +53,20 @@ function createAuthContext(option) {
|
|
|
53
53
|
setAuth,
|
|
54
54
|
setAuthChecked
|
|
55
55
|
} = useAuthStore();
|
|
56
|
+
const extractRole = (userObj) => {
|
|
57
|
+
if (!userObj || !rolePath) return null;
|
|
58
|
+
return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
|
|
59
|
+
};
|
|
56
60
|
useEffect(() => {
|
|
57
61
|
const storedUser = manager.getSingleToken("user");
|
|
58
|
-
const role2 = manager.getSingleToken("role");
|
|
59
62
|
const token = manager.getSingleToken(tokenKey);
|
|
60
63
|
if (token && !manager.isExpired(token)) {
|
|
61
64
|
try {
|
|
62
65
|
setAuth(true);
|
|
63
66
|
if (storedUser) {
|
|
64
67
|
const parsedUser = JSON.parse(storedUser);
|
|
65
|
-
const parsedRole = JSON.parse(role2);
|
|
66
68
|
setUser(parsedUser);
|
|
67
|
-
setRole(
|
|
69
|
+
setRole(extractRole(parsedUser));
|
|
68
70
|
}
|
|
69
71
|
} catch {
|
|
70
72
|
resetAuth();
|
|
@@ -79,11 +81,10 @@ function createAuthContext(option) {
|
|
|
79
81
|
manager.setTokens({
|
|
80
82
|
...tokens,
|
|
81
83
|
[tokenKey]: tokenValue,
|
|
82
|
-
user: JSON.stringify(userData ?? null)
|
|
83
|
-
role: JSON.stringify(user?.account_type ?? null)
|
|
84
|
+
user: JSON.stringify(userData ?? null)
|
|
84
85
|
});
|
|
85
86
|
if (userData) setUser(userData);
|
|
86
|
-
setRole(role2 ??
|
|
87
|
+
setRole(role2 ?? extractRole(userData));
|
|
87
88
|
setAuth(true);
|
|
88
89
|
setAuthChecked(true);
|
|
89
90
|
};
|
package/package.json
CHANGED
package/src/AuthProvider.tsx
CHANGED
|
@@ -26,14 +26,14 @@ export type AuthContextType<UserType extends User = User> = {
|
|
|
26
26
|
export function createAuthContext<UserType extends User = User>(option?: {
|
|
27
27
|
storage?: 'localStorage' | 'sessionStorage' | 'cookie'
|
|
28
28
|
tokenKey?: string
|
|
29
|
+
rolePath?: string // e.g. 'role' or 'profile.role'
|
|
29
30
|
}) {
|
|
30
31
|
const AuthContext = createContext<AuthContextType<UserType> | undefined>(undefined)
|
|
31
32
|
|
|
32
33
|
const AuthProvider = ({ children }: { children: ReactNode }) => {
|
|
33
34
|
const storage = option?.storage ?? 'cookie'
|
|
34
35
|
const tokenKey = option?.tokenKey ?? 'access_token'
|
|
35
|
-
|
|
36
|
-
console.log('storage', storage);
|
|
36
|
+
const rolePath = option?.rolePath ?? 'role'
|
|
37
37
|
|
|
38
38
|
useEffect(() => {
|
|
39
39
|
configureTokenManager({ storage })
|
|
@@ -52,13 +52,20 @@ export function createAuthContext<UserType extends User = User>(option?: {
|
|
|
52
52
|
setAuthChecked,
|
|
53
53
|
} = useAuthStore()
|
|
54
54
|
|
|
55
|
+
/* ---------------------------------- */
|
|
56
|
+
/* Helper: get role from path */
|
|
57
|
+
/* ---------------------------------- */
|
|
58
|
+
const extractRole = (userObj: any) => {
|
|
59
|
+
if (!userObj || !rolePath) return null
|
|
60
|
+
return rolePath.split('.').reduce((acc: any, key: string) => acc?.[key], userObj) ?? null
|
|
61
|
+
}
|
|
62
|
+
|
|
55
63
|
/* ---------------------------------- */
|
|
56
64
|
/* Hydrate user from storage */
|
|
57
65
|
/* ---------------------------------- */
|
|
58
66
|
|
|
59
67
|
useEffect(() => {
|
|
60
68
|
const storedUser = manager.getSingleToken('user')
|
|
61
|
-
const role = manager.getSingleToken('role')
|
|
62
69
|
const token = manager.getSingleToken(tokenKey)
|
|
63
70
|
|
|
64
71
|
if (token && !manager.isExpired(token)) {
|
|
@@ -67,9 +74,8 @@ export function createAuthContext<UserType extends User = User>(option?: {
|
|
|
67
74
|
|
|
68
75
|
if (storedUser) {
|
|
69
76
|
const parsedUser = JSON.parse(storedUser) as UserType
|
|
70
|
-
const parsedRole = JSON.parse(role as string)
|
|
71
77
|
setUser(parsedUser)
|
|
72
|
-
setRole((
|
|
78
|
+
setRole(extractRole(parsedUser))
|
|
73
79
|
}
|
|
74
80
|
} catch {
|
|
75
81
|
resetAuth()
|
|
@@ -93,13 +99,12 @@ export function createAuthContext<UserType extends User = User>(option?: {
|
|
|
93
99
|
...tokens,
|
|
94
100
|
[tokenKey]: tokenValue,
|
|
95
101
|
user: JSON.stringify(userData ?? null),
|
|
96
|
-
role: JSON.stringify(user?.account_type ?? null)
|
|
97
102
|
})
|
|
98
103
|
|
|
99
104
|
if (userData) setUser(userData)
|
|
100
|
-
setRole(role ??
|
|
101
|
-
setAuth(true)
|
|
102
|
-
setAuthChecked(true)
|
|
105
|
+
setRole(role ?? extractRole(userData))
|
|
106
|
+
setAuth(true)
|
|
107
|
+
setAuthChecked(true)
|
|
103
108
|
}
|
|
104
109
|
|
|
105
110
|
/* ---------------------------------- */
|