@atzentis/auth-react 0.0.12 → 0.0.13
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.ts +121 -2
- package/dist/index.js +642 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _atzentis_auth_sdk from '@atzentis/auth-sdk';
|
|
4
|
-
import { AuthClient, User, Session, AuthError, LoginAlert, ITokenStorage, LoginCredentials, SignupData } from '@atzentis/auth-sdk';
|
|
4
|
+
import { AuthClient, User, Session, AuthError, LoginAlert, ITokenStorage, ApiKey, CreateApiKeyRequest, UpdateApiKeyRequest, LoginCredentials, UsernameLoginCredentials, SignupData, GetOAuthUrlRequest, VerifyOAuthCodeRequest, SendMagicLinkRequest, VerifyMagicLinkRequest, Device, LoginEvent, ListLoginEventsRequest, Organization, CreateOrganizationRequest, UpdateOrganizationRequest, ListMembersRequest, UpdateMemberRequest, InviteMemberRequest, ListInvitationsRequest, AcceptInvitationRequest, DeclineInvitationRequest, DeviceSession, RevokeAllSessionsOptions, UserUpdate, ConnectOAuthRequest } from '@atzentis/auth-sdk';
|
|
5
5
|
|
|
6
6
|
interface AuthProviderProps {
|
|
7
7
|
apiKey?: string;
|
|
@@ -34,18 +34,106 @@ interface AuthContextValue {
|
|
|
34
34
|
declare const AuthContext: react.Context<AuthContextValue | null>;
|
|
35
35
|
declare function AuthProvider({ apiKey, baseUrl, autoRefreshToken, refreshThreshold, timeout, collectDeviceSignals, onSessionExpired, onTokenRefreshed, onNewDeviceAlert, children, initialUser, storage, }: AuthProviderProps): react_jsx_runtime.JSX.Element;
|
|
36
36
|
|
|
37
|
+
declare function useApiKeys(): {
|
|
38
|
+
apiKeys: ApiKey[];
|
|
39
|
+
isLoading: boolean;
|
|
40
|
+
error: AuthError | null;
|
|
41
|
+
refresh: () => Promise<void>;
|
|
42
|
+
create: (data: CreateApiKeyRequest) => Promise<_atzentis_auth_sdk.CreateApiKeyResponse>;
|
|
43
|
+
get: (keyId: string) => Promise<ApiKey>;
|
|
44
|
+
update: (keyId: string, data: UpdateApiKeyRequest) => Promise<ApiKey>;
|
|
45
|
+
rotate: (keyId: string) => Promise<_atzentis_auth_sdk.RotateApiKeyResponse>;
|
|
46
|
+
revoke: (keyId: string) => Promise<void>;
|
|
47
|
+
validate: (keyString: string) => Promise<_atzentis_auth_sdk.ValidateApiKeyResponse>;
|
|
48
|
+
getUsage: (keyId: string) => Promise<_atzentis_auth_sdk.ApiKeyUsage>;
|
|
49
|
+
};
|
|
50
|
+
|
|
37
51
|
declare function useAuth(): {
|
|
38
52
|
user: _atzentis_auth_sdk.User | null;
|
|
39
53
|
isAuthenticated: boolean;
|
|
40
54
|
isLoading: boolean;
|
|
41
55
|
error: _atzentis_auth_sdk.AuthError | null;
|
|
42
56
|
login: (credentials: LoginCredentials) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
57
|
+
loginWithUsername: (credentials: UsernameLoginCredentials) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
43
58
|
signup: (data: SignupData) => Promise<_atzentis_auth_sdk.SignupResponse>;
|
|
59
|
+
logout: () => Promise<void>;
|
|
60
|
+
logoutAllDevices: () => Promise<void>;
|
|
61
|
+
getOAuthUrl: (config: GetOAuthUrlRequest) => string;
|
|
62
|
+
verifyOAuthCode: (request: VerifyOAuthCodeRequest) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
63
|
+
sendMagicLink: (request: SendMagicLinkRequest) => Promise<void>;
|
|
64
|
+
verifyMagicLink: (request: VerifyMagicLinkRequest) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
65
|
+
isUsernameAvailable: (username: string) => Promise<boolean>;
|
|
66
|
+
getAccessToken: () => Promise<string | null>;
|
|
67
|
+
refreshToken: () => Promise<_atzentis_auth_sdk.RefreshTokenResponse>;
|
|
68
|
+
getAuthHeader: () => Promise<{
|
|
69
|
+
Authorization: string;
|
|
70
|
+
} | {
|
|
71
|
+
Authorization?: undefined;
|
|
72
|
+
}>;
|
|
44
73
|
clearError: () => void;
|
|
45
74
|
};
|
|
46
75
|
|
|
47
76
|
declare function useAuthContext(): AuthContextValue;
|
|
48
77
|
|
|
78
|
+
declare function useDevices(): {
|
|
79
|
+
devices: Device[];
|
|
80
|
+
currentDevice: Device | null;
|
|
81
|
+
isLoading: boolean;
|
|
82
|
+
error: AuthError | null;
|
|
83
|
+
refresh: () => Promise<void>;
|
|
84
|
+
trustDevice: (id: string) => Promise<void>;
|
|
85
|
+
untrustDevice: (id: string) => Promise<void>;
|
|
86
|
+
removeDevice: (id: string) => Promise<void>;
|
|
87
|
+
removeAllOtherDevices: () => Promise<void>;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
interface UseLoginActivityOptions {
|
|
91
|
+
limit?: number;
|
|
92
|
+
}
|
|
93
|
+
declare function useLoginActivity(options?: UseLoginActivityOptions): {
|
|
94
|
+
events: LoginEvent[];
|
|
95
|
+
total: number;
|
|
96
|
+
hasMore: boolean;
|
|
97
|
+
isLoading: boolean;
|
|
98
|
+
error: AuthError | null;
|
|
99
|
+
refresh: () => Promise<void>;
|
|
100
|
+
loadMore: () => Promise<void>;
|
|
101
|
+
filter: (newOptions: ListLoginEventsRequest) => void;
|
|
102
|
+
markRecognized: (eventId: string) => Promise<void>;
|
|
103
|
+
reportSuspicious: (eventId: string) => Promise<_atzentis_auth_sdk.ReportSuspiciousResponse>;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
declare function useOrganizations(): {
|
|
107
|
+
organizations: Organization[];
|
|
108
|
+
isLoading: boolean;
|
|
109
|
+
error: AuthError | null;
|
|
110
|
+
refresh: () => Promise<void>;
|
|
111
|
+
create: (data: CreateOrganizationRequest) => Promise<Organization>;
|
|
112
|
+
update: (orgId: string, data: UpdateOrganizationRequest) => Promise<Organization>;
|
|
113
|
+
delete: (orgId: string) => Promise<void>;
|
|
114
|
+
listMembers: (orgId: string, options?: ListMembersRequest) => Promise<_atzentis_auth_sdk.ListMembersResponse>;
|
|
115
|
+
updateMember: (orgId: string, userId: string, data: UpdateMemberRequest) => Promise<_atzentis_auth_sdk.Member>;
|
|
116
|
+
removeMember: (orgId: string, userId: string) => Promise<void>;
|
|
117
|
+
inviteMember: (orgId: string, data: InviteMemberRequest) => Promise<_atzentis_auth_sdk.Invitation>;
|
|
118
|
+
listInvitations: (orgId: string, options?: ListInvitationsRequest) => Promise<_atzentis_auth_sdk.ListInvitationsResponse>;
|
|
119
|
+
resendInvitation: (orgId: string, invitationId: string) => Promise<void>;
|
|
120
|
+
cancelInvitation: (orgId: string, invitationId: string) => Promise<void>;
|
|
121
|
+
acceptInvitation: (data: AcceptInvitationRequest) => Promise<void>;
|
|
122
|
+
declineInvitation: (data: DeclineInvitationRequest) => Promise<void>;
|
|
123
|
+
leave: (orgId: string) => Promise<void>;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
declare function usePhone(): {
|
|
127
|
+
isSending: boolean;
|
|
128
|
+
isVerifying: boolean;
|
|
129
|
+
codeSent: boolean;
|
|
130
|
+
expiresIn: number | null;
|
|
131
|
+
error: AuthError | null;
|
|
132
|
+
sendOTP: (phoneNumber: string) => Promise<_atzentis_auth_sdk.SendOTPResponse>;
|
|
133
|
+
verify: (phoneNumber: string, code: string) => Promise<_atzentis_auth_sdk.VerifyOTPResponse>;
|
|
134
|
+
signIn: (phoneNumber: string, password: string) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
135
|
+
};
|
|
136
|
+
|
|
49
137
|
declare function useSession(): {
|
|
50
138
|
user: _atzentis_auth_sdk.User | null;
|
|
51
139
|
session: _atzentis_auth_sdk.Session | null;
|
|
@@ -53,4 +141,35 @@ declare function useSession(): {
|
|
|
53
141
|
isLoading: boolean;
|
|
54
142
|
};
|
|
55
143
|
|
|
56
|
-
|
|
144
|
+
declare function useSessions(): {
|
|
145
|
+
session: Session | null;
|
|
146
|
+
sessions: Session[];
|
|
147
|
+
deviceSessions: DeviceSession[];
|
|
148
|
+
isLoading: boolean;
|
|
149
|
+
error: AuthError | null;
|
|
150
|
+
refresh: () => Promise<void>;
|
|
151
|
+
revokeSession: (id: string) => Promise<void>;
|
|
152
|
+
revokeAllSessions: (options?: RevokeAllSessionsOptions) => Promise<void>;
|
|
153
|
+
switchAccount: (sessionToken: string) => Promise<void>;
|
|
154
|
+
revokeDeviceSession: (sessionToken: string) => Promise<void>;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
declare function useUser(): {
|
|
158
|
+
user: _atzentis_auth_sdk.User | null;
|
|
159
|
+
isLoading: boolean;
|
|
160
|
+
error: AuthError | null;
|
|
161
|
+
updateProfile: (data: UserUpdate) => Promise<_atzentis_auth_sdk.User>;
|
|
162
|
+
changePassword: (currentPassword: string, newPassword: string) => Promise<void>;
|
|
163
|
+
setupTwoFactor: () => Promise<_atzentis_auth_sdk.TwoFactorSetup>;
|
|
164
|
+
verifyTwoFactorSetup: (code: string) => Promise<void>;
|
|
165
|
+
disableTwoFactor: (password: string) => Promise<void>;
|
|
166
|
+
deleteAccount: (password: string, reason?: string) => Promise<void>;
|
|
167
|
+
listConnectedProviders: () => Promise<_atzentis_auth_sdk.ConnectedProvider[]>;
|
|
168
|
+
connectOAuthProvider: (data: ConnectOAuthRequest) => Promise<_atzentis_auth_sdk.ConnectedProvider>;
|
|
169
|
+
disconnectOAuthProvider: (provider: string) => Promise<void>;
|
|
170
|
+
addPhoneNumber: (phoneNumber: string) => Promise<void>;
|
|
171
|
+
verifyPhoneNumber: (code: string) => Promise<void>;
|
|
172
|
+
removePhoneNumber: (password: string) => Promise<void>;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export { AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, useApiKeys, useAuth, useAuthContext, useDevices, useLoginActivity, useOrganizations, usePhone, useSession, useSessions, useUser };
|
package/dist/index.js
CHANGED
|
@@ -68,7 +68,87 @@ function useAuthContext() {
|
|
|
68
68
|
return context;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
// src/use-
|
|
71
|
+
// src/hooks/use-api-keys.ts
|
|
72
|
+
function useApiKeys() {
|
|
73
|
+
const { client } = useAuthContext();
|
|
74
|
+
const [apiKeys, setApiKeys] = useState([]);
|
|
75
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
76
|
+
const [error, setError] = useState(null);
|
|
77
|
+
const refresh = useCallback(async () => {
|
|
78
|
+
setIsLoading(true);
|
|
79
|
+
setError(null);
|
|
80
|
+
try {
|
|
81
|
+
const response = await client.apiKeys.list();
|
|
82
|
+
setApiKeys(response.data);
|
|
83
|
+
} catch (err) {
|
|
84
|
+
setError(err);
|
|
85
|
+
} finally {
|
|
86
|
+
setIsLoading(false);
|
|
87
|
+
}
|
|
88
|
+
}, [client]);
|
|
89
|
+
const create = useCallback(
|
|
90
|
+
async (data) => {
|
|
91
|
+
const response = await client.apiKeys.create(data);
|
|
92
|
+
await refresh();
|
|
93
|
+
return response;
|
|
94
|
+
},
|
|
95
|
+
[client, refresh]
|
|
96
|
+
);
|
|
97
|
+
const get = useCallback(
|
|
98
|
+
async (keyId) => {
|
|
99
|
+
return client.apiKeys.get(keyId);
|
|
100
|
+
},
|
|
101
|
+
[client]
|
|
102
|
+
);
|
|
103
|
+
const update = useCallback(
|
|
104
|
+
async (keyId, data) => {
|
|
105
|
+
const updated = await client.apiKeys.update(keyId, data);
|
|
106
|
+
await refresh();
|
|
107
|
+
return updated;
|
|
108
|
+
},
|
|
109
|
+
[client, refresh]
|
|
110
|
+
);
|
|
111
|
+
const rotate = useCallback(
|
|
112
|
+
async (keyId) => {
|
|
113
|
+
const response = await client.apiKeys.rotate(keyId);
|
|
114
|
+
await refresh();
|
|
115
|
+
return response;
|
|
116
|
+
},
|
|
117
|
+
[client, refresh]
|
|
118
|
+
);
|
|
119
|
+
const revoke = useCallback(
|
|
120
|
+
async (keyId) => {
|
|
121
|
+
await client.apiKeys.revoke(keyId);
|
|
122
|
+
await refresh();
|
|
123
|
+
},
|
|
124
|
+
[client, refresh]
|
|
125
|
+
);
|
|
126
|
+
const validate = useCallback(
|
|
127
|
+
async (keyString) => {
|
|
128
|
+
return client.apiKeys.validate(keyString);
|
|
129
|
+
},
|
|
130
|
+
[client]
|
|
131
|
+
);
|
|
132
|
+
const getUsage = useCallback(
|
|
133
|
+
async (keyId) => {
|
|
134
|
+
return client.apiKeys.getUsage(keyId);
|
|
135
|
+
},
|
|
136
|
+
[client]
|
|
137
|
+
);
|
|
138
|
+
return {
|
|
139
|
+
apiKeys,
|
|
140
|
+
isLoading,
|
|
141
|
+
error,
|
|
142
|
+
refresh,
|
|
143
|
+
create,
|
|
144
|
+
get,
|
|
145
|
+
update,
|
|
146
|
+
rotate,
|
|
147
|
+
revoke,
|
|
148
|
+
validate,
|
|
149
|
+
getUsage
|
|
150
|
+
};
|
|
151
|
+
}
|
|
72
152
|
function useAuth() {
|
|
73
153
|
const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();
|
|
74
154
|
const login = useCallback(
|
|
@@ -79,6 +159,14 @@ function useAuth() {
|
|
|
79
159
|
},
|
|
80
160
|
[client, setUser]
|
|
81
161
|
);
|
|
162
|
+
const loginWithUsername = useCallback(
|
|
163
|
+
async (credentials) => {
|
|
164
|
+
const response = await client.loginWithUsername(credentials);
|
|
165
|
+
setUser(response.user);
|
|
166
|
+
return response;
|
|
167
|
+
},
|
|
168
|
+
[client, setUser]
|
|
169
|
+
);
|
|
82
170
|
const signup = useCallback(
|
|
83
171
|
async (data) => {
|
|
84
172
|
const response = await client.signup(data);
|
|
@@ -87,18 +175,406 @@ function useAuth() {
|
|
|
87
175
|
},
|
|
88
176
|
[client, setUser]
|
|
89
177
|
);
|
|
178
|
+
const logout = useCallback(async () => {
|
|
179
|
+
await client.logout();
|
|
180
|
+
setUser(null);
|
|
181
|
+
}, [client, setUser]);
|
|
182
|
+
const logoutAllDevices = useCallback(async () => {
|
|
183
|
+
await client.logoutAllDevices();
|
|
184
|
+
setUser(null);
|
|
185
|
+
}, [client, setUser]);
|
|
186
|
+
const getOAuthUrl = useCallback(
|
|
187
|
+
(config) => {
|
|
188
|
+
return client.getOAuthUrl(config);
|
|
189
|
+
},
|
|
190
|
+
[client]
|
|
191
|
+
);
|
|
192
|
+
const verifyOAuthCode = useCallback(
|
|
193
|
+
async (request) => {
|
|
194
|
+
const response = await client.verifyOAuthCode(request);
|
|
195
|
+
setUser(response.user);
|
|
196
|
+
return response;
|
|
197
|
+
},
|
|
198
|
+
[client, setUser]
|
|
199
|
+
);
|
|
200
|
+
const sendMagicLink = useCallback(
|
|
201
|
+
async (request) => {
|
|
202
|
+
await client.sendMagicLink(request);
|
|
203
|
+
},
|
|
204
|
+
[client]
|
|
205
|
+
);
|
|
206
|
+
const verifyMagicLink = useCallback(
|
|
207
|
+
async (request) => {
|
|
208
|
+
const response = await client.verifyMagicLink(request);
|
|
209
|
+
setUser(response.user);
|
|
210
|
+
return response;
|
|
211
|
+
},
|
|
212
|
+
[client, setUser]
|
|
213
|
+
);
|
|
214
|
+
const isUsernameAvailable = useCallback(
|
|
215
|
+
async (username) => {
|
|
216
|
+
return client.isUsernameAvailable(username);
|
|
217
|
+
},
|
|
218
|
+
[client]
|
|
219
|
+
);
|
|
220
|
+
const getAccessToken = useCallback(async () => {
|
|
221
|
+
return client.getAccessToken();
|
|
222
|
+
}, [client]);
|
|
223
|
+
const refreshToken = useCallback(async () => {
|
|
224
|
+
return client.refreshToken();
|
|
225
|
+
}, [client]);
|
|
226
|
+
const getAuthHeader = useCallback(async () => {
|
|
227
|
+
const token = await client.getAccessToken();
|
|
228
|
+
if (token) {
|
|
229
|
+
return { Authorization: `Bearer ${token}` };
|
|
230
|
+
}
|
|
231
|
+
return {};
|
|
232
|
+
}, [client]);
|
|
90
233
|
return {
|
|
91
234
|
user,
|
|
92
235
|
isAuthenticated,
|
|
93
236
|
isLoading,
|
|
94
237
|
error,
|
|
95
238
|
login,
|
|
239
|
+
loginWithUsername,
|
|
96
240
|
signup,
|
|
241
|
+
logout,
|
|
242
|
+
logoutAllDevices,
|
|
243
|
+
getOAuthUrl,
|
|
244
|
+
verifyOAuthCode,
|
|
245
|
+
sendMagicLink,
|
|
246
|
+
verifyMagicLink,
|
|
247
|
+
isUsernameAvailable,
|
|
248
|
+
getAccessToken,
|
|
249
|
+
refreshToken,
|
|
250
|
+
getAuthHeader,
|
|
97
251
|
clearError
|
|
98
252
|
};
|
|
99
253
|
}
|
|
254
|
+
function useDevices() {
|
|
255
|
+
const { client } = useAuthContext();
|
|
256
|
+
const [devices, setDevices] = useState([]);
|
|
257
|
+
const [currentDevice, setCurrentDevice] = useState(null);
|
|
258
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
259
|
+
const [error, setError] = useState(null);
|
|
260
|
+
const refresh = useCallback(async () => {
|
|
261
|
+
setIsLoading(true);
|
|
262
|
+
setError(null);
|
|
263
|
+
try {
|
|
264
|
+
const response = await client.devices.list();
|
|
265
|
+
setDevices(response.data);
|
|
266
|
+
const current = response.data.find((d) => d.isCurrent) ?? null;
|
|
267
|
+
setCurrentDevice(current);
|
|
268
|
+
} catch (err) {
|
|
269
|
+
setError(err);
|
|
270
|
+
} finally {
|
|
271
|
+
setIsLoading(false);
|
|
272
|
+
}
|
|
273
|
+
}, [client]);
|
|
274
|
+
const trustDevice = useCallback(
|
|
275
|
+
async (id) => {
|
|
276
|
+
await client.devices.trust(id);
|
|
277
|
+
await refresh();
|
|
278
|
+
},
|
|
279
|
+
[client, refresh]
|
|
280
|
+
);
|
|
281
|
+
const untrustDevice = useCallback(
|
|
282
|
+
async (id) => {
|
|
283
|
+
await client.devices.untrust(id);
|
|
284
|
+
await refresh();
|
|
285
|
+
},
|
|
286
|
+
[client, refresh]
|
|
287
|
+
);
|
|
288
|
+
const removeDevice = useCallback(
|
|
289
|
+
async (id) => {
|
|
290
|
+
await client.devices.remove(id);
|
|
291
|
+
await refresh();
|
|
292
|
+
},
|
|
293
|
+
[client, refresh]
|
|
294
|
+
);
|
|
295
|
+
const removeAllOtherDevices = useCallback(async () => {
|
|
296
|
+
await client.devices.removeAllOthers();
|
|
297
|
+
await refresh();
|
|
298
|
+
}, [client, refresh]);
|
|
299
|
+
return {
|
|
300
|
+
devices,
|
|
301
|
+
currentDevice,
|
|
302
|
+
isLoading,
|
|
303
|
+
error,
|
|
304
|
+
refresh,
|
|
305
|
+
trustDevice,
|
|
306
|
+
untrustDevice,
|
|
307
|
+
removeDevice,
|
|
308
|
+
removeAllOtherDevices
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function useLoginActivity(options = {}) {
|
|
312
|
+
const { client } = useAuthContext();
|
|
313
|
+
const [events, setEvents] = useState([]);
|
|
314
|
+
const [total, setTotal] = useState(0);
|
|
315
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
316
|
+
const [error, setError] = useState(null);
|
|
317
|
+
const [filterOptions, setFilterOptions] = useState({
|
|
318
|
+
limit: options.limit ?? 50,
|
|
319
|
+
offset: 0
|
|
320
|
+
});
|
|
321
|
+
const hasMore = events.length < total;
|
|
322
|
+
const refresh = useCallback(async () => {
|
|
323
|
+
setIsLoading(true);
|
|
324
|
+
setError(null);
|
|
325
|
+
try {
|
|
326
|
+
const response = await client.loginActivity.list(filterOptions);
|
|
327
|
+
setEvents(response.data);
|
|
328
|
+
setTotal(response.total);
|
|
329
|
+
} catch (err) {
|
|
330
|
+
setError(err);
|
|
331
|
+
} finally {
|
|
332
|
+
setIsLoading(false);
|
|
333
|
+
}
|
|
334
|
+
}, [client, filterOptions]);
|
|
335
|
+
const loadMore = useCallback(async () => {
|
|
336
|
+
setIsLoading(true);
|
|
337
|
+
setError(null);
|
|
338
|
+
try {
|
|
339
|
+
const response = await client.loginActivity.list({
|
|
340
|
+
...filterOptions,
|
|
341
|
+
offset: events.length
|
|
342
|
+
});
|
|
343
|
+
setEvents((prev) => [...prev, ...response.data]);
|
|
344
|
+
setTotal(response.total);
|
|
345
|
+
} catch (err) {
|
|
346
|
+
setError(err);
|
|
347
|
+
} finally {
|
|
348
|
+
setIsLoading(false);
|
|
349
|
+
}
|
|
350
|
+
}, [client, filterOptions, events.length]);
|
|
351
|
+
const filter = useCallback(
|
|
352
|
+
(newOptions) => {
|
|
353
|
+
const merged = { ...filterOptions, ...newOptions, offset: 0 };
|
|
354
|
+
setFilterOptions(merged);
|
|
355
|
+
setEvents([]);
|
|
356
|
+
setTotal(0);
|
|
357
|
+
},
|
|
358
|
+
[filterOptions]
|
|
359
|
+
);
|
|
360
|
+
const markRecognized = useCallback(
|
|
361
|
+
async (eventId) => {
|
|
362
|
+
await client.loginActivity.markRecognized(eventId);
|
|
363
|
+
},
|
|
364
|
+
[client]
|
|
365
|
+
);
|
|
366
|
+
const reportSuspicious = useCallback(
|
|
367
|
+
async (eventId) => {
|
|
368
|
+
return client.loginActivity.reportSuspicious(eventId);
|
|
369
|
+
},
|
|
370
|
+
[client]
|
|
371
|
+
);
|
|
372
|
+
return {
|
|
373
|
+
events,
|
|
374
|
+
total,
|
|
375
|
+
hasMore,
|
|
376
|
+
isLoading,
|
|
377
|
+
error,
|
|
378
|
+
refresh,
|
|
379
|
+
loadMore,
|
|
380
|
+
filter,
|
|
381
|
+
markRecognized,
|
|
382
|
+
reportSuspicious
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
function useOrganizations() {
|
|
386
|
+
const { client } = useAuthContext();
|
|
387
|
+
const [organizations, setOrganizations] = useState([]);
|
|
388
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
389
|
+
const [error, setError] = useState(null);
|
|
390
|
+
const refresh = useCallback(async () => {
|
|
391
|
+
setIsLoading(true);
|
|
392
|
+
setError(null);
|
|
393
|
+
try {
|
|
394
|
+
const response = await client.organizations.list();
|
|
395
|
+
setOrganizations(response.data);
|
|
396
|
+
} catch (err) {
|
|
397
|
+
setError(err);
|
|
398
|
+
} finally {
|
|
399
|
+
setIsLoading(false);
|
|
400
|
+
}
|
|
401
|
+
}, [client]);
|
|
402
|
+
const create = useCallback(
|
|
403
|
+
async (data) => {
|
|
404
|
+
const org = await client.organizations.create(data);
|
|
405
|
+
await refresh();
|
|
406
|
+
return org;
|
|
407
|
+
},
|
|
408
|
+
[client, refresh]
|
|
409
|
+
);
|
|
410
|
+
const update = useCallback(
|
|
411
|
+
async (orgId, data) => {
|
|
412
|
+
const org = await client.organizations.update(orgId, data);
|
|
413
|
+
await refresh();
|
|
414
|
+
return org;
|
|
415
|
+
},
|
|
416
|
+
[client, refresh]
|
|
417
|
+
);
|
|
418
|
+
const deleteOrg = useCallback(
|
|
419
|
+
async (orgId) => {
|
|
420
|
+
await client.organizations.delete(orgId);
|
|
421
|
+
await refresh();
|
|
422
|
+
},
|
|
423
|
+
[client, refresh]
|
|
424
|
+
);
|
|
425
|
+
const listMembers = useCallback(
|
|
426
|
+
async (orgId, options) => {
|
|
427
|
+
return client.organizations.listMembers(orgId, options);
|
|
428
|
+
},
|
|
429
|
+
[client]
|
|
430
|
+
);
|
|
431
|
+
const updateMember = useCallback(
|
|
432
|
+
async (orgId, userId, data) => {
|
|
433
|
+
return client.organizations.updateMember(orgId, userId, data);
|
|
434
|
+
},
|
|
435
|
+
[client]
|
|
436
|
+
);
|
|
437
|
+
const removeMember = useCallback(
|
|
438
|
+
async (orgId, userId) => {
|
|
439
|
+
await client.organizations.removeMember(orgId, userId);
|
|
440
|
+
},
|
|
441
|
+
[client]
|
|
442
|
+
);
|
|
443
|
+
const inviteMember = useCallback(
|
|
444
|
+
async (orgId, data) => {
|
|
445
|
+
return client.organizations.inviteMember(orgId, data);
|
|
446
|
+
},
|
|
447
|
+
[client]
|
|
448
|
+
);
|
|
449
|
+
const listInvitations = useCallback(
|
|
450
|
+
async (orgId, options) => {
|
|
451
|
+
return client.organizations.listInvitations(orgId, options);
|
|
452
|
+
},
|
|
453
|
+
[client]
|
|
454
|
+
);
|
|
455
|
+
const resendInvitation = useCallback(
|
|
456
|
+
async (orgId, invitationId) => {
|
|
457
|
+
await client.organizations.resendInvitation(orgId, invitationId);
|
|
458
|
+
},
|
|
459
|
+
[client]
|
|
460
|
+
);
|
|
461
|
+
const cancelInvitation = useCallback(
|
|
462
|
+
async (orgId, invitationId) => {
|
|
463
|
+
await client.organizations.cancelInvitation(orgId, invitationId);
|
|
464
|
+
},
|
|
465
|
+
[client]
|
|
466
|
+
);
|
|
467
|
+
const acceptInvitation = useCallback(
|
|
468
|
+
async (data) => {
|
|
469
|
+
await client.organizations.acceptInvitation(data);
|
|
470
|
+
},
|
|
471
|
+
[client]
|
|
472
|
+
);
|
|
473
|
+
const declineInvitation = useCallback(
|
|
474
|
+
async (data) => {
|
|
475
|
+
await client.organizations.declineInvitation(data);
|
|
476
|
+
},
|
|
477
|
+
[client]
|
|
478
|
+
);
|
|
479
|
+
const leave = useCallback(
|
|
480
|
+
async (orgId) => {
|
|
481
|
+
await client.organizations.leave(orgId);
|
|
482
|
+
await refresh();
|
|
483
|
+
},
|
|
484
|
+
[client, refresh]
|
|
485
|
+
);
|
|
486
|
+
return {
|
|
487
|
+
organizations,
|
|
488
|
+
isLoading,
|
|
489
|
+
error,
|
|
490
|
+
refresh,
|
|
491
|
+
create,
|
|
492
|
+
update,
|
|
493
|
+
delete: deleteOrg,
|
|
494
|
+
listMembers,
|
|
495
|
+
updateMember,
|
|
496
|
+
removeMember,
|
|
497
|
+
inviteMember,
|
|
498
|
+
listInvitations,
|
|
499
|
+
resendInvitation,
|
|
500
|
+
cancelInvitation,
|
|
501
|
+
acceptInvitation,
|
|
502
|
+
declineInvitation,
|
|
503
|
+
leave
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
function usePhone() {
|
|
507
|
+
const { client, setUser } = useAuthContext();
|
|
508
|
+
const [isSending, setIsSending] = useState(false);
|
|
509
|
+
const [isVerifying, setIsVerifying] = useState(false);
|
|
510
|
+
const [codeSent, setCodeSent] = useState(false);
|
|
511
|
+
const [expiresIn, setExpiresIn] = useState(null);
|
|
512
|
+
const [error, setError] = useState(null);
|
|
513
|
+
const sendOTP = useCallback(
|
|
514
|
+
async (phoneNumber) => {
|
|
515
|
+
setIsSending(true);
|
|
516
|
+
setError(null);
|
|
517
|
+
try {
|
|
518
|
+
const response = await client.phone.sendOTP({ phoneNumber });
|
|
519
|
+
setCodeSent(true);
|
|
520
|
+
setExpiresIn(response.expiresIn);
|
|
521
|
+
return response;
|
|
522
|
+
} catch (err) {
|
|
523
|
+
setError(err);
|
|
524
|
+
throw err;
|
|
525
|
+
} finally {
|
|
526
|
+
setIsSending(false);
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
[client]
|
|
530
|
+
);
|
|
531
|
+
const verify = useCallback(
|
|
532
|
+
async (phoneNumber, code) => {
|
|
533
|
+
setIsVerifying(true);
|
|
534
|
+
setError(null);
|
|
535
|
+
try {
|
|
536
|
+
const response = await client.phone.verify({ phoneNumber, code });
|
|
537
|
+
setUser(response.user);
|
|
538
|
+
return response;
|
|
539
|
+
} catch (err) {
|
|
540
|
+
setError(err);
|
|
541
|
+
throw err;
|
|
542
|
+
} finally {
|
|
543
|
+
setIsVerifying(false);
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
[client, setUser]
|
|
547
|
+
);
|
|
548
|
+
const signIn = useCallback(
|
|
549
|
+
async (phoneNumber, password) => {
|
|
550
|
+
setIsVerifying(true);
|
|
551
|
+
setError(null);
|
|
552
|
+
try {
|
|
553
|
+
const response = await client.phone.signIn({ phoneNumber, password });
|
|
554
|
+
setUser(response.user);
|
|
555
|
+
return response;
|
|
556
|
+
} catch (err) {
|
|
557
|
+
setError(err);
|
|
558
|
+
throw err;
|
|
559
|
+
} finally {
|
|
560
|
+
setIsVerifying(false);
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
[client, setUser]
|
|
564
|
+
);
|
|
565
|
+
return {
|
|
566
|
+
isSending,
|
|
567
|
+
isVerifying,
|
|
568
|
+
codeSent,
|
|
569
|
+
expiresIn,
|
|
570
|
+
error,
|
|
571
|
+
sendOTP,
|
|
572
|
+
verify,
|
|
573
|
+
signIn
|
|
574
|
+
};
|
|
575
|
+
}
|
|
100
576
|
|
|
101
|
-
// src/use-session.ts
|
|
577
|
+
// src/hooks/use-session.ts
|
|
102
578
|
function useSession() {
|
|
103
579
|
const { user, session, isAuthenticated, isLoading } = useAuthContext();
|
|
104
580
|
return {
|
|
@@ -108,7 +584,170 @@ function useSession() {
|
|
|
108
584
|
isLoading
|
|
109
585
|
};
|
|
110
586
|
}
|
|
587
|
+
function useSessions() {
|
|
588
|
+
const { client, session, setUser } = useAuthContext();
|
|
589
|
+
const [sessions, setSessions] = useState([]);
|
|
590
|
+
const [deviceSessions, setDeviceSessions] = useState([]);
|
|
591
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
592
|
+
const [error, setError] = useState(null);
|
|
593
|
+
const refresh = useCallback(async () => {
|
|
594
|
+
setIsLoading(true);
|
|
595
|
+
setError(null);
|
|
596
|
+
try {
|
|
597
|
+
const [sessionsResponse, deviceSessionsResponse] = await Promise.all([
|
|
598
|
+
client.sessions.list(),
|
|
599
|
+
client.sessions.listDeviceSessions()
|
|
600
|
+
]);
|
|
601
|
+
setSessions(sessionsResponse.data);
|
|
602
|
+
setDeviceSessions(deviceSessionsResponse);
|
|
603
|
+
} catch (err) {
|
|
604
|
+
setError(err);
|
|
605
|
+
} finally {
|
|
606
|
+
setIsLoading(false);
|
|
607
|
+
}
|
|
608
|
+
}, [client]);
|
|
609
|
+
const revokeSession = useCallback(
|
|
610
|
+
async (id) => {
|
|
611
|
+
await client.sessions.revoke(id);
|
|
612
|
+
await refresh();
|
|
613
|
+
},
|
|
614
|
+
[client, refresh]
|
|
615
|
+
);
|
|
616
|
+
const revokeAllSessions = useCallback(
|
|
617
|
+
async (options) => {
|
|
618
|
+
await client.sessions.revokeAll(options);
|
|
619
|
+
await refresh();
|
|
620
|
+
},
|
|
621
|
+
[client, refresh]
|
|
622
|
+
);
|
|
623
|
+
const switchAccount = useCallback(
|
|
624
|
+
async (sessionToken) => {
|
|
625
|
+
const response = await client.sessions.setActive({ sessionToken });
|
|
626
|
+
setUser(response.user);
|
|
627
|
+
},
|
|
628
|
+
[client, setUser]
|
|
629
|
+
);
|
|
630
|
+
const revokeDeviceSession = useCallback(
|
|
631
|
+
async (sessionToken) => {
|
|
632
|
+
await client.sessions.revokeDeviceSession({ sessionToken });
|
|
633
|
+
await refresh();
|
|
634
|
+
},
|
|
635
|
+
[client, refresh]
|
|
636
|
+
);
|
|
637
|
+
return {
|
|
638
|
+
session,
|
|
639
|
+
sessions,
|
|
640
|
+
deviceSessions,
|
|
641
|
+
isLoading,
|
|
642
|
+
error,
|
|
643
|
+
refresh,
|
|
644
|
+
revokeSession,
|
|
645
|
+
revokeAllSessions,
|
|
646
|
+
switchAccount,
|
|
647
|
+
revokeDeviceSession
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
function useUser() {
|
|
651
|
+
const { client, user, setUser } = useAuthContext();
|
|
652
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
653
|
+
const [error, setError] = useState(null);
|
|
654
|
+
const updateProfile = useCallback(
|
|
655
|
+
async (data) => {
|
|
656
|
+
setIsLoading(true);
|
|
657
|
+
setError(null);
|
|
658
|
+
try {
|
|
659
|
+
const updated = await client.users.update(data);
|
|
660
|
+
setUser(updated);
|
|
661
|
+
return updated;
|
|
662
|
+
} catch (err) {
|
|
663
|
+
setError(err);
|
|
664
|
+
throw err;
|
|
665
|
+
} finally {
|
|
666
|
+
setIsLoading(false);
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
[client, setUser]
|
|
670
|
+
);
|
|
671
|
+
const changePassword = useCallback(
|
|
672
|
+
async (currentPassword, newPassword) => {
|
|
673
|
+
await client.users.changePassword({ currentPassword, newPassword });
|
|
674
|
+
},
|
|
675
|
+
[client]
|
|
676
|
+
);
|
|
677
|
+
const setupTwoFactor = useCallback(async () => {
|
|
678
|
+
return client.users.setupTwoFactor();
|
|
679
|
+
}, [client]);
|
|
680
|
+
const verifyTwoFactorSetup = useCallback(
|
|
681
|
+
async (code) => {
|
|
682
|
+
await client.users.verifyTwoFactorSetup({ code });
|
|
683
|
+
},
|
|
684
|
+
[client]
|
|
685
|
+
);
|
|
686
|
+
const disableTwoFactor = useCallback(
|
|
687
|
+
async (password) => {
|
|
688
|
+
await client.users.disableTwoFactor({ password });
|
|
689
|
+
},
|
|
690
|
+
[client]
|
|
691
|
+
);
|
|
692
|
+
const deleteAccount = useCallback(
|
|
693
|
+
async (password, reason) => {
|
|
694
|
+
await client.users.deleteAccount({ password, reason });
|
|
695
|
+
setUser(null);
|
|
696
|
+
},
|
|
697
|
+
[client, setUser]
|
|
698
|
+
);
|
|
699
|
+
const listConnectedProviders = useCallback(async () => {
|
|
700
|
+
return client.users.listConnectedProviders();
|
|
701
|
+
}, [client]);
|
|
702
|
+
const connectOAuthProvider = useCallback(
|
|
703
|
+
async (data) => {
|
|
704
|
+
return client.users.connectOAuthProvider(data);
|
|
705
|
+
},
|
|
706
|
+
[client]
|
|
707
|
+
);
|
|
708
|
+
const disconnectOAuthProvider = useCallback(
|
|
709
|
+
async (provider) => {
|
|
710
|
+
await client.users.disconnectOAuthProvider(provider);
|
|
711
|
+
},
|
|
712
|
+
[client]
|
|
713
|
+
);
|
|
714
|
+
const addPhoneNumber = useCallback(
|
|
715
|
+
async (phoneNumber) => {
|
|
716
|
+
await client.users.addPhoneNumber({ phoneNumber });
|
|
717
|
+
},
|
|
718
|
+
[client]
|
|
719
|
+
);
|
|
720
|
+
const verifyPhoneNumber = useCallback(
|
|
721
|
+
async (code) => {
|
|
722
|
+
await client.users.verifyPhoneNumber({ code });
|
|
723
|
+
},
|
|
724
|
+
[client]
|
|
725
|
+
);
|
|
726
|
+
const removePhoneNumber = useCallback(
|
|
727
|
+
async (password) => {
|
|
728
|
+
await client.users.removePhoneNumber({ password });
|
|
729
|
+
},
|
|
730
|
+
[client]
|
|
731
|
+
);
|
|
732
|
+
return {
|
|
733
|
+
user,
|
|
734
|
+
isLoading,
|
|
735
|
+
error,
|
|
736
|
+
updateProfile,
|
|
737
|
+
changePassword,
|
|
738
|
+
setupTwoFactor,
|
|
739
|
+
verifyTwoFactorSetup,
|
|
740
|
+
disableTwoFactor,
|
|
741
|
+
deleteAccount,
|
|
742
|
+
listConnectedProviders,
|
|
743
|
+
connectOAuthProvider,
|
|
744
|
+
disconnectOAuthProvider,
|
|
745
|
+
addPhoneNumber,
|
|
746
|
+
verifyPhoneNumber,
|
|
747
|
+
removePhoneNumber
|
|
748
|
+
};
|
|
749
|
+
}
|
|
111
750
|
|
|
112
|
-
export { AuthContext, AuthProvider, useAuth, useAuthContext, useSession };
|
|
751
|
+
export { AuthContext, AuthProvider, useApiKeys, useAuth, useAuthContext, useDevices, useLoginActivity, useOrganizations, usePhone, useSession, useSessions, useUser };
|
|
113
752
|
//# sourceMappingURL=index.js.map
|
|
114
753
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider.tsx","../src/use-auth-context.ts","../src/use-auth.ts","../src/use-session.ts"],"names":["useCallback"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthContextValue, AuthProviderProps } from \"./types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport { AuthContext } from \"./provider\";\nimport type { AuthContextValue } from \"./types\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useAuth hook — auth state and methods\n\nimport type { LoginCredentials, SignupData } from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n login,\n signup,\n clearError,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/hooks/use-auth-context.ts","../src/hooks/use-api-keys.ts","../src/hooks/use-auth.ts","../src/hooks/use-devices.ts","../src/hooks/use-login-activity.ts","../src/hooks/use-organizations.ts","../src/hooks/use-phone.ts","../src/hooks/use-session.ts","../src/hooks/use-sessions.ts","../src/hooks/use-user.ts"],"names":["useState","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthContextValue, AuthProviderProps } from \"./types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport { AuthContext } from \"../provider\";\nimport type { AuthContextValue } from \"../types\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useApiKeys hook — API key management\n\nimport type {\n ApiKey,\n AuthError,\n CreateApiKeyRequest,\n UpdateApiKeyRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useApiKeys() {\n const { client } = useAuthContext();\n\n const [apiKeys, setApiKeys] = useState<ApiKey[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.apiKeys.list();\n setApiKeys(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateApiKeyRequest) => {\n const response = await client.apiKeys.create(data);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const get = useCallback(\n async (keyId: string) => {\n return client.apiKeys.get(keyId);\n },\n [client],\n );\n\n const update = useCallback(\n async (keyId: string, data: UpdateApiKeyRequest) => {\n const updated = await client.apiKeys.update(keyId, data);\n await refresh();\n return updated;\n },\n [client, refresh],\n );\n\n const rotate = useCallback(\n async (keyId: string) => {\n const response = await client.apiKeys.rotate(keyId);\n await refresh();\n return response;\n },\n [client, refresh],\n );\n\n const revoke = useCallback(\n async (keyId: string) => {\n await client.apiKeys.revoke(keyId);\n await refresh();\n },\n [client, refresh],\n );\n\n const validate = useCallback(\n async (keyString: string) => {\n return client.apiKeys.validate(keyString);\n },\n [client],\n );\n\n const getUsage = useCallback(\n async (keyId: string) => {\n return client.apiKeys.getUsage(keyId);\n },\n [client],\n );\n\n return {\n apiKeys,\n isLoading,\n error,\n refresh,\n create,\n get,\n update,\n rotate,\n revoke,\n validate,\n getUsage,\n };\n}\n","// useAuth hook — auth state and methods\n\nimport type {\n GetOAuthUrlRequest,\n LoginCredentials,\n SendMagicLinkRequest,\n SignupData,\n UsernameLoginCredentials,\n VerifyMagicLinkRequest,\n VerifyOAuthCodeRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const loginWithUsername = useCallback(\n async (credentials: UsernameLoginCredentials) => {\n const response = await client.loginWithUsername(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const logout = useCallback(async () => {\n await client.logout();\n setUser(null);\n }, [client, setUser]);\n\n const logoutAllDevices = useCallback(async () => {\n await client.logoutAllDevices();\n setUser(null);\n }, [client, setUser]);\n\n const getOAuthUrl = useCallback(\n (config: GetOAuthUrlRequest) => {\n return client.getOAuthUrl(config);\n },\n [client],\n );\n\n const verifyOAuthCode = useCallback(\n async (request: VerifyOAuthCodeRequest) => {\n const response = await client.verifyOAuthCode(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const sendMagicLink = useCallback(\n async (request: SendMagicLinkRequest) => {\n await client.sendMagicLink(request);\n },\n [client],\n );\n\n const verifyMagicLink = useCallback(\n async (request: VerifyMagicLinkRequest) => {\n const response = await client.verifyMagicLink(request);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const isUsernameAvailable = useCallback(\n async (username: string) => {\n return client.isUsernameAvailable(username);\n },\n [client],\n );\n\n const getAccessToken = useCallback(async () => {\n return client.getAccessToken();\n }, [client]);\n\n const refreshToken = useCallback(async () => {\n return client.refreshToken();\n }, [client]);\n\n const getAuthHeader = useCallback(async () => {\n const token = await client.getAccessToken();\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return {};\n }, [client]);\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n login,\n loginWithUsername,\n signup,\n logout,\n logoutAllDevices,\n getOAuthUrl,\n verifyOAuthCode,\n sendMagicLink,\n verifyMagicLink,\n isUsernameAvailable,\n getAccessToken,\n refreshToken,\n getAuthHeader,\n clearError,\n };\n}\n","// useDevices hook — device management and trust settings\n\nimport type { AuthError, Device } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useDevices() {\n const { client } = useAuthContext();\n\n const [devices, setDevices] = useState<Device[]>([]);\n const [currentDevice, setCurrentDevice] = useState<Device | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.devices.list();\n setDevices(response.data);\n const current = response.data.find((d) => d.isCurrent) ?? null;\n setCurrentDevice(current);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const trustDevice = useCallback(\n async (id: string) => {\n await client.devices.trust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const untrustDevice = useCallback(\n async (id: string) => {\n await client.devices.untrust(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeDevice = useCallback(\n async (id: string) => {\n await client.devices.remove(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const removeAllOtherDevices = useCallback(async () => {\n await client.devices.removeAllOthers();\n await refresh();\n }, [client, refresh]);\n\n return {\n devices,\n currentDevice,\n isLoading,\n error,\n refresh,\n trustDevice,\n untrustDevice,\n removeDevice,\n removeAllOtherDevices,\n };\n}\n","// useLoginActivity hook — login history with filtering and reporting\n\nimport type { AuthError, ListLoginEventsRequest, LoginEvent } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\ninterface UseLoginActivityOptions {\n limit?: number;\n}\n\nexport function useLoginActivity(options: UseLoginActivityOptions = {}) {\n const { client } = useAuthContext();\n\n const [events, setEvents] = useState<LoginEvent[]>([]);\n const [total, setTotal] = useState(0);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n const [filterOptions, setFilterOptions] = useState<ListLoginEventsRequest>({\n limit: options.limit ?? 50,\n offset: 0,\n });\n\n const hasMore = events.length < total;\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list(filterOptions);\n setEvents(response.data);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions]);\n\n const loadMore = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.loginActivity.list({\n ...filterOptions,\n offset: events.length,\n });\n setEvents((prev) => [...prev, ...response.data]);\n setTotal(response.total);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client, filterOptions, events.length]);\n\n const filter = useCallback(\n (newOptions: ListLoginEventsRequest) => {\n const merged = { ...filterOptions, ...newOptions, offset: 0 };\n setFilterOptions(merged);\n setEvents([]);\n setTotal(0);\n },\n [filterOptions],\n );\n\n const markRecognized = useCallback(\n async (eventId: string) => {\n await client.loginActivity.markRecognized(eventId);\n },\n [client],\n );\n\n const reportSuspicious = useCallback(\n async (eventId: string) => {\n return client.loginActivity.reportSuspicious(eventId);\n },\n [client],\n );\n\n return {\n events,\n total,\n hasMore,\n isLoading,\n error,\n refresh,\n loadMore,\n filter,\n markRecognized,\n reportSuspicious,\n };\n}\n","// useOrganizations hook — organization management\n\nimport type {\n AcceptInvitationRequest,\n AuthError,\n CreateOrganizationRequest,\n DeclineInvitationRequest,\n InviteMemberRequest,\n ListInvitationsRequest,\n ListMembersRequest,\n Organization,\n UpdateMemberRequest,\n UpdateOrganizationRequest,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useOrganizations() {\n const { client } = useAuthContext();\n\n const [organizations, setOrganizations] = useState<Organization[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await client.organizations.list();\n setOrganizations(response.data);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const create = useCallback(\n async (data: CreateOrganizationRequest) => {\n const org = await client.organizations.create(data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const update = useCallback(\n async (orgId: string, data: UpdateOrganizationRequest) => {\n const org = await client.organizations.update(orgId, data);\n await refresh();\n return org;\n },\n [client, refresh],\n );\n\n const deleteOrg = useCallback(\n async (orgId: string) => {\n await client.organizations.delete(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n const listMembers = useCallback(\n async (orgId: string, options?: ListMembersRequest) => {\n return client.organizations.listMembers(orgId, options);\n },\n [client],\n );\n\n const updateMember = useCallback(\n async (orgId: string, userId: string, data: UpdateMemberRequest) => {\n return client.organizations.updateMember(orgId, userId, data);\n },\n [client],\n );\n\n const removeMember = useCallback(\n async (orgId: string, userId: string) => {\n await client.organizations.removeMember(orgId, userId);\n },\n [client],\n );\n\n const inviteMember = useCallback(\n async (orgId: string, data: InviteMemberRequest) => {\n return client.organizations.inviteMember(orgId, data);\n },\n [client],\n );\n\n const listInvitations = useCallback(\n async (orgId: string, options?: ListInvitationsRequest) => {\n return client.organizations.listInvitations(orgId, options);\n },\n [client],\n );\n\n const resendInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.resendInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const cancelInvitation = useCallback(\n async (orgId: string, invitationId: string) => {\n await client.organizations.cancelInvitation(orgId, invitationId);\n },\n [client],\n );\n\n const acceptInvitation = useCallback(\n async (data: AcceptInvitationRequest) => {\n await client.organizations.acceptInvitation(data);\n },\n [client],\n );\n\n const declineInvitation = useCallback(\n async (data: DeclineInvitationRequest) => {\n await client.organizations.declineInvitation(data);\n },\n [client],\n );\n\n const leave = useCallback(\n async (orgId: string) => {\n await client.organizations.leave(orgId);\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n organizations,\n isLoading,\n error,\n refresh,\n create,\n update,\n delete: deleteOrg,\n listMembers,\n updateMember,\n removeMember,\n inviteMember,\n listInvitations,\n resendInvitation,\n cancelInvitation,\n acceptInvitation,\n declineInvitation,\n leave,\n };\n}\n","// usePhone hook — phone OTP authentication\n\nimport type { AuthError } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function usePhone() {\n const { client, setUser } = useAuthContext();\n\n const [isSending, setIsSending] = useState(false);\n const [isVerifying, setIsVerifying] = useState(false);\n const [codeSent, setCodeSent] = useState(false);\n const [expiresIn, setExpiresIn] = useState<number | null>(null);\n const [error, setError] = useState<AuthError | null>(null);\n\n const sendOTP = useCallback(\n async (phoneNumber: string) => {\n setIsSending(true);\n setError(null);\n try {\n const response = await client.phone.sendOTP({ phoneNumber });\n setCodeSent(true);\n setExpiresIn(response.expiresIn);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsSending(false);\n }\n },\n [client],\n );\n\n const verify = useCallback(\n async (phoneNumber: string, code: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.verify({ phoneNumber, code });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n const signIn = useCallback(\n async (phoneNumber: string, password: string) => {\n setIsVerifying(true);\n setError(null);\n try {\n const response = await client.phone.signIn({ phoneNumber, password });\n setUser(response.user);\n return response;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsVerifying(false);\n }\n },\n [client, setUser],\n );\n\n return {\n isSending,\n isVerifying,\n codeSent,\n expiresIn,\n error,\n sendOTP,\n verify,\n signIn,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n","// useSessions hook — session management with multi-session support\n\nimport type {\n AuthError,\n DeviceSession,\n RevokeAllSessionsOptions,\n Session,\n} from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSessions() {\n const { client, session, setUser } = useAuthContext();\n\n const [sessions, setSessions] = useState<Session[]>([]);\n const [deviceSessions, setDeviceSessions] = useState<DeviceSession[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const [sessionsResponse, deviceSessionsResponse] = await Promise.all([\n client.sessions.list(),\n client.sessions.listDeviceSessions(),\n ]);\n setSessions(sessionsResponse.data);\n setDeviceSessions(deviceSessionsResponse);\n } catch (err) {\n setError(err as AuthError);\n } finally {\n setIsLoading(false);\n }\n }, [client]);\n\n const revokeSession = useCallback(\n async (id: string) => {\n await client.sessions.revoke(id);\n await refresh();\n },\n [client, refresh],\n );\n\n const revokeAllSessions = useCallback(\n async (options?: RevokeAllSessionsOptions) => {\n await client.sessions.revokeAll(options);\n await refresh();\n },\n [client, refresh],\n );\n\n const switchAccount = useCallback(\n async (sessionToken: string) => {\n const response = await client.sessions.setActive({ sessionToken });\n setUser(response.user);\n },\n [client, setUser],\n );\n\n const revokeDeviceSession = useCallback(\n async (sessionToken: string) => {\n await client.sessions.revokeDeviceSession({ sessionToken });\n await refresh();\n },\n [client, refresh],\n );\n\n return {\n session,\n sessions,\n deviceSessions,\n isLoading,\n error,\n refresh,\n revokeSession,\n revokeAllSessions,\n switchAccount,\n revokeDeviceSession,\n };\n}\n","// useUser hook — profile, 2FA, OAuth, and phone management\n\nimport type { AuthError, ConnectOAuthRequest, UserUpdate } from \"@atzentis/auth-sdk\";\nimport { useCallback, useState } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useUser() {\n const { client, user, setUser } = useAuthContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const updateProfile = useCallback(\n async (data: UserUpdate) => {\n setIsLoading(true);\n setError(null);\n try {\n const updated = await client.users.update(data);\n setUser(updated);\n return updated;\n } catch (err) {\n setError(err as AuthError);\n throw err;\n } finally {\n setIsLoading(false);\n }\n },\n [client, setUser],\n );\n\n const changePassword = useCallback(\n async (currentPassword: string, newPassword: string) => {\n await client.users.changePassword({ currentPassword, newPassword });\n },\n [client],\n );\n\n const setupTwoFactor = useCallback(async () => {\n return client.users.setupTwoFactor();\n }, [client]);\n\n const verifyTwoFactorSetup = useCallback(\n async (code: string) => {\n await client.users.verifyTwoFactorSetup({ code });\n },\n [client],\n );\n\n const disableTwoFactor = useCallback(\n async (password: string) => {\n await client.users.disableTwoFactor({ password });\n },\n [client],\n );\n\n const deleteAccount = useCallback(\n async (password: string, reason?: string) => {\n await client.users.deleteAccount({ password, reason });\n setUser(null);\n },\n [client, setUser],\n );\n\n const listConnectedProviders = useCallback(async () => {\n return client.users.listConnectedProviders();\n }, [client]);\n\n const connectOAuthProvider = useCallback(\n async (data: ConnectOAuthRequest) => {\n return client.users.connectOAuthProvider(data);\n },\n [client],\n );\n\n const disconnectOAuthProvider = useCallback(\n async (provider: string) => {\n await client.users.disconnectOAuthProvider(provider);\n },\n [client],\n );\n\n const addPhoneNumber = useCallback(\n async (phoneNumber: string) => {\n await client.users.addPhoneNumber({ phoneNumber });\n },\n [client],\n );\n\n const verifyPhoneNumber = useCallback(\n async (code: string) => {\n await client.users.verifyPhoneNumber({ code });\n },\n [client],\n );\n\n const removePhoneNumber = useCallback(\n async (password: string) => {\n await client.users.removePhoneNumber({ password });\n },\n [client],\n );\n\n return {\n user,\n isLoading,\n error,\n updateProfile,\n changePassword,\n setupTwoFactor,\n verifyTwoFactorSetup,\n disableTwoFactor,\n deleteAccount,\n listConnectedProviders,\n connectOAuthProvider,\n disconnectOAuthProvider,\n addPhoneNumber,\n verifyPhoneNumber,\n removePhoneNumber,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atzentis/auth-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "Atzentis Auth React — hooks and components for auth.atzentis.com",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"atzentis",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"LICENSE"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@atzentis/auth-sdk": "0.0.
|
|
37
|
+
"@atzentis/auth-sdk": "0.0.13"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"react": ">=18.0.0",
|