@joelbarron/react-web-dev-kit 0.1.8 → 0.1.9
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/README.md +65 -160
- package/package.json +9 -2
- package/dist/auth/client.d.ts +0 -46
- package/dist/auth/client.d.ts.map +0 -1
- package/dist/auth/client.js +0 -379
- package/dist/auth/constants/countryCallingCodes.d.ts +0 -9
- package/dist/auth/constants/countryCallingCodes.d.ts.map +0 -1
- package/dist/auth/constants/countryCallingCodes.js +0 -209
- package/dist/auth/constants/gender.d.ts +0 -9
- package/dist/auth/constants/gender.d.ts.map +0 -1
- package/dist/auth/constants/gender.js +0 -12
- package/dist/auth/constants/index.d.ts +0 -3
- package/dist/auth/constants/index.d.ts.map +0 -1
- package/dist/auth/constants/index.js +0 -2
- package/dist/auth/forms/account/AuthAccountConfirmationForm.d.ts +0 -18
- package/dist/auth/forms/account/AuthAccountConfirmationForm.d.ts.map +0 -1
- package/dist/auth/forms/account/AuthAccountConfirmationForm.js +0 -167
- package/dist/auth/forms/account/index.d.ts +0 -2
- package/dist/auth/forms/account/index.d.ts.map +0 -1
- package/dist/auth/forms/account/index.js +0 -1
- package/dist/auth/forms/errorParser.d.ts +0 -7
- package/dist/auth/forms/errorParser.d.ts.map +0 -1
- package/dist/auth/forms/errorParser.js +0 -65
- package/dist/auth/forms/index.d.ts +0 -6
- package/dist/auth/forms/index.d.ts.map +0 -1
- package/dist/auth/forms/index.js +0 -5
- package/dist/auth/forms/password/AuthForgotPasswordForm.d.ts +0 -16
- package/dist/auth/forms/password/AuthForgotPasswordForm.d.ts.map +0 -1
- package/dist/auth/forms/password/AuthForgotPasswordForm.js +0 -109
- package/dist/auth/forms/password/AuthPasswordResetConfirmForm.d.ts +0 -17
- package/dist/auth/forms/password/AuthPasswordResetConfirmForm.d.ts.map +0 -1
- package/dist/auth/forms/password/AuthPasswordResetConfirmForm.js +0 -163
- package/dist/auth/forms/password/AuthResetPasswordForm.d.ts +0 -12
- package/dist/auth/forms/password/AuthResetPasswordForm.d.ts.map +0 -1
- package/dist/auth/forms/password/AuthResetPasswordForm.js +0 -22
- package/dist/auth/forms/password/index.d.ts +0 -4
- package/dist/auth/forms/password/index.d.ts.map +0 -1
- package/dist/auth/forms/password/index.js +0 -3
- package/dist/auth/forms/password/passwordValidation.d.ts +0 -3
- package/dist/auth/forms/password/passwordValidation.d.ts.map +0 -1
- package/dist/auth/forms/password/passwordValidation.js +0 -45
- package/dist/auth/forms/sign-in/AuthOtpSignInForm.d.ts +0 -24
- package/dist/auth/forms/sign-in/AuthOtpSignInForm.d.ts.map +0 -1
- package/dist/auth/forms/sign-in/AuthOtpSignInForm.js +0 -227
- package/dist/auth/forms/sign-in/AuthPasswordSignInForm.d.ts +0 -22
- package/dist/auth/forms/sign-in/AuthPasswordSignInForm.d.ts.map +0 -1
- package/dist/auth/forms/sign-in/AuthPasswordSignInForm.js +0 -148
- package/dist/auth/forms/sign-in/index.d.ts +0 -3
- package/dist/auth/forms/sign-in/index.d.ts.map +0 -1
- package/dist/auth/forms/sign-in/index.js +0 -2
- package/dist/auth/forms/sign-up/AuthSignUpForm.d.ts +0 -37
- package/dist/auth/forms/sign-up/AuthSignUpForm.d.ts.map +0 -1
- package/dist/auth/forms/sign-up/AuthSignUpForm.js +0 -193
- package/dist/auth/forms/sign-up/index.d.ts +0 -2
- package/dist/auth/forms/sign-up/index.d.ts.map +0 -1
- package/dist/auth/forms/sign-up/index.js +0 -1
- package/dist/auth/fuse/createFuseAuthViews.d.ts +0 -25
- package/dist/auth/fuse/createFuseAuthViews.d.ts.map +0 -1
- package/dist/auth/fuse/createFuseAuthViews.js +0 -510
- package/dist/auth/fuse/fuseAdapter.d.ts +0 -42
- package/dist/auth/fuse/fuseAdapter.d.ts.map +0 -1
- package/dist/auth/fuse/fuseAdapter.js +0 -291
- package/dist/auth/fuse/fuseIntegration.d.ts +0 -61
- package/dist/auth/fuse/fuseIntegration.d.ts.map +0 -1
- package/dist/auth/fuse/fuseIntegration.js +0 -103
- package/dist/auth/fuse/index.d.ts +0 -4
- package/dist/auth/fuse/index.d.ts.map +0 -1
- package/dist/auth/fuse/index.js +0 -3
- package/dist/auth/index.d.ts +0 -11
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -10
- package/dist/auth/provider.d.ts +0 -35
- package/dist/auth/provider.d.ts.map +0 -1
- package/dist/auth/provider.js +0 -133
- package/dist/auth/query.d.ts +0 -23
- package/dist/auth/query.d.ts.map +0 -1
- package/dist/auth/query.js +0 -103
- package/dist/auth/routes.d.ts +0 -37
- package/dist/auth/routes.d.ts.map +0 -1
- package/dist/auth/routes.js +0 -75
- package/dist/auth/social/providerAuth.d.ts +0 -101
- package/dist/auth/social/providerAuth.d.ts.map +0 -1
- package/dist/auth/social/providerAuth.js +0 -207
- package/dist/auth/storage.d.ts +0 -3
- package/dist/auth/storage.d.ts.map +0 -1
- package/dist/auth/storage.js +0 -20
- package/dist/auth/types.d.ts +0 -238
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -1
- package/dist/auth/ui/AuthPageTitle.d.ts +0 -7
- package/dist/auth/ui/AuthPageTitle.d.ts.map +0 -1
- package/dist/auth/ui/AuthPageTitle.js +0 -7
- package/dist/auth/ui/AuthPagesMessageSection.d.ts +0 -3
- package/dist/auth/ui/AuthPagesMessageSection.d.ts.map +0 -1
- package/dist/auth/ui/AuthPagesMessageSection.js +0 -39
- package/dist/auth/ui/AuthPrimaryButton.d.ts +0 -9
- package/dist/auth/ui/AuthPrimaryButton.d.ts.map +0 -1
- package/dist/auth/ui/AuthPrimaryButton.js +0 -19
- package/dist/auth/ui/AuthRoleSelectionDialog.d.ts +0 -14
- package/dist/auth/ui/AuthRoleSelectionDialog.d.ts.map +0 -1
- package/dist/auth/ui/AuthRoleSelectionDialog.js +0 -39
- package/dist/auth/ui/AuthRoutePageWrapper.d.ts +0 -12
- package/dist/auth/ui/AuthRoutePageWrapper.d.ts.map +0 -1
- package/dist/auth/ui/AuthRoutePageWrapper.js +0 -61
- package/dist/auth/ui/AuthSecondaryButton.d.ts +0 -7
- package/dist/auth/ui/AuthSecondaryButton.d.ts.map +0 -1
- package/dist/auth/ui/AuthSecondaryButton.js +0 -18
- package/dist/auth/ui/AuthSocialProviderButton.d.ts +0 -11
- package/dist/auth/ui/AuthSocialProviderButton.d.ts.map +0 -1
- package/dist/auth/ui/AuthSocialProviderButton.js +0 -33
- package/dist/auth/ui/index.d.ts +0 -9
- package/dist/auth/ui/index.d.ts.map +0 -1
- package/dist/auth/ui/index.js +0 -8
- package/dist/auth/ui/types.d.ts +0 -15
- package/dist/auth/ui/types.d.ts.map +0 -1
- package/dist/auth/ui/types.js +0 -1
- package/dist/config/createConfig.d.ts +0 -14
- package/dist/config/createConfig.d.ts.map +0 -1
- package/dist/config/createConfig.js +0 -179
- package/dist/config/defaults.d.ts +0 -3
- package/dist/config/defaults.d.ts.map +0 -1
- package/dist/config/defaults.js +0 -39
- package/dist/config/index.d.ts +0 -5
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -4
- package/dist/config/merge.d.ts +0 -2
- package/dist/config/merge.d.ts.map +0 -1
- package/dist/config/merge.js +0 -18
- package/dist/config/types.d.ts +0 -53
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -1
- package/dist/core/buttons/JBButton.d.ts +0 -8
- package/dist/core/buttons/JBButton.d.ts.map +0 -1
- package/dist/core/buttons/JBButton.js +0 -55
- package/dist/core/buttons/index.d.ts +0 -2
- package/dist/core/buttons/index.d.ts.map +0 -1
- package/dist/core/buttons/index.js +0 -1
- package/dist/core/dialogs/JBConfirmDialog.d.ts +0 -15
- package/dist/core/dialogs/JBConfirmDialog.d.ts.map +0 -1
- package/dist/core/dialogs/JBConfirmDialog.js +0 -6
- package/dist/core/dialogs/index.d.ts +0 -2
- package/dist/core/dialogs/index.d.ts.map +0 -1
- package/dist/core/dialogs/index.js +0 -1
- package/dist/core/index.d.ts +0 -5
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -4
- package/dist/core/layout/JBContentContainer.d.ts +0 -31
- package/dist/core/layout/JBContentContainer.d.ts.map +0 -1
- package/dist/core/layout/JBContentContainer.js +0 -50
- package/dist/core/layout/JBFormHeader.d.ts +0 -3
- package/dist/core/layout/JBFormHeader.d.ts.map +0 -1
- package/dist/core/layout/JBFormHeader.js +0 -131
- package/dist/core/layout/index.d.ts +0 -3
- package/dist/core/layout/index.d.ts.map +0 -1
- package/dist/core/layout/index.js +0 -2
- package/dist/core/skeletons/JBFormContentSkeleton.d.ts +0 -5
- package/dist/core/skeletons/JBFormContentSkeleton.d.ts.map +0 -1
- package/dist/core/skeletons/JBFormContentSkeleton.js +0 -12
- package/dist/core/skeletons/JBFormHeaderSkeleton.d.ts +0 -6
- package/dist/core/skeletons/JBFormHeaderSkeleton.d.ts.map +0 -1
- package/dist/core/skeletons/JBFormHeaderSkeleton.js +0 -19
- package/dist/core/skeletons/index.d.ts +0 -3
- package/dist/core/skeletons/index.d.ts.map +0 -1
- package/dist/core/skeletons/index.js +0 -2
- package/dist/forms/JBAutocompleteField.d.ts +0 -12
- package/dist/forms/JBAutocompleteField.d.ts.map +0 -1
- package/dist/forms/JBAutocompleteField.js +0 -20
- package/dist/forms/JBCheckboxField.d.ts +0 -12
- package/dist/forms/JBCheckboxField.d.ts.map +0 -1
- package/dist/forms/JBCheckboxField.js +0 -36
- package/dist/forms/JBDatePickerField.d.ts +0 -13
- package/dist/forms/JBDatePickerField.d.ts.map +0 -1
- package/dist/forms/JBDatePickerField.js +0 -49
- package/dist/forms/JBRadioGroupField.d.ts +0 -10
- package/dist/forms/JBRadioGroupField.d.ts.map +0 -1
- package/dist/forms/JBRadioGroupField.js +0 -8
- package/dist/forms/JBSelectField.d.ts +0 -9
- package/dist/forms/JBSelectField.d.ts.map +0 -1
- package/dist/forms/JBSelectField.js +0 -8
- package/dist/forms/JBSwitchField.d.ts +0 -11
- package/dist/forms/JBSwitchField.d.ts.map +0 -1
- package/dist/forms/JBSwitchField.js +0 -10
- package/dist/forms/JBTextField.d.ts +0 -6
- package/dist/forms/JBTextField.d.ts.map +0 -1
- package/dist/forms/JBTextField.js +0 -8
- package/dist/forms/JBTimePickerField.d.ts +0 -12
- package/dist/forms/JBTimePickerField.d.ts.map +0 -1
- package/dist/forms/JBTimePickerField.js +0 -17
- package/dist/forms/index.d.ts +0 -13
- package/dist/forms/index.d.ts.map +0 -1
- package/dist/forms/index.js +0 -12
- package/dist/forms/rules.d.ts +0 -16
- package/dist/forms/rules.d.ts.map +0 -1
- package/dist/forms/rules.js +0 -21
- package/dist/forms/types.d.ts +0 -12
- package/dist/forms/types.d.ts.map +0 -1
- package/dist/forms/types.js +0 -1
- package/dist/forms/utils.d.ts +0 -5
- package/dist/forms/utils.d.ts.map +0 -1
- package/dist/forms/utils.js +0 -7
- package/dist/forms/zod.d.ts +0 -4
- package/dist/forms/zod.d.ts.map +0 -1
- package/dist/forms/zod.js +0 -9
- package/dist/grid/JBGrid.d.ts +0 -3
- package/dist/grid/JBGrid.d.ts.map +0 -1
- package/dist/grid/JBGrid.js +0 -338
- package/dist/grid/JBGridHeader.d.ts +0 -3
- package/dist/grid/JBGridHeader.d.ts.map +0 -1
- package/dist/grid/JBGridHeader.js +0 -93
- package/dist/grid/JBGridLoading.d.ts +0 -9
- package/dist/grid/JBGridLoading.d.ts.map +0 -1
- package/dist/grid/JBGridLoading.js +0 -14
- package/dist/grid/JBGridProviders.d.ts +0 -13
- package/dist/grid/JBGridProviders.d.ts.map +0 -1
- package/dist/grid/JBGridProviders.js +0 -54
- package/dist/grid/JBGridSkeleton.d.ts +0 -7
- package/dist/grid/JBGridSkeleton.d.ts.map +0 -1
- package/dist/grid/JBGridSkeleton.js +0 -6
- package/dist/grid/defaults.d.ts +0 -4
- package/dist/grid/defaults.d.ts.map +0 -1
- package/dist/grid/defaults.js +0 -29
- package/dist/grid/index.d.ts +0 -8
- package/dist/grid/index.d.ts.map +0 -1
- package/dist/grid/index.js +0 -7
- package/dist/grid/types.d.ts +0 -197
- package/dist/grid/types.d.ts.map +0 -1
- package/dist/grid/types.js +0 -1
- package/dist/hooks/index.d.ts +0 -4
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -3
- package/dist/hooks/useJBDebouncedValue.d.ts +0 -2
- package/dist/hooks/useJBDebouncedValue.d.ts.map +0 -1
- package/dist/hooks/useJBDebouncedValue.js +0 -11
- package/dist/hooks/useJBEntityFormController.d.ts +0 -54
- package/dist/hooks/useJBEntityFormController.d.ts.map +0 -1
- package/dist/hooks/useJBEntityFormController.js +0 -156
- package/dist/hooks/useJBRedirect.d.ts +0 -10
- package/dist/hooks/useJBRedirect.d.ts.map +0 -1
- package/dist/hooks/useJBRedirect.js +0 -11
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -8
- package/dist/query/createQueryClient.d.ts +0 -8
- package/dist/query/createQueryClient.d.ts.map +0 -1
- package/dist/query/createQueryClient.js +0 -25
- package/dist/query/http.d.ts +0 -3
- package/dist/query/http.d.ts.map +0 -1
- package/dist/query/http.js +0 -12
- package/dist/query/index.d.ts +0 -4
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -3
- package/dist/query/types.d.ts +0 -7
- package/dist/query/types.d.ts.map +0 -1
- package/dist/query/types.js +0 -1
- package/dist/utils/errors.d.ts +0 -10
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -55
- package/dist/utils/format.d.ts +0 -4
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js +0 -28
- package/dist/utils/geo.d.ts +0 -9
- package/dist/utils/geo.d.ts.map +0 -1
- package/dist/utils/geo.js +0 -186
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -5
- package/dist/utils/query.d.ts +0 -2
- package/dist/utils/query.d.ts.map +0 -1
- package/dist/utils/query.js +0 -4
- package/dist/utils/regex.d.ts +0 -7
- package/dist/utils/regex.d.ts.map +0 -1
- package/dist/utils/regex.js +0 -6
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useState } from 'react';
|
|
3
|
-
const FuseJwtAuthContext = createContext(undefined);
|
|
4
|
-
const asRecord = (value) => (value ?? {});
|
|
5
|
-
const isTokenValid = (token) => {
|
|
6
|
-
if (!token) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
try {
|
|
10
|
-
const payload = JSON.parse(atob(token.split('.')[1]));
|
|
11
|
-
return payload.exp > Date.now() / 1000;
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const normalizeUserShape = (userInput) => {
|
|
18
|
-
const user = asRecord(userInput);
|
|
19
|
-
const userData = asRecord(user.data);
|
|
20
|
-
const displayName = user.displayName ||
|
|
21
|
-
userData.displayName ||
|
|
22
|
-
[userData.firstName, userData.middleName, userData.lastName].filter(Boolean).join(' ') ||
|
|
23
|
-
'User';
|
|
24
|
-
return {
|
|
25
|
-
id: (user.id || user.user_id || user.pk || userData.id || userData.user_id || userData.pk || '0'),
|
|
26
|
-
role: (user.role || user.roles || userData.role || userData.roles || ['admin']),
|
|
27
|
-
displayName,
|
|
28
|
-
photoURL: (user.photoURL || user.photoUrl || userData.photoURL || userData.photoUrl || ''),
|
|
29
|
-
email: (user.email || userData.email || ''),
|
|
30
|
-
shortcuts: (user.shortcuts || userData.shortcuts || []) || [],
|
|
31
|
-
settings: (user.settings || userData.settings || {}),
|
|
32
|
-
loginRedirectUrl: (user.loginRedirectUrl || userData.loginRedirectUrl || '/')
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
const getTokens = (data) => {
|
|
36
|
-
const tokens = asRecord(data.tokens);
|
|
37
|
-
const accessToken = (data.access_token || tokens.accessToken || tokens.access_token || data.access);
|
|
38
|
-
const refreshToken = (data.refresh_token || tokens.refreshToken || tokens.refresh_token || data.refresh || null);
|
|
39
|
-
return { accessToken, refreshToken };
|
|
40
|
-
};
|
|
41
|
-
const normalizeSession = (response) => {
|
|
42
|
-
const data = asRecord(response);
|
|
43
|
-
const { accessToken, refreshToken } = getTokens(data);
|
|
44
|
-
const user = normalizeUserShape(data.user);
|
|
45
|
-
if (!accessToken) {
|
|
46
|
-
throw new Error('Invalid auth response: missing access token');
|
|
47
|
-
}
|
|
48
|
-
return {
|
|
49
|
-
user,
|
|
50
|
-
accessToken,
|
|
51
|
-
refreshToken
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
export const createFuseJwtAuthProvider = (authClient) => {
|
|
55
|
-
function FuseJwtAuthProvider(props) {
|
|
56
|
-
const { ref, children, onAuthStateChanged } = props;
|
|
57
|
-
const [authState, setAuthState] = useState({
|
|
58
|
-
authStatus: 'configuring',
|
|
59
|
-
isAuthenticated: false,
|
|
60
|
-
user: null
|
|
61
|
-
});
|
|
62
|
-
useEffect(() => {
|
|
63
|
-
if (onAuthStateChanged) {
|
|
64
|
-
onAuthStateChanged(authState);
|
|
65
|
-
}
|
|
66
|
-
}, [authState, onAuthStateChanged]);
|
|
67
|
-
const signOut = useCallback(() => {
|
|
68
|
-
authClient.logout();
|
|
69
|
-
setAuthState({
|
|
70
|
-
authStatus: 'unauthenticated',
|
|
71
|
-
isAuthenticated: false,
|
|
72
|
-
user: null
|
|
73
|
-
});
|
|
74
|
-
}, []);
|
|
75
|
-
const refreshToken = useCallback(async () => {
|
|
76
|
-
try {
|
|
77
|
-
const response = await authClient.refreshToken();
|
|
78
|
-
return response.accessToken || null;
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
}, []);
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
let isMounted = true;
|
|
86
|
-
const attemptAutoLogin = async () => {
|
|
87
|
-
let token = authClient.getAccessToken();
|
|
88
|
-
if (!isTokenValid(token)) {
|
|
89
|
-
token = await refreshToken();
|
|
90
|
-
}
|
|
91
|
-
if (!isTokenValid(token)) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
authClient.setAccessToken(token);
|
|
96
|
-
const response = await authClient.getMe();
|
|
97
|
-
return normalizeUserShape(response.user);
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
if (!authState.isAuthenticated) {
|
|
104
|
-
attemptAutoLogin().then((userData) => {
|
|
105
|
-
if (!isMounted) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (userData) {
|
|
109
|
-
setAuthState({
|
|
110
|
-
authStatus: 'authenticated',
|
|
111
|
-
isAuthenticated: true,
|
|
112
|
-
user: userData
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
authClient.logout();
|
|
117
|
-
setAuthState({
|
|
118
|
-
authStatus: 'unauthenticated',
|
|
119
|
-
isAuthenticated: false,
|
|
120
|
-
user: null
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
return () => {
|
|
126
|
-
isMounted = false;
|
|
127
|
-
};
|
|
128
|
-
}, [authState.isAuthenticated, refreshToken]);
|
|
129
|
-
const signIn = useCallback(async (credentials) => {
|
|
130
|
-
const session = normalizeSession(await authClient.loginBasic({
|
|
131
|
-
login: credentials.login || credentials.username || '',
|
|
132
|
-
password: credentials.password,
|
|
133
|
-
client: 'web'
|
|
134
|
-
}));
|
|
135
|
-
setAuthState({
|
|
136
|
-
authStatus: 'authenticated',
|
|
137
|
-
isAuthenticated: true,
|
|
138
|
-
user: session.user
|
|
139
|
-
});
|
|
140
|
-
return {
|
|
141
|
-
user: session.user,
|
|
142
|
-
accessToken: session.accessToken,
|
|
143
|
-
refreshToken: session.refreshToken,
|
|
144
|
-
access_token: session.accessToken,
|
|
145
|
-
refresh_token: session.refreshToken
|
|
146
|
-
};
|
|
147
|
-
}, []);
|
|
148
|
-
const requestOtp = useCallback(async (payload) => authClient.requestOtp(payload), []);
|
|
149
|
-
const signInSocial = useCallback(async (payload) => {
|
|
150
|
-
const session = normalizeSession(await authClient.loginSocial({
|
|
151
|
-
...payload,
|
|
152
|
-
client: payload.client ?? 'web'
|
|
153
|
-
}));
|
|
154
|
-
setAuthState({
|
|
155
|
-
authStatus: 'authenticated',
|
|
156
|
-
isAuthenticated: true,
|
|
157
|
-
user: session.user
|
|
158
|
-
});
|
|
159
|
-
return {
|
|
160
|
-
user: session.user,
|
|
161
|
-
accessToken: session.accessToken,
|
|
162
|
-
refreshToken: session.refreshToken,
|
|
163
|
-
access_token: session.accessToken,
|
|
164
|
-
refresh_token: session.refreshToken
|
|
165
|
-
};
|
|
166
|
-
}, []);
|
|
167
|
-
const signInSocialPrecheck = useCallback(async (payload) => authClient.loginSocialPrecheck({
|
|
168
|
-
...payload,
|
|
169
|
-
client: payload.client ?? 'web'
|
|
170
|
-
}), []);
|
|
171
|
-
const signInOtp = useCallback(async (payload) => {
|
|
172
|
-
const session = normalizeSession(await authClient.verifyOtp({
|
|
173
|
-
...payload,
|
|
174
|
-
client: payload.client ?? 'web'
|
|
175
|
-
}));
|
|
176
|
-
setAuthState({
|
|
177
|
-
authStatus: 'authenticated',
|
|
178
|
-
isAuthenticated: true,
|
|
179
|
-
user: session.user
|
|
180
|
-
});
|
|
181
|
-
return {
|
|
182
|
-
user: session.user,
|
|
183
|
-
accessToken: session.accessToken,
|
|
184
|
-
refreshToken: session.refreshToken,
|
|
185
|
-
access_token: session.accessToken,
|
|
186
|
-
refresh_token: session.refreshToken
|
|
187
|
-
};
|
|
188
|
-
}, []);
|
|
189
|
-
const signInMagicLink = useCallback(async (payload) => {
|
|
190
|
-
const session = normalizeSession(await authClient.consumeMagicLink({
|
|
191
|
-
...payload,
|
|
192
|
-
client: payload.client ?? 'web'
|
|
193
|
-
}));
|
|
194
|
-
setAuthState({
|
|
195
|
-
authStatus: 'authenticated',
|
|
196
|
-
isAuthenticated: true,
|
|
197
|
-
user: session.user
|
|
198
|
-
});
|
|
199
|
-
return {
|
|
200
|
-
user: session.user,
|
|
201
|
-
accessToken: session.accessToken,
|
|
202
|
-
refreshToken: session.refreshToken,
|
|
203
|
-
access_token: session.accessToken,
|
|
204
|
-
refresh_token: session.refreshToken
|
|
205
|
-
};
|
|
206
|
-
}, []);
|
|
207
|
-
const signUp = useCallback(async (payload) => {
|
|
208
|
-
const response = await authClient.register(payload);
|
|
209
|
-
return response;
|
|
210
|
-
}, []);
|
|
211
|
-
const requestPasswordReset = useCallback(async (payload) => authClient.requestPasswordReset(payload), []);
|
|
212
|
-
const confirmAccountEmail = useCallback(async (payload) => authClient.confirmAccountEmail(payload), []);
|
|
213
|
-
const resendAccountConfirmation = useCallback(async (payload) => authClient.resendAccountConfirmation(payload), []);
|
|
214
|
-
const confirmPasswordReset = useCallback(async (payload) => authClient.confirmPasswordReset(payload), []);
|
|
215
|
-
const changePassword = useCallback(async (payload) => authClient.changePassword(payload), []);
|
|
216
|
-
const switchProfile = useCallback(async (profileId) => {
|
|
217
|
-
const session = normalizeSession(await authClient.switchProfile({
|
|
218
|
-
profile: profileId,
|
|
219
|
-
client: 'web'
|
|
220
|
-
}));
|
|
221
|
-
setAuthState({
|
|
222
|
-
authStatus: 'authenticated',
|
|
223
|
-
isAuthenticated: true,
|
|
224
|
-
user: session.user
|
|
225
|
-
});
|
|
226
|
-
return {
|
|
227
|
-
user: session.user,
|
|
228
|
-
accessToken: session.accessToken,
|
|
229
|
-
refreshToken: session.refreshToken,
|
|
230
|
-
access_token: session.accessToken,
|
|
231
|
-
refresh_token: session.refreshToken
|
|
232
|
-
};
|
|
233
|
-
}, []);
|
|
234
|
-
const getProfiles = useCallback(async () => {
|
|
235
|
-
const response = await authClient.getProfiles();
|
|
236
|
-
if (Array.isArray(response)) {
|
|
237
|
-
return response;
|
|
238
|
-
}
|
|
239
|
-
return (response.results ?? []);
|
|
240
|
-
}, []);
|
|
241
|
-
const contextValue = useMemo(() => ({
|
|
242
|
-
...authState,
|
|
243
|
-
signIn,
|
|
244
|
-
signInSocial,
|
|
245
|
-
signInSocialPrecheck,
|
|
246
|
-
requestOtp,
|
|
247
|
-
signInOtp,
|
|
248
|
-
signInMagicLink,
|
|
249
|
-
signUp,
|
|
250
|
-
confirmAccountEmail,
|
|
251
|
-
resendAccountConfirmation,
|
|
252
|
-
requestPasswordReset,
|
|
253
|
-
confirmPasswordReset,
|
|
254
|
-
changePassword,
|
|
255
|
-
switchProfile,
|
|
256
|
-
getProfiles,
|
|
257
|
-
signOut,
|
|
258
|
-
refreshToken
|
|
259
|
-
}), [
|
|
260
|
-
authState,
|
|
261
|
-
signIn,
|
|
262
|
-
signInSocial,
|
|
263
|
-
signInSocialPrecheck,
|
|
264
|
-
requestOtp,
|
|
265
|
-
signInOtp,
|
|
266
|
-
signInMagicLink,
|
|
267
|
-
signUp,
|
|
268
|
-
confirmAccountEmail,
|
|
269
|
-
resendAccountConfirmation,
|
|
270
|
-
requestPasswordReset,
|
|
271
|
-
confirmPasswordReset,
|
|
272
|
-
changePassword,
|
|
273
|
-
switchProfile,
|
|
274
|
-
getProfiles,
|
|
275
|
-
signOut,
|
|
276
|
-
refreshToken
|
|
277
|
-
]);
|
|
278
|
-
useImperativeHandle(ref, () => ({
|
|
279
|
-
signOut
|
|
280
|
-
}));
|
|
281
|
-
return _jsx(FuseJwtAuthContext.Provider, { value: contextValue, children: children });
|
|
282
|
-
}
|
|
283
|
-
return FuseJwtAuthProvider;
|
|
284
|
-
};
|
|
285
|
-
export const useFuseJwtAuth = () => {
|
|
286
|
-
const context = useContext(FuseJwtAuthContext);
|
|
287
|
-
if (!context) {
|
|
288
|
-
throw new Error('useFuseJwtAuth must be used within createFuseJwtAuthProvider provider');
|
|
289
|
-
}
|
|
290
|
-
return context;
|
|
291
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
2
|
-
import { AuthClient } from '../client';
|
|
3
|
-
export type FuseUser = {
|
|
4
|
-
id: string;
|
|
5
|
-
role: string[] | string | null;
|
|
6
|
-
displayName: string;
|
|
7
|
-
photoURL?: string;
|
|
8
|
-
email?: string;
|
|
9
|
-
shortcuts?: string[];
|
|
10
|
-
settings?: Record<string, unknown>;
|
|
11
|
-
loginRedirectUrl?: string;
|
|
12
|
-
};
|
|
13
|
-
export declare const fuseAuthRoles: {
|
|
14
|
-
readonly admin: readonly ["admin"];
|
|
15
|
-
readonly staff: readonly ["admin", "staff"];
|
|
16
|
-
readonly user: readonly ["admin", "staff", "user"];
|
|
17
|
-
readonly onlyGuest: readonly [];
|
|
18
|
-
};
|
|
19
|
-
export type FuseAuthRolesMap = Record<string, string[]>;
|
|
20
|
-
export declare function createFuseAuthRoles(customRoles?: FuseAuthRolesMap): FuseAuthRolesMap;
|
|
21
|
-
export declare function createFuseUserModel<TUser extends FuseUser>(): (data?: Partial<TUser>) => TUser;
|
|
22
|
-
type CreateFuseUseUserOptions<TUser extends FuseUser> = {
|
|
23
|
-
useAuth: () => {
|
|
24
|
-
authState: {
|
|
25
|
-
user: TUser | null;
|
|
26
|
-
} | null;
|
|
27
|
-
signOut: () => void;
|
|
28
|
-
updateUser: (updates: Partial<TUser>) => Promise<Response>;
|
|
29
|
-
};
|
|
30
|
-
setIn: (obj: unknown, path: string, value: unknown) => unknown;
|
|
31
|
-
};
|
|
32
|
-
export declare function createFuseUseUser<TUser extends FuseUser>(options: CreateFuseUseUserOptions<TUser>): () => {
|
|
33
|
-
data: TUser;
|
|
34
|
-
isGuest: boolean;
|
|
35
|
-
signOut: () => Promise<void>;
|
|
36
|
-
updateUser: (data: Partial<TUser>) => Promise<TUser>;
|
|
37
|
-
updateUserSettings: (newSettings: TUser["settings"]) => Promise<Record<string, unknown> | undefined>;
|
|
38
|
-
};
|
|
39
|
-
export declare function createWithUser<TProps extends object, TUserHookReturn>(useUserHook: () => TUserHookReturn): (Component: React.ComponentType<TProps & TUserHookReturn>) => (props: TProps) => import("react/jsx-runtime").JSX.Element;
|
|
40
|
-
type CreateFuseAuthenticationOptions<TUser extends FuseUser> = {
|
|
41
|
-
authClient: AuthClient;
|
|
42
|
-
FuseAuthProvider: React.ComponentType<{
|
|
43
|
-
providers: Array<{
|
|
44
|
-
name: string;
|
|
45
|
-
Provider: React.ComponentType<any> | React.ForwardRefExoticComponent<any>;
|
|
46
|
-
}>;
|
|
47
|
-
children: (authState: {
|
|
48
|
-
user?: TUser | null;
|
|
49
|
-
} | null) => ReactNode;
|
|
50
|
-
}>;
|
|
51
|
-
FuseAuthorization: React.ComponentType<{
|
|
52
|
-
userRole: TUser['role'] | undefined;
|
|
53
|
-
children: ReactNode;
|
|
54
|
-
}>;
|
|
55
|
-
providerName?: string;
|
|
56
|
-
};
|
|
57
|
-
export declare function createFuseAuthentication<TUser extends FuseUser>(options: CreateFuseAuthenticationOptions<TUser>): (props: {
|
|
58
|
-
children: ReactNode;
|
|
59
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
60
|
-
export {};
|
|
61
|
-
//# sourceMappingURL=fuseIntegration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fuseIntegration.d.ts","sourceRoot":"","sources":["../../../src/auth/fuse/fuseIntegration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKvC,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAExD,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAwBpF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,QAAQ,MAChD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAG,KAAK,CAetC;AAED,KAAK,wBAAwB,CAAC,KAAK,SAAS,QAAQ,IAAI;IACtD,OAAO,EAAE,MAAM;QACb,SAAS,EAAE;YAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;QACzC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAChE,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC;;;;uBAQxD,OAAO,CAAC,KAAK,CAAC;sCAWC,KAAK,CAAC,UAAU,CAAC;EAuBzE;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAAE,eAAe,EACnE,WAAW,EAAE,MAAM,eAAe,IAET,WAAW,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,eAAe,CAAC,MAC9C,OAAO,MAAM,6CAUjD;AAED,KAAK,+BAA+B,CAAC,KAAK,SAAS,QAAQ,IAAI;IAC7D,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC;QACpC,SAAS,EAAE,KAAK,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;SAC3E,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,KAAK,SAAS,CAAC;KACpE,CAAC,CAAC;IACH,iBAAiB,EAAE,KAAK,CAAC,aAAa,CAAC;QACrC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACpC,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,EAAE,+BAA+B,CAAC,KAAK,CAAC,IAW/E,OAAO;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,6CAY9D"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
import { createFuseJwtAuthProvider } from './fuseAdapter';
|
|
4
|
-
const isEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
5
|
-
export const fuseAuthRoles = {
|
|
6
|
-
admin: ['admin'],
|
|
7
|
-
staff: ['admin', 'staff'],
|
|
8
|
-
user: ['admin', 'staff', 'user'],
|
|
9
|
-
onlyGuest: []
|
|
10
|
-
};
|
|
11
|
-
export function createFuseAuthRoles(customRoles) {
|
|
12
|
-
const mergedRoles = Object.entries(fuseAuthRoles).reduce((accumulator, [roleKey, roleValues]) => {
|
|
13
|
-
accumulator[roleKey] = [...roleValues];
|
|
14
|
-
return accumulator;
|
|
15
|
-
}, {});
|
|
16
|
-
if (!customRoles) {
|
|
17
|
-
return mergedRoles;
|
|
18
|
-
}
|
|
19
|
-
Object.entries(customRoles).forEach(([roleKey, roleValues]) => {
|
|
20
|
-
const normalizedRoleValues = Array.from(new Set(roleValues ?? []));
|
|
21
|
-
if (!mergedRoles[roleKey]) {
|
|
22
|
-
mergedRoles[roleKey] = normalizedRoleValues;
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
mergedRoles[roleKey] = Array.from(new Set([...mergedRoles[roleKey], ...normalizedRoleValues]));
|
|
26
|
-
});
|
|
27
|
-
return mergedRoles;
|
|
28
|
-
}
|
|
29
|
-
export function createFuseUserModel() {
|
|
30
|
-
return (data) => {
|
|
31
|
-
const userData = data || {};
|
|
32
|
-
return {
|
|
33
|
-
id: null,
|
|
34
|
-
role: null,
|
|
35
|
-
displayName: null,
|
|
36
|
-
photoURL: '',
|
|
37
|
-
email: '',
|
|
38
|
-
shortcuts: [],
|
|
39
|
-
settings: {},
|
|
40
|
-
loginRedirectUrl: '/',
|
|
41
|
-
...userData
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export function createFuseUseUser(options) {
|
|
46
|
-
const { useAuth, setIn } = options;
|
|
47
|
-
return function useUser() {
|
|
48
|
-
const { authState, signOut, updateUser } = useAuth();
|
|
49
|
-
const user = authState?.user;
|
|
50
|
-
const isGuest = useMemo(() => !user?.role || user?.role?.length === 0, [user]);
|
|
51
|
-
async function handleUpdateUser(data) {
|
|
52
|
-
const response = await updateUser(data);
|
|
53
|
-
if (!response.ok) {
|
|
54
|
-
throw new Error('Failed to update user');
|
|
55
|
-
}
|
|
56
|
-
const updatedUser = (await response.json());
|
|
57
|
-
return updatedUser;
|
|
58
|
-
}
|
|
59
|
-
async function handleUpdateUserSettings(newSettings) {
|
|
60
|
-
const newUser = setIn(user, 'settings', newSettings);
|
|
61
|
-
if (isEqual(user, newUser)) {
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
const updatedUser = await handleUpdateUser(newUser);
|
|
65
|
-
return updatedUser?.settings;
|
|
66
|
-
}
|
|
67
|
-
async function handleSignOut() {
|
|
68
|
-
return signOut();
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
data: user,
|
|
72
|
-
isGuest,
|
|
73
|
-
signOut: handleSignOut,
|
|
74
|
-
updateUser: handleUpdateUser,
|
|
75
|
-
updateUserSettings: handleUpdateUserSettings
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export function createWithUser(useUserHook) {
|
|
80
|
-
return function withUser(Component) {
|
|
81
|
-
return function WrappedComponent(props) {
|
|
82
|
-
const userProps = useUserHook();
|
|
83
|
-
return (_jsx(Component, { ...props, ...userProps }));
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
export function createFuseAuthentication(options) {
|
|
88
|
-
const { authClient, FuseAuthProvider, FuseAuthorization, providerName = 'jb-jwt' } = options;
|
|
89
|
-
const JwtProvider = createFuseJwtAuthProvider(authClient);
|
|
90
|
-
const providers = [
|
|
91
|
-
{
|
|
92
|
-
name: providerName,
|
|
93
|
-
Provider: JwtProvider
|
|
94
|
-
}
|
|
95
|
-
];
|
|
96
|
-
return function Authentication(props) {
|
|
97
|
-
const { children } = props;
|
|
98
|
-
return (_jsx(FuseAuthProvider, { providers: providers, children: (authState) => {
|
|
99
|
-
const userRole = authState?.user?.role;
|
|
100
|
-
return _jsx(FuseAuthorization, { userRole: userRole, children: children });
|
|
101
|
-
} }));
|
|
102
|
-
};
|
|
103
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/fuse/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
|
package/dist/auth/fuse/index.js
DELETED
package/dist/auth/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './types';
|
|
2
|
-
export * from './storage';
|
|
3
|
-
export * from './client';
|
|
4
|
-
export * from './provider';
|
|
5
|
-
export * from './routes';
|
|
6
|
-
export * from './fuse';
|
|
7
|
-
export * from './ui';
|
|
8
|
-
export * from './query';
|
|
9
|
-
export * from './forms';
|
|
10
|
-
export * from './constants';
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/dist/auth/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from './types';
|
|
2
|
-
export * from './storage';
|
|
3
|
-
export * from './client';
|
|
4
|
-
export * from './provider';
|
|
5
|
-
export * from './routes';
|
|
6
|
-
export * from './fuse';
|
|
7
|
-
export * from './ui';
|
|
8
|
-
export * from './query';
|
|
9
|
-
export * from './forms';
|
|
10
|
-
export * from './constants';
|
package/dist/auth/provider.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { AuthClient } from './client';
|
|
3
|
-
import { AccountConfirmationPayload, AccountConfirmationResendPayload, ApiDetailResponse, LoginBasicPayload, PasswordChangePayload, PasswordResetConfirmPayload, PasswordResetRequestPayload, ProfilesResponse, RegisterPayload, RequestOtpPayload, SwitchProfilePayload, VerifyOtpPayload } from './types';
|
|
4
|
-
export type JBAuthStatus = 'configuring' | 'authenticated' | 'unauthenticated';
|
|
5
|
-
export type JBAuthContextValue = {
|
|
6
|
-
authStatus: JBAuthStatus;
|
|
7
|
-
isAuthenticated: boolean;
|
|
8
|
-
user: unknown | null;
|
|
9
|
-
signIn: (payload: LoginBasicPayload) => Promise<unknown>;
|
|
10
|
-
signUp: (payload: RegisterPayload) => Promise<ApiDetailResponse>;
|
|
11
|
-
confirmAccountEmail: (payload: AccountConfirmationPayload) => Promise<ApiDetailResponse>;
|
|
12
|
-
resendAccountConfirmation: (payload: AccountConfirmationResendPayload) => Promise<ApiDetailResponse>;
|
|
13
|
-
signInOtp: (payload: VerifyOtpPayload) => Promise<unknown>;
|
|
14
|
-
requestOtp: (payload: RequestOtpPayload) => Promise<Record<string, unknown>>;
|
|
15
|
-
requestPasswordReset: (payload: PasswordResetRequestPayload) => Promise<Record<string, unknown>>;
|
|
16
|
-
confirmPasswordReset: (payload: PasswordResetConfirmPayload) => Promise<Record<string, unknown>>;
|
|
17
|
-
changePassword: (payload: PasswordChangePayload) => Promise<Record<string, unknown>>;
|
|
18
|
-
getProfiles: () => Promise<ProfilesResponse>;
|
|
19
|
-
switchProfile: (payload: SwitchProfilePayload) => Promise<unknown>;
|
|
20
|
-
signOut: () => void;
|
|
21
|
-
refreshToken: () => Promise<string | null>;
|
|
22
|
-
};
|
|
23
|
-
type JBAuthProviderProps = {
|
|
24
|
-
authClient: AuthClient;
|
|
25
|
-
children: ReactNode;
|
|
26
|
-
onAuthStateChanged?: (state: {
|
|
27
|
-
authStatus: JBAuthStatus;
|
|
28
|
-
isAuthenticated: boolean;
|
|
29
|
-
user: unknown | null;
|
|
30
|
-
}) => void;
|
|
31
|
-
};
|
|
32
|
-
export declare function JBAuthProvider(props: JBAuthProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export declare function useJBAuth(): JBAuthContextValue;
|
|
34
|
-
export {};
|
|
35
|
-
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/auth/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAyD,MAAM,OAAO,CAAC;AAExG,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE/E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,YAAY,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,mBAAmB,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzF,yBAAyB,EAAE,CAAC,OAAO,EAAE,gCAAgC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrG,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,oBAAoB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjG,oBAAoB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjG,cAAc,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrF,WAAW,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,UAAU,EAAE,YAAY,CAAC;QACzB,eAAe,EAAE,OAAO,CAAC;QACzB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;KACtB,KAAK,IAAI,CAAC;CACZ,CAAC;AAeF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAmKxD;AAED,wBAAgB,SAAS,uBAMxB"}
|
package/dist/auth/provider.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
const JBAuthContext = createContext(undefined);
|
|
4
|
-
const isTokenValid = (token) => {
|
|
5
|
-
if (!token)
|
|
6
|
-
return false;
|
|
7
|
-
try {
|
|
8
|
-
const payload = JSON.parse(atob(token.split('.')[1]));
|
|
9
|
-
const now = Date.now() / 1000;
|
|
10
|
-
return payload.exp > now;
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
export function JBAuthProvider(props) {
|
|
17
|
-
const { authClient, children, onAuthStateChanged } = props;
|
|
18
|
-
const [authStatus, setAuthStatus] = useState('configuring');
|
|
19
|
-
const [user, setUser] = useState(null);
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
onAuthStateChanged?.({
|
|
22
|
-
authStatus,
|
|
23
|
-
isAuthenticated: authStatus === 'authenticated',
|
|
24
|
-
user
|
|
25
|
-
});
|
|
26
|
-
}, [authStatus, onAuthStateChanged, user]);
|
|
27
|
-
const setAuthenticatedSession = useCallback((authResponse) => {
|
|
28
|
-
setUser(authResponse.user ?? null);
|
|
29
|
-
setAuthStatus('authenticated');
|
|
30
|
-
return authResponse.user ?? null;
|
|
31
|
-
}, []);
|
|
32
|
-
const signIn = useCallback(async (payload) => {
|
|
33
|
-
const response = await authClient.loginBasic(payload);
|
|
34
|
-
return setAuthenticatedSession(response);
|
|
35
|
-
}, [authClient, setAuthenticatedSession]);
|
|
36
|
-
const signInOtp = useCallback(async (payload) => {
|
|
37
|
-
const response = await authClient.verifyOtp(payload);
|
|
38
|
-
return setAuthenticatedSession(response);
|
|
39
|
-
}, [authClient, setAuthenticatedSession]);
|
|
40
|
-
const signUp = useCallback(async (payload) => {
|
|
41
|
-
const response = await authClient.register(payload);
|
|
42
|
-
return response;
|
|
43
|
-
}, [authClient]);
|
|
44
|
-
const confirmAccountEmail = useCallback(async (payload) => authClient.confirmAccountEmail(payload), [authClient]);
|
|
45
|
-
const resendAccountConfirmation = useCallback(async (payload) => authClient.resendAccountConfirmation(payload), [authClient]);
|
|
46
|
-
const signOut = useCallback(() => {
|
|
47
|
-
authClient.logout();
|
|
48
|
-
setUser(null);
|
|
49
|
-
setAuthStatus('unauthenticated');
|
|
50
|
-
}, [authClient]);
|
|
51
|
-
const refreshToken = useCallback(async () => {
|
|
52
|
-
const response = await authClient.refreshToken();
|
|
53
|
-
return response.accessToken || null;
|
|
54
|
-
}, [authClient]);
|
|
55
|
-
const requestOtp = useCallback(async (payload) => authClient.requestOtp(payload), [authClient]);
|
|
56
|
-
const requestPasswordReset = useCallback(async (payload) => authClient.requestPasswordReset(payload), [authClient]);
|
|
57
|
-
const confirmPasswordReset = useCallback(async (payload) => authClient.confirmPasswordReset(payload), [authClient]);
|
|
58
|
-
const changePassword = useCallback(async (payload) => authClient.changePassword(payload), [authClient]);
|
|
59
|
-
const getProfiles = useCallback(async () => authClient.getProfiles(), [authClient]);
|
|
60
|
-
const switchProfile = useCallback(async (payload) => {
|
|
61
|
-
const response = await authClient.switchProfile(payload);
|
|
62
|
-
return setAuthenticatedSession(response);
|
|
63
|
-
}, [authClient, setAuthenticatedSession]);
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
let isMounted = true;
|
|
66
|
-
const bootstrapAuth = async () => {
|
|
67
|
-
const accessToken = authClient.getAccessToken();
|
|
68
|
-
if (!isTokenValid(accessToken)) {
|
|
69
|
-
setAuthStatus('unauthenticated');
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const response = await authClient.getMe();
|
|
74
|
-
if (!isMounted)
|
|
75
|
-
return;
|
|
76
|
-
setAuthenticatedSession(response);
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
if (!isMounted)
|
|
80
|
-
return;
|
|
81
|
-
authClient.logout();
|
|
82
|
-
setUser(null);
|
|
83
|
-
setAuthStatus('unauthenticated');
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
bootstrapAuth();
|
|
87
|
-
return () => {
|
|
88
|
-
isMounted = false;
|
|
89
|
-
};
|
|
90
|
-
}, [authClient, setAuthenticatedSession]);
|
|
91
|
-
const contextValue = useMemo(() => ({
|
|
92
|
-
authStatus,
|
|
93
|
-
isAuthenticated: authStatus === 'authenticated',
|
|
94
|
-
user,
|
|
95
|
-
signIn,
|
|
96
|
-
signUp,
|
|
97
|
-
confirmAccountEmail,
|
|
98
|
-
resendAccountConfirmation,
|
|
99
|
-
signInOtp,
|
|
100
|
-
requestOtp,
|
|
101
|
-
requestPasswordReset,
|
|
102
|
-
confirmPasswordReset,
|
|
103
|
-
changePassword,
|
|
104
|
-
getProfiles,
|
|
105
|
-
switchProfile,
|
|
106
|
-
signOut,
|
|
107
|
-
refreshToken
|
|
108
|
-
}), [
|
|
109
|
-
authStatus,
|
|
110
|
-
user,
|
|
111
|
-
signIn,
|
|
112
|
-
signUp,
|
|
113
|
-
confirmAccountEmail,
|
|
114
|
-
resendAccountConfirmation,
|
|
115
|
-
signInOtp,
|
|
116
|
-
requestOtp,
|
|
117
|
-
requestPasswordReset,
|
|
118
|
-
confirmPasswordReset,
|
|
119
|
-
changePassword,
|
|
120
|
-
getProfiles,
|
|
121
|
-
switchProfile,
|
|
122
|
-
signOut,
|
|
123
|
-
refreshToken
|
|
124
|
-
]);
|
|
125
|
-
return _jsx(JBAuthContext.Provider, { value: contextValue, children: children });
|
|
126
|
-
}
|
|
127
|
-
export function useJBAuth() {
|
|
128
|
-
const context = useContext(JBAuthContext);
|
|
129
|
-
if (!context) {
|
|
130
|
-
throw new Error('useJBAuth must be used within JBAuthProvider');
|
|
131
|
-
}
|
|
132
|
-
return context;
|
|
133
|
-
}
|