@enfyra/sdk-nuxt 0.7.2 → 0.7.3

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/module.cjs CHANGED
@@ -103,6 +103,11 @@ declare module '#imports' {
103
103
  handler: resolve("./runtime/server/api/auth/callback.get"),
104
104
  method: "get"
105
105
  });
106
+ kit.addServerHandler({
107
+ route: `${apiPrefix}/auth/[provider]`,
108
+ handler: resolve("./runtime/server/api/auth/[provider].get"),
109
+ method: "get"
110
+ });
106
111
  kit.addServerHandler({
107
112
  route: "/assets/**",
108
113
  handler: resolve("./runtime/server/api/all")
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AAED,wBAoIG"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;AAED,wBA2IG"}
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.0.0"
6
6
  },
7
- "version": "0.7.2",
7
+ "version": "0.7.3",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "0.8.4",
10
10
  "unbuild": "2.0.0"
package/dist/module.mjs CHANGED
@@ -100,6 +100,11 @@ declare module '#imports' {
100
100
  handler: resolve("./runtime/server/api/auth/callback.get"),
101
101
  method: "get"
102
102
  });
103
+ addServerHandler({
104
+ route: `${apiPrefix}/auth/[provider]`,
105
+ handler: resolve("./runtime/server/api/auth/[provider].get"),
106
+ method: "get"
107
+ });
103
108
  addServerHandler({
104
109
  route: "/assets/**",
105
110
  handler: resolve("./runtime/server/api/all")
@@ -1 +1 @@
1
- {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../../../src/runtime/server/api/all.ts"],"names":[],"mappings":";AAUA,wBAQG"}
1
+ {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../../../src/runtime/server/api/all.ts"],"names":[],"mappings":";AAaA,wBAyBG"}
@@ -1,4 +1,5 @@
1
- import { defineEventHandler, setResponseHeaders } from "h3";
1
+ import { defineEventHandler, getQuery, sendRedirect, setResponseHeaders } from "h3";
2
+ import { useRuntimeConfig } from "#imports";
2
3
  import { proxyToAPI } from "../../utils/server/proxy.js";
3
4
  const CORS_HEADERS = {
4
5
  "Access-Control-Allow-Origin": "*",
@@ -6,10 +7,26 @@ const CORS_HEADERS = {
6
7
  "Access-Control-Allow-Headers": "Content-Type, Authorization",
7
8
  "Access-Control-Max-Age": "86400"
8
9
  };
10
+ const OAUTH_INIT_PATTERN = /\/auth\/(google|facebook|github)(?:\/|$|\?)/;
9
11
  export default defineEventHandler(async (event) => {
10
12
  setResponseHeaders(event, CORS_HEADERS);
11
13
  if (event.method === "OPTIONS") {
12
14
  return "";
13
15
  }
16
+ const pathname = event.path?.split("?")[0] || event.path || "";
17
+ const oauthMatch = pathname.match(OAUTH_INIT_PATTERN);
18
+ if (event.method === "GET" && oauthMatch) {
19
+ const provider = oauthMatch[1];
20
+ const query = getQuery(event);
21
+ const redirectParam = query.redirect;
22
+ if (redirectParam) {
23
+ const config = useRuntimeConfig();
24
+ const apiUrl = config.public?.enfyraSDK?.apiUrl;
25
+ if (apiUrl) {
26
+ const backendUrl = `${apiUrl.replace(/\/+$/, "")}/auth/${provider}?redirect=${encodeURIComponent(redirectParam)}`;
27
+ return sendRedirect(event, backendUrl, 302);
28
+ }
29
+ }
30
+ }
14
31
  return proxyToAPI(event);
15
32
  });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<void>>;
2
+ export default _default;
3
+ //# sourceMappingURL=%5Bprovider%5D.get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"[provider].get.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/server/api/auth/[provider].get.ts"],"names":[],"mappings":";AAcA,wBAqBG"}
@@ -0,0 +1,27 @@
1
+ import {
2
+ createError,
3
+ defineEventHandler,
4
+ getQuery,
5
+ getRouterParam,
6
+ sendRedirect
7
+ } from "h3";
8
+ import { useRuntimeConfig } from "#imports";
9
+ const OAUTH_PROVIDERS = ["google", "facebook", "github"];
10
+ export default defineEventHandler((event) => {
11
+ const provider = getRouterParam(event, "provider");
12
+ if (!provider || !OAUTH_PROVIDERS.includes(provider)) {
13
+ throw createError({ statusCode: 400, message: "Invalid OAuth provider" });
14
+ }
15
+ const query = getQuery(event);
16
+ const redirectParam = query.redirect;
17
+ if (!redirectParam) {
18
+ throw createError({ statusCode: 400, message: "Redirect URL is required" });
19
+ }
20
+ const config = useRuntimeConfig();
21
+ const apiUrl = config.public?.enfyraSDK?.apiUrl;
22
+ if (!apiUrl) {
23
+ throw createError({ statusCode: 500, message: "API URL not configured" });
24
+ }
25
+ const backendUrl = `${apiUrl.replace(/\/+$/, "")}/auth/${provider}?redirect=${encodeURIComponent(redirectParam)}`;
26
+ return sendRedirect(event, backendUrl, 302);
27
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enfyra/sdk-nuxt",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "type": "module",
5
5
  "description": "Nuxt SDK for Enfyra CMS",
6
6
  "repository": {
package/src/module.ts CHANGED
@@ -130,13 +130,20 @@ declare module '#imports' {
130
130
  method: "post",
131
131
  });
132
132
 
133
- // OAuth callback - sets cookies and redirects
133
+ // OAuth callback - sets cookies and redirects (must be before [provider])
134
134
  addServerHandler({
135
135
  route: `${apiPrefix}/auth/callback`,
136
136
  handler: resolve("./runtime/server/api/auth/callback.get"),
137
137
  method: "get",
138
138
  });
139
139
 
140
+ // OAuth initiate - redirect to backend (not proxy)
141
+ addServerHandler({
142
+ route: `${apiPrefix}/auth/[provider]`,
143
+ handler: resolve("./runtime/server/api/auth/[provider].get"),
144
+ method: "get",
145
+ });
146
+
140
147
  addServerHandler({
141
148
  route: "/assets/**",
142
149
  handler: resolve("./runtime/server/api/all"),
@@ -1,4 +1,5 @@
1
- import { defineEventHandler, setResponseHeaders } from "h3";
1
+ import { defineEventHandler, getQuery, sendRedirect, setResponseHeaders } from "h3";
2
+ import { useRuntimeConfig } from "#imports";
2
3
  import { proxyToAPI } from "../../utils/server/proxy";
3
4
 
4
5
  const CORS_HEADERS = {
@@ -8,6 +9,8 @@ const CORS_HEADERS = {
8
9
  'Access-Control-Max-Age': '86400',
9
10
  };
10
11
 
12
+ const OAUTH_INIT_PATTERN = /\/auth\/(google|facebook|github)(?:\/|$|\?)/;
13
+
11
14
  export default defineEventHandler(async (event) => {
12
15
  setResponseHeaders(event, CORS_HEADERS);
13
16
 
@@ -15,5 +18,22 @@ export default defineEventHandler(async (event) => {
15
18
  return '';
16
19
  }
17
20
 
21
+ // OAuth initiate: redirect to backend, do NOT proxy
22
+ const pathname = event.path?.split('?')[0] || event.path || '';
23
+ const oauthMatch = pathname.match(OAUTH_INIT_PATTERN);
24
+ if (event.method === 'GET' && oauthMatch) {
25
+ const provider = oauthMatch[1];
26
+ const query = getQuery(event);
27
+ const redirectParam = query.redirect as string;
28
+ if (redirectParam) {
29
+ const config = useRuntimeConfig();
30
+ const apiUrl = config.public?.enfyraSDK?.apiUrl;
31
+ if (apiUrl) {
32
+ const backendUrl = `${apiUrl.replace(/\/+$/, "")}/auth/${provider}?redirect=${encodeURIComponent(redirectParam)}`;
33
+ return sendRedirect(event, backendUrl, 302);
34
+ }
35
+ }
36
+ }
37
+
18
38
  return proxyToAPI(event);
19
39
  });
@@ -0,0 +1,36 @@
1
+ /**
2
+ * OAuth initiate - redirect browser to backend, do NOT proxy/fetch
3
+ */
4
+ import {
5
+ createError,
6
+ defineEventHandler,
7
+ getQuery,
8
+ getRouterParam,
9
+ sendRedirect,
10
+ } from "h3";
11
+ import { useRuntimeConfig } from "#imports";
12
+
13
+ const OAUTH_PROVIDERS = ["google", "facebook", "github"];
14
+
15
+ export default defineEventHandler((event) => {
16
+ const provider = getRouterParam(event, "provider");
17
+ if (!provider || !OAUTH_PROVIDERS.includes(provider)) {
18
+ throw createError({ statusCode: 400, message: "Invalid OAuth provider" });
19
+ }
20
+
21
+ const query = getQuery(event);
22
+ const redirectParam = query.redirect as string;
23
+ if (!redirectParam) {
24
+ throw createError({ statusCode: 400, message: "Redirect URL is required" });
25
+ }
26
+
27
+ const config = useRuntimeConfig();
28
+ const apiUrl = config.public?.enfyraSDK?.apiUrl;
29
+ if (!apiUrl) {
30
+ throw createError({ statusCode: 500, message: "API URL not configured" });
31
+ }
32
+
33
+ const backendUrl = `${apiUrl.replace(/\/+$/, "")}/auth/${provider}?redirect=${encodeURIComponent(redirectParam)}`;
34
+
35
+ return sendRedirect(event, backendUrl, 302);
36
+ });