naystack 1.1.12-beta.8 → 1.1.13-beta.1

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.
Files changed (57) hide show
  1. package/dist/auth/email/token.cjs.js +14 -0
  2. package/dist/auth/email/token.d.mts +2 -1
  3. package/dist/auth/email/token.d.ts +2 -1
  4. package/dist/auth/email/token.esm.js +13 -0
  5. package/dist/auth/google/get.cjs.js +112 -0
  6. package/dist/auth/google/get.d.mts +7 -0
  7. package/dist/auth/google/get.d.ts +7 -0
  8. package/dist/auth/google/get.esm.js +87 -0
  9. package/dist/auth/google/index.cjs.js +91 -1
  10. package/dist/auth/google/index.d.mts +17 -2
  11. package/dist/auth/google/index.d.ts +17 -2
  12. package/dist/auth/google/index.esm.js +89 -1
  13. package/dist/auth/index.cjs.js +215 -2
  14. package/dist/auth/index.d.mts +5 -0
  15. package/dist/auth/index.d.ts +5 -0
  16. package/dist/auth/index.esm.js +212 -1
  17. package/dist/auth/instagram/index.cjs.js +161 -0
  18. package/dist/auth/instagram/index.d.mts +20 -0
  19. package/dist/auth/instagram/index.d.ts +20 -0
  20. package/dist/auth/instagram/index.esm.js +134 -0
  21. package/dist/auth/instagram/route.cjs.js +139 -0
  22. package/dist/auth/instagram/route.d.mts +8 -0
  23. package/dist/auth/instagram/route.d.ts +8 -0
  24. package/dist/auth/instagram/route.esm.js +114 -0
  25. package/dist/auth/instagram/utils.cjs.js +69 -0
  26. package/dist/auth/instagram/utils.d.mts +8 -0
  27. package/dist/auth/instagram/utils.d.ts +8 -0
  28. package/dist/auth/instagram/utils.esm.js +42 -0
  29. package/dist/client/hooks.cjs.js +74 -0
  30. package/dist/client/hooks.d.mts +6 -0
  31. package/dist/client/hooks.d.ts +6 -0
  32. package/dist/client/hooks.esm.js +48 -0
  33. package/dist/client/index.cjs.js +102 -0
  34. package/dist/client/index.d.mts +4 -0
  35. package/dist/client/index.d.ts +4 -0
  36. package/dist/client/index.esm.js +73 -0
  37. package/dist/{auth/google/oauth.cjs.js → client/seo.cjs.js} +28 -12
  38. package/dist/client/seo.d.mts +10 -0
  39. package/dist/client/seo.d.ts +10 -0
  40. package/dist/client/seo.esm.js +26 -0
  41. package/dist/graphql/errors.cjs.js +559 -0
  42. package/dist/graphql/errors.d.mts +5 -0
  43. package/dist/graphql/errors.d.ts +5 -0
  44. package/dist/graphql/errors.esm.js +547 -0
  45. package/dist/graphql/index.cjs.js +534 -2
  46. package/dist/graphql/index.d.mts +3 -0
  47. package/dist/graphql/index.d.ts +3 -0
  48. package/dist/graphql/index.esm.js +543 -2
  49. package/dist/graphql/utils.cjs.js +0 -2
  50. package/dist/graphql/utils.d.mts +14 -9
  51. package/dist/graphql/utils.d.ts +14 -9
  52. package/dist/graphql/utils.esm.js +0 -2
  53. package/package.json +13 -2
  54. package/dist/.tsbuildinfo +0 -1
  55. package/dist/auth/google/oauth.d.mts +0 -5
  56. package/dist/auth/google/oauth.d.ts +0 -5
  57. package/dist/auth/google/oauth.esm.js +0 -10
@@ -23,6 +23,7 @@ __export(token_exports, {
23
23
  generateAccessToken: () => generateAccessToken,
24
24
  generateRefreshToken: () => generateRefreshToken,
25
25
  getTokenizedResponse: () => getTokenizedResponse,
26
+ getUserIdFromAccessToken: () => getUserIdFromAccessToken,
26
27
  getUserIdFromRefreshToken: () => getUserIdFromRefreshToken,
27
28
  verifyUser: () => verifyUser
28
29
  });
@@ -71,6 +72,18 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
71
72
  }
72
73
  return null;
73
74
  }
75
+ function getUserIdFromAccessToken(refreshToken) {
76
+ if (refreshToken && process.env.SIGNING_KEY)
77
+ try {
78
+ const decoded = (0, import_jsonwebtoken.verify)(refreshToken, process.env.SIGNING_KEY);
79
+ if (typeof decoded !== "string" && typeof decoded.id === "number")
80
+ return decoded.id;
81
+ } catch (e) {
82
+ if (!(e instanceof import_jsonwebtoken.JsonWebTokenError)) console.error(e, "errors");
83
+ return null;
84
+ }
85
+ return null;
86
+ }
74
87
  function verifyUser(user, password) {
75
88
  if (!user.password) return false;
76
89
  return (0, import_bcryptjs.compare)(password, user.password);
@@ -80,6 +93,7 @@ function verifyUser(user, password) {
80
93
  generateAccessToken,
81
94
  generateRefreshToken,
82
95
  getTokenizedResponse,
96
+ getUserIdFromAccessToken,
83
97
  getUserIdFromRefreshToken,
84
98
  verifyUser
85
99
  });
@@ -8,6 +8,7 @@ declare function getTokenizedResponse(accessToken?: string, refreshToken?: strin
8
8
  refreshToken: string | undefined;
9
9
  }>;
10
10
  declare function getUserIdFromRefreshToken(refreshKey: string, refreshToken?: string): number | null;
11
+ declare function getUserIdFromAccessToken(refreshToken?: string): number | null;
11
12
  declare function verifyUser(user: UserOutput, password: string): false | Promise<boolean>;
12
13
 
13
- export { generateAccessToken, generateRefreshToken, getTokenizedResponse, getUserIdFromRefreshToken, verifyUser };
14
+ export { generateAccessToken, generateRefreshToken, getTokenizedResponse, getUserIdFromAccessToken, getUserIdFromRefreshToken, verifyUser };
@@ -8,6 +8,7 @@ declare function getTokenizedResponse(accessToken?: string, refreshToken?: strin
8
8
  refreshToken: string | undefined;
9
9
  }>;
10
10
  declare function getUserIdFromRefreshToken(refreshKey: string, refreshToken?: string): number | null;
11
+ declare function getUserIdFromAccessToken(refreshToken?: string): number | null;
11
12
  declare function verifyUser(user: UserOutput, password: string): false | Promise<boolean>;
12
13
 
13
- export { generateAccessToken, generateRefreshToken, getTokenizedResponse, getUserIdFromRefreshToken, verifyUser };
14
+ export { generateAccessToken, generateRefreshToken, getTokenizedResponse, getUserIdFromAccessToken, getUserIdFromRefreshToken, verifyUser };
@@ -43,6 +43,18 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
43
43
  }
44
44
  return null;
45
45
  }
46
+ function getUserIdFromAccessToken(refreshToken) {
47
+ if (refreshToken && process.env.SIGNING_KEY)
48
+ try {
49
+ const decoded = verify(refreshToken, process.env.SIGNING_KEY);
50
+ if (typeof decoded !== "string" && typeof decoded.id === "number")
51
+ return decoded.id;
52
+ } catch (e) {
53
+ if (!(e instanceof JsonWebTokenError)) console.error(e, "errors");
54
+ return null;
55
+ }
56
+ return null;
57
+ }
46
58
  function verifyUser(user, password) {
47
59
  if (!user.password) return false;
48
60
  return compare(password, user.password);
@@ -51,6 +63,7 @@ export {
51
63
  generateAccessToken,
52
64
  generateRefreshToken,
53
65
  getTokenizedResponse,
66
+ getUserIdFromAccessToken,
54
67
  getUserIdFromRefreshToken,
55
68
  verifyUser
56
69
  };
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/auth/google/get.ts
21
+ var get_exports = {};
22
+ __export(get_exports, {
23
+ getGoogleGetRoute: () => getGoogleGetRoute
24
+ });
25
+ module.exports = __toCommonJS(get_exports);
26
+ var import_googleapis = require("googleapis");
27
+ var import_server2 = require("next/server");
28
+ var import_uuid = require("uuid");
29
+
30
+ // src/auth/email/token.ts
31
+ var import_bcryptjs = require("bcryptjs");
32
+ var import_jsonwebtoken = require("jsonwebtoken");
33
+ var import_server = require("next/server");
34
+ function generateRefreshToken(id, refreshKey) {
35
+ return (0, import_jsonwebtoken.sign)({ id }, refreshKey);
36
+ }
37
+
38
+ // src/auth/google/get.ts
39
+ var getGoogleGetRoute = ({
40
+ getUserIdFromEmail,
41
+ successRedirectURL,
42
+ errorRedirectURL,
43
+ authRoute,
44
+ clientId,
45
+ clientSecret,
46
+ refreshKey
47
+ }) => {
48
+ const oauth2Client = new import_googleapis.google.auth.OAuth2(
49
+ clientId,
50
+ clientSecret,
51
+ authRoute
52
+ );
53
+ return async (req) => {
54
+ const code = req.nextUrl.searchParams.get("code");
55
+ const error = req.nextUrl.searchParams.get("error");
56
+ if (!code && !error) {
57
+ const state2 = (0, import_uuid.v4)();
58
+ const authorizationUrl = oauth2Client.generateAuthUrl({
59
+ scope: [
60
+ "https://www.googleapis.com/auth/userinfo.profile",
61
+ "https://www.googleapis.com/auth/userinfo.email"
62
+ ],
63
+ state: state2,
64
+ include_granted_scopes: true,
65
+ prompt: "consent",
66
+ redirect_uri: authRoute
67
+ });
68
+ const res = import_server2.NextResponse.redirect(authorizationUrl);
69
+ res.cookies.set("state", state2, {
70
+ httpOnly: true,
71
+ secure: true
72
+ });
73
+ return res;
74
+ }
75
+ if (error) {
76
+ return import_server2.NextResponse.redirect(errorRedirectURL);
77
+ }
78
+ const state = req.nextUrl.searchParams.get("state") || void 0;
79
+ if (code && state) {
80
+ const localState = req.cookies.get("state")?.value;
81
+ if (localState !== state) return import_server2.NextResponse.redirect(errorRedirectURL);
82
+ const { tokens } = await oauth2Client.getToken(code);
83
+ oauth2Client.setCredentials(tokens);
84
+ const userInfoRequest = await import_googleapis.google.oauth2({
85
+ auth: oauth2Client,
86
+ version: "v2"
87
+ }).userinfo.get();
88
+ const user = userInfoRequest.data;
89
+ if (user.email) {
90
+ const id = await getUserIdFromEmail(user);
91
+ const res = import_server2.NextResponse.redirect(successRedirectURL);
92
+ if (id) {
93
+ res.cookies.set("refresh", generateRefreshToken(id, refreshKey), {
94
+ httpOnly: true,
95
+ secure: true
96
+ });
97
+ }
98
+ res.cookies.set("state", "", {
99
+ httpOnly: true,
100
+ secure: true,
101
+ maxAge: 0
102
+ });
103
+ return res;
104
+ }
105
+ }
106
+ return import_server2.NextResponse.redirect(errorRedirectURL);
107
+ };
108
+ };
109
+ // Annotate the CommonJS export names for ESM import in node:
110
+ 0 && (module.exports = {
111
+ getGoogleGetRoute
112
+ });
@@ -0,0 +1,7 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { InitGoogleAuthOptions } from './index.mjs';
3
+ import 'googleapis';
4
+
5
+ declare const getGoogleGetRoute: ({ getUserIdFromEmail, successRedirectURL, errorRedirectURL, authRoute, clientId, clientSecret, refreshKey, }: InitGoogleAuthOptions) => (req: NextRequest) => Promise<NextResponse<unknown>>;
6
+
7
+ export { getGoogleGetRoute };
@@ -0,0 +1,7 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { InitGoogleAuthOptions } from './index.js';
3
+ import 'googleapis';
4
+
5
+ declare const getGoogleGetRoute: ({ getUserIdFromEmail, successRedirectURL, errorRedirectURL, authRoute, clientId, clientSecret, refreshKey, }: InitGoogleAuthOptions) => (req: NextRequest) => Promise<NextResponse<unknown>>;
6
+
7
+ export { getGoogleGetRoute };
@@ -0,0 +1,87 @@
1
+ // src/auth/google/get.ts
2
+ import { google } from "googleapis";
3
+ import { NextResponse as NextResponse2 } from "next/server";
4
+ import { v4 } from "uuid";
5
+
6
+ // src/auth/email/token.ts
7
+ import { compare } from "bcryptjs";
8
+ import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
9
+ import { NextResponse } from "next/server";
10
+ function generateRefreshToken(id, refreshKey) {
11
+ return sign({ id }, refreshKey);
12
+ }
13
+
14
+ // src/auth/google/get.ts
15
+ var getGoogleGetRoute = ({
16
+ getUserIdFromEmail,
17
+ successRedirectURL,
18
+ errorRedirectURL,
19
+ authRoute,
20
+ clientId,
21
+ clientSecret,
22
+ refreshKey
23
+ }) => {
24
+ const oauth2Client = new google.auth.OAuth2(
25
+ clientId,
26
+ clientSecret,
27
+ authRoute
28
+ );
29
+ return async (req) => {
30
+ const code = req.nextUrl.searchParams.get("code");
31
+ const error = req.nextUrl.searchParams.get("error");
32
+ if (!code && !error) {
33
+ const state2 = v4();
34
+ const authorizationUrl = oauth2Client.generateAuthUrl({
35
+ scope: [
36
+ "https://www.googleapis.com/auth/userinfo.profile",
37
+ "https://www.googleapis.com/auth/userinfo.email"
38
+ ],
39
+ state: state2,
40
+ include_granted_scopes: true,
41
+ prompt: "consent",
42
+ redirect_uri: authRoute
43
+ });
44
+ const res = NextResponse2.redirect(authorizationUrl);
45
+ res.cookies.set("state", state2, {
46
+ httpOnly: true,
47
+ secure: true
48
+ });
49
+ return res;
50
+ }
51
+ if (error) {
52
+ return NextResponse2.redirect(errorRedirectURL);
53
+ }
54
+ const state = req.nextUrl.searchParams.get("state") || void 0;
55
+ if (code && state) {
56
+ const localState = req.cookies.get("state")?.value;
57
+ if (localState !== state) return NextResponse2.redirect(errorRedirectURL);
58
+ const { tokens } = await oauth2Client.getToken(code);
59
+ oauth2Client.setCredentials(tokens);
60
+ const userInfoRequest = await google.oauth2({
61
+ auth: oauth2Client,
62
+ version: "v2"
63
+ }).userinfo.get();
64
+ const user = userInfoRequest.data;
65
+ if (user.email) {
66
+ const id = await getUserIdFromEmail(user);
67
+ const res = NextResponse2.redirect(successRedirectURL);
68
+ if (id) {
69
+ res.cookies.set("refresh", generateRefreshToken(id, refreshKey), {
70
+ httpOnly: true,
71
+ secure: true
72
+ });
73
+ }
74
+ res.cookies.set("state", "", {
75
+ httpOnly: true,
76
+ secure: true,
77
+ maxAge: 0
78
+ });
79
+ return res;
80
+ }
81
+ }
82
+ return NextResponse2.redirect(errorRedirectURL);
83
+ };
84
+ };
85
+ export {
86
+ getGoogleGetRoute
87
+ };
@@ -23,7 +23,97 @@ __export(google_exports, {
23
23
  initGoogleAuth: () => initGoogleAuth
24
24
  });
25
25
  module.exports = __toCommonJS(google_exports);
26
- function initGoogleAuth() {
26
+
27
+ // src/auth/google/get.ts
28
+ var import_googleapis = require("googleapis");
29
+ var import_server2 = require("next/server");
30
+ var import_uuid = require("uuid");
31
+
32
+ // src/auth/email/token.ts
33
+ var import_bcryptjs = require("bcryptjs");
34
+ var import_jsonwebtoken = require("jsonwebtoken");
35
+ var import_server = require("next/server");
36
+ function generateRefreshToken(id, refreshKey) {
37
+ return (0, import_jsonwebtoken.sign)({ id }, refreshKey);
38
+ }
39
+
40
+ // src/auth/google/get.ts
41
+ var getGoogleGetRoute = ({
42
+ getUserIdFromEmail,
43
+ successRedirectURL,
44
+ errorRedirectURL,
45
+ authRoute,
46
+ clientId,
47
+ clientSecret,
48
+ refreshKey
49
+ }) => {
50
+ const oauth2Client = new import_googleapis.google.auth.OAuth2(
51
+ clientId,
52
+ clientSecret,
53
+ authRoute
54
+ );
55
+ return async (req) => {
56
+ const code = req.nextUrl.searchParams.get("code");
57
+ const error = req.nextUrl.searchParams.get("error");
58
+ if (!code && !error) {
59
+ const state2 = (0, import_uuid.v4)();
60
+ const authorizationUrl = oauth2Client.generateAuthUrl({
61
+ scope: [
62
+ "https://www.googleapis.com/auth/userinfo.profile",
63
+ "https://www.googleapis.com/auth/userinfo.email"
64
+ ],
65
+ state: state2,
66
+ include_granted_scopes: true,
67
+ prompt: "consent",
68
+ redirect_uri: authRoute
69
+ });
70
+ const res = import_server2.NextResponse.redirect(authorizationUrl);
71
+ res.cookies.set("state", state2, {
72
+ httpOnly: true,
73
+ secure: true
74
+ });
75
+ return res;
76
+ }
77
+ if (error) {
78
+ return import_server2.NextResponse.redirect(errorRedirectURL);
79
+ }
80
+ const state = req.nextUrl.searchParams.get("state") || void 0;
81
+ if (code && state) {
82
+ const localState = req.cookies.get("state")?.value;
83
+ if (localState !== state) return import_server2.NextResponse.redirect(errorRedirectURL);
84
+ const { tokens } = await oauth2Client.getToken(code);
85
+ oauth2Client.setCredentials(tokens);
86
+ const userInfoRequest = await import_googleapis.google.oauth2({
87
+ auth: oauth2Client,
88
+ version: "v2"
89
+ }).userinfo.get();
90
+ const user = userInfoRequest.data;
91
+ if (user.email) {
92
+ const id = await getUserIdFromEmail(user);
93
+ const res = import_server2.NextResponse.redirect(successRedirectURL);
94
+ if (id) {
95
+ res.cookies.set("refresh", generateRefreshToken(id, refreshKey), {
96
+ httpOnly: true,
97
+ secure: true
98
+ });
99
+ }
100
+ res.cookies.set("state", "", {
101
+ httpOnly: true,
102
+ secure: true,
103
+ maxAge: 0
104
+ });
105
+ return res;
106
+ }
107
+ }
108
+ return import_server2.NextResponse.redirect(errorRedirectURL);
109
+ };
110
+ };
111
+
112
+ // src/auth/google/index.ts
113
+ function initGoogleAuth(props) {
114
+ return {
115
+ GET: getGoogleGetRoute(props)
116
+ };
27
117
  }
28
118
  // Annotate the CommonJS export names for ESM import in node:
29
119
  0 && (module.exports = {
@@ -1,3 +1,18 @@
1
- declare function initGoogleAuth(): void;
1
+ import * as next_server from 'next/server';
2
+ import { oauth2_v2 } from 'googleapis';
2
3
 
3
- export { initGoogleAuth };
4
+ type Schema$Userinfo = oauth2_v2.Schema$Userinfo;
5
+ interface InitGoogleAuthOptions {
6
+ getUserIdFromEmail: (email: Schema$Userinfo) => Promise<number | null>;
7
+ successRedirectURL: string;
8
+ errorRedirectURL: string;
9
+ authRoute: string;
10
+ clientId: string;
11
+ clientSecret: string;
12
+ refreshKey: string;
13
+ }
14
+ declare function initGoogleAuth(props: InitGoogleAuthOptions): {
15
+ GET: (req: next_server.NextRequest) => Promise<next_server.NextResponse<unknown>>;
16
+ };
17
+
18
+ export { type InitGoogleAuthOptions, initGoogleAuth };
@@ -1,3 +1,18 @@
1
- declare function initGoogleAuth(): void;
1
+ import * as next_server from 'next/server';
2
+ import { oauth2_v2 } from 'googleapis';
2
3
 
3
- export { initGoogleAuth };
4
+ type Schema$Userinfo = oauth2_v2.Schema$Userinfo;
5
+ interface InitGoogleAuthOptions {
6
+ getUserIdFromEmail: (email: Schema$Userinfo) => Promise<number | null>;
7
+ successRedirectURL: string;
8
+ errorRedirectURL: string;
9
+ authRoute: string;
10
+ clientId: string;
11
+ clientSecret: string;
12
+ refreshKey: string;
13
+ }
14
+ declare function initGoogleAuth(props: InitGoogleAuthOptions): {
15
+ GET: (req: next_server.NextRequest) => Promise<next_server.NextResponse<unknown>>;
16
+ };
17
+
18
+ export { type InitGoogleAuthOptions, initGoogleAuth };
@@ -1,5 +1,93 @@
1
+ // src/auth/google/get.ts
2
+ import { google } from "googleapis";
3
+ import { NextResponse as NextResponse2 } from "next/server";
4
+ import { v4 } from "uuid";
5
+
6
+ // src/auth/email/token.ts
7
+ import { compare } from "bcryptjs";
8
+ import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
9
+ import { NextResponse } from "next/server";
10
+ function generateRefreshToken(id, refreshKey) {
11
+ return sign({ id }, refreshKey);
12
+ }
13
+
14
+ // src/auth/google/get.ts
15
+ var getGoogleGetRoute = ({
16
+ getUserIdFromEmail,
17
+ successRedirectURL,
18
+ errorRedirectURL,
19
+ authRoute,
20
+ clientId,
21
+ clientSecret,
22
+ refreshKey
23
+ }) => {
24
+ const oauth2Client = new google.auth.OAuth2(
25
+ clientId,
26
+ clientSecret,
27
+ authRoute
28
+ );
29
+ return async (req) => {
30
+ const code = req.nextUrl.searchParams.get("code");
31
+ const error = req.nextUrl.searchParams.get("error");
32
+ if (!code && !error) {
33
+ const state2 = v4();
34
+ const authorizationUrl = oauth2Client.generateAuthUrl({
35
+ scope: [
36
+ "https://www.googleapis.com/auth/userinfo.profile",
37
+ "https://www.googleapis.com/auth/userinfo.email"
38
+ ],
39
+ state: state2,
40
+ include_granted_scopes: true,
41
+ prompt: "consent",
42
+ redirect_uri: authRoute
43
+ });
44
+ const res = NextResponse2.redirect(authorizationUrl);
45
+ res.cookies.set("state", state2, {
46
+ httpOnly: true,
47
+ secure: true
48
+ });
49
+ return res;
50
+ }
51
+ if (error) {
52
+ return NextResponse2.redirect(errorRedirectURL);
53
+ }
54
+ const state = req.nextUrl.searchParams.get("state") || void 0;
55
+ if (code && state) {
56
+ const localState = req.cookies.get("state")?.value;
57
+ if (localState !== state) return NextResponse2.redirect(errorRedirectURL);
58
+ const { tokens } = await oauth2Client.getToken(code);
59
+ oauth2Client.setCredentials(tokens);
60
+ const userInfoRequest = await google.oauth2({
61
+ auth: oauth2Client,
62
+ version: "v2"
63
+ }).userinfo.get();
64
+ const user = userInfoRequest.data;
65
+ if (user.email) {
66
+ const id = await getUserIdFromEmail(user);
67
+ const res = NextResponse2.redirect(successRedirectURL);
68
+ if (id) {
69
+ res.cookies.set("refresh", generateRefreshToken(id, refreshKey), {
70
+ httpOnly: true,
71
+ secure: true
72
+ });
73
+ }
74
+ res.cookies.set("state", "", {
75
+ httpOnly: true,
76
+ secure: true,
77
+ maxAge: 0
78
+ });
79
+ return res;
80
+ }
81
+ }
82
+ return NextResponse2.redirect(errorRedirectURL);
83
+ };
84
+ };
85
+
1
86
  // src/auth/google/index.ts
2
- function initGoogleAuth() {
87
+ function initGoogleAuth(props) {
88
+ return {
89
+ GET: getGoogleGetRoute(props)
90
+ };
3
91
  }
4
92
  export {
5
93
  initGoogleAuth