@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 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(apiToken));
72
+ const [config, setConfig] = (0, import_react.useState)(() => getCachedAppConfig(resolvedApiToken));
72
73
  const [isBrandingResolved, setIsBrandingResolved] = (0, import_react.useState)(
73
- () => Boolean(getCachedAppConfig(apiToken))
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
- const cached = getCachedAppConfig(apiToken);
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(apiToken, res.data);
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
- }, [apiToken, backendBaseUrl]);
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", 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(apiToken));
33
+ const [config, setConfig] = useState(() => getCachedAppConfig(resolvedApiToken));
33
34
  const [isBrandingResolved, setIsBrandingResolved] = useState(
34
- () => Boolean(getCachedAppConfig(apiToken))
35
+ () => Boolean(getCachedAppConfig(resolvedApiToken))
35
36
  );
36
37
  const [message, setMessage] = useState("");
37
38
  const [isLoading, setIsLoading] = useState(false);
38
39
  useEffect(() => {
39
- const cached = getCachedAppConfig(apiToken);
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(apiToken, res.data);
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
- }, [apiToken, backendBaseUrl]);
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", 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 {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyberia-auth/auth",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Cyberia Auth React components and provider",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",