@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 +5 -0
- package/dist/module.d.ts.map +1 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +5 -0
- package/dist/runtime/server/api/all.d.ts.map +1 -1
- package/dist/runtime/server/api/all.js +18 -1
- package/dist/runtime/server/api/auth/[provider].get.d.ts +3 -0
- package/dist/runtime/server/api/auth/[provider].get.d.ts.map +1 -0
- package/dist/runtime/server/api/auth/[provider].get.js +27 -0
- package/package.json +1 -1
- package/src/module.ts +8 -1
- package/src/runtime/server/api/all.ts +21 -1
- package/src/runtime/server/api/auth/[provider].get.ts +36 -0
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")
|
package/dist/module.d.ts.map
CHANGED
|
@@ -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,
|
|
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
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":";
|
|
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 @@
|
|
|
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
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
|
+
});
|