naystack 1.4.3 → 1.4.5

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 (45) hide show
  1. package/dist/auth/constants.cjs.js +30 -0
  2. package/dist/auth/constants.d.mts +3 -0
  3. package/dist/auth/constants.d.ts +3 -0
  4. package/dist/auth/constants.esm.js +5 -0
  5. package/dist/auth/email/index.cjs.js +20 -4
  6. package/dist/auth/email/index.d.mts +1 -0
  7. package/dist/auth/email/index.d.ts +1 -0
  8. package/dist/auth/email/index.esm.js +19 -4
  9. package/dist/auth/email/routes/delete.cjs.js +10 -3
  10. package/dist/auth/email/routes/delete.esm.js +10 -3
  11. package/dist/auth/email/routes/get.cjs.js +8 -3
  12. package/dist/auth/email/routes/get.esm.js +8 -3
  13. package/dist/auth/email/routes/post.cjs.js +9 -2
  14. package/dist/auth/email/routes/post.esm.js +9 -2
  15. package/dist/auth/email/routes/put.cjs.js +9 -2
  16. package/dist/auth/email/routes/put.esm.js +9 -2
  17. package/dist/auth/email/token.cjs.js +18 -2
  18. package/dist/auth/email/token.d.mts +2 -1
  19. package/dist/auth/email/token.d.ts +2 -1
  20. package/dist/auth/email/token.esm.js +17 -2
  21. package/dist/auth/email/utils.cjs.js +8 -1
  22. package/dist/auth/email/utils.esm.js +8 -1
  23. package/dist/auth/google/get.cjs.js +25 -17
  24. package/dist/auth/google/get.d.mts +3 -1
  25. package/dist/auth/google/get.d.ts +3 -1
  26. package/dist/auth/google/get.esm.js +25 -17
  27. package/dist/auth/google/index.cjs.js +25 -17
  28. package/dist/auth/google/index.d.mts +6 -4
  29. package/dist/auth/google/index.d.ts +6 -4
  30. package/dist/auth/google/index.esm.js +25 -17
  31. package/dist/auth/index.cjs.js +38 -21
  32. package/dist/auth/index.d.mts +1 -0
  33. package/dist/auth/index.d.ts +1 -0
  34. package/dist/auth/index.esm.js +37 -21
  35. package/dist/auth/instagram/index.cjs.js +2 -0
  36. package/dist/auth/instagram/index.esm.js +2 -0
  37. package/dist/auth/instagram/route.cjs.js +2 -0
  38. package/dist/auth/instagram/route.esm.js +2 -0
  39. package/dist/file/index.cjs.js +8 -1
  40. package/dist/file/index.esm.js +8 -1
  41. package/dist/file/put.cjs.js +8 -1
  42. package/dist/file/put.esm.js +8 -1
  43. package/dist/file/setup.cjs.js +8 -1
  44. package/dist/file/setup.esm.js +8 -1
  45. package/package.json +1 -1
@@ -4,7 +4,14 @@ import { verify as verify2 } from "jsonwebtoken";
4
4
  // src/auth/email/token.ts
5
5
  import { compare } from "bcryptjs";
6
6
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
7
+ import { cookies } from "next/headers";
8
+ import { redirect } from "next/navigation";
7
9
  import { NextResponse } from "next/server";
10
+
11
+ // src/auth/constants.ts
12
+ var REFRESH_COOKIE_NAME = "refresh";
13
+
14
+ // src/auth/email/token.ts
8
15
  function generateAccessToken(id, signingKey) {
9
16
  return sign({ id }, signingKey, {
10
17
  expiresIn: "2h"
@@ -19,14 +26,14 @@ function getTokenizedResponse(accessToken, refreshToken) {
19
26
  status: 200
20
27
  });
21
28
  if (!accessToken) {
22
- response.cookies.set("refresh", "", {
29
+ response.cookies.set(REFRESH_COOKIE_NAME, "", {
23
30
  secure: false,
24
31
  httpOnly: true,
25
32
  expires: 0
26
33
  });
27
34
  }
28
35
  if (refreshToken !== void 0) {
29
- response.cookies.set("refresh", refreshToken, {
36
+ response.cookies.set(REFRESH_COOKIE_NAME, refreshToken, {
30
37
  secure: false,
31
38
  httpOnly: true,
32
39
  expires: refreshToken === "" ? 0 : new Date(Date.now() + 60 * 60 * 24 * 365 * 1e3)
@@ -62,6 +69,13 @@ function verifyUser(user, password) {
62
69
  if (!user.password) return false;
63
70
  return compare(password, user.password);
64
71
  }
72
+ async function checkAuthStatus(redirectUnauthorizedURL) {
73
+ const Cookie = await cookies();
74
+ const isAuthorized = !!Cookie.get(REFRESH_COOKIE_NAME)?.value;
75
+ if (!isAuthorized && redirectUnauthorizedURL)
76
+ return redirect(redirectUnauthorizedURL);
77
+ return isAuthorized;
78
+ }
65
79
 
66
80
  // src/auth/utils/errors.ts
67
81
  import { NextResponse as NextResponse2 } from "next/server";
@@ -119,7 +133,7 @@ async function verifyCaptcha(token, secret) {
119
133
  var getContext = (keys, req) => {
120
134
  const bearer = req.headers.get("authorization");
121
135
  if (!bearer) {
122
- const refresh = req.cookies.get("refresh")?.value;
136
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
123
137
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
124
138
  if (userId) return { userId, isRefreshID: true };
125
139
  return { userId: null };
@@ -149,7 +163,7 @@ var getDeleteRoute = (options) => async (req) => {
149
163
 
150
164
  // src/auth/email/routes/get.ts
151
165
  var getGetRoute = (options) => async (req) => {
152
- const refresh = req.cookies.get("refresh")?.value;
166
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
153
167
  const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
154
168
  if (userID) {
155
169
  if (options.onRefresh) {
@@ -230,18 +244,14 @@ import { NextResponse as NextResponse3 } from "next/server";
230
244
  import { v4 } from "uuid";
231
245
  var getGoogleGetRoute = ({
232
246
  getUserIdFromEmail,
233
- successRedirectURL,
247
+ redirectURL,
234
248
  errorRedirectURL,
235
- authRoute,
249
+ url,
236
250
  clientId,
237
251
  clientSecret,
238
- refreshKey
252
+ keys
239
253
  }) => {
240
- const oauth2Client = new google.auth.OAuth2(
241
- clientId,
242
- clientSecret,
243
- authRoute
244
- );
254
+ const oauth2Client = new google.auth.OAuth2(clientId, clientSecret, url);
245
255
  return async (req) => {
246
256
  const code = req.nextUrl.searchParams.get("code");
247
257
  const error = req.nextUrl.searchParams.get("error");
@@ -255,7 +265,7 @@ var getGoogleGetRoute = ({
255
265
  state: state2,
256
266
  include_granted_scopes: true,
257
267
  prompt: "consent",
258
- redirect_uri: authRoute
268
+ redirect_uri: url
259
269
  });
260
270
  const res = NextResponse3.redirect(authorizationUrl);
261
271
  res.cookies.set("state", state2, {
@@ -264,13 +274,14 @@ var getGoogleGetRoute = ({
264
274
  });
265
275
  return res;
266
276
  }
277
+ const errorURL = errorRedirectURL || redirectURL;
267
278
  if (error) {
268
- return NextResponse3.redirect(errorRedirectURL);
279
+ return NextResponse3.redirect(errorURL);
269
280
  }
270
281
  const state = req.nextUrl.searchParams.get("state") || void 0;
271
282
  if (code && state) {
272
283
  const localState = req.cookies.get("state")?.value;
273
- if (localState !== state) return NextResponse3.redirect(errorRedirectURL);
284
+ if (localState !== state) return NextResponse3.redirect(errorURL);
274
285
  const { tokens } = await oauth2Client.getToken(code);
275
286
  oauth2Client.setCredentials(tokens);
276
287
  const userInfoRequest = await google.oauth2({
@@ -280,12 +291,16 @@ var getGoogleGetRoute = ({
280
291
  const user = userInfoRequest.data;
281
292
  if (user.email) {
282
293
  const id = await getUserIdFromEmail(user);
283
- const res = NextResponse3.redirect(successRedirectURL);
294
+ const res = NextResponse3.redirect(redirectURL);
284
295
  if (id) {
285
- res.cookies.set("refresh", generateRefreshToken(id, refreshKey), {
286
- httpOnly: true,
287
- secure: true
288
- });
296
+ res.cookies.set(
297
+ REFRESH_COOKIE_NAME,
298
+ generateRefreshToken(id, keys.refresh),
299
+ {
300
+ httpOnly: true,
301
+ secure: true
302
+ }
303
+ );
289
304
  }
290
305
  res.cookies.set("state", "", {
291
306
  httpOnly: true,
@@ -295,7 +310,7 @@ var getGoogleGetRoute = ({
295
310
  return res;
296
311
  }
297
312
  }
298
- return NextResponse3.redirect(errorRedirectURL);
313
+ return NextResponse3.redirect(errorURL);
299
314
  };
300
315
  };
301
316
 
@@ -416,6 +431,7 @@ function initInstagramAuth(props) {
416
431
  };
417
432
  }
418
433
  export {
434
+ checkAuthStatus,
419
435
  getEmailAuthRoutes,
420
436
  initGoogleAuth,
421
437
  initInstagramAuth
@@ -30,6 +30,8 @@ var import_server3 = require("next/server");
30
30
  // src/auth/email/token.ts
31
31
  var import_bcryptjs = require("bcryptjs");
32
32
  var import_jsonwebtoken = require("jsonwebtoken");
33
+ var import_headers = require("next/headers");
34
+ var import_navigation = require("next/navigation");
33
35
  var import_server = require("next/server");
34
36
  function getUserIdFromAccessToken(refreshToken) {
35
37
  if (refreshToken && process.env.SIGNING_KEY)
@@ -4,6 +4,8 @@ import { NextResponse as NextResponse3 } from "next/server";
4
4
  // src/auth/email/token.ts
5
5
  import { compare } from "bcryptjs";
6
6
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
7
+ import { cookies } from "next/headers";
8
+ import { redirect } from "next/navigation";
7
9
  import { NextResponse } from "next/server";
8
10
  function getUserIdFromAccessToken(refreshToken) {
9
11
  if (refreshToken && process.env.SIGNING_KEY)
@@ -28,6 +28,8 @@ var import_server3 = require("next/server");
28
28
  // src/auth/email/token.ts
29
29
  var import_bcryptjs = require("bcryptjs");
30
30
  var import_jsonwebtoken = require("jsonwebtoken");
31
+ var import_headers = require("next/headers");
32
+ var import_navigation = require("next/navigation");
31
33
  var import_server = require("next/server");
32
34
  function getUserIdFromAccessToken(refreshToken) {
33
35
  if (refreshToken && process.env.SIGNING_KEY)
@@ -4,6 +4,8 @@ import { NextResponse as NextResponse3 } from "next/server";
4
4
  // src/auth/email/token.ts
5
5
  import { compare } from "bcryptjs";
6
6
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
7
+ import { cookies } from "next/headers";
8
+ import { redirect } from "next/navigation";
7
9
  import { NextResponse } from "next/server";
8
10
  function getUserIdFromAccessToken(refreshToken) {
9
11
  if (refreshToken && process.env.SIGNING_KEY)
@@ -34,7 +34,14 @@ var import_jsonwebtoken2 = require("jsonwebtoken");
34
34
  // src/auth/email/token.ts
35
35
  var import_bcryptjs = require("bcryptjs");
36
36
  var import_jsonwebtoken = require("jsonwebtoken");
37
+ var import_headers = require("next/headers");
38
+ var import_navigation = require("next/navigation");
37
39
  var import_server = require("next/server");
40
+
41
+ // src/auth/constants.ts
42
+ var REFRESH_COOKIE_NAME = "refresh";
43
+
44
+ // src/auth/email/token.ts
38
45
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
39
46
  if (refreshToken)
40
47
  try {
@@ -55,7 +62,7 @@ var import_server2 = require("next/server");
55
62
  var getContext = (keys, req) => {
56
63
  const bearer = req.headers.get("authorization");
57
64
  if (!bearer) {
58
- const refresh = req.cookies.get("refresh")?.value;
65
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
59
66
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
60
67
  if (userId) return { userId, isRefreshID: true };
61
68
  return { userId: null };
@@ -8,7 +8,14 @@ import { verify as verify2 } from "jsonwebtoken";
8
8
  // src/auth/email/token.ts
9
9
  import { compare } from "bcryptjs";
10
10
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
11
+ import { cookies } from "next/headers";
12
+ import { redirect } from "next/navigation";
11
13
  import { NextResponse } from "next/server";
14
+
15
+ // src/auth/constants.ts
16
+ var REFRESH_COOKIE_NAME = "refresh";
17
+
18
+ // src/auth/email/token.ts
12
19
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
13
20
  if (refreshToken)
14
21
  try {
@@ -29,7 +36,7 @@ import { NextResponse as NextResponse2 } from "next/server";
29
36
  var getContext = (keys, req) => {
30
37
  const bearer = req.headers.get("authorization");
31
38
  if (!bearer) {
32
- const refresh = req.cookies.get("refresh")?.value;
39
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
33
40
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
41
  if (userId) return { userId, isRefreshID: true };
35
42
  return { userId: null };
@@ -32,7 +32,14 @@ var import_jsonwebtoken2 = require("jsonwebtoken");
32
32
  // src/auth/email/token.ts
33
33
  var import_bcryptjs = require("bcryptjs");
34
34
  var import_jsonwebtoken = require("jsonwebtoken");
35
+ var import_headers = require("next/headers");
36
+ var import_navigation = require("next/navigation");
35
37
  var import_server = require("next/server");
38
+
39
+ // src/auth/constants.ts
40
+ var REFRESH_COOKIE_NAME = "refresh";
41
+
42
+ // src/auth/email/token.ts
36
43
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
37
44
  if (refreshToken)
38
45
  try {
@@ -53,7 +60,7 @@ var import_server2 = require("next/server");
53
60
  var getContext = (keys, req) => {
54
61
  const bearer = req.headers.get("authorization");
55
62
  if (!bearer) {
56
- const refresh = req.cookies.get("refresh")?.value;
63
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
57
64
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
58
65
  if (userId) return { userId, isRefreshID: true };
59
66
  return { userId: null };
@@ -8,7 +8,14 @@ import { verify as verify2 } from "jsonwebtoken";
8
8
  // src/auth/email/token.ts
9
9
  import { compare } from "bcryptjs";
10
10
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
11
+ import { cookies } from "next/headers";
12
+ import { redirect } from "next/navigation";
11
13
  import { NextResponse } from "next/server";
14
+
15
+ // src/auth/constants.ts
16
+ var REFRESH_COOKIE_NAME = "refresh";
17
+
18
+ // src/auth/email/token.ts
12
19
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
13
20
  if (refreshToken)
14
21
  try {
@@ -29,7 +36,7 @@ import { NextResponse as NextResponse2 } from "next/server";
29
36
  var getContext = (keys, req) => {
30
37
  const bearer = req.headers.get("authorization");
31
38
  if (!bearer) {
32
- const refresh = req.cookies.get("refresh")?.value;
39
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
33
40
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
41
  if (userId) return { userId, isRefreshID: true };
35
42
  return { userId: null };
@@ -34,7 +34,14 @@ var import_jsonwebtoken2 = require("jsonwebtoken");
34
34
  // src/auth/email/token.ts
35
35
  var import_bcryptjs = require("bcryptjs");
36
36
  var import_jsonwebtoken = require("jsonwebtoken");
37
+ var import_headers = require("next/headers");
38
+ var import_navigation = require("next/navigation");
37
39
  var import_server = require("next/server");
40
+
41
+ // src/auth/constants.ts
42
+ var REFRESH_COOKIE_NAME = "refresh";
43
+
44
+ // src/auth/email/token.ts
38
45
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
39
46
  if (refreshToken)
40
47
  try {
@@ -55,7 +62,7 @@ var import_server2 = require("next/server");
55
62
  var getContext = (keys, req) => {
56
63
  const bearer = req.headers.get("authorization");
57
64
  if (!bearer) {
58
- const refresh = req.cookies.get("refresh")?.value;
65
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
59
66
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
60
67
  if (userId) return { userId, isRefreshID: true };
61
68
  return { userId: null };
@@ -8,7 +8,14 @@ import { verify as verify2 } from "jsonwebtoken";
8
8
  // src/auth/email/token.ts
9
9
  import { compare } from "bcryptjs";
10
10
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
11
+ import { cookies } from "next/headers";
12
+ import { redirect } from "next/navigation";
11
13
  import { NextResponse } from "next/server";
14
+
15
+ // src/auth/constants.ts
16
+ var REFRESH_COOKIE_NAME = "refresh";
17
+
18
+ // src/auth/email/token.ts
12
19
  function getUserIdFromRefreshToken(refreshKey, refreshToken) {
13
20
  if (refreshToken)
14
21
  try {
@@ -29,7 +36,7 @@ import { NextResponse as NextResponse2 } from "next/server";
29
36
  var getContext = (keys, req) => {
30
37
  const bearer = req.headers.get("authorization");
31
38
  if (!bearer) {
32
- const refresh = req.cookies.get("refresh")?.value;
39
+ const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
33
40
  const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
41
  if (userId) return { userId, isRefreshID: true };
35
42
  return { userId: null };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naystack",
3
- "version": "1.4.3",
3
+ "version": "1.4.5",
4
4
  "description": "A stack built with Next + GraphQL + S3 + Auth",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",