@urga-panel/ur-panels-core 1.0.9 → 1.0.11

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.
@@ -52,16 +52,14 @@ export declare abstract class AuthService extends Service {
52
52
  request: any;
53
53
  url: any;
54
54
  }): Promise<any>;
55
- checkToken({ accessToken, refreshToken, options }: {
56
- accessToken: string;
57
- refreshToken: string;
55
+ checkToken({ panel_token, options }: {
56
+ panel_token: string;
58
57
  options?: {
59
58
  role?: string;
60
59
  };
61
60
  }): Promise<{
62
61
  valid: boolean;
63
- newAccessToken?: string;
64
- newRefreshToken?: string;
62
+ newPanelToken?: string;
65
63
  user?: any;
66
64
  }>;
67
65
  deneme({ params, request, url }: {
@@ -133,9 +133,8 @@ export class AuthService extends Service {
133
133
  return this.resposeHandler({ status: "error", message: "An error occurred during login" });
134
134
  }
135
135
  }
136
- async checkToken({ accessToken, refreshToken, options }) {
137
- this.log.OK("Access Token:", accessToken);
138
- this.log.OK("Refresh Token:", refreshToken);
136
+ async checkToken({ panel_token, options }) {
137
+ this.log.OK("panel_token Token:", panel_token);
139
138
  //debugger;
140
139
  try {
141
140
  // 1. Access token'ı doğrula
@@ -143,74 +142,113 @@ export class AuthService extends Service {
143
142
  if (typeof window === "undefined") {
144
143
  jwt = (await import("jsonwebtoken")).default;
145
144
  }
146
- const decoded = jwt.verify(accessToken, JWT_SECRET);
145
+ const decoded = jwt.verify(panel_token, JWT_SECRET);
147
146
  const res = await this.getUserInfo({
148
147
  userId: decoded.id,
149
148
  userName: decoded.username,
150
149
  userRole: decoded.role || "user" // Varsayılan rol
151
150
  });
151
+ const newPanelToken = jwt.sign({
152
+ id: decoded.id,
153
+ username: decoded.username,
154
+ role: decoded.role,
155
+ databases: decoded.databases // databases eklendi
156
+ }, JWT_REFRESH_SECRET, { expiresIn: '7d' });
157
+ /*
158
+ const newRefreshToken = jwt.sign(
159
+ {
160
+ id: user.id,
161
+ username: user.username,
162
+ role: user.role,
163
+ databases: user.databases // databases eklendi
164
+ },
165
+ JWT_REFRESH_SECRET,
166
+ { expiresIn: '7d' }
167
+ );
168
+ */
152
169
  //debugger;
153
170
  if (!res.success) {
154
171
  return { valid: false, user: res.user };
155
172
  }
156
173
  // Admin ise onay ver
157
174
  if (options?.role && res.user?.role == 'admin') {
158
- return { valid: true, user: res.user };
175
+ return { valid: true, user: res.user, newPanelToken };
159
176
  }
160
177
  //Check role here
161
178
  if (options?.role && res.user?.role !== options.role) {
162
179
  return { valid: false };
163
180
  }
164
- return { valid: true, user: res.user };
181
+ return { valid: true, user: res.user, newPanelToken };
165
182
  }
166
183
  catch (err) {
184
+ return { valid: false };
185
+ /*
167
186
  // Access token geçersiz veya süresi dolmuşsa
168
187
  try {
169
- let jwt;
188
+ let jwt: typeof import("jsonwebtoken") | undefined;
170
189
  if (typeof window === "undefined") {
171
190
  jwt = (await import("jsonwebtoken")).default;
172
191
  }
173
192
  // 2. Refresh token'ı doğrula
174
- const decodedRefresh = jwt.verify(refreshToken, JWT_REFRESH_SECRET);
193
+ const decodedRefresh: {
194
+ id: number;
195
+ username: string;
196
+ role: string; // Refresh token'da rol bilgisi varsa
197
+ databaseId?: string;
198
+ databases?: string[];
199
+ } = jwt.verify(refreshToken, JWT_REFRESH_SECRET) as unknown as any;
175
200
  //debugger;
201
+
176
202
  const res = await this.getUserInfo({
177
- userId: decodedRefresh.id,
178
- userName: decodedRefresh.username,
179
- userRole: decodedRefresh.role || "user" // Varsayılan rol
203
+ userId: (decodedRefresh as any).id,
204
+ userName: (decodedRefresh as any).username,
205
+ userRole: (decodedRefresh as any).role || "user" // Varsayılan rol
180
206
  });
207
+
181
208
  if (!res.success) {
182
209
  return { valid: false };
183
210
  }
211
+
184
212
  //Check role here
185
213
  // Admin ise onay ver
214
+
186
215
  // Admin ise devam etsin
187
216
  if (options?.role && res.user?.role === 'admin') {
188
217
  // admin ise role kontrolü atlanır, devam edilir
189
- }
190
- else if (options?.role && res.user?.role !== options.role) {
218
+ } else if (options?.role && res.user?.role !== options.role) {
191
219
  return { valid: false };
192
220
  }
221
+
193
222
  // Refresh token geçerli, yeni access token üret
194
- const newAccessToken = jwt.sign({
195
- id: decodedRefresh.id,
196
- username: decodedRefresh.username,
197
- role: decodedRefresh.role,
198
- databaseId: decodedRefresh.databaseId, // databaseId eklendi
199
- databases: decodedRefresh.databases // databases eklendi
200
- }, JWT_SECRET, { expiresIn: '15m' });
201
- const newRefreshToken = jwt.sign({
202
- id: decodedRefresh.id,
203
- username: decodedRefresh.username,
204
- role: decodedRefresh.role,
205
- databaseId: decodedRefresh.databaseId, // databaseId eklendi
206
- databases: decodedRefresh.databases // databases eklendi
207
- }, JWT_REFRESH_SECRET, { expiresIn: '7d' });
223
+ const newAccessToken = jwt.sign(
224
+ {
225
+ id: decodedRefresh.id,
226
+ username: decodedRefresh.username,
227
+ role: decodedRefresh.role,
228
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
229
+ databases: decodedRefresh.databases // databases eklendi
230
+ },
231
+ JWT_SECRET,
232
+ { expiresIn: '15m' }
233
+ );
234
+ const newRefreshToken = jwt.sign(
235
+ {
236
+ id: decodedRefresh.id,
237
+ username: decodedRefresh.username,
238
+ role: decodedRefresh.role,
239
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
240
+ databases: decodedRefresh.databases // databases eklendi
241
+ },
242
+ JWT_REFRESH_SECRET,
243
+ { expiresIn: '7d' }
244
+ );
245
+
246
+
208
247
  return { valid: true, newAccessToken, newRefreshToken, user: res.user };
209
- }
210
- catch (refreshErr) {
248
+ } catch (refreshErr) {
211
249
  // Refresh token da geçersiz
212
250
  return { valid: false };
213
- }
251
+ }*/
214
252
  }
215
253
  }
216
254
  // async checkToken(accessToken: string, refreshToken): Promise<boolean> {
@@ -37,7 +37,6 @@ export class SVPageControllerService extends PageControllerService {
37
37
  const res = await callback(service, { params, url });
38
38
  return {
39
39
  ...res,
40
- device: device,
41
40
  };
42
41
  };
43
42
  }
@@ -67,12 +67,10 @@ export class RequestHandlerService extends Service {
67
67
  return this.resposeHandler({ status: "error", message: "Authentication service not available" });
68
68
  }
69
69
  const cookieHeader = request.headers.get('cookie');
70
- const accessToken = this.getCookie(cookieHeader, 'accessToken');
71
- const refreshToken = this.getCookie(cookieHeader, 'refreshToken');
70
+ const panel_token = this.getCookie(cookieHeader, 'panel_token');
72
71
  // Check authentication and role
73
72
  const isAuthenticated = await authService.checkToken({
74
- accessToken,
75
- refreshToken,
73
+ panel_token,
76
74
  options: {
77
75
  role: handler.options?.role
78
76
  }
@@ -86,7 +84,7 @@ export class RequestHandlerService extends Service {
86
84
  // Update cookies with new tokens
87
85
  console.log("update token");
88
86
  header = {
89
- "Set-Cookie": `accessToken=${isAuthenticated.newAccessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${isAuthenticated.newRefreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
87
+ "Set-Cookie": `panel_token=${isAuthenticated.newAccessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${isAuthenticated.newRefreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
90
88
  };
91
89
  // const response = new Response(JSON.stringify({ status: "success", message: "Authenticated with new token" }), {
92
90
  // status: 200,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urga-panel/ur-panels-core",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -209,13 +209,12 @@ export abstract class AuthService extends Service {
209
209
  return this.resposeHandler({ status: "error", message: "An error occurred during login" });
210
210
  }
211
211
  }
212
- async checkToken({ accessToken, refreshToken, options }: {
213
- accessToken: string; refreshToken: string, options?: {
212
+ async checkToken({ panel_token, options }: {
213
+ panel_token: string, options?: {
214
214
  role?: string;
215
215
  }
216
- }): Promise<{ valid: boolean; newAccessToken?: string, newRefreshToken?: string, user?: any }> {
217
- this.log.OK("Access Token:", accessToken);
218
- this.log.OK("Refresh Token:", refreshToken);
216
+ }): Promise<{ valid: boolean; newPanelToken?: string, user?: any }> {
217
+ this.log.OK("panel_token Token:", panel_token);
219
218
  //debugger;
220
219
  try {
221
220
  // 1. Access token'ı doğrula
@@ -223,12 +222,35 @@ export abstract class AuthService extends Service {
223
222
  if (typeof window === "undefined") {
224
223
  jwt = (await import("jsonwebtoken")).default;
225
224
  }
226
- const decoded = jwt.verify(accessToken, JWT_SECRET);
225
+ const decoded: any = jwt.verify(panel_token, JWT_SECRET);
227
226
  const res = await this.getUserInfo({
228
227
  userId: (decoded as any).id,
229
228
  userName: (decoded as any).username,
230
229
  userRole: (decoded as any).role || "user" // Varsayılan rol
231
230
  });
231
+
232
+ const newPanelToken = jwt.sign(
233
+ {
234
+ id: decoded.id,
235
+ username: decoded.username,
236
+ role: decoded.role,
237
+ databases: decoded.databases // databases eklendi
238
+ },
239
+ JWT_REFRESH_SECRET,
240
+ { expiresIn: '7d' }
241
+ );
242
+ /*
243
+ const newRefreshToken = jwt.sign(
244
+ {
245
+ id: user.id,
246
+ username: user.username,
247
+ role: user.role,
248
+ databases: user.databases // databases eklendi
249
+ },
250
+ JWT_REFRESH_SECRET,
251
+ { expiresIn: '7d' }
252
+ );
253
+ */
232
254
  //debugger;
233
255
 
234
256
  if (!res.success) {
@@ -237,15 +259,17 @@ export abstract class AuthService extends Service {
237
259
 
238
260
  // Admin ise onay ver
239
261
  if (options?.role && res.user?.role == 'admin') {
240
- return { valid: true, user: res.user };
262
+ return { valid: true, user: res.user, newPanelToken };
241
263
  }
242
264
 
243
265
  //Check role here
244
266
  if (options?.role && res.user?.role !== options.role) {
245
267
  return { valid: false };
246
268
  }
247
- return { valid: true, user: res.user };
269
+ return { valid: true, user: res.user, newPanelToken };
248
270
  } catch (err) {
271
+ return { valid: false };
272
+ /*
249
273
  // Access token geçersiz veya süresi dolmuşsa
250
274
  try {
251
275
  let jwt: typeof import("jsonwebtoken") | undefined;
@@ -311,7 +335,7 @@ export abstract class AuthService extends Service {
311
335
  } catch (refreshErr) {
312
336
  // Refresh token da geçersiz
313
337
  return { valid: false };
314
- }
338
+ }*/
315
339
  }
316
340
  }
317
341
 
@@ -57,7 +57,7 @@ export class SVPageControllerService extends PageControllerService {
57
57
 
58
58
  return {
59
59
  ...res,
60
- device: device,
60
+
61
61
  }
62
62
  }
63
63
  }
@@ -95,12 +95,11 @@ export class RequestHandlerService extends Service {
95
95
  }
96
96
 
97
97
  const cookieHeader = request.headers.get('cookie');
98
- const accessToken = this.getCookie(cookieHeader, 'accessToken');
99
- const refreshToken = this.getCookie(cookieHeader, 'refreshToken');
98
+ const panel_token = this.getCookie(cookieHeader, 'panel_token');
100
99
  // Check authentication and role
100
+
101
101
  const isAuthenticated = await authService.checkToken({
102
- accessToken,
103
- refreshToken,
102
+ panel_token,
104
103
  options: {
105
104
  role: handler.options?.role
106
105
  }
@@ -118,7 +117,7 @@ export class RequestHandlerService extends Service {
118
117
  console.log("update token");
119
118
  header = {
120
119
  "Set-Cookie":
121
- `accessToken=${isAuthenticated.newAccessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${isAuthenticated.newRefreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
120
+ `panel_token=${isAuthenticated.newAccessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${isAuthenticated.newRefreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
122
121
  }
123
122
  // const response = new Response(JSON.stringify({ status: "success", message: "Authenticated with new token" }), {
124
123
  // status: 200,