@urga-panel/ur-panels-core 1.0.4 → 1.0.6

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.
@@ -40,7 +40,7 @@ export class _ServiceManager {
40
40
  usedService: {},
41
41
  abilities: {
42
42
  createChildService: (tag) => {
43
- console.log("createChildService called for ---", tag);
43
+ //console.log("createChildService called for ---", tag);
44
44
  const _pageService = this.setKey(tag, {
45
45
  serviceSelf: new NSPageService({
46
46
  usedService: {},
@@ -67,7 +67,7 @@ export class _ServiceManager {
67
67
  abilities: {
68
68
  // Artık class referansını parametre olarak alıyor
69
69
  createChildService: (tag, PageCtor) => {
70
- console.log("createChildService called for ---", tag);
70
+ //console.log("createChildService called for ---", tag);
71
71
  const ServiceClass = PageCtor ?? PageService;
72
72
  const _pageService = this.setKey(tag, {
73
73
  serviceSelf: new ServiceClass({
@@ -123,16 +123,17 @@ export class _ServiceManager {
123
123
  // await _PageControllerService.start();
124
124
  }
125
125
  const createdServices = [];
126
+ const _this = this;
126
127
  for (const serviceInfo of services) {
127
128
  const { serviceName, service, tag, dynamicTag, isAbstract, requiredServices } = serviceInfo;
128
129
  // Fill usedService according to requiredServices
129
130
  //@ts-ignore
130
131
  if (service.serviceInfo == null || service.serviceInfo == undefined) {
131
- console.warn(`Service ${serviceName} does not have serviceInfo defined.`);
132
+ //console.warn(`Service ${serviceName} does not have serviceInfo defined.`);
132
133
  continue;
133
134
  }
134
135
  else {
135
- console.log(`Service ${serviceName} has serviceInfo defined:`, service.serviceInfo);
136
+ //console.log(`Service ${serviceName} has serviceInfo defined:`, service.serviceInfo);
136
137
  }
137
138
  const usedService = {};
138
139
  if (Array.isArray(service.serviceInfo.requiredServices)) {
@@ -145,15 +146,18 @@ export class _ServiceManager {
145
146
  usedService,
146
147
  tag: tag,
147
148
  type: type,
149
+ ServiceManager: _this,
148
150
  abilities: {
149
151
  createChildService: (tag, PageCtor) => {
150
- console.log("createChildService called for ---", tag);
152
+ //console.log("createChildService called for ---", tag);
151
153
  const ServiceClass = PageCtor ?? PageService;
152
154
  const _pageService = this.setKey(tag, {
153
155
  serviceSelf: new ServiceClass({
154
156
  usedService: {},
155
157
  tag: tag,
156
158
  type: type,
159
+ //@ts-ignore
160
+ ServiceManager: _this
157
161
  }),
158
162
  status: "waitSetup",
159
163
  });
@@ -231,8 +235,8 @@ export class _ServiceManager {
231
235
  if (this.services[serviceName]) {
232
236
  }
233
237
  else {
234
- console.log(`ServiceManager: Service ${serviceName} not found.`);
235
- console.log("Available services:", Object.keys(this.services));
238
+ //console.log(`ServiceManager: Service ${serviceName} not found.`);
239
+ //console.log("Available services:", Object.keys(this.services));
236
240
  return undefined;
237
241
  }
238
242
  return this.services[serviceName].serviceSelf;
package/dist/TestRun.d.ts CHANGED
@@ -1 +1 @@
1
- export {};
1
+ declare function main(): Promise<void>;
package/dist/TestRun.js CHANGED
@@ -9,6 +9,6 @@ async function main() {
9
9
  // LayoutService: _service
10
10
  // }
11
11
  // );
12
+ console.log("Services initialized2222");
12
13
  }
13
14
  main().catch(console.error);
14
- export {};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { MongoClient } from 'mongodb';
5
+ async function createMongoDB() {
6
+ const baseDir = process.cwd();
7
+ const databasePath = path.join(baseDir, 'src', 'project', 'database');
8
+ // MongoDB bağlantısı
9
+ const uri = 'mongodb://localhost:27017'; // kendi bağlantını yaz
10
+ const client = new MongoClient(uri);
11
+ await client.connect();
12
+ // Database klasörlerini al
13
+ const dbFolders = fs.readdirSync(databasePath, { withFileTypes: true })
14
+ .filter(f => f.isDirectory())
15
+ .map(f => f.name);
16
+ for (const dbName of dbFolders) {
17
+ //const db = client.db(dbName); // klasör adı database ismi
18
+ const entitiesPath = path.join(databasePath, dbName, 'Entities');
19
+ if (!fs.existsSync(entitiesPath))
20
+ continue;
21
+ // 1. Eğer varsa önceki veritabanını sil
22
+ const oldDb = client.db(dbName);
23
+ await oldDb.dropDatabase();
24
+ console.log(`🗑️ ${dbName} veritabanı silindi.`);
25
+ // 2. Aynı isimle yeni veritabanı oluştur
26
+ const newDb = client.db(dbName);
27
+ const files = fs.readdirSync(entitiesPath).filter(f => f.endsWith('.json'));
28
+ for (const file of files) {
29
+ const collectionName = file.replace('.json', '');
30
+ const collection = await newDb.createCollection(collectionName);
31
+ //JSON dosyasını oku
32
+ const data = JSON.parse(fs.readFileSync(path.join(entitiesPath, file), 'utf-8'));
33
+ // Tek obje veya array olabilir
34
+ /*
35
+ const docs = Array.isArray(data) ? data : [data];
36
+
37
+ // Collection’a ekle
38
+ if (docs.length > 0) {
39
+ await collection.insertMany(docs);
40
+ console.log(`Inserted ${docs.length} docs into ${dbName}.${collectionName}`);
41
+ }*/
42
+ }
43
+ }
44
+ await client.close();
45
+ console.log('All databases and collections created!');
46
+ }
47
+ createMongoDB().catch(console.error);
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { execSync } from 'child_process';
5
+ async function createInterfaces() {
6
+ const baseDir = process.cwd();
7
+ const databasePath = path.join(baseDir, 'src', 'project', 'database');
8
+ // Database içindeki tüm klasörleri al
9
+ const entityFolders = fs.readdirSync(databasePath, { withFileTypes: true })
10
+ .filter(f => f.isDirectory())
11
+ .map(f => f.name);
12
+ for (const folder of entityFolders) {
13
+ const entitiesPath = path.join(databasePath, folder, 'Entities');
14
+ const interfacePath = path.join(databasePath, folder, 'Interface');
15
+ if (!fs.existsSync(entitiesPath))
16
+ continue; // Entities klasörü yoksa atla
17
+ if (!fs.existsSync(interfacePath))
18
+ fs.mkdirSync(interfacePath, { recursive: true });
19
+ const files = fs.readdirSync(entitiesPath).filter(f => f.endsWith('.json'));
20
+ for (const file of files) {
21
+ const input = path.join(entitiesPath, file);
22
+ const output = path.join(interfacePath, file.replace('.json', '.d.ts'));
23
+ console.log(`Converting ${folder}/${file} -> ${folder}/Interface/${path.basename(output)}`);
24
+ execSync(`json2ts -i "${input}" -o "${output}"`, { stdio: 'inherit' });
25
+ }
26
+ }
27
+ console.log('All JSON files converted to TypeScript interfaces.');
28
+ }
29
+ createInterfaces().catch(console.error);
@@ -35,6 +35,7 @@ export declare abstract class AuthService extends Service {
35
35
  password: string;
36
36
  role?: string;
37
37
  databaseId?: string;
38
+ databases?: string[];
38
39
  };
39
40
  }>;
40
41
  logoutRequest({ username, password, params, request, url }: {
@@ -101,24 +101,27 @@ export class AuthService extends Service {
101
101
  id: result.user.id,
102
102
  username: result.user.username,
103
103
  role: result.user.role,
104
- databaseId: result.user.databaseId // databaseId eklendi
104
+ databaseId: result.user.databaseId,
105
+ databases: result.user.databases // databaseId eklendi
105
106
  }, JWT_SECRET, { expiresIn: '15m' });
106
107
  // 5. Refresh Token üret
107
108
  const refreshToken = jwt.sign({
108
109
  id: result.user.id,
109
110
  username: result.user.username,
110
111
  role: result.user.role,
111
- databaseId: result.user.databaseId // databaseId eklendi
112
+ databaseId: result.user.databaseId,
113
+ databases: result.user.databases // databaseId eklendi
112
114
  }, JWT_REFRESH_SECRET, { expiresIn: '7d' });
113
115
  // return { status: "success", accessToken: accessToken,
114
116
  // refreshToken: refreshToken };
115
117
  // // ...tokenları ürettikten sonra...
118
+ const headers = new Headers();
119
+ headers.append("Set-Cookie", `accessToken=${accessToken}; Path=/; Domain=.local.test; HttpOnly; SameSite=Lax; Max-Age=900`);
120
+ headers.append("Set-Cookie", `refreshToken=${refreshToken}; Path=/; Domain=.local.test; HttpOnly; SameSite=Lax; Max-Age=604800`);
121
+ headers.append("Content-Type", `application/json`);
116
122
  return new Response(JSON.stringify({ status: "success", message: "valid credentials", data: { user: result.user } }), {
117
123
  status: 200,
118
- headers: {
119
- "Set-Cookie": `accessToken=${accessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${refreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
120
- 'Content-Type': 'application/json'
121
- }
124
+ headers: headers
122
125
  });
123
126
  }
124
127
  return this.resposeHandler({ status: "fail", message: "Invalid credentials" });
@@ -190,13 +193,15 @@ export class AuthService extends Service {
190
193
  id: decodedRefresh.id,
191
194
  username: decodedRefresh.username,
192
195
  role: decodedRefresh.role,
193
- databaseId: decodedRefresh.databaseId // databaseId eklendi
196
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
197
+ databases: decodedRefresh.databases // databases eklendi
194
198
  }, JWT_SECRET, { expiresIn: '15m' });
195
199
  const newRefreshToken = jwt.sign({
196
200
  id: decodedRefresh.id,
197
201
  username: decodedRefresh.username,
198
202
  role: decodedRefresh.role,
199
- databaseId: decodedRefresh.databaseId // databaseId eklendi
203
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
204
+ databases: decodedRefresh.databases // databases eklendi
200
205
  }, JWT_REFRESH_SECRET, { expiresIn: '7d' });
201
206
  return { valid: true, newAccessToken, newRefreshToken, user: res.user };
202
207
  }
@@ -242,7 +247,8 @@ export class AuthService extends Service {
242
247
  id: user?.id || null,
243
248
  username: user?.username || null,
244
249
  role: user?.role || null,
245
- databaseId: user?.databaseId || null // databaseId eklendi
250
+ databaseId: user?.databaseId || null, // databaseId eklendi
251
+ databases: user?.databases || null // databases eklendi
246
252
  }
247
253
  }
248
254
  });
@@ -44,12 +44,12 @@ export class SVPageControllerService extends PageControllerService {
44
44
  mountPageService(tag, page, options) {
45
45
  let key = tag;
46
46
  const $this = this;
47
- console.log("Available services:", Object.keys(this.pageServices));
47
+ //console.log("Available services:", Object.keys(this.pageServices));
48
48
  const service = this.pageServices[key];
49
49
  this.log.OK("Mounting page service for tag:", tag, "Service:", service);
50
50
  page.onMount(async () => {
51
51
  this.log.OK("PageService", "onMount", key);
52
- console.log("Available services:", Object.keys($this.pageServices));
52
+ // console.log("Available services:", Object.keys($this.pageServices));
53
53
  await service.start();
54
54
  if (options?.onMount) {
55
55
  await options.onMount();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urga-panel/ur-panels-core",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,7 @@
9
9
  "test": "jest",
10
10
  "lint": "eslint src --ext .ts",
11
11
  "start": "npx cross-env MODE=DEBUG ts-node src/TestRun.ts",
12
- "addServiceStatic": "npx ts-node src/addService/AddServiceStatic.ts"
12
+ "addServiceStatic": "npx ts-node src/TestRun.ts"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/jest": "^29.0.0",
@@ -27,9 +27,12 @@
27
27
  "bcryptjs": "^3.0.2",
28
28
  "js-yaml": "^4.1.0",
29
29
  "jsonwebtoken": "^9.0.2",
30
+ "mongodb": "^6.19.0",
30
31
  "yargs": "^18.0.0"
31
32
  },
32
33
  "bin": {
33
- "urga-core-cli": "dist/addService/AddServiceStatic.js"
34
+ "urga-core-cli": "dist/TestRun.js",
35
+ "createTS": "dist/commands/createTS.js",
36
+ "createDB": "dist/commands/createDB.js"
34
37
  }
35
38
  }
@@ -57,7 +57,7 @@ export class _ServiceManager {
57
57
  usedService: {},
58
58
  abilities: {
59
59
  createChildService: (tag:string) => {
60
- console.log("createChildService called for ---", tag);
60
+ //console.log("createChildService called for ---", tag);
61
61
  const _pageService = this.setKey(tag, {
62
62
  serviceSelf: new NSPageService({
63
63
  usedService: {},
@@ -86,7 +86,7 @@ export class _ServiceManager {
86
86
  abilities: {
87
87
  // Artık class referansını parametre olarak alıyor
88
88
  createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
89
- console.log("createChildService called for ---", tag);
89
+ //console.log("createChildService called for ---", tag);
90
90
  const ServiceClass = PageCtor ?? PageService;
91
91
  const _pageService = this.setKey(tag, {
92
92
  serviceSelf: new ServiceClass({
@@ -142,16 +142,17 @@ export class _ServiceManager {
142
142
  // await _PageControllerService.start();
143
143
  }
144
144
  const createdServices: Service[] = [];
145
+ const _this = this;
145
146
  for (const serviceInfo of services) {
146
147
  const { serviceName, service, tag, dynamicTag, isAbstract, requiredServices } = serviceInfo;
147
148
  // Fill usedService according to requiredServices
148
149
  //@ts-ignore
149
150
  if(service.serviceInfo == null || service.serviceInfo == undefined) {
150
- console.warn(`Service ${serviceName} does not have serviceInfo defined.`);
151
+ //console.warn(`Service ${serviceName} does not have serviceInfo defined.`);
151
152
  continue;
152
153
  }
153
154
  else{
154
- console.log(`Service ${serviceName} has serviceInfo defined:`, service.serviceInfo);
155
+ //console.log(`Service ${serviceName} has serviceInfo defined:`, service.serviceInfo);
155
156
  }
156
157
  const usedService: { [key: string]: () => Service } = {};
157
158
  if (Array.isArray(service.serviceInfo.requiredServices)) {
@@ -164,15 +165,18 @@ export class _ServiceManager {
164
165
  usedService,
165
166
  tag: tag,
166
167
  type: type,
168
+ ServiceManager: _this,
167
169
  abilities: {
168
170
  createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
169
- console.log("createChildService called for ---", tag);
171
+ //console.log("createChildService called for ---", tag);
170
172
  const ServiceClass = PageCtor ?? PageService;
171
173
  const _pageService = this.setKey(tag, {
172
174
  serviceSelf: new ServiceClass({
173
175
  usedService: {},
174
176
  tag: tag,
175
177
  type: type,
178
+ //@ts-ignore
179
+ ServiceManager: _this
176
180
  }),
177
181
  status: "waitSetup",
178
182
  });
@@ -252,8 +256,8 @@ export class _ServiceManager {
252
256
  public getService<T extends Service>(serviceName: string): T {
253
257
  if (this.services[serviceName]) {
254
258
  } else {
255
- console.log(`ServiceManager: Service ${serviceName} not found.`);
256
- console.log("Available services:", Object.keys(this.services));
259
+ //console.log(`ServiceManager: Service ${serviceName} not found.`);
260
+ //console.log("Available services:", Object.keys(this.services));
257
261
  return undefined as T;
258
262
  }
259
263
 
package/src/TestRun.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { ServiceManager } from './ServiceManager';
2
1
 
3
2
  async function main() {
4
3
  //const serviceManager = new ServiceManager();
@@ -12,6 +11,7 @@ async function main() {
12
11
  // LayoutService: _service
13
12
  // }
14
13
  // );
14
+ console.log("Services initialized2222");
15
15
  }
16
16
 
17
17
  main().catch(console.error);
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { MongoClient } from 'mongodb';
5
+
6
+ async function createMongoDB() {
7
+ const baseDir = process.cwd();
8
+ const databasePath = path.join(baseDir, 'src', 'project', 'database');
9
+
10
+ // MongoDB bağlantısı
11
+ const uri = 'mongodb://localhost:27017'; // kendi bağlantını yaz
12
+ const client = new MongoClient(uri);
13
+ await client.connect();
14
+
15
+ // Database klasörlerini al
16
+ const dbFolders = fs.readdirSync(databasePath, { withFileTypes: true })
17
+ .filter(f => f.isDirectory())
18
+ .map(f => f.name);
19
+
20
+ for (const dbName of dbFolders) {
21
+ //const db = client.db(dbName); // klasör adı database ismi
22
+ const entitiesPath = path.join(databasePath, dbName, 'Entities');
23
+ if (!fs.existsSync(entitiesPath)) continue;
24
+
25
+
26
+ // 1. Eğer varsa önceki veritabanını sil
27
+ const oldDb = client.db(dbName);
28
+ await oldDb.dropDatabase();
29
+ console.log(`🗑️ ${dbName} veritabanı silindi.`);
30
+
31
+ // 2. Aynı isimle yeni veritabanı oluştur
32
+ const newDb = client.db(dbName);
33
+
34
+ const files = fs.readdirSync(entitiesPath).filter(f => f.endsWith('.json'));
35
+
36
+ for (const file of files) {
37
+ const collectionName = file.replace('.json', '');
38
+ const collection = await newDb.createCollection(collectionName);
39
+
40
+ //JSON dosyasını oku
41
+ const data = JSON.parse(fs.readFileSync(path.join(entitiesPath, file), 'utf-8'));
42
+
43
+ // Tek obje veya array olabilir
44
+ /*
45
+ const docs = Array.isArray(data) ? data : [data];
46
+
47
+ // Collection’a ekle
48
+ if (docs.length > 0) {
49
+ await collection.insertMany(docs);
50
+ console.log(`Inserted ${docs.length} docs into ${dbName}.${collectionName}`);
51
+ }*/
52
+ }
53
+ }
54
+
55
+ await client.close();
56
+ console.log('All databases and collections created!');
57
+ }
58
+
59
+ createMongoDB().catch(console.error);
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { execSync } from 'child_process';
5
+
6
+ async function createInterfaces() {
7
+ const baseDir = process.cwd();
8
+ const databasePath = path.join(baseDir, 'src', 'project', 'database');
9
+
10
+ // Database içindeki tüm klasörleri al
11
+ const entityFolders = fs.readdirSync(databasePath, { withFileTypes: true })
12
+ .filter(f => f.isDirectory())
13
+ .map(f => f.name);
14
+
15
+ for (const folder of entityFolders) {
16
+ const entitiesPath = path.join(databasePath, folder, 'Entities');
17
+ const interfacePath = path.join(databasePath, folder, 'Interface');
18
+
19
+ if (!fs.existsSync(entitiesPath)) continue; // Entities klasörü yoksa atla
20
+ if (!fs.existsSync(interfacePath)) fs.mkdirSync(interfacePath, { recursive: true });
21
+
22
+ const files = fs.readdirSync(entitiesPath).filter(f => f.endsWith('.json'));
23
+
24
+ for (const file of files) {
25
+ const input = path.join(entitiesPath, file);
26
+ const output = path.join(interfacePath, file.replace('.json', '.d.ts'));
27
+ console.log(`Converting ${folder}/${file} -> ${folder}/Interface/${path.basename(output)}`);
28
+ execSync(`json2ts -i "${input}" -o "${output}"`, { stdio: 'inherit' });
29
+ }
30
+ }
31
+
32
+ console.log('All JSON files converted to TypeScript interfaces.');
33
+ }
34
+
35
+ createInterfaces().catch(console.error);
@@ -79,6 +79,7 @@ export abstract class AuthService extends Service {
79
79
  password: string; // Optional password field for internal use
80
80
  role?: string; // Optional role field
81
81
  databaseId?: string; // Optional database ID field
82
+ databases?: string[]; // Optional databases field
82
83
  };
83
84
  }>;
84
85
 
@@ -153,7 +154,8 @@ export abstract class AuthService extends Service {
153
154
  id: result.user.id,
154
155
  username: result.user.username,
155
156
  role: result.user.role,
156
- databaseId: result.user.databaseId // databaseId eklendi
157
+ databaseId: result.user.databaseId,
158
+ databases: result.user.databases // databaseId eklendi
157
159
  },
158
160
  JWT_SECRET,
159
161
  { expiresIn: '15m' }
@@ -165,7 +167,8 @@ export abstract class AuthService extends Service {
165
167
  id: result.user.id,
166
168
  username: result.user.username,
167
169
  role: result.user.role,
168
- databaseId: result.user.databaseId // databaseId eklendi
170
+ databaseId: result.user.databaseId,
171
+ databases: result.user.databases // databaseId eklendi
169
172
  },
170
173
  JWT_REFRESH_SECRET,
171
174
  { expiresIn: '7d' }
@@ -174,15 +177,26 @@ export abstract class AuthService extends Service {
174
177
  // return { status: "success", accessToken: accessToken,
175
178
  // refreshToken: refreshToken };
176
179
  // // ...tokenları ürettikten sonra...
180
+ const headers = new Headers();
181
+
182
+ headers.append(
183
+ "Set-Cookie",
184
+ `accessToken=${accessToken}; Path=/; Domain=.local.test; HttpOnly; SameSite=Lax; Max-Age=900`
185
+ );
186
+
187
+ headers.append(
188
+ "Set-Cookie",
189
+ `refreshToken=${refreshToken}; Path=/; Domain=.local.test; HttpOnly; SameSite=Lax; Max-Age=604800`
190
+ );
191
+ headers.append(
192
+ "Content-Type",
193
+ `application/json`
194
+ );
177
195
  return new Response(
178
196
  JSON.stringify({ status: "success", message: "valid credentials", data: { user: result.user } }),
179
197
  {
180
198
  status: 200,
181
- headers: {
182
- "Set-Cookie":
183
- `accessToken=${accessToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=900, refreshToken=${refreshToken}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`,
184
- 'Content-Type': 'application/json'
185
- }
199
+ headers: headers
186
200
  }
187
201
  );
188
202
  }
@@ -241,6 +255,7 @@ export abstract class AuthService extends Service {
241
255
  username: string;
242
256
  role: string; // Refresh token'da rol bilgisi varsa
243
257
  databaseId?: string;
258
+ databases?: string[];
244
259
  } = jwt.verify(refreshToken, JWT_REFRESH_SECRET) as unknown as any;
245
260
  //debugger;
246
261
 
@@ -270,7 +285,8 @@ export abstract class AuthService extends Service {
270
285
  id: decodedRefresh.id,
271
286
  username: decodedRefresh.username,
272
287
  role: decodedRefresh.role,
273
- databaseId: decodedRefresh.databaseId // databaseId eklendi
288
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
289
+ databases: decodedRefresh.databases // databases eklendi
274
290
  },
275
291
  JWT_SECRET,
276
292
  { expiresIn: '15m' }
@@ -280,7 +296,8 @@ export abstract class AuthService extends Service {
280
296
  id: decodedRefresh.id,
281
297
  username: decodedRefresh.username,
282
298
  role: decodedRefresh.role,
283
- databaseId: decodedRefresh.databaseId // databaseId eklendi
299
+ databaseId: decodedRefresh.databaseId, // databaseId eklendi
300
+ databases: decodedRefresh.databases // databases eklendi
284
301
  },
285
302
  JWT_REFRESH_SECRET,
286
303
  { expiresIn: '7d' }
@@ -332,7 +349,8 @@ export abstract class AuthService extends Service {
332
349
  id: user?.id || null,
333
350
  username: user?.username || null,
334
351
  role: user?.role || null,
335
- databaseId: user?.databaseId || null // databaseId eklendi
352
+ databaseId: user?.databaseId || null, // databaseId eklendi
353
+ databases: user?.databases || null // databases eklendi
336
354
  }
337
355
  }
338
356
  });
@@ -71,12 +71,12 @@ export class SVPageControllerService extends PageControllerService {
71
71
  }){
72
72
  let key = tag;
73
73
  const $this = this;
74
- console.log("Available services:", Object.keys(this.pageServices));
74
+ //console.log("Available services:", Object.keys(this.pageServices));
75
75
  const service = this.pageServices[key] ;
76
76
  this.log.OK("Mounting page service for tag:", tag, "Service:", service);
77
77
  page.onMount(async () => {
78
78
  this.log.OK("PageService", "onMount", key);
79
- console.log("Available services:", Object.keys($this.pageServices));
79
+ // console.log("Available services:", Object.keys($this.pageServices));
80
80
  await service.start();
81
81
  if(options?.onMount){
82
82
  await options.onMount();