nextauthz 1.3.36 → 1.3.38

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.d.mts CHANGED
@@ -10,7 +10,7 @@ type AuthContextType<UserType extends User = User> = {
10
10
  role: string | null;
11
11
  isAuthenticated: boolean;
12
12
  isAuthChecked: boolean;
13
- login: (tokens: Record<string, string>, userData?: UserType, role?: string) => void;
13
+ login: (tokens: Record<string, string>, userData?: UserType) => void;
14
14
  logout: () => void;
15
15
  setUser: (user: UserType | null) => void;
16
16
  tokenKey: string;
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ type AuthContextType<UserType extends User = User> = {
10
10
  role: string | null;
11
11
  isAuthenticated: boolean;
12
12
  isAuthChecked: boolean;
13
- login: (tokens: Record<string, string>, userData?: UserType, role?: string) => void;
13
+ login: (tokens: Record<string, string>, userData?: UserType) => void;
14
14
  logout: () => void;
15
15
  setUser: (user: UserType | null) => void;
16
16
  tokenKey: string;
package/dist/index.js CHANGED
@@ -60,7 +60,9 @@ var useAuthStore = (0, import_zustand.create)((set) => ({
60
60
  // src/AuthProvider.tsx
61
61
  var import_jsx_runtime = require("react/jsx-runtime");
62
62
  function createAuthContext(option) {
63
- const AuthContext = (0, import_react.createContext)(void 0);
63
+ const AuthContext = (0, import_react.createContext)(
64
+ void 0
65
+ );
64
66
  const AuthProvider = ({ children }) => {
65
67
  const storage = option?.storage ?? "cookie";
66
68
  const tokenKey = option?.tokenKey ?? "access_token";
@@ -78,20 +80,22 @@ function createAuthContext(option) {
78
80
  (0, import_react.useEffect)(() => {
79
81
  (0, import_react_token_manager.configureTokenManager)({ storage });
80
82
  }, [storage]);
81
- const extractRole = (userObj) => {
82
- if (!userObj) return null;
83
- return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
84
- };
83
+ const extractRole = (0, import_react.useCallback)(
84
+ (userObj) => {
85
+ if (!userObj) return null;
86
+ return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
87
+ },
88
+ [rolePath]
89
+ );
85
90
  (0, import_react.useEffect)(() => {
86
- const storedUser = manager.getSingleToken("user");
87
91
  const token = manager.getSingleToken(tokenKey);
88
92
  if (token && !manager.isExpired(token)) {
89
93
  setAuth(true);
90
- if (storedUser) {
94
+ if (user) {
91
95
  try {
92
- const parsed = JSON.parse(storedUser);
93
- setUser(parsed);
94
- setRole(extractRole(parsed));
96
+ console.log("user", user);
97
+ setUser(user);
98
+ setRole(extractRole(user));
95
99
  } catch {
96
100
  resetAuth();
97
101
  }
@@ -100,26 +104,28 @@ function createAuthContext(option) {
100
104
  resetAuth();
101
105
  }
102
106
  setAuthChecked(true);
103
- }, [tokenKey]);
107
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole]);
104
108
  const login = (0, import_react.useCallback)(
105
- (tokens, userData, role2) => {
109
+ (tokens, userData) => {
106
110
  const tokenValue = tokens[tokenKey] ?? tokens["access_token"] ?? Object.values(tokens)[0];
107
111
  manager.setTokens({
108
112
  ...tokens,
109
113
  [tokenKey]: tokenValue,
110
114
  user: JSON.stringify(userData ?? null)
111
115
  });
112
- if (userData) setUser(userData);
113
- setRole(role2 ?? extractRole(userData));
116
+ if (userData) {
117
+ setUser(userData);
118
+ setRole(extractRole(userData));
119
+ }
114
120
  setAuth(true);
115
121
  setAuthChecked(true);
116
122
  },
117
- [tokenKey]
123
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
118
124
  );
119
125
  const logout = (0, import_react.useCallback)(() => {
120
126
  manager.clearTokens();
121
127
  resetAuth();
122
- }, []);
128
+ }, [manager, resetAuth]);
123
129
  const value = (0, import_react.useMemo)(
124
130
  () => ({
125
131
  user,
@@ -128,10 +134,13 @@ function createAuthContext(option) {
128
134
  isAuthChecked,
129
135
  login,
130
136
  logout,
131
- setUser,
137
+ setUser: (u) => {
138
+ setUser(u);
139
+ setRole(extractRole(u));
140
+ },
132
141
  tokenKey
133
142
  }),
134
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
143
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
135
144
  );
136
145
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthContext.Provider, { value, children });
137
146
  };
@@ -190,6 +199,7 @@ var RoleGuard = ({
190
199
  if (!isAuthChecked) return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: fallback });
191
200
  if (!isAuthenticated) return null;
192
201
  if (!role || !allowedRoles.includes(role)) return null;
202
+ console.log(role);
193
203
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children });
194
204
  };
195
205
  var RoleGuard_default = RoleGuard;
package/dist/index.mjs CHANGED
@@ -39,7 +39,9 @@ var useAuthStore = create((set) => ({
39
39
  // src/AuthProvider.tsx
40
40
  import { jsx } from "react/jsx-runtime";
41
41
  function createAuthContext(option) {
42
- const AuthContext = createContext(void 0);
42
+ const AuthContext = createContext(
43
+ void 0
44
+ );
43
45
  const AuthProvider = ({ children }) => {
44
46
  const storage = option?.storage ?? "cookie";
45
47
  const tokenKey = option?.tokenKey ?? "access_token";
@@ -57,20 +59,22 @@ function createAuthContext(option) {
57
59
  useEffect(() => {
58
60
  configureTokenManager({ storage });
59
61
  }, [storage]);
60
- const extractRole = (userObj) => {
61
- if (!userObj) return null;
62
- return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
63
- };
62
+ const extractRole = useCallback(
63
+ (userObj) => {
64
+ if (!userObj) return null;
65
+ return rolePath.split(".").reduce((acc, key) => acc?.[key], userObj) ?? null;
66
+ },
67
+ [rolePath]
68
+ );
64
69
  useEffect(() => {
65
- const storedUser = manager.getSingleToken("user");
66
70
  const token = manager.getSingleToken(tokenKey);
67
71
  if (token && !manager.isExpired(token)) {
68
72
  setAuth(true);
69
- if (storedUser) {
73
+ if (user) {
70
74
  try {
71
- const parsed = JSON.parse(storedUser);
72
- setUser(parsed);
73
- setRole(extractRole(parsed));
75
+ console.log("user", user);
76
+ setUser(user);
77
+ setRole(extractRole(user));
74
78
  } catch {
75
79
  resetAuth();
76
80
  }
@@ -79,26 +83,28 @@ function createAuthContext(option) {
79
83
  resetAuth();
80
84
  }
81
85
  setAuthChecked(true);
82
- }, [tokenKey]);
86
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole]);
83
87
  const login = useCallback(
84
- (tokens, userData, role2) => {
88
+ (tokens, userData) => {
85
89
  const tokenValue = tokens[tokenKey] ?? tokens["access_token"] ?? Object.values(tokens)[0];
86
90
  manager.setTokens({
87
91
  ...tokens,
88
92
  [tokenKey]: tokenValue,
89
93
  user: JSON.stringify(userData ?? null)
90
94
  });
91
- if (userData) setUser(userData);
92
- setRole(role2 ?? extractRole(userData));
95
+ if (userData) {
96
+ setUser(userData);
97
+ setRole(extractRole(userData));
98
+ }
93
99
  setAuth(true);
94
100
  setAuthChecked(true);
95
101
  },
96
- [tokenKey]
102
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
97
103
  );
98
104
  const logout = useCallback(() => {
99
105
  manager.clearTokens();
100
106
  resetAuth();
101
- }, []);
107
+ }, [manager, resetAuth]);
102
108
  const value = useMemo(
103
109
  () => ({
104
110
  user,
@@ -107,10 +113,13 @@ function createAuthContext(option) {
107
113
  isAuthChecked,
108
114
  login,
109
115
  logout,
110
- setUser,
116
+ setUser: (u) => {
117
+ setUser(u);
118
+ setRole(extractRole(u));
119
+ },
111
120
  tokenKey
112
121
  }),
113
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
122
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
114
123
  );
115
124
  return /* @__PURE__ */ jsx(AuthContext.Provider, { value, children });
116
125
  };
@@ -169,6 +178,7 @@ var RoleGuard = ({
169
178
  if (!isAuthChecked) return /* @__PURE__ */ jsx3(Fragment2, { children: fallback });
170
179
  if (!isAuthenticated) return null;
171
180
  if (!role || !allowedRoles.includes(role)) return null;
181
+ console.log(role);
172
182
  return /* @__PURE__ */ jsx3(Fragment2, { children });
173
183
  };
174
184
  var RoleGuard_default = RoleGuard;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextauthz",
3
- "version": "1.3.36",
3
+ "version": "1.3.38",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -16,7 +16,7 @@ export type AuthContextType<UserType extends User = User> = {
16
16
  role: string | null
17
17
  isAuthenticated: boolean
18
18
  isAuthChecked: boolean
19
- login: (tokens: Record<string, string>, userData?: UserType, role?: string) => void
19
+ login: (tokens: Record<string, string>, userData?: UserType) => void
20
20
  logout: () => void
21
21
  setUser: (user: UserType | null) => void
22
22
  tokenKey: string
@@ -27,7 +27,9 @@ export function createAuthContext<UserType extends User = User>(option?: {
27
27
  tokenKey?: string
28
28
  rolePath?: string
29
29
  }) {
30
- const AuthContext = createContext<AuthContextType<UserType> | undefined>(undefined)
30
+ const AuthContext = createContext<AuthContextType<UserType> | undefined>(
31
+ undefined
32
+ )
31
33
 
32
34
  const AuthProvider = ({ children }: { children: ReactNode }) => {
33
35
  const storage = option?.storage ?? 'cookie'
@@ -36,7 +38,7 @@ export function createAuthContext<UserType extends User = User>(option?: {
36
38
 
37
39
  const manager = useTokenManager()
38
40
 
39
- // ✅ Selectors (IMPORTANT)
41
+ // ✅ Selectors
40
42
  const user = useAuthStore((s) => s.user)
41
43
  const role = useAuthStore((s) => s.role)
42
44
  const isAuthenticated = useAuthStore((s) => s.isAuthenticated)
@@ -52,24 +54,28 @@ export function createAuthContext<UserType extends User = User>(option?: {
52
54
  configureTokenManager({ storage })
53
55
  }, [storage])
54
56
 
55
- const extractRole = (userObj: any) => {
56
- if (!userObj) return null
57
- return rolePath.split('.').reduce((acc: any, key: string) => acc?.[key], userObj) ?? null
58
- }
57
+ // Extract role from user
58
+ const extractRole = useCallback(
59
+ (userObj: any) => {
60
+ if (!userObj) return null
61
+ return rolePath.split('.').reduce((acc: any, key: string) => acc?.[key], userObj) ?? null
62
+ },
63
+ [rolePath]
64
+ )
59
65
 
60
66
  // ✅ Hydrate once
61
67
  useEffect(() => {
62
- const storedUser = manager.getSingleToken('user')
63
68
  const token = manager.getSingleToken(tokenKey)
64
69
 
65
70
  if (token && !manager.isExpired(token)) {
66
71
  setAuth(true)
67
72
 
68
- if (storedUser) {
73
+ if (user) {
69
74
  try {
70
- const parsed = JSON.parse(storedUser)
71
- setUser(parsed)
72
- setRole(extractRole(parsed))
75
+ console.log('user', user);
76
+
77
+ setUser(user) // ensure user is set in store
78
+ setRole(extractRole(user)) // set role automatically
73
79
  } catch {
74
80
  resetAuth()
75
81
  }
@@ -79,10 +85,11 @@ export function createAuthContext<UserType extends User = User>(option?: {
79
85
  }
80
86
 
81
87
  setAuthChecked(true)
82
- }, [tokenKey])
88
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole])
83
89
 
90
+ // ✅ Login function
84
91
  const login = useCallback(
85
- (tokens: Record<string, string>, userData?: UserType, role?: string) => {
92
+ (tokens: Record<string, string>, userData?: UserType) => {
86
93
  const tokenValue =
87
94
  tokens[tokenKey] ?? tokens['access_token'] ?? Object.values(tokens)[0]
88
95
 
@@ -92,18 +99,21 @@ export function createAuthContext<UserType extends User = User>(option?: {
92
99
  user: JSON.stringify(userData ?? null),
93
100
  })
94
101
 
95
- if (userData) setUser(userData)
96
- setRole(role ?? extractRole(userData))
102
+ if (userData) {
103
+ setUser(userData)
104
+ setRole(extractRole(userData)) // set role whenever user is logged in
105
+ }
106
+
97
107
  setAuth(true)
98
108
  setAuthChecked(true)
99
109
  },
100
- [tokenKey]
110
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
101
111
  )
102
112
 
103
113
  const logout = useCallback(() => {
104
114
  manager.clearTokens()
105
115
  resetAuth()
106
- }, [])
116
+ }, [manager, resetAuth])
107
117
 
108
118
  // ✅ MEMOIZED CONTEXT VALUE
109
119
  const value = useMemo(
@@ -114,10 +124,13 @@ export function createAuthContext<UserType extends User = User>(option?: {
114
124
  isAuthChecked,
115
125
  login,
116
126
  logout,
117
- setUser,
127
+ setUser: (u: UserType | null) => {
128
+ setUser(u)
129
+ setRole(extractRole(u))
130
+ },
118
131
  tokenKey,
119
132
  }),
120
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
133
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
121
134
  )
122
135
 
123
136
  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>
package/src/RoleGuard.tsx CHANGED
@@ -33,6 +33,9 @@ const RoleGuard = ({
33
33
  if (!isAuthenticated) return null
34
34
  if (!role || !allowedRoles.includes(role)) return null
35
35
 
36
+ console.log(role);
37
+
38
+
36
39
  return <>{children}</>
37
40
  }
38
41