@cyberia-auth/auth 0.1.1 → 0.1.2
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.cjs +28 -9
- package/dist/index.js +28 -9
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -65,17 +65,24 @@ function CyberiaAuth({
|
|
|
65
65
|
onAuthSuccess
|
|
66
66
|
}) {
|
|
67
67
|
const backendBaseUrl = resolveBackendBaseUrl(backendUrl);
|
|
68
|
+
const resolvedApiToken = normalizeApiToken(apiToken);
|
|
68
69
|
const resolvedTheme = useResolvedTheme(theme);
|
|
69
70
|
const palette = getThemePalette(resolvedTheme);
|
|
70
71
|
const [mode, setMode] = (0, import_react.useState)(initialMode);
|
|
71
|
-
const [config, setConfig] = (0, import_react.useState)(() => getCachedAppConfig(
|
|
72
|
+
const [config, setConfig] = (0, import_react.useState)(() => getCachedAppConfig(resolvedApiToken));
|
|
72
73
|
const [isBrandingResolved, setIsBrandingResolved] = (0, import_react.useState)(
|
|
73
|
-
() => Boolean(getCachedAppConfig(
|
|
74
|
+
() => Boolean(getCachedAppConfig(resolvedApiToken))
|
|
74
75
|
);
|
|
75
76
|
const [message, setMessage] = (0, import_react.useState)("");
|
|
76
77
|
const [isLoading, setIsLoading] = (0, import_react.useState)(false);
|
|
77
78
|
(0, import_react.useEffect)(() => {
|
|
78
|
-
|
|
79
|
+
if (!resolvedApiToken) {
|
|
80
|
+
setConfig(defaultAppConfig);
|
|
81
|
+
setIsBrandingResolved(true);
|
|
82
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const cached = getCachedAppConfig(resolvedApiToken);
|
|
79
86
|
if (cached) {
|
|
80
87
|
setConfig(cached);
|
|
81
88
|
setIsBrandingResolved(true);
|
|
@@ -83,10 +90,10 @@ function CyberiaAuth({
|
|
|
83
90
|
setIsBrandingResolved(false);
|
|
84
91
|
}
|
|
85
92
|
void import_axios.default.get(`${backendBaseUrl}/api/public/app/config`, {
|
|
86
|
-
params: { apiToken }
|
|
93
|
+
params: { apiToken: resolvedApiToken }
|
|
87
94
|
}).then((res) => {
|
|
88
95
|
setConfig(res.data);
|
|
89
|
-
cacheAppConfig(
|
|
96
|
+
cacheAppConfig(resolvedApiToken, res.data);
|
|
90
97
|
}).catch((error) => {
|
|
91
98
|
const errorMessage = error instanceof Error ? error.message : "Unable to load app config";
|
|
92
99
|
setMessage(errorMessage);
|
|
@@ -96,16 +103,20 @@ function CyberiaAuth({
|
|
|
96
103
|
}).finally(() => {
|
|
97
104
|
setIsBrandingResolved(true);
|
|
98
105
|
});
|
|
99
|
-
}, [
|
|
106
|
+
}, [resolvedApiToken, backendBaseUrl]);
|
|
100
107
|
const handleSubmit = async (event) => {
|
|
101
108
|
event.preventDefault();
|
|
109
|
+
if (!resolvedApiToken) {
|
|
110
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
102
113
|
setIsLoading(true);
|
|
103
114
|
setMessage("");
|
|
104
115
|
const form = new FormData(event.currentTarget);
|
|
105
116
|
try {
|
|
106
117
|
const endpoint = mode === "register" ? "/api/public/auth/register" : "/api/public/auth/login";
|
|
107
118
|
const payload = {
|
|
108
|
-
apiToken,
|
|
119
|
+
apiToken: resolvedApiToken,
|
|
109
120
|
email: String(form.get("email")),
|
|
110
121
|
password: String(form.get("password")),
|
|
111
122
|
displayName: String(form.get("displayName") ?? "")
|
|
@@ -125,12 +136,16 @@ function CyberiaAuth({
|
|
|
125
136
|
}
|
|
126
137
|
};
|
|
127
138
|
const startOAuth = (provider) => {
|
|
139
|
+
if (!resolvedApiToken) {
|
|
140
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
128
143
|
if (!oauthRedirectUri) {
|
|
129
144
|
setMessage("oauthRedirectUri is required for social login");
|
|
130
145
|
return;
|
|
131
146
|
}
|
|
132
147
|
const url = new URL(`${backendBaseUrl}/api/public/oauth/${provider}/start`);
|
|
133
|
-
url.searchParams.set("apiToken",
|
|
148
|
+
url.searchParams.set("apiToken", resolvedApiToken);
|
|
134
149
|
url.searchParams.set("redirectUri", oauthRedirectUri);
|
|
135
150
|
window.location.href = url.toString();
|
|
136
151
|
};
|
|
@@ -320,6 +335,7 @@ function CyberiaAuthProvider({
|
|
|
320
335
|
storageKey = "cyberia_auth_session"
|
|
321
336
|
}) {
|
|
322
337
|
const backendBaseUrl = resolveBackendBaseUrl(backendUrl);
|
|
338
|
+
const resolvedApiToken = normalizeApiToken(apiToken);
|
|
323
339
|
const resolvedTheme = useResolvedTheme(theme);
|
|
324
340
|
const [isLoaded, setIsLoaded] = (0, import_react.useState)(false);
|
|
325
341
|
const [session, setSession] = (0, import_react.useState)(null);
|
|
@@ -422,7 +438,7 @@ function CyberiaAuthProvider({
|
|
|
422
438
|
CyberiaAuth,
|
|
423
439
|
{
|
|
424
440
|
backendUrl: backendBaseUrl,
|
|
425
|
-
apiToken,
|
|
441
|
+
apiToken: resolvedApiToken,
|
|
426
442
|
oauthRedirectUri,
|
|
427
443
|
theme,
|
|
428
444
|
initialMode: modalMode,
|
|
@@ -855,6 +871,9 @@ function resolveBackendBaseUrl(backendUrl) {
|
|
|
855
871
|
const candidate = backendUrl?.trim() || DEFAULT_BACKEND_URL;
|
|
856
872
|
return candidate.replace(/\/+$/, "");
|
|
857
873
|
}
|
|
874
|
+
function normalizeApiToken(apiToken) {
|
|
875
|
+
return apiToken.trim();
|
|
876
|
+
}
|
|
858
877
|
function getThemePalette(theme) {
|
|
859
878
|
if (theme === "dark") {
|
|
860
879
|
return {
|
package/dist/index.js
CHANGED
|
@@ -26,17 +26,24 @@ function CyberiaAuth({
|
|
|
26
26
|
onAuthSuccess
|
|
27
27
|
}) {
|
|
28
28
|
const backendBaseUrl = resolveBackendBaseUrl(backendUrl);
|
|
29
|
+
const resolvedApiToken = normalizeApiToken(apiToken);
|
|
29
30
|
const resolvedTheme = useResolvedTheme(theme);
|
|
30
31
|
const palette = getThemePalette(resolvedTheme);
|
|
31
32
|
const [mode, setMode] = useState(initialMode);
|
|
32
|
-
const [config, setConfig] = useState(() => getCachedAppConfig(
|
|
33
|
+
const [config, setConfig] = useState(() => getCachedAppConfig(resolvedApiToken));
|
|
33
34
|
const [isBrandingResolved, setIsBrandingResolved] = useState(
|
|
34
|
-
() => Boolean(getCachedAppConfig(
|
|
35
|
+
() => Boolean(getCachedAppConfig(resolvedApiToken))
|
|
35
36
|
);
|
|
36
37
|
const [message, setMessage] = useState("");
|
|
37
38
|
const [isLoading, setIsLoading] = useState(false);
|
|
38
39
|
useEffect(() => {
|
|
39
|
-
|
|
40
|
+
if (!resolvedApiToken) {
|
|
41
|
+
setConfig(defaultAppConfig);
|
|
42
|
+
setIsBrandingResolved(true);
|
|
43
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const cached = getCachedAppConfig(resolvedApiToken);
|
|
40
47
|
if (cached) {
|
|
41
48
|
setConfig(cached);
|
|
42
49
|
setIsBrandingResolved(true);
|
|
@@ -44,10 +51,10 @@ function CyberiaAuth({
|
|
|
44
51
|
setIsBrandingResolved(false);
|
|
45
52
|
}
|
|
46
53
|
void axios.get(`${backendBaseUrl}/api/public/app/config`, {
|
|
47
|
-
params: { apiToken }
|
|
54
|
+
params: { apiToken: resolvedApiToken }
|
|
48
55
|
}).then((res) => {
|
|
49
56
|
setConfig(res.data);
|
|
50
|
-
cacheAppConfig(
|
|
57
|
+
cacheAppConfig(resolvedApiToken, res.data);
|
|
51
58
|
}).catch((error) => {
|
|
52
59
|
const errorMessage = error instanceof Error ? error.message : "Unable to load app config";
|
|
53
60
|
setMessage(errorMessage);
|
|
@@ -57,16 +64,20 @@ function CyberiaAuth({
|
|
|
57
64
|
}).finally(() => {
|
|
58
65
|
setIsBrandingResolved(true);
|
|
59
66
|
});
|
|
60
|
-
}, [
|
|
67
|
+
}, [resolvedApiToken, backendBaseUrl]);
|
|
61
68
|
const handleSubmit = async (event) => {
|
|
62
69
|
event.preventDefault();
|
|
70
|
+
if (!resolvedApiToken) {
|
|
71
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
63
74
|
setIsLoading(true);
|
|
64
75
|
setMessage("");
|
|
65
76
|
const form = new FormData(event.currentTarget);
|
|
66
77
|
try {
|
|
67
78
|
const endpoint = mode === "register" ? "/api/public/auth/register" : "/api/public/auth/login";
|
|
68
79
|
const payload = {
|
|
69
|
-
apiToken,
|
|
80
|
+
apiToken: resolvedApiToken,
|
|
70
81
|
email: String(form.get("email")),
|
|
71
82
|
password: String(form.get("password")),
|
|
72
83
|
displayName: String(form.get("displayName") ?? "")
|
|
@@ -86,12 +97,16 @@ function CyberiaAuth({
|
|
|
86
97
|
}
|
|
87
98
|
};
|
|
88
99
|
const startOAuth = (provider) => {
|
|
100
|
+
if (!resolvedApiToken) {
|
|
101
|
+
setMessage('Missing apiToken. Pass a valid app token to <CyberiaAuth apiToken="...">.');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
89
104
|
if (!oauthRedirectUri) {
|
|
90
105
|
setMessage("oauthRedirectUri is required for social login");
|
|
91
106
|
return;
|
|
92
107
|
}
|
|
93
108
|
const url = new URL(`${backendBaseUrl}/api/public/oauth/${provider}/start`);
|
|
94
|
-
url.searchParams.set("apiToken",
|
|
109
|
+
url.searchParams.set("apiToken", resolvedApiToken);
|
|
95
110
|
url.searchParams.set("redirectUri", oauthRedirectUri);
|
|
96
111
|
window.location.href = url.toString();
|
|
97
112
|
};
|
|
@@ -281,6 +296,7 @@ function CyberiaAuthProvider({
|
|
|
281
296
|
storageKey = "cyberia_auth_session"
|
|
282
297
|
}) {
|
|
283
298
|
const backendBaseUrl = resolveBackendBaseUrl(backendUrl);
|
|
299
|
+
const resolvedApiToken = normalizeApiToken(apiToken);
|
|
284
300
|
const resolvedTheme = useResolvedTheme(theme);
|
|
285
301
|
const [isLoaded, setIsLoaded] = useState(false);
|
|
286
302
|
const [session, setSession] = useState(null);
|
|
@@ -383,7 +399,7 @@ function CyberiaAuthProvider({
|
|
|
383
399
|
CyberiaAuth,
|
|
384
400
|
{
|
|
385
401
|
backendUrl: backendBaseUrl,
|
|
386
|
-
apiToken,
|
|
402
|
+
apiToken: resolvedApiToken,
|
|
387
403
|
oauthRedirectUri,
|
|
388
404
|
theme,
|
|
389
405
|
initialMode: modalMode,
|
|
@@ -816,6 +832,9 @@ function resolveBackendBaseUrl(backendUrl) {
|
|
|
816
832
|
const candidate = backendUrl?.trim() || DEFAULT_BACKEND_URL;
|
|
817
833
|
return candidate.replace(/\/+$/, "");
|
|
818
834
|
}
|
|
835
|
+
function normalizeApiToken(apiToken) {
|
|
836
|
+
return apiToken.trim();
|
|
837
|
+
}
|
|
819
838
|
function getThemePalette(theme) {
|
|
820
839
|
if (theme === "dark") {
|
|
821
840
|
return {
|