nextauthz 1.3.36 → 1.3.37

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,21 @@ 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
+ setUser(user);
97
+ setRole(extractRole(user));
95
98
  } catch {
96
99
  resetAuth();
97
100
  }
@@ -100,26 +103,28 @@ function createAuthContext(option) {
100
103
  resetAuth();
101
104
  }
102
105
  setAuthChecked(true);
103
- }, [tokenKey]);
106
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole]);
104
107
  const login = (0, import_react.useCallback)(
105
- (tokens, userData, role2) => {
108
+ (tokens, userData) => {
106
109
  const tokenValue = tokens[tokenKey] ?? tokens["access_token"] ?? Object.values(tokens)[0];
107
110
  manager.setTokens({
108
111
  ...tokens,
109
112
  [tokenKey]: tokenValue,
110
113
  user: JSON.stringify(userData ?? null)
111
114
  });
112
- if (userData) setUser(userData);
113
- setRole(role2 ?? extractRole(userData));
115
+ if (userData) {
116
+ setUser(userData);
117
+ setRole(extractRole(userData));
118
+ }
114
119
  setAuth(true);
115
120
  setAuthChecked(true);
116
121
  },
117
- [tokenKey]
122
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
118
123
  );
119
124
  const logout = (0, import_react.useCallback)(() => {
120
125
  manager.clearTokens();
121
126
  resetAuth();
122
- }, []);
127
+ }, [manager, resetAuth]);
123
128
  const value = (0, import_react.useMemo)(
124
129
  () => ({
125
130
  user,
@@ -128,10 +133,13 @@ function createAuthContext(option) {
128
133
  isAuthChecked,
129
134
  login,
130
135
  logout,
131
- setUser,
136
+ setUser: (u) => {
137
+ setUser(u);
138
+ setRole(extractRole(u));
139
+ },
132
140
  tokenKey
133
141
  }),
134
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
142
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
135
143
  );
136
144
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthContext.Provider, { value, children });
137
145
  };
@@ -190,6 +198,7 @@ var RoleGuard = ({
190
198
  if (!isAuthChecked) return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: fallback });
191
199
  if (!isAuthenticated) return null;
192
200
  if (!role || !allowedRoles.includes(role)) return null;
201
+ console.log(role);
193
202
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children });
194
203
  };
195
204
  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,21 @@ 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
+ setUser(user);
76
+ setRole(extractRole(user));
74
77
  } catch {
75
78
  resetAuth();
76
79
  }
@@ -79,26 +82,28 @@ function createAuthContext(option) {
79
82
  resetAuth();
80
83
  }
81
84
  setAuthChecked(true);
82
- }, [tokenKey]);
85
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole]);
83
86
  const login = useCallback(
84
- (tokens, userData, role2) => {
87
+ (tokens, userData) => {
85
88
  const tokenValue = tokens[tokenKey] ?? tokens["access_token"] ?? Object.values(tokens)[0];
86
89
  manager.setTokens({
87
90
  ...tokens,
88
91
  [tokenKey]: tokenValue,
89
92
  user: JSON.stringify(userData ?? null)
90
93
  });
91
- if (userData) setUser(userData);
92
- setRole(role2 ?? extractRole(userData));
94
+ if (userData) {
95
+ setUser(userData);
96
+ setRole(extractRole(userData));
97
+ }
93
98
  setAuth(true);
94
99
  setAuthChecked(true);
95
100
  },
96
- [tokenKey]
101
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
97
102
  );
98
103
  const logout = useCallback(() => {
99
104
  manager.clearTokens();
100
105
  resetAuth();
101
- }, []);
106
+ }, [manager, resetAuth]);
102
107
  const value = useMemo(
103
108
  () => ({
104
109
  user,
@@ -107,10 +112,13 @@ function createAuthContext(option) {
107
112
  isAuthChecked,
108
113
  login,
109
114
  logout,
110
- setUser,
115
+ setUser: (u) => {
116
+ setUser(u);
117
+ setRole(extractRole(u));
118
+ },
111
119
  tokenKey
112
120
  }),
113
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
121
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
114
122
  );
115
123
  return /* @__PURE__ */ jsx(AuthContext.Provider, { value, children });
116
124
  };
@@ -169,6 +177,7 @@ var RoleGuard = ({
169
177
  if (!isAuthChecked) return /* @__PURE__ */ jsx3(Fragment2, { children: fallback });
170
178
  if (!isAuthenticated) return null;
171
179
  if (!role || !allowedRoles.includes(role)) return null;
180
+ console.log(role);
172
181
  return /* @__PURE__ */ jsx3(Fragment2, { children });
173
182
  };
174
183
  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.37",
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,26 @@ 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
+ setUser(user) // ensure user is set in store
76
+ setRole(extractRole(user)) // set role automatically
73
77
  } catch {
74
78
  resetAuth()
75
79
  }
@@ -79,10 +83,11 @@ export function createAuthContext<UserType extends User = User>(option?: {
79
83
  }
80
84
 
81
85
  setAuthChecked(true)
82
- }, [tokenKey])
86
+ }, [tokenKey, manager, user, setAuth, setAuthChecked, setUser, setRole, resetAuth, extractRole])
83
87
 
88
+ // ✅ Login function
84
89
  const login = useCallback(
85
- (tokens: Record<string, string>, userData?: UserType, role?: string) => {
90
+ (tokens: Record<string, string>, userData?: UserType) => {
86
91
  const tokenValue =
87
92
  tokens[tokenKey] ?? tokens['access_token'] ?? Object.values(tokens)[0]
88
93
 
@@ -92,18 +97,21 @@ export function createAuthContext<UserType extends User = User>(option?: {
92
97
  user: JSON.stringify(userData ?? null),
93
98
  })
94
99
 
95
- if (userData) setUser(userData)
96
- setRole(role ?? extractRole(userData))
100
+ if (userData) {
101
+ setUser(userData)
102
+ setRole(extractRole(userData)) // set role whenever user is logged in
103
+ }
104
+
97
105
  setAuth(true)
98
106
  setAuthChecked(true)
99
107
  },
100
- [tokenKey]
108
+ [tokenKey, manager, setUser, setRole, extractRole, setAuth, setAuthChecked]
101
109
  )
102
110
 
103
111
  const logout = useCallback(() => {
104
112
  manager.clearTokens()
105
113
  resetAuth()
106
- }, [])
114
+ }, [manager, resetAuth])
107
115
 
108
116
  // ✅ MEMOIZED CONTEXT VALUE
109
117
  const value = useMemo(
@@ -114,10 +122,13 @@ export function createAuthContext<UserType extends User = User>(option?: {
114
122
  isAuthChecked,
115
123
  login,
116
124
  logout,
117
- setUser,
125
+ setUser: (u: UserType | null) => {
126
+ setUser(u)
127
+ setRole(extractRole(u))
128
+ },
118
129
  tokenKey,
119
130
  }),
120
- [user, role, isAuthenticated, isAuthChecked, login, logout, tokenKey]
131
+ [user, role, isAuthenticated, isAuthChecked, login, logout, setUser, tokenKey, extractRole]
121
132
  )
122
133
 
123
134
  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