next-auth-mfelfelani72 0.0.21 → 0.0.22

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.
@@ -4,17 +4,8 @@ export declare function loginHandler(apiUrl: string): (req: NextRequest) => Prom
4
4
  success: boolean;
5
5
  debug: {
6
6
  url: string;
7
- status: number;
8
- contentType: string | null;
9
7
  responsePreview: string;
10
8
  };
11
- }> | NextResponse<{
12
- message: string;
13
- success: boolean;
14
- debug: {
15
- url: string;
16
- responseText: string;
17
- };
18
9
  }> | NextResponse<{
19
10
  message: string;
20
11
  success: boolean;
@@ -1,21 +1,60 @@
1
1
  // src/libraries/auth/loginHandler.ts
2
2
  import { NextResponse } from "next/server";
3
+ import fs from 'fs';
4
+ import path from 'path';
3
5
  export function loginHandler(apiUrl) {
4
6
  return async function POST(req) {
5
- var _a, _b, _c, _d, _e, _f, _g;
6
- console.log("═══════════════════════════════════════");
7
- console.log("🔐 LOGIN HANDLER STARTED");
8
- console.log("═══════════════════════════════════════");
7
+ var _a, _b, _c, _d, _e, _f, _g, _h;
8
+ // ============================================
9
+ // تنظیمات لاگ
10
+ // ============================================
11
+ const LOG_DIR = path.join(process.cwd(), 'logs');
12
+ const LOG_FILE = path.join(LOG_DIR, 'auth-debug.log');
13
+ // ایجاد پوشه logs اگر وجود ندارد
14
+ if (!fs.existsSync(LOG_DIR)) {
15
+ fs.mkdirSync(LOG_DIR, { recursive: true });
16
+ }
17
+ // تابع لاگ‌نویسی
18
+ const log = (message, data) => {
19
+ const timestamp = new Date().toISOString();
20
+ const logLine = data
21
+ ? `[${timestamp}] ${message}\n${JSON.stringify(data, null, 2)}\n`
22
+ : `[${timestamp}] ${message}\n`;
23
+ // لاگ در ترمینال
24
+ console.log(`🔐 ${message}`);
25
+ // لاگ در فایل
26
+ try {
27
+ fs.appendFileSync(LOG_FILE, logLine);
28
+ }
29
+ catch (err) {
30
+ console.error('Failed to write log file:', err);
31
+ }
32
+ };
33
+ // ============================================
34
+ // شروع لاگین
35
+ // ============================================
36
+ log('═══════════════════════════════════════════════════════');
37
+ log('🔐 LOGIN HANDLER STARTED');
38
+ log(`🕐 Time: ${new Date().toLocaleString('fa-IR')}`);
39
+ log(`📂 Log file: ${LOG_FILE}`);
40
+ log('═══════════════════════════════════════════════════════');
9
41
  try {
10
- // 1. لاگ کردن آدرس
11
- console.log(`📍 API URL: ${apiUrl}`);
12
- console.log(`📍 Request method: ${req.method}`);
13
- console.log(`📍 Request headers:`, Object.fromEntries(req.headers));
14
- // 2. لاگ کردن body
42
+ // ============================================
43
+ // 1. لاگ کردن اطلاعات درخواست
44
+ // ============================================
45
+ log('📋 REQUEST INFO:');
46
+ log(` - Method: ${req.method}`);
47
+ log(` - URL: ${req.url}`);
48
+ log(` - Headers:`, Object.fromEntries(req.headers));
49
+ // ============================================
50
+ // 2. لاگ کردن Body
51
+ // ============================================
15
52
  const body = await req.json();
16
- console.log(`📦 Request body:`, JSON.stringify(body, null, 2));
53
+ log('📦 REQUEST BODY:', Object.assign(Object.assign({}, body), { password: body.password ? '***' : undefined }));
54
+ // ============================================
17
55
  // 3. ارسال درخواست به API
18
- console.log(`🚀 Sending request to: ${apiUrl}`);
56
+ // ============================================
57
+ log(`🚀 SENDING REQUEST TO: ${apiUrl}`);
19
58
  const startTime = Date.now();
20
59
  const response = await fetch(apiUrl, {
21
60
  method: "POST",
@@ -26,75 +65,85 @@ export function loginHandler(apiUrl) {
26
65
  body: JSON.stringify(body),
27
66
  });
28
67
  const endTime = Date.now();
29
- console.log(`⏱️ Request took: ${endTime - startTime}ms`);
68
+ log(`⏱️ Request took: ${endTime - startTime}ms`);
69
+ // ============================================
30
70
  // 4. لاگ کردن پاسخ
31
- console.log(`📥 Response status: ${response.status} ${response.statusText}`);
32
- console.log(`📥 Response headers:`, Object.fromEntries(response.headers));
33
- // 5. بررسی Content-Type
34
- const contentType = response.headers.get("content-type");
35
- console.log(`📄 Content-Type: ${contentType}`);
36
- // 6. خواندن پاسخ به صورت text اولیه
71
+ // ============================================
72
+ log('📥 RESPONSE:');
73
+ log(` - Status: ${response.status} ${response.statusText}`);
74
+ log(` - Headers:`, Object.fromEntries(response.headers));
75
+ // ============================================
76
+ // 5. خواندن پاسخ
77
+ // ============================================
37
78
  const responseText = await response.text();
38
- console.log(`📝 Response text (first 500 chars):`, responseText.substring(0, 500));
39
- // 7. بررسی اینکه پاسخ JSON است یا HTML
40
- if (!contentType || !contentType.includes("application/json")) {
41
- console.error(`❌ ERROR: Response is not JSON! Content-Type: ${contentType}`);
42
- console.error(`❌ Response starts with: ${responseText.substring(0, 100)}`);
43
- // اگر پاسخ HTML است، احتمالاً خطای 404 یا 500 است
44
- if (responseText.trim().startsWith('<!DOCTYPE') || responseText.trim().startsWith('<html')) {
45
- console.error(`❌ Server returned HTML page (probably 404 or 500)`);
46
- console.error(`❌ URL might be wrong: ${apiUrl}`);
47
- return NextResponse.json({
48
- message: `Server returned HTML page instead of JSON. Please check API URL: ${apiUrl}`,
49
- success: false,
50
- debug: {
51
- url: apiUrl,
52
- status: response.status,
53
- statusText: response.statusText,
54
- contentType: contentType,
55
- responsePreview: responseText.substring(0, 200),
56
- }
57
- }, { status: 500 });
58
- }
59
- // اگر JSON نیست ولی HTML هم نیست
79
+ log(`📝 RESPONSE TEXT (first 1000 chars):`, responseText.substring(0, 1000));
80
+ // ============================================
81
+ // 6. بررسی اینکه پاسخ HTML است یا JSON
82
+ // ============================================
83
+ const contentType = response.headers.get("content-type");
84
+ log(`📄 Content-Type: ${contentType}`);
85
+ // اگر پاسخ HTML بود
86
+ if (responseText.trim().startsWith('<!DOCTYPE') ||
87
+ responseText.trim().startsWith('<html') ||
88
+ responseText.trim().startsWith('<!DOCTYPE html')) {
89
+ log('❌❌❌ HTML RESPONSE DETECTED ❌❌❌');
90
+ log(' - This usually means the API URL is wrong');
91
+ log(` - URL: ${apiUrl}`);
92
+ log(` - Status: ${response.status}`);
93
+ log(` - Response preview:`, responseText.substring(0, 500));
60
94
  return NextResponse.json({
61
- message: `API returned non-JSON response. Content-Type: ${contentType}`,
95
+ message: `API returned HTML instead of JSON. Please check the URL: ${apiUrl}`,
62
96
  success: false,
63
97
  debug: {
64
98
  url: apiUrl,
65
99
  status: response.status,
100
+ statusText: response.statusText,
66
101
  contentType: contentType,
67
- responsePreview: responseText.substring(0, 200),
102
+ responsePreview: responseText.substring(0, 300),
68
103
  }
69
104
  }, { status: 500 });
70
105
  }
71
- // 8. Parsing JSON
106
+ // ============================================
107
+ // 7. Parse کردن JSON
108
+ // ============================================
72
109
  let data;
73
110
  try {
74
111
  data = JSON.parse(responseText);
75
- console.log(`✅ Response parsed as JSON:`, JSON.stringify(data, null, 2).substring(0, 500));
112
+ log('✅ JSON PARSED SUCCESSFULLY');
113
+ log('📊 PARSED DATA:', Object.assign(Object.assign({}, data), { data: data.data ? Object.assign(Object.assign({}, data.data), { token: data.data.token ? Object.assign(Object.assign({}, data.data.token), { access_token: data.data.token.access_token ? '***' : undefined }) : undefined }) : undefined }));
76
114
  }
77
115
  catch (parseError) {
78
- console.error(`❌ Failed to parse JSON:`, parseError);
79
- console.error(`❌ Response text:`, responseText);
116
+ log('❌ JSON PARSE ERROR:', {
117
+ error: parseError.message,
118
+ responseText: responseText.substring(0, 500),
119
+ });
80
120
  return NextResponse.json({
81
- message: "Failed to parse JSON response",
121
+ message: `Failed to parse JSON response: ${parseError.message}`,
82
122
  success: false,
83
123
  debug: {
84
124
  url: apiUrl,
85
- responseText: responseText.substring(0, 200),
125
+ responsePreview: responseText.substring(0, 300),
86
126
  }
87
127
  }, { status: 500 });
88
128
  }
89
- // 9. بررسی ساختار داده
90
- console.log(`🔍 Checking response structure...`);
91
- console.log(` - Has success: ${data.success !== undefined}`);
92
- console.log(` - Has data: ${data.data !== undefined}`);
93
- console.log(` - Has token: ${((_a = data.data) === null || _a === void 0 ? void 0 : _a.token) !== undefined}`);
94
- console.log(` - Has access_token: ${((_c = (_b = data.data) === null || _b === void 0 ? void 0 : _b.token) === null || _c === void 0 ? void 0 : _c.access_token) !== undefined}`);
95
- // 10. پردازش موفقیت‌آمیز
96
- if (data.success && ((_e = (_d = data.data) === null || _d === void 0 ? void 0 : _d.token) === null || _e === void 0 ? void 0 : _e.access_token)) {
97
- console.log(`✅ Login successful for user:`, ((_f = data.data.user) === null || _f === void 0 ? void 0 : _f.email) || ((_g = data.data.user) === null || _g === void 0 ? void 0 : _g.username) || 'unknown');
129
+ // ============================================
130
+ // 8. بررسی ساختار داده
131
+ // ============================================
132
+ log('🔍 DATA STRUCTURE CHECK:');
133
+ log(` - success: ${data.success !== undefined ? data.success : 'undefined'}`);
134
+ log(` - data: ${data.data !== undefined ? 'present' : 'undefined'}`);
135
+ log(` - data.token: ${((_a = data.data) === null || _a === void 0 ? void 0 : _a.token) !== undefined ? 'present' : 'undefined'}`);
136
+ log(` - data.token.access_token: ${((_c = (_b = data.data) === null || _b === void 0 ? void 0 : _b.token) === null || _c === void 0 ? void 0 : _c.access_token) !== undefined ? 'present' : 'undefined'}`);
137
+ log(` - data.user: ${((_d = data.data) === null || _d === void 0 ? void 0 : _d.user) !== undefined ? 'present' : 'undefined'}`);
138
+ // ============================================
139
+ // 9. پردازش موفقیت‌آمیز
140
+ // ============================================
141
+ if (data.success && ((_f = (_e = data.data) === null || _e === void 0 ? void 0 : _e.token) === null || _f === void 0 ? void 0 : _f.access_token)) {
142
+ log('✅✅✅ LOGIN SUCCESSFUL ✅✅✅');
143
+ log(`👤 User:`, {
144
+ email: ((_g = data.data.user) === null || _g === void 0 ? void 0 : _g.email) || 'unknown',
145
+ id: ((_h = data.data.user) === null || _h === void 0 ? void 0 : _h.id) || 'unknown',
146
+ });
98
147
  const res = NextResponse.json({
99
148
  message: "Login successful",
100
149
  success: true,
@@ -106,19 +155,30 @@ export function loginHandler(apiUrl) {
106
155
  path: "/",
107
156
  maxAge: 60 * 60 * 24 * 7,
108
157
  };
109
- // تنظیم کوکی‌ها
110
- console.log(`🍪 Setting cookies...`);
158
+ log('🍪 SETTING COOKIES:');
159
+ // accessToken
111
160
  res.cookies.set(Object.assign(Object.assign({ name: "accessToken", value: data.data.token.access_token }, cookieOptions), { httpOnly: true }));
161
+ log(' - accessToken: set');
162
+ // tokenType
112
163
  res.cookies.set(Object.assign(Object.assign({ name: "tokenType", value: data.data.token.token_type || "Bearer" }, cookieOptions), { httpOnly: true }));
164
+ log(' - tokenType: set');
165
+ // user
113
166
  res.cookies.set(Object.assign(Object.assign({ name: "user", value: JSON.stringify(data.data.user) }, cookieOptions), { httpOnly: false }));
167
+ log(' - user: set');
168
+ // isLoggedIn
114
169
  res.cookies.set(Object.assign(Object.assign({ name: "isLoggedIn", value: "true" }, cookieOptions), { httpOnly: false }));
115
- console.log(`✅ Login completed successfully`);
116
- console.log("═══════════════════════════════════════");
170
+ log(' - isLoggedIn: set');
171
+ log('═══════════════════════════════════════════════════════');
172
+ log('✅ LOGIN COMPLETED SUCCESSFULLY');
173
+ log('═══════════════════════════════════════════════════════');
117
174
  return res;
118
175
  }
119
- // 11. لاگین ناموفق
120
- console.log(`❌ Login failed:`, data.message || "Unknown error");
121
- console.log(`❌ Response data:`, JSON.stringify(data, null, 2));
176
+ // ============================================
177
+ // 10. لاگین ناموفق
178
+ // ============================================
179
+ log('❌ LOGIN FAILED');
180
+ log(` - Message: ${data.message || 'Unknown error'}`);
181
+ log(` - Data:`, data);
122
182
  return NextResponse.json({
123
183
  message: data.message || "Login failed",
124
184
  success: false,
@@ -129,10 +189,14 @@ export function loginHandler(apiUrl) {
129
189
  }, { status: response.status || 401 });
130
190
  }
131
191
  catch (err) {
132
- console.error(`❌❌❌ CATCH BLOCK ERROR ❌❌❌`);
133
- console.error(`Error name: ${err.name}`);
134
- console.error(`Error message: ${err.message}`);
135
- console.error(`Error stack:`, err.stack);
192
+ // ============================================
193
+ // 11. خطای کلی
194
+ // ============================================
195
+ log('❌❌❌ CATCH BLOCK ERROR ❌❌❌');
196
+ log(` - Error name: ${err.name}`);
197
+ log(` - Error message: ${err.message}`);
198
+ log(` - Error stack:`, err.stack);
199
+ log('═══════════════════════════════════════════════════════');
136
200
  return NextResponse.json({
137
201
  message: err.message || "Internal server error",
138
202
  success: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-auth-mfelfelani72",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [