@next-nest-auth/nextauth 0.2.0 → 0.2.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.
@@ -0,0 +1,27 @@
1
+ import { NextRequest, NextResponse } from "next/server";
2
+ interface TokenResponse {
3
+ accessToken: string;
4
+ refreshToken: string;
5
+ accessTokenExpiresIn: string;
6
+ refreshTokenExpiresIn: string;
7
+ }
8
+ interface User {
9
+ sub: string;
10
+ name: string;
11
+ email: string;
12
+ mobile: string;
13
+ role: string;
14
+ pic: string;
15
+ macId: string;
16
+ [key: string]: any;
17
+ }
18
+ export declare function refreshToken(req: NextRequest): Promise<NextResponse<unknown>>;
19
+ export declare function authenticate(params: any): Promise<TokenResponse>;
20
+ export declare function getAccessToken(): Promise<string>;
21
+ export declare function getRefreshToken(): Promise<string>;
22
+ export declare function checkAuth(): Promise<boolean>;
23
+ export declare function getUserInfo(): Promise<User>;
24
+ export declare function logout(): Promise<void>;
25
+ export declare function get(url: string, params?: any, headers?: any, secured?: boolean): Promise<any>;
26
+ export declare function post(url: string, data?: any, headers?: any, secured?: boolean): Promise<any>;
27
+ export {};
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.refreshToken = refreshToken;
4
+ exports.authenticate = authenticate;
5
+ exports.getAccessToken = getAccessToken;
6
+ exports.getRefreshToken = getRefreshToken;
7
+ exports.checkAuth = checkAuth;
8
+ exports.getUserInfo = getUserInfo;
9
+ exports.logout = logout;
10
+ exports.get = get;
11
+ exports.post = post;
12
+ const axios_1 = require("axios");
13
+ const jwt_decode_1 = require("jwt-decode");
14
+ const headers_1 = require("next/headers");
15
+ const server_1 = require("next/server");
16
+ const API_URL = process.env.API_BASE_URL || process.env.NEXT_PUBLIC_API_URL;
17
+ const convertToSeconds = (expiresIn) => {
18
+ const match = expiresIn.match(/(\d+)([mhd])/);
19
+ if (!match)
20
+ return 0;
21
+ const value = parseInt(match[1], 10);
22
+ const unit = match[2];
23
+ switch (unit) {
24
+ case "m":
25
+ return value * 60;
26
+ case "h":
27
+ return value * 60 * 60;
28
+ case "d":
29
+ return value * 60 * 60 * 24;
30
+ default:
31
+ return 0;
32
+ }
33
+ };
34
+ async function refreshToken(req) {
35
+ try {
36
+ const refreshToken = req.cookies.get("refresh_token")?.value;
37
+ if (!refreshToken) {
38
+ throw new Error("Token refresh failed, no refresh token");
39
+ }
40
+ const response = await post(`${API_URL}/nestauth/refresh-token`, {
41
+ refresh_token: refreshToken,
42
+ }, {}, false);
43
+ if (!response || !response.accessToken || !response.refreshToken) {
44
+ throw new Error("Token refresh failed, no response from api");
45
+ }
46
+ const res = server_1.NextResponse.next();
47
+ res.cookies.set("access_token", response.accessToken, {
48
+ httpOnly: true,
49
+ secure: true,
50
+ sameSite: "lax",
51
+ path: "/",
52
+ maxAge: convertToSeconds(response.accessTokenExpiresIn ?? ""),
53
+ });
54
+ if (!process.env.AUTOEXPIRE_REFRESH_TOKEN) {
55
+ if (process.env.NODE_ENV === "development") {
56
+ console.log("refresh token is not expired and updating expires in");
57
+ }
58
+ res.cookies.set("refresh_token", response.refreshToken, {
59
+ httpOnly: true,
60
+ secure: true,
61
+ sameSite: "lax",
62
+ path: "/",
63
+ maxAge: convertToSeconds(response.refreshTokenExpiresIn ?? ""),
64
+ });
65
+ }
66
+ return res;
67
+ }
68
+ catch (error) {
69
+ throw new Error(error?.message ?? "Token refresh failed");
70
+ }
71
+ }
72
+ async function authenticate(params) {
73
+ try {
74
+ const response = await post(`${API_URL}/nestauth/login`, params, {}, false);
75
+ if (!response ||
76
+ !response.accessToken ||
77
+ !response.refreshToken ||
78
+ !response.accessTokenExpiresIn ||
79
+ !response.refreshTokenExpiresIn) {
80
+ throw new Error("Login failed" +
81
+ " API URL: " +
82
+ API_URL +
83
+ " params: " +
84
+ JSON.stringify(params) +
85
+ " response: " +
86
+ JSON.stringify(response));
87
+ }
88
+ const cookieStore = await (0, headers_1.cookies)();
89
+ cookieStore.set("access_token", response.accessToken, {
90
+ httpOnly: true,
91
+ secure: process.env.NODE_ENV === "production",
92
+ sameSite: "lax",
93
+ path: "/",
94
+ maxAge: convertToSeconds(response.accessTokenExpiresIn ?? ""),
95
+ });
96
+ cookieStore.set("refresh_token", response.refreshToken, {
97
+ httpOnly: true,
98
+ secure: process.env.NODE_ENV === "production",
99
+ sameSite: "lax",
100
+ path: "/",
101
+ maxAge: convertToSeconds(response.refreshTokenExpiresIn ?? ""),
102
+ });
103
+ return response;
104
+ }
105
+ catch (error) {
106
+ throw new Error(error?.message ?? "Login failed");
107
+ }
108
+ }
109
+ async function getAccessToken() {
110
+ const cookieStore = await (0, headers_1.cookies)();
111
+ const access_token = cookieStore.get("access_token")?.value;
112
+ return access_token ?? null;
113
+ }
114
+ async function getRefreshToken() {
115
+ const cookieStore = await (0, headers_1.cookies)();
116
+ const refresh_token = cookieStore.get("refresh_token")?.value;
117
+ return refresh_token ?? null;
118
+ }
119
+ async function checkAuth() {
120
+ const accessToken = await getAccessToken();
121
+ return !!accessToken;
122
+ }
123
+ async function getUserInfo() {
124
+ const accessToken = await getAccessToken();
125
+ if (!accessToken) {
126
+ return null;
127
+ }
128
+ try {
129
+ const decoded = (0, jwt_decode_1.jwtDecode)(accessToken);
130
+ return decoded;
131
+ }
132
+ catch (error) {
133
+ return null;
134
+ }
135
+ }
136
+ async function logout() {
137
+ (await (0, headers_1.cookies)()).delete("access_token");
138
+ (await (0, headers_1.cookies)()).delete("refresh_token");
139
+ }
140
+ async function get(url, params = {}, headers = {}, secured = true) {
141
+ const headerData = {
142
+ Authorization: "",
143
+ ...headers,
144
+ };
145
+ if (secured) {
146
+ const accessToken = await getAccessToken();
147
+ headerData.Authorization = "Bearer " + accessToken;
148
+ }
149
+ try {
150
+ const response = await axios_1.default.get(url, {
151
+ headers: headerData,
152
+ params: params,
153
+ withCredentials: true,
154
+ });
155
+ if (response.status === 200 || response.status === 201) {
156
+ return response.data;
157
+ }
158
+ return null;
159
+ }
160
+ catch (error) {
161
+ return error;
162
+ }
163
+ }
164
+ async function post(url, data = {}, headers = {}, secured = true) {
165
+ const headerData = {
166
+ Authorization: "",
167
+ ...headers,
168
+ };
169
+ if (secured) {
170
+ const accessToken = await getAccessToken();
171
+ headerData.Authorization = "Bearer " + accessToken;
172
+ }
173
+ try {
174
+ const response = await axios_1.default.post(url, data, {
175
+ headers: headerData,
176
+ withCredentials: true,
177
+ });
178
+ if (response.status === 200 || response.status === 201) {
179
+ return response.data;
180
+ }
181
+ return null;
182
+ }
183
+ catch (error) {
184
+ return error;
185
+ }
186
+ }
187
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./auth";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auth"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}