@q2devel/q2-core 1.0.5 → 1.0.6
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/auth/auth/auth.config.d.ts +14 -0
- package/dist/auth/auth/auth.config.d.ts.map +1 -0
- package/dist/auth/auth/auth.d.ts +36 -0
- package/dist/auth/auth/auth.d.ts.map +1 -0
- package/dist/auth/auth/auth.js +111 -0
- package/dist/auth/auth/auth.types.d.ts +38 -0
- package/dist/auth/auth/auth.types.d.ts.map +1 -0
- package/dist/auth/context/AuthContext.d.ts +4 -0
- package/dist/auth/context/AuthContext.d.ts.map +1 -0
- package/dist/auth/context/AuthContext.js +158 -0
- package/dist/auth/hooks/useCurrentUser.d.ts +11 -0
- package/dist/auth/hooks/useCurrentUser.d.ts.map +1 -0
- package/dist/auth/hooks/useCurrentUser.js +15 -0
- package/dist/auth/hooks/useSignIn.d.ts +7 -0
- package/dist/auth/hooks/useSignIn.d.ts.map +1 -0
- package/dist/auth/hooks/useSignIn.js +33 -0
- package/dist/auth/hooks/useSignOut.d.ts +5 -0
- package/dist/auth/hooks/useSignOut.d.ts.map +1 -0
- package/dist/auth/hooks/useSignOut.js +27 -0
- package/dist/auth/services/user.service.d.ts +11 -0
- package/dist/auth/services/user.service.d.ts.map +1 -0
- package/dist/auth/services/user.service.js +24 -0
- package/dist/auth/services/userService.types.d.ts +42 -0
- package/dist/auth/services/userService.types.d.ts.map +1 -0
- package/dist/auth/services/userService.types.js +1 -0
- package/dist/hooks/user/useGetUser.d.ts +1 -1
- package/dist/hooks/user/useGetUser.d.ts.map +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/package.json +5 -1
- package/dist/api/user/getUserCart.d.ts +0 -1
- package/dist/api/user/getUserCart.d.ts.map +0 -1
- package/dist/api/user/getUserCart.js +0 -1
- package/dist/types/ResetPassword.d.ts +0 -8
- package/dist/types/ResetPassword.d.ts.map +0 -1
- package/dist/types/content/ResetPassword.d.ts +0 -8
- package/dist/types/content/ResetPassword.d.ts.map +0 -1
- /package/dist/{types/ResetPassword.js → auth/auth/auth.config.js} +0 -0
- /package/dist/{types/content/ResetPassword.js → auth/auth/auth.types.js} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AuthConfig {
|
|
2
|
+
drupalBaseUrl: string;
|
|
3
|
+
clientId: string;
|
|
4
|
+
clientSecret: string;
|
|
5
|
+
cookieOptions?: {
|
|
6
|
+
secure?: boolean;
|
|
7
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
8
|
+
expires?: number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface AuthContext {
|
|
12
|
+
config: AuthConfig;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=auth.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.config.d.ts","sourceRoot":"","sources":["../../../auth/auth/auth.config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;QACpC,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACJ;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,UAAU,CAAA;CACrB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AuthConfig } from './auth.config';
|
|
2
|
+
import { MakeUserWithAccessToken, User } from './auth.types';
|
|
3
|
+
export type DefaultSignInRequestData = {
|
|
4
|
+
username: string;
|
|
5
|
+
password: string;
|
|
6
|
+
};
|
|
7
|
+
export type DefaultUpdateCurrentUserRequestData = {
|
|
8
|
+
name?: string;
|
|
9
|
+
email?: string;
|
|
10
|
+
};
|
|
11
|
+
export type DefaultUpdateCurrentUserPasswordRequestData = {
|
|
12
|
+
oldPassword: string;
|
|
13
|
+
newPassword: string;
|
|
14
|
+
};
|
|
15
|
+
export type DefaultSignUpRequestData = {
|
|
16
|
+
username: string;
|
|
17
|
+
password: string;
|
|
18
|
+
email: string;
|
|
19
|
+
};
|
|
20
|
+
export type DefaultForgotPasswordRequestData = {
|
|
21
|
+
email: string;
|
|
22
|
+
};
|
|
23
|
+
export type DefaultResetPasswordRequestData = {
|
|
24
|
+
token: string;
|
|
25
|
+
password: string;
|
|
26
|
+
};
|
|
27
|
+
export declare const signInService: (data: DefaultSignInRequestData, config: AuthConfig) => Promise<MakeUserWithAccessToken<User>>;
|
|
28
|
+
export declare const refreshTokenService: (refreshToken: string, config: AuthConfig) => Promise<MakeUserWithAccessToken<User>>;
|
|
29
|
+
export declare const fetchUserInfo: (accessToken: string, config: AuthConfig) => Promise<User>;
|
|
30
|
+
export declare const signOutService: () => Promise<void>;
|
|
31
|
+
export declare const isTokenValid: (expiresAt: string | null) => boolean;
|
|
32
|
+
export declare const hasAuthCookies: (cookies: {
|
|
33
|
+
accessToken?: string;
|
|
34
|
+
user?: string;
|
|
35
|
+
}) => boolean;
|
|
36
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../auth/auth/auth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAE5D,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CAEjB,CAAA;AAED,MAAM,MAAM,2CAA2C,GAAG;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAEhB,CAAA;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,aAAa,GACtB,MAAM,wBAAwB,EAC9B,QAAQ,UAAU,KACnB,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CA+BvC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC5B,cAAc,MAAM,EACpB,QAAQ,UAAU,KACnB,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CA6BvC,CAAA;AAGD,eAAO,MAAM,aAAa,GAAU,aAAa,MAAM,EAAE,QAAQ,UAAU,KAAG,OAAO,CAAC,IAAI,CAkCzF,CAAA;AAED,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,IAAI,CAKnD,CAAA;AAGD,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,GAAG,IAAI,KAAG,OAQvD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,OAEjF,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { jwtDecode } from 'jwt-decode';
|
|
3
|
+
import { getUser } from '../services/user.service';
|
|
4
|
+
export const signInService = async (data, config) => {
|
|
5
|
+
const formData = new URLSearchParams();
|
|
6
|
+
formData.append('grant_type', 'password');
|
|
7
|
+
formData.append('client_id', config.clientId);
|
|
8
|
+
formData.append('client_secret', config.clientSecret);
|
|
9
|
+
formData.append('username', data.username);
|
|
10
|
+
formData.append('password', data.password);
|
|
11
|
+
const response = await fetch(`${config.drupalBaseUrl}/oauth/token`, {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
body: formData,
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
throw new Error('Invalid credentials');
|
|
20
|
+
}
|
|
21
|
+
const tokenData = await response.json();
|
|
22
|
+
// Extrahujeme informace o uživateli z tokenu
|
|
23
|
+
const userInfo = await fetchUserInfo(tokenData.access_token, config);
|
|
24
|
+
return {
|
|
25
|
+
...userInfo,
|
|
26
|
+
token: tokenData.access_token,
|
|
27
|
+
refreshToken: tokenData.refresh_token,
|
|
28
|
+
expiresAt: Date.now() + tokenData.expires_in * 1000,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export const refreshTokenService = async (refreshToken, config) => {
|
|
32
|
+
const formData = new URLSearchParams();
|
|
33
|
+
formData.append('grant_type', 'refresh_token');
|
|
34
|
+
formData.append('client_id', config.clientId);
|
|
35
|
+
formData.append('client_secret', config.clientSecret);
|
|
36
|
+
formData.append('refresh_token', refreshToken);
|
|
37
|
+
const response = await fetch(`${config.drupalBaseUrl}/oauth/token`, {
|
|
38
|
+
method: 'POST',
|
|
39
|
+
body: formData,
|
|
40
|
+
headers: {
|
|
41
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
throw new Error('Failed to refresh token');
|
|
46
|
+
}
|
|
47
|
+
const tokenData = await response.json();
|
|
48
|
+
const userInfo = await fetchUserInfo(tokenData.access_token, config);
|
|
49
|
+
return {
|
|
50
|
+
...userInfo,
|
|
51
|
+
token: tokenData.access_token,
|
|
52
|
+
refreshToken: tokenData.refresh_token || refreshToken,
|
|
53
|
+
expiresAt: Date.now() + tokenData.expires_in * 1000,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
// Pomocná funkce pro získání informací o uživateli z tokenu nebo z API
|
|
57
|
+
export const fetchUserInfo = async (accessToken, config) => {
|
|
58
|
+
try {
|
|
59
|
+
// Dekódovat token a získat základní informace
|
|
60
|
+
const decoded = jwtDecode(accessToken);
|
|
61
|
+
// Vytvořit instanci Axiosu pro použití s getUser
|
|
62
|
+
const axiosInstance = axios.create({
|
|
63
|
+
baseURL: config.drupalBaseUrl,
|
|
64
|
+
});
|
|
65
|
+
// Použít existující getUser službu
|
|
66
|
+
const userData = await getUser({
|
|
67
|
+
axiosInstance,
|
|
68
|
+
userId: decoded.sub,
|
|
69
|
+
token: accessToken,
|
|
70
|
+
});
|
|
71
|
+
// Vrátit data v požadovaném formáte pre AuthContext
|
|
72
|
+
return {
|
|
73
|
+
id: decoded.sub ?? '',
|
|
74
|
+
name: userData.name,
|
|
75
|
+
email: userData.email,
|
|
76
|
+
username: userData.email,
|
|
77
|
+
address: userData.address,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('Error fetching user info:', error);
|
|
82
|
+
try {
|
|
83
|
+
const decoded = jwtDecode(accessToken);
|
|
84
|
+
return { id: decoded.sub ?? '' };
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return { id: '' };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
export const signOutService = async () => {
|
|
92
|
+
// Zde můžeš implementovat volání API pro odhlášení, pokud je potřeba
|
|
93
|
+
// V jednoduchém případě stačí vymazat tokeny z lokálního úložiště
|
|
94
|
+
localStorage.removeItem('auth');
|
|
95
|
+
return Promise.resolve();
|
|
96
|
+
};
|
|
97
|
+
// Utility funkcie pre middleware - môžu sa použiť v akýchkoľvek frameworkoch
|
|
98
|
+
export const isTokenValid = (expiresAt) => {
|
|
99
|
+
if (!expiresAt)
|
|
100
|
+
return false;
|
|
101
|
+
try {
|
|
102
|
+
const expires = parseInt(expiresAt);
|
|
103
|
+
return Date.now() < expires;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
export const hasAuthCookies = (cookies) => {
|
|
110
|
+
return !!(cookies.accessToken && cookies.user);
|
|
111
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { UserAddress } from '../services/userService.types';
|
|
3
|
+
import { AuthConfig } from './auth.config';
|
|
4
|
+
export type AccessToken = string;
|
|
5
|
+
export type User = {
|
|
6
|
+
id: string;
|
|
7
|
+
name?: string | null;
|
|
8
|
+
email?: string | null;
|
|
9
|
+
username?: string | null;
|
|
10
|
+
address?: UserAddress;
|
|
11
|
+
};
|
|
12
|
+
export type MakeUserWithAccessToken<U> = U & {
|
|
13
|
+
token: AccessToken;
|
|
14
|
+
refreshToken: string;
|
|
15
|
+
expiresAt: number;
|
|
16
|
+
};
|
|
17
|
+
export interface AuthProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
config: AuthConfig;
|
|
20
|
+
initialAccessToken?: AccessToken;
|
|
21
|
+
initialCurrentUser?: User;
|
|
22
|
+
}
|
|
23
|
+
export interface AuthContextValue {
|
|
24
|
+
isLogged: boolean;
|
|
25
|
+
isReady: boolean;
|
|
26
|
+
user: User | undefined;
|
|
27
|
+
accessToken: AccessToken | undefined;
|
|
28
|
+
refreshToken: string | undefined;
|
|
29
|
+
expiresAt: number | undefined;
|
|
30
|
+
config: AuthConfig;
|
|
31
|
+
setUser: (value?: User) => void;
|
|
32
|
+
setAccessToken: (value?: AccessToken) => void;
|
|
33
|
+
setRefreshToken: (value?: string) => void;
|
|
34
|
+
setExpiresAt: (value?: number) => void;
|
|
35
|
+
refetchCurrentUser: () => Promise<User | undefined>;
|
|
36
|
+
isLoading: boolean;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=auth.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../auth/auth/auth.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,IAAI,GAAG;IACf,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,WAAW,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG;IACzC,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,kBAAkB,CAAC,EAAE,WAAW,CAAA;IAChC,kBAAkB,CAAC,EAAE,IAAI,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;IACpC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/B,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;IAC7C,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IACnD,SAAS,EAAE,OAAO,CAAA;CACrB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AuthContextValue, AuthProviderProps } from '../auth/auth.types';
|
|
2
|
+
export declare const AuthContextProvider: ({ children, config, initialAccessToken, initialCurrentUser, }: AuthProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const useAuth: () => AuthContextValue;
|
|
4
|
+
//# sourceMappingURL=AuthContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthContext.d.ts","sourceRoot":"","sources":["../../../auth/context/AuthContext.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAe,gBAAgB,EAAE,iBAAiB,EAAQ,MAAM,oBAAoB,CAAA;AAK3F,eAAO,MAAM,mBAAmB,GAAI,+DAKjC,iBAAiB,4CA+JnB,CAAA;AAED,eAAO,MAAM,OAAO,QAAO,gBAM1B,CAAA"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import Cookies from 'js-cookie';
|
|
4
|
+
import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { fetchUserInfo, refreshTokenService } from '../auth/auth';
|
|
6
|
+
const AuthContext = createContext(undefined);
|
|
7
|
+
export const AuthContextProvider = ({ children, config, initialAccessToken, initialCurrentUser, }) => {
|
|
8
|
+
const [user, setUser] = useState(initialCurrentUser);
|
|
9
|
+
const [accessToken, setAccessToken] = useState(initialAccessToken);
|
|
10
|
+
const [refreshToken, setRefreshToken] = useState();
|
|
11
|
+
const [expiresAt, setExpiresAt] = useState();
|
|
12
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
13
|
+
const [isReady, setIsReady] = useState(false);
|
|
14
|
+
const refreshingRef = useRef(false);
|
|
15
|
+
const COOKIE_OPTIONS = {
|
|
16
|
+
secure: config.cookieOptions?.secure ?? false,
|
|
17
|
+
sameSite: config.cookieOptions?.sameSite ?? 'strict',
|
|
18
|
+
expires: config.cookieOptions?.expires ?? 7,
|
|
19
|
+
};
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const savedToken = Cookies.get('accessToken');
|
|
22
|
+
const savedRefreshToken = Cookies.get('refreshToken');
|
|
23
|
+
const savedExpiresAt = Cookies.get('expiresAt');
|
|
24
|
+
const savedUser = Cookies.get('user');
|
|
25
|
+
if (savedToken) {
|
|
26
|
+
setAccessToken(savedToken);
|
|
27
|
+
}
|
|
28
|
+
if (savedRefreshToken) {
|
|
29
|
+
setRefreshToken(savedRefreshToken);
|
|
30
|
+
}
|
|
31
|
+
if (savedExpiresAt) {
|
|
32
|
+
setExpiresAt(parseInt(savedExpiresAt));
|
|
33
|
+
}
|
|
34
|
+
if (savedUser) {
|
|
35
|
+
try {
|
|
36
|
+
setUser(JSON.parse(savedUser));
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
console.error('Failed to parse user from cookie');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
setIsReady(true);
|
|
43
|
+
}, []);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (accessToken && user) {
|
|
46
|
+
Cookies.set('accessToken', accessToken, COOKIE_OPTIONS);
|
|
47
|
+
if (refreshToken) {
|
|
48
|
+
Cookies.set('refreshToken', refreshToken, COOKIE_OPTIONS);
|
|
49
|
+
}
|
|
50
|
+
if (expiresAt) {
|
|
51
|
+
Cookies.set('expiresAt', expiresAt.toString(), COOKIE_OPTIONS);
|
|
52
|
+
}
|
|
53
|
+
Cookies.set('user', JSON.stringify(user), COOKIE_OPTIONS);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Pokud nemáme token nebo uživatele, vymažeme cookies
|
|
57
|
+
Cookies.remove('accessToken');
|
|
58
|
+
Cookies.remove('refreshToken');
|
|
59
|
+
Cookies.remove('expiresAt');
|
|
60
|
+
Cookies.remove('user');
|
|
61
|
+
}
|
|
62
|
+
}, [accessToken, refreshToken, expiresAt, user, COOKIE_OPTIONS]);
|
|
63
|
+
const refreshTokenIfNeeded = useCallback(async () => {
|
|
64
|
+
if (refreshingRef.current || !refreshToken)
|
|
65
|
+
return;
|
|
66
|
+
if (expiresAt && Date.now() < expiresAt - 10000)
|
|
67
|
+
return;
|
|
68
|
+
try {
|
|
69
|
+
refreshingRef.current = true;
|
|
70
|
+
setIsLoading(true);
|
|
71
|
+
const refreshed = await refreshTokenService(refreshToken, config);
|
|
72
|
+
setAccessToken(refreshed.token);
|
|
73
|
+
setRefreshToken(refreshed.refreshToken);
|
|
74
|
+
setExpiresAt(refreshed.expiresAt);
|
|
75
|
+
setUser({
|
|
76
|
+
id: refreshed.id,
|
|
77
|
+
name: refreshed.name,
|
|
78
|
+
email: refreshed.email,
|
|
79
|
+
username: refreshed.username,
|
|
80
|
+
address: refreshed.address,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('Failed to refresh token:', error);
|
|
85
|
+
// Pokud refresh token selhal, můžeme vymazat autentifikační data
|
|
86
|
+
if (error instanceof Error && error.message === 'Failed to refresh token') {
|
|
87
|
+
// Odstranění cookies
|
|
88
|
+
Cookies.remove('accessToken');
|
|
89
|
+
Cookies.remove('refreshToken');
|
|
90
|
+
Cookies.remove('expiresAt');
|
|
91
|
+
Cookies.remove('user');
|
|
92
|
+
setAccessToken(undefined);
|
|
93
|
+
setRefreshToken(undefined);
|
|
94
|
+
setExpiresAt(undefined);
|
|
95
|
+
setUser(undefined);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
setIsLoading(false);
|
|
100
|
+
refreshingRef.current = false;
|
|
101
|
+
}
|
|
102
|
+
}, [refreshToken, expiresAt, config]);
|
|
103
|
+
// Pravidelný refresh tokenu
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (!refreshToken || !expiresAt)
|
|
106
|
+
return;
|
|
107
|
+
// Pokud token vyprší za méně než 30 sekund, spustíme refresh hned
|
|
108
|
+
if (Date.now() > expiresAt - 30000) {
|
|
109
|
+
refreshTokenIfNeeded();
|
|
110
|
+
}
|
|
111
|
+
// Nastavíme interval pro pravidelnou kontrolu
|
|
112
|
+
const interval = setInterval(() => {
|
|
113
|
+
refreshTokenIfNeeded();
|
|
114
|
+
}, 20000); // Kontrolujeme každých 20 sekund
|
|
115
|
+
return () => clearInterval(interval);
|
|
116
|
+
}, [refreshToken, expiresAt, refreshTokenIfNeeded]);
|
|
117
|
+
// Funkce pro získání aktuálních dat o uživateli z API
|
|
118
|
+
const refetchCurrentUser = useCallback(async () => {
|
|
119
|
+
if (!accessToken)
|
|
120
|
+
return undefined;
|
|
121
|
+
try {
|
|
122
|
+
setIsLoading(true);
|
|
123
|
+
const userData = await fetchUserInfo(accessToken, config);
|
|
124
|
+
setUser(userData);
|
|
125
|
+
return userData;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error('Failed to fetch user data:', error);
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
setIsLoading(false);
|
|
133
|
+
}
|
|
134
|
+
}, [accessToken, config]);
|
|
135
|
+
const value = {
|
|
136
|
+
isLogged: !!accessToken && !!user,
|
|
137
|
+
isReady,
|
|
138
|
+
user,
|
|
139
|
+
accessToken,
|
|
140
|
+
refreshToken,
|
|
141
|
+
expiresAt,
|
|
142
|
+
config,
|
|
143
|
+
setUser,
|
|
144
|
+
setAccessToken,
|
|
145
|
+
setRefreshToken,
|
|
146
|
+
setExpiresAt,
|
|
147
|
+
refetchCurrentUser,
|
|
148
|
+
isLoading,
|
|
149
|
+
};
|
|
150
|
+
return _jsx(AuthContext.Provider, { value: value, children: children });
|
|
151
|
+
};
|
|
152
|
+
export const useAuth = () => {
|
|
153
|
+
const context = useContext(AuthContext);
|
|
154
|
+
if (context === undefined) {
|
|
155
|
+
throw new Error('useAuth must be used within an AuthContextProvider');
|
|
156
|
+
}
|
|
157
|
+
return context;
|
|
158
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const useCurrentUser: () => {
|
|
2
|
+
user: import("../..").User | undefined;
|
|
3
|
+
isLogged: boolean;
|
|
4
|
+
isReady: boolean;
|
|
5
|
+
refetchCurrentUser: () => Promise<import("../..").User | undefined>;
|
|
6
|
+
setUser: (value?: import("../..").User) => void;
|
|
7
|
+
setAccessToken: (value?: import("../..").AccessToken) => void;
|
|
8
|
+
isLoading: boolean;
|
|
9
|
+
accessToken: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useCurrentUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCurrentUser.d.ts","sourceRoot":"","sources":["../../../auth/hooks/useCurrentUser.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc;;;;;;;;;CAa1B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useAuth } from "../context/AuthContext";
|
|
3
|
+
export const useCurrentUser = () => {
|
|
4
|
+
const { user, isLogged, isReady, accessToken, refetchCurrentUser, setUser, setAccessToken, isLoading } = useAuth();
|
|
5
|
+
return {
|
|
6
|
+
user,
|
|
7
|
+
isLogged,
|
|
8
|
+
isReady,
|
|
9
|
+
refetchCurrentUser,
|
|
10
|
+
setUser,
|
|
11
|
+
setAccessToken,
|
|
12
|
+
isLoading,
|
|
13
|
+
accessToken,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultSignInRequestData } from '../auth/auth';
|
|
2
|
+
import { MakeUserWithAccessToken, User } from '../auth/auth.types';
|
|
3
|
+
export declare const useSignIn: <SignInRequestData = DefaultSignInRequestData>() => {
|
|
4
|
+
signIn: (data: SignInRequestData) => Promise<MakeUserWithAccessToken<User> | undefined>;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=useSignIn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSignIn.d.ts","sourceRoot":"","sources":["../../../auth/hooks/useSignIn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAiB,MAAM,cAAc,CAAA;AACtE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAIlE,eAAO,MAAM,SAAS,GAAI,iBAAiB,GAAG,wBAAwB;mBAKjD,iBAAiB;;CAiCrC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { signInService } from '../auth/auth';
|
|
3
|
+
import { useAuth } from '../context/AuthContext';
|
|
4
|
+
import { useCallback, useState } from 'react';
|
|
5
|
+
export const useSignIn = () => {
|
|
6
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
7
|
+
const { setAccessToken, setRefreshToken, setExpiresAt, setUser, config } = useAuth();
|
|
8
|
+
const signIn = useCallback(async (data) => {
|
|
9
|
+
try {
|
|
10
|
+
setIsLoading(true);
|
|
11
|
+
const result = await signInService(data, config);
|
|
12
|
+
setAccessToken(result.token);
|
|
13
|
+
setRefreshToken(result.refreshToken);
|
|
14
|
+
setExpiresAt(result.expiresAt);
|
|
15
|
+
const userData = {
|
|
16
|
+
id: result.id,
|
|
17
|
+
name: result.name,
|
|
18
|
+
email: result.email,
|
|
19
|
+
username: result.username,
|
|
20
|
+
};
|
|
21
|
+
setUser(userData);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error('Sign in failed:', error);
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
setIsLoading(false);
|
|
30
|
+
}
|
|
31
|
+
}, [setAccessToken, setRefreshToken, setExpiresAt, setUser, config]);
|
|
32
|
+
return { signIn, isLoading };
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSignOut.d.ts","sourceRoot":"","sources":["../../../auth/hooks/useSignOut.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU;;;CAwBtB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useAuth } from '../context/AuthContext';
|
|
3
|
+
import { signOutService } from '../auth/auth';
|
|
4
|
+
import { useCallback, useState } from 'react';
|
|
5
|
+
export const useSignOut = () => {
|
|
6
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
7
|
+
const { setAccessToken, setRefreshToken, setExpiresAt, setUser } = useAuth();
|
|
8
|
+
const signOut = useCallback(async () => {
|
|
9
|
+
try {
|
|
10
|
+
setIsLoading(true);
|
|
11
|
+
await signOutService();
|
|
12
|
+
setAccessToken(undefined);
|
|
13
|
+
setRefreshToken(undefined);
|
|
14
|
+
setExpiresAt(undefined);
|
|
15
|
+
setUser(undefined);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error('Sign out failed:', error);
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
setIsLoading(false);
|
|
24
|
+
}
|
|
25
|
+
}, [setAccessToken, setRefreshToken, setExpiresAt, setUser]);
|
|
26
|
+
return { signOut, isLoading };
|
|
27
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { User } from './userService.types';
|
|
3
|
+
type GetUserParams = {
|
|
4
|
+
axiosInstance: AxiosInstance;
|
|
5
|
+
config?: AxiosRequestConfig;
|
|
6
|
+
userId?: string;
|
|
7
|
+
token?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const getUser: ({ axiosInstance, config, userId, token, }: GetUserParams) => Promise<User>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=user.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../../auth/services/user.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,KAAK,aAAa,GAAG;IACjB,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,OAAO,GAAU,2CAK3B,aAAa,KAAG,OAAO,CAAC,IAAI,CAiC9B,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DrupalJsonApiParams } from 'drupal-jsonapi-params';
|
|
2
|
+
export const getUser = async ({ axiosInstance, config = {}, userId, token, }) => {
|
|
3
|
+
const params = new DrupalJsonApiParams();
|
|
4
|
+
userId && params.addFilter('drupal_internal__uid', userId, 'IN');
|
|
5
|
+
const queryString = params.getQueryString();
|
|
6
|
+
const headers = token ? { ...config.headers, Authorization: `Bearer ${token}` } : config.headers;
|
|
7
|
+
const { data } = await axiosInstance.get(`/jsonapi/user/user?${queryString}`, {
|
|
8
|
+
...config,
|
|
9
|
+
headers,
|
|
10
|
+
});
|
|
11
|
+
const firstItem = data.data?.[0];
|
|
12
|
+
const customerId = firstItem?.relationships?.customer_profiles?.data?.[0]?.id;
|
|
13
|
+
let mappedUser = {
|
|
14
|
+
name: firstItem?.attributes?.name ?? '',
|
|
15
|
+
email: firstItem?.attributes?.mail ?? '',
|
|
16
|
+
};
|
|
17
|
+
if (customerId) {
|
|
18
|
+
const { data: customerData } = await axiosInstance.get(`/jsonapi/profile/customer/${customerId}`, {
|
|
19
|
+
...config,
|
|
20
|
+
});
|
|
21
|
+
mappedUser.address = customerData.data.attributes.address;
|
|
22
|
+
}
|
|
23
|
+
return mappedUser;
|
|
24
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type JsonApiResponse<T> = {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
jsonapi: {
|
|
4
|
+
version: string;
|
|
5
|
+
meta: {
|
|
6
|
+
links: {
|
|
7
|
+
self: {
|
|
8
|
+
href: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
data: T[];
|
|
14
|
+
included: any;
|
|
15
|
+
links: {
|
|
16
|
+
self: {
|
|
17
|
+
href: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type UserAddress = {
|
|
22
|
+
additional_name: string | null;
|
|
23
|
+
address_line1: string;
|
|
24
|
+
address_line2: string;
|
|
25
|
+
administrative_area: string | null;
|
|
26
|
+
country_code: string;
|
|
27
|
+
dependent_locality: string | null;
|
|
28
|
+
family_name: string;
|
|
29
|
+
given_name: string;
|
|
30
|
+
langcode: string;
|
|
31
|
+
locality: string;
|
|
32
|
+
organization: string;
|
|
33
|
+
postal_code: string;
|
|
34
|
+
sorting_code: string | null;
|
|
35
|
+
};
|
|
36
|
+
export type User = {
|
|
37
|
+
name: string;
|
|
38
|
+
email: string;
|
|
39
|
+
field_name?: string;
|
|
40
|
+
address?: UserAddress;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=userService.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userService.types.d.ts","sourceRoot":"","sources":["../../../auth/services/userService.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC7B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAChB,OAAO,EAAE;QACL,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE;YACF,KAAK,EAAE;gBACH,IAAI,EAAE;oBACF,IAAI,EAAE,MAAM,CAAA;iBACf,CAAA;aACJ,CAAA;SACJ,CAAA;KACJ,CAAA;IACD,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,QAAQ,EAAE,GAAG,CAAA;IACb,KAAK,EAAE;QACH,IAAI,EAAE;YACF,IAAI,EAAE,MAAM,CAAA;SACf,CAAA;KACJ,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,WAAW,CAAA;CACxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { CoreContext } from '../../context';
|
|
2
|
-
export declare const useGetUser: (ctx: CoreContext) => import("@tanstack/react-query").UseQueryResult<import("
|
|
2
|
+
export declare const useGetUser: (ctx: CoreContext) => import("@tanstack/react-query").UseQueryResult<import("../../api/user/getUser/userService.types").User | null, Error>;
|
|
3
3
|
//# sourceMappingURL=useGetUser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetUser.d.ts","sourceRoot":"","sources":["../../../hooks/user/useGetUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,UAAU,GAAI,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"useGetUser.d.ts","sourceRoot":"","sources":["../../../hooks/user/useGetUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,UAAU,GAAI,KAAK,WAAW,0HAQ1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,24 +6,29 @@ export * from './api/getTerms';
|
|
|
6
6
|
export * from './types/Term';
|
|
7
7
|
export * from './api/products/getProducts';
|
|
8
8
|
export * from './types/products/Product';
|
|
9
|
-
export * from './api/pages/page/pageService.types';
|
|
10
9
|
export * from './api/pages/page/page.service';
|
|
11
|
-
export * from './api/pages/
|
|
10
|
+
export * from './api/pages/page/pageService.types';
|
|
12
11
|
export * from './api/pages/faq/faq.service';
|
|
13
|
-
export * from './api/pages/
|
|
12
|
+
export * from './api/pages/faq/faqService.types';
|
|
14
13
|
export * from './api/pages/branch/branch.service';
|
|
14
|
+
export * from './api/pages/branch/branchService.types';
|
|
15
15
|
export * from './api/user/register/Register.service';
|
|
16
16
|
export * from './api/user/resetPassword/resetPassword.service';
|
|
17
|
-
export * from './api/user/getUser/user.service';
|
|
18
|
-
export * from './api/user/getUser/userService.types';
|
|
19
17
|
export * from './hooks/user/useGetUser';
|
|
18
|
+
export * from './auth/auth/auth';
|
|
19
|
+
export * from './auth/auth/auth.config';
|
|
20
|
+
export * from './auth/auth/auth.types';
|
|
21
|
+
export * from './auth/context/AuthContext';
|
|
22
|
+
export * from './auth/hooks/useCurrentUser';
|
|
23
|
+
export * from './auth/hooks/useSignIn';
|
|
24
|
+
export * from './auth/hooks/useSignOut';
|
|
20
25
|
export * from './api/checkout/Checkout.service';
|
|
21
26
|
export * from './api/checkout/CheckoutService.types';
|
|
22
27
|
export * from './hooks/cart/api/useGetOrderHistory';
|
|
23
28
|
export * from './hooks/wishlist/useWishlist';
|
|
24
29
|
export * from './context';
|
|
25
30
|
export * from './context/cart/BasketContext';
|
|
26
|
-
export * from './api/cart/CartService.types';
|
|
27
31
|
export * from './api/cart/Cart.service';
|
|
32
|
+
export * from './api/cart/CartService.types';
|
|
28
33
|
export * from './utils/mapProducts';
|
|
29
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AAErC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAG5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AAGxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oCAAoC,CAAA;AAElD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kCAAkC,CAAA;AAEhD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AAGtD,cAAc,sCAAsC,CAAA;AACpD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,yBAAyB,CAAA;AAGvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AAEpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,8BAA8B,CAAA;AAE5C,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -10,24 +10,30 @@ export * from './types/Term';
|
|
|
10
10
|
export * from './api/products/getProducts';
|
|
11
11
|
export * from './types/products/Product';
|
|
12
12
|
// pages
|
|
13
|
-
export * from './api/pages/page/pageService.types';
|
|
14
13
|
export * from './api/pages/page/page.service';
|
|
15
|
-
export * from './api/pages/
|
|
14
|
+
export * from './api/pages/page/pageService.types';
|
|
16
15
|
export * from './api/pages/faq/faq.service';
|
|
17
|
-
export * from './api/pages/
|
|
16
|
+
export * from './api/pages/faq/faqService.types';
|
|
18
17
|
export * from './api/pages/branch/branch.service';
|
|
19
|
-
|
|
18
|
+
export * from './api/pages/branch/branchService.types';
|
|
19
|
+
//user api (len register a reset password)
|
|
20
20
|
export * from './api/user/register/Register.service';
|
|
21
21
|
export * from './api/user/resetPassword/resetPassword.service';
|
|
22
|
-
export * from './api/user/getUser/user.service';
|
|
23
|
-
export * from './api/user/getUser/userService.types';
|
|
24
22
|
export * from './hooks/user/useGetUser';
|
|
23
|
+
// auth - hlavné auth funkcionality
|
|
24
|
+
export * from './auth/auth/auth';
|
|
25
|
+
export * from './auth/auth/auth.config';
|
|
26
|
+
export * from './auth/auth/auth.types';
|
|
27
|
+
export * from './auth/context/AuthContext';
|
|
28
|
+
export * from './auth/hooks/useCurrentUser';
|
|
29
|
+
export * from './auth/hooks/useSignIn';
|
|
30
|
+
export * from './auth/hooks/useSignOut';
|
|
25
31
|
export * from './api/checkout/Checkout.service';
|
|
26
32
|
export * from './api/checkout/CheckoutService.types';
|
|
27
33
|
export * from './hooks/cart/api/useGetOrderHistory';
|
|
28
34
|
export * from './hooks/wishlist/useWishlist';
|
|
29
35
|
export * from './context';
|
|
30
36
|
export * from './context/cart/BasketContext';
|
|
31
|
-
export * from './api/cart/CartService.types';
|
|
32
37
|
export * from './api/cart/Cart.service';
|
|
38
|
+
export * from './api/cart/CartService.types';
|
|
33
39
|
export * from './utils/mapProducts';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@q2devel/q2-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
],
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"devDependencies": {
|
|
21
|
+
"@types/js-cookie": "^3.0.6",
|
|
22
|
+
"@types/jwt-decode": "^2.2.1",
|
|
21
23
|
"@types/react": "^19.1.7",
|
|
22
24
|
"@types/react-dom": "^19.1.6",
|
|
23
25
|
"typescript": "^5.8.3"
|
|
@@ -26,6 +28,8 @@
|
|
|
26
28
|
"@tanstack/react-query": "^5.80.6",
|
|
27
29
|
"axios": "^1.9.0",
|
|
28
30
|
"drupal-jsonapi-params": "^2.3.2",
|
|
31
|
+
"js-cookie": "^3.0.5",
|
|
32
|
+
"jwt-decode": "^4.0.0",
|
|
29
33
|
"react": "^19.1.0"
|
|
30
34
|
}
|
|
31
35
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=getUserCart.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getUserCart.d.ts","sourceRoot":"","sources":["../../../api/user/getUserCart.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResetPassword.d.ts","sourceRoot":"","sources":["../../types/ResetPassword.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResetPassword.d.ts","sourceRoot":"","sources":["../../../types/content/ResetPassword.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
File without changes
|
|
File without changes
|