cordova-plugin-unvired-universal-sdk 1.0.6 → 1.0.8

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 (76) hide show
  1. package/package.json +1 -1
  2. package/plugin.xml +1 -13
  3. package/www/kernel.js +38344 -1243
  4. package/aar/README.md +0 -3
  5. package/aar/Unvired_Kernel_Android.aar +0 -0
  6. package/aar/Unvired_Kernel_HTML5_Android.aar +0 -0
  7. package/src/android/build.gradle +0 -35
  8. package/src/android/xml/provider_paths.xml +0 -21
  9. package/src/browser/UnviredPluginProxy.js +0 -2430
  10. package/src/browser/bootstrap.min.js +0 -17
  11. package/src/browser/codemirror.js +0 -9755
  12. package/src/browser/jquery-3.2.1.js +0 -10253
  13. package/src/browser/sql-wasm.wasm +0 -0
  14. package/src/browser/sql.js +0 -203
  15. package/src/browser/src_index_worker_js.unvired-db-worker.js +0 -231
  16. package/src/browser/unvired-db-worker.js +0 -166
  17. package/src/browser/vendors-node_modules_comlink_dist_esm_comlink_mjs.unvired-db-worker.js +0 -22
  18. package/src/ios/AttachmentPlugin.h +0 -21
  19. package/src/ios/AttachmentPlugin.m +0 -180
  20. package/src/ios/DataStructureHelper.h +0 -28
  21. package/src/ios/DataStructureHelper.m +0 -188
  22. package/src/ios/IOSAuthPlugin.h +0 -14
  23. package/src/ios/IOSAuthPlugin.m +0 -13
  24. package/src/ios/IOSDatabasePlugin.h +0 -28
  25. package/src/ios/IOSDatabasePlugin.m +0 -253
  26. package/src/ios/IOSFWSettingsPlugin.h +0 -65
  27. package/src/ios/IOSFWSettingsPlugin.m +0 -363
  28. package/src/ios/IOSLoggerPlugin.h +0 -34
  29. package/src/ios/IOSLoggerPlugin.m +0 -198
  30. package/src/ios/IOSLoginPlugin.h +0 -29
  31. package/src/ios/IOSLoginPlugin.m +0 -480
  32. package/src/ios/IOSProxyPlugin.h +0 -21
  33. package/src/ios/IOSProxyPlugin.m +0 -172
  34. package/src/ios/IOSSyncEnginePlugin.h +0 -54
  35. package/src/ios/IOSSyncEnginePlugin.m +0 -847
  36. package/src/ios/PluginConstants.h +0 -195
  37. package/src/ios/PluginHelper.h +0 -29
  38. package/src/ios/PluginHelper.m +0 -74
  39. package/src/ios/SyncHTML5Response.h +0 -50
  40. package/src/ios/SyncHTML5Response.m +0 -68
  41. package/www/applicationMeta/applicationMetadataParser.ts +0 -285
  42. package/www/applicationMeta/fieldConstants.ts +0 -92
  43. package/www/attachment/attachmentHelper.ts +0 -326
  44. package/www/attachment/attachmentQHelper.ts +0 -158
  45. package/www/attachment/attachmentService.ts +0 -259
  46. package/www/authenticationService.ts +0 -751
  47. package/www/database/appDatabaseManager.ts +0 -54
  48. package/www/database/databaseManager.ts +0 -616
  49. package/www/helper/dbCreateTablesManager.ts +0 -354
  50. package/www/helper/frameworkHelper.ts +0 -127
  51. package/www/helper/frameworkSettingsManager.ts +0 -287
  52. package/www/helper/getMessageTimerManager.ts +0 -81
  53. package/www/helper/httpConnection.ts +0 -1051
  54. package/www/helper/logger.ts +0 -312
  55. package/www/helper/notificationListnerHelper.ts +0 -56
  56. package/www/helper/passcodeGenerator.ts +0 -61
  57. package/www/helper/reconciler.ts +0 -1062
  58. package/www/helper/serverResponseHandler.ts +0 -677
  59. package/www/helper/serviceConstants.ts +0 -254
  60. package/www/helper/settingsHelper.ts +0 -386
  61. package/www/helper/status.ts +0 -83
  62. package/www/helper/syncInputDataManager.ts +0 -205
  63. package/www/helper/unviredAccount.ts +0 -104
  64. package/www/helper/unviredAccountManager.ts +0 -120
  65. package/www/helper/urlService.ts +0 -43
  66. package/www/helper/userSettingsManager.ts +0 -172
  67. package/www/helper/utils.ts +0 -110
  68. package/www/inbox/downloadMessageService.ts +0 -270
  69. package/www/inbox/inboxHelper.ts +0 -132
  70. package/www/inbox/inboxService.ts +0 -223
  71. package/www/outbox/outboxAttachmentManager.ts +0 -152
  72. package/www/outbox/outboxHelper.ts +0 -67
  73. package/www/outbox/outboxService.ts +0 -519
  74. package/www/subtract.ts +0 -5
  75. package/www/sum.ts +0 -4
  76. package/www/syncEngine.ts +0 -687
@@ -1,751 +0,0 @@
1
- import {LoginParameters, LoginType, LoginListenerType, SyncStatus, ObjectStatus} from './helper/utils'
2
- import FrameworkHelper from "./helper/frameworkHelper";
3
- import HttpConnection from './helper/httpConnection'
4
- import ApplicationMetaParser from './applicationMeta/applicationMetadataParser';
5
- import * as ServiceConstants from './helper/serviceConstants';
6
- import { UserSettingsFields, UserSettingsManager, stringToUserSettingsFields } from './helper/userSettingsManager';
7
- import { Logger } from './helper/logger';
8
- import { UnviredAccountManager } from './helper/unviredAccountManager';
9
- import DbCreateTablesManager from './helper/dbCreateTablesManager';
10
- import { UnviredAccount } from './helper/unviredAccount';
11
- import { FrameworkSettingsFields, FrameworkSettingsManager, stringToFrameworkSettingsFields } from './helper/frameworkSettingsManager';
12
- import { Status } from './helper/status';
13
- import SettingsHelper from './helper/settingsHelper';
14
- import { NotificationListenerHelper, NotificationListnerType } from './helper/notificationListnerHelper';
15
- import GetMessageTimerManager from './helper/getMessageTimerManager';
16
- import { DatabaseManager } from './database/databaseManager';
17
- import OutboxService from './outbox/outboxService';
18
-
19
-
20
- const fileName = "AuthenticationService"
21
- export class UnviredResult {
22
- data: any;
23
- message: string;
24
- type: number;
25
- error: string;
26
- errorDetail: string;
27
- }
28
-
29
- export enum ResultType {
30
- success = 0,
31
- error,
32
- }
33
-
34
- export class SyncResult extends UnviredResult {
35
- code: number;
36
- }
37
-
38
- export class AuthenticationService {
39
- jwtToken = ""
40
- public loginParameters: any = {};
41
- private messageInterval: number = 0;
42
-
43
- private static readonly _instance: AuthenticationService = new AuthenticationService();
44
- private constructor() {}
45
- public static get instance(): AuthenticationService {
46
- return this._instance;
47
- }
48
-
49
- public async login(loginParameters: LoginParameters): Promise<any> {
50
- this.loginParameters = loginParameters
51
- Logger.logInfo(fileName, 'login', 'CORDOVA_DOCUMENT_DICRECTORY: ' + window.cordova.file.documentsDirectory);
52
- return new Promise(async (resolve, reject) => {
53
- let cbResult = new UnviredResult()
54
- try {
55
-
56
- Logger.logInfo(fileName, "login", "Started Logging in...");
57
-
58
- if (this.loginParameters.metadataPath != null && this.loginParameters.metadataPath.length > 0) {
59
- const metadataJSON = await HttpConnection.getJSONFromFile(this.loginParameters.metadataPath);
60
- this.loginParameters.metadataJSON = metadataJSON;
61
- }
62
-
63
- if (this.loginParameters.metadataJSON == null || this.loginParameters.metadataJSON.length == 0) {
64
- Logger.logError(fileName, "login", "Metadata is not set.");
65
- cbResult.message = "Metadata json is not set.";
66
- cbResult.type = LoginListenerType.auth_activation_required;
67
- resolve(cbResult);
68
- return;
69
- }
70
-
71
- try {
72
- const metadataJSON = JSON.parse(this.loginParameters.metadataJSON)
73
- if (metadataJSON == null || metadataJSON == undefined || metadataJSON.length === 0) {
74
- Logger.logError(fileName, "login", "Invalid metadata");
75
- cbResult.message = "Invalid metadata json is set.";
76
- cbResult.type = LoginListenerType.auth_activation_required;
77
- resolve(cbResult);
78
- return;
79
- }
80
- } catch (e) {
81
- Logger.logError(fileName, "login", "Invalid metadata");
82
- cbResult.message = "Invalid metadata json is set.";
83
- cbResult.type = LoginListenerType.auth_activation_required;
84
- resolve(cbResult);
85
- return;
86
- }
87
-
88
- if (this.loginParameters.appName == null || this.loginParameters.appName.length == 0) {
89
- ApplicationMetaParser.instance.parseAppInfo(this.loginParameters.metadataJSON);
90
- if (ApplicationMetaParser.instance.applicationName.length === 0) {
91
- Logger.logError(fileName, "login", "Invalid metadata");
92
- cbResult.message = "Application name not initialized";
93
- cbResult.type = LoginListenerType.auth_activation_required;
94
- resolve(cbResult);
95
- return
96
- }
97
- this.loginParameters.appName = ApplicationMetaParser.instance.applicationName
98
- Logger.logInfo(fileName, "login", `APPLICATION NAME: ${this.loginParameters.appName} DEVICE TYPE:${FrameworkHelper.getPlatform()}`);
99
- }
100
-
101
- // Check if DB available
102
- let allAccounts = UnviredAccountManager.getInstance().getAllAccounts();
103
- let isDBAvailable = allAccounts.length > 0
104
-
105
- Logger.logInfo(fileName, "login", `Database Status: ${isDBAvailable ? "Available" : "Not Available"}`);
106
-
107
- // If Database is not available, then give a callback to open the Login Screen.
108
- if (!isDBAvailable) {
109
- Logger.logError(fileName, "login", `No Accounts Are Available.`);
110
- cbResult.type = LoginListenerType.auth_activation_required;
111
- resolve(cbResult);
112
- return
113
- }
114
-
115
- Logger.logInfo(fileName, "login", `All Accounts: ${JSON.stringify(allAccounts)}`);
116
-
117
-
118
-
119
- // DB is available, there is data.
120
- // If an Account is Logged out, then give a callback to open the Account Selection Screen.
121
- // Or if there is more than one account, then present Account Selection Screen
122
- // Local Storeage stores the last logged out account. Fetch it from there.
123
-
124
- let lastLoggedOutAccount = UnviredAccountManager.getInstance().getlastLoggedOutAccount()
125
- let lastActiveAccount = UnviredAccountManager.getInstance().getLastLoggedInAccount()
126
- if (lastLoggedOutAccount != null && allAccounts.length > 1) { // There was an account which was logged out. So New Account has to get selected.
127
- cbResult.type = LoginListenerType.app_requires_current_account;
128
- resolve(cbResult);
129
- return
130
- }
131
- else {
132
- if (lastActiveAccount == null) {
133
- lastActiveAccount = allAccounts[0]
134
- }
135
- }
136
-
137
- const localPasswordFlag = await FrameworkSettingsManager.getInstance().getFieldValue(FrameworkSettingsFields.localPassword)
138
- let isLocalPasswordRequired = localPasswordFlag == "YES"
139
-
140
- if (isLocalPasswordRequired) {
141
- cbResult.type = LoginListenerType.app_requires_login;
142
- resolve(cbResult);
143
- return
144
- }
145
- else {
146
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(null)
147
- UnviredAccountManager.getInstance().setLastLoggedInAccount(lastActiveAccount.getAccountId())
148
- this.loginParameters.username = this.loginParameters.username ?? lastActiveAccount.getUsername();
149
- this.loginParameters.company = this.loginParameters.company ?? lastActiveAccount.getCompany();
150
- this.loginParameters.url = this.loginParameters.url ?? lastActiveAccount.getServerURL();
151
- this.loginParameters.feUserId = this.loginParameters.feUserId ?? lastActiveAccount.getFeUserId();
152
- this.loginParameters.loginType = this.loginParameters.loginType ?? lastActiveAccount.getLoginType();
153
- this.loginParameters.port = this.loginParameters.port ?? lastActiveAccount.getPort();
154
- this.loginParameters.domain = this.loginParameters.domain ?? lastActiveAccount.getDomain();
155
- FrameworkSettingsManager.getInstance().setFieldValue(FrameworkSettingsFields.url, this.loginParameters.url);
156
- FrameworkSettingsManager.getInstance().setFieldValue(FrameworkSettingsFields.feUser, this.loginParameters.feUserId);
157
- cbResult.type = LoginListenerType.login_success;
158
- OutboxService.getInstance().start();
159
- GetMessageTimerManager.getInstance().startTimer();
160
- resolve(cbResult);
161
- return
162
- }
163
- }
164
- catch (e) {
165
- let unviredResult = new UnviredResult()
166
- unviredResult.type = 1
167
- unviredResult.error = e
168
- resolve(unviredResult)
169
- }
170
- });
171
- }
172
-
173
- public loginWithDemoData(loginParameters: any): Promise<any> {
174
- return new Promise(async (resolve, reject) => {
175
- const unviredResult = new UnviredResult();
176
- const frameworkSettings: any = FrameworkSettingsManager.getDemoModeFwSettings(loginParameters);
177
- const userSettings = UserSettingsManager.getDemoModeUserSettings(loginParameters);
178
- // Create FW Tables
179
- const result = await DatabaseManager.getInstance().createTables();
180
- if (!result) {
181
- Logger.logError(fileName, "authenticateAndActivate", "Error creating database tables");
182
- unviredResult.type = LoginListenerType.login_demo;
183
- unviredResult.error = "Error creating database tables";
184
- resolve(unviredResult);
185
- return;
186
- }
187
- Logger.logInfo(fileName, "authenticateAndActivate", "Database tables created successfully");
188
-
189
- // Save the settings in the DB
190
- try {
191
- frameworkSettings[FrameworkSettingsFields[FrameworkSettingsFields.url]] = loginParameters.url;
192
- frameworkSettings[FrameworkSettingsFields[FrameworkSettingsFields.feUser]] = loginParameters.feUserId;
193
- await this.saveSettings(frameworkSettings, userSettings);
194
- }
195
- catch (e) {
196
- Logger.logError(fileName, "authenticateAndActivate", `Error while saving settings. Error: ${e}`);
197
- unviredResult.type = LoginListenerType.login_demo;
198
- unviredResult.error = `Error while saving settings. Error: ${e}`;
199
- resolve(unviredResult);
200
- return;
201
- }
202
- Logger.logInfo(fileName, "authenticateAndActivate", "Settings saved successfully");
203
- resolve(unviredResult);
204
-
205
- });
206
- }
207
-
208
- public logout(): Promise<any> {
209
- return new Promise((resolve, reject) => {
210
- let result: any = {}
211
- const unviredAccount = UnviredAccountManager.getInstance().getAccount(this.loginParameters.username, this.loginParameters.company)
212
- if (unviredAccount == null) {
213
- Logger.logError(fileName, "logout", "Account not found to logout.");
214
- result.message = "Account not found to logout."
215
- result.type = 1;
216
- reject(result);
217
- return
218
- }
219
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(unviredAccount.getAccountId())
220
- result.message = "Logged out successfully."
221
- result.type = 0;
222
- resolve(result);
223
- });
224
- }
225
-
226
- public clearData(): Promise<any> {
227
- return new Promise(async (resolve, reject) => {
228
- let result: any = {}
229
- try {
230
- const unviredAccount = UnviredAccountManager.getInstance().getAccount(this.loginParameters.username, this.loginParameters.company)
231
- if (unviredAccount == null) {
232
- Logger.logError(fileName, "clearData", "Account not found to clear data.");
233
- result.message = "Account not found to clear data."
234
- result.error = "Account not found to clear data."
235
- result.type = 1;
236
- reject(result);
237
- return
238
- }
239
- UnviredAccountManager.getInstance().deleteAccount(unviredAccount.getAccountId())
240
- await FrameworkHelper.deleteUserFolder(unviredAccount.getAccountId())
241
- result.data = "Deleted all the data for this application from the device. Please exit the application by pressing the 'Home' button in your device."//"Data cleared successfully."
242
- result.type = 0;
243
- NotificationListenerHelper.postDataSenderNotification(null, NotificationListnerType.app_reset);
244
- resolve(result);
245
- }
246
- catch (e) {
247
- Logger.logError(fileName, "clearData", `Error while clearing data. Error: ${JSON.stringify(e)}`);
248
- result.message = e.toString()
249
- result.error = e.toString()
250
- result.type = 1;
251
- reject(result);
252
- }
253
- });
254
- }
255
-
256
- public authenticateAndActivate(loginParameters: any): Promise<any> {
257
- this.loginParameters = loginParameters
258
- return new Promise(async (resolve, reject) => {
259
- if (this.loginParameters.metadataPath != null && this.loginParameters.metadataPath.length > 0) {
260
- const metadataJSON = await HttpConnection.getJSONFromFile(this.loginParameters.metadataPath);
261
- this.loginParameters.metadataJSON = metadataJSON;
262
- }
263
- // Check #1: Check if the Account Already Exists.
264
- const accountObject = await UnviredAccountManager.getInstance().getAccount(loginParameters.username, loginParameters.company)
265
- let isAccountExist = accountObject != null
266
- if (isAccountExist) {
267
- Logger.logError(fileName, "login", "Account already in use on this device. Go back and choose this account.");
268
- let cbResult: any = {}
269
- cbResult.message = "Account already in use on this device. Go back and choose this account."
270
- cbResult.type = LoginListenerType.auth_activation_error;
271
- resolve(cbResult);
272
- return
273
- }
274
- const unviredResult = new UnviredResult();
275
- var frameworkSettings: any = {}
276
- var userSettings: any = {}
277
- if (loginParameters.loginType !== LoginType.saml2) {
278
- const result = await HttpConnection.authenticateUser(this.loginParameters);
279
- const responseJson = await result.json();
280
- unviredResult.type = result.ok ? LoginListenerType.auth_activation_success : LoginListenerType.auth_activation_error;
281
- if (result.ok) {
282
- unviredResult.data = responseJson;
283
- } else {
284
- unviredResult.error = responseJson.error;
285
- }
286
- if (result.status === Status.created) {
287
- frameworkSettings = responseJson;
288
- if (responseJson[ServiceConstants.KeySessionId] != null) {
289
- HttpConnection.sessionId = responseJson[ServiceConstants.KeySessionId];
290
- }
291
- if (loginParameters.loginType === LoginType.sap || loginParameters.loginType === LoginType.ads) {
292
- this.loginParameters.unviredUserName = responseJson[ServiceConstants.KeyUnviredId];
293
- }
294
- const userData: any[] = responseJson[ServiceConstants.KeyUsers];
295
-
296
- const frontendIds: string[] = userData
297
- .filter(
298
- (element) =>
299
- (FrameworkHelper.getFrontendType() === "WINDOWS" ?
300
- (element[ServiceConstants.KeyFrontendType] === "WINDOWS" || element[ServiceConstants.KeyFrontendType] === "WINDOWS8") :
301
- element[ServiceConstants.KeyFrontendType] === FrameworkHelper.getFrontendType()) &&
302
- element[ServiceConstants.KeyApplications] != null &&
303
- (element[ServiceConstants.KeyApplications] as any[])
304
- .filter((e) => e[ServiceConstants.KeyName] === loginParameters.appName)
305
- .length > 0
306
- )
307
- .map((e) => e[ServiceConstants.KeyName] as string);
308
-
309
- if (frontendIds.length === 0) {
310
- Logger.logError(fileName, "authenticateAndActivate", "Application is not deployed for this user.");
311
- this.loginParameters.password = "";
312
- unviredResult.type = LoginListenerType.auth_activation_error;
313
- unviredResult.error = "Application is not deployed for this user. Please contact your Administrator.";
314
- resolve(unviredResult);
315
- return;
316
- } else if (frontendIds.length > 1) {
317
- // TODO: Check: How to send multiple frontend ids to the app.
318
- // if (this.loginParameters.frontendId.isEmpty) {
319
- // _selectedAccount!.setErrorMessage(
320
- // "Multiple Frontends are available for this user. Please select one frontend to proceed.");
321
- // _selectedAccount!.setAvailableFrontendIds(frontendIds);
322
- // _selectedAccount!.setPassword("");
323
- // _selectedAccount = await _getSelectedFEFromApplication([_selectedAccount!]);
324
- // } else if (!frontendIds.includes(_selectedAccount!.getFrontendId())) {
325
- // _selectedAccount!.setErrorMessage("Invalid frontend id.");
326
- // _selectedAccount!.setAvailableFrontendIds(frontendIds);
327
- // _selectedAccount!.setPassword("");
328
- // return await _callShowLoginAndValidateInput([_selectedAccount!]);
329
- // }
330
- } else {
331
- this.loginParameters.feUserId = frontendIds[0];
332
- }
333
- if (FrameworkHelper.getPlatform() !== "browser") {
334
- // Call activate rest api
335
- const activationResponse = await HttpConnection.activateUser(this.loginParameters);
336
-
337
- // Handle Activation Response
338
- const activationResponseObject = await activationResponse.json();
339
- if (activationResponse.status === Status.created) {
340
- frameworkSettings = activationResponseObject;
341
- this.loginParameters.activationId = frameworkSettings[ServiceConstants.KeySettings]["activationId"];
342
- if (loginParameters.loginType === LoginType.sap || loginParameters.loginType === LoginType.ads || loginParameters.loginType === LoginType.passwordless) {
343
- this.loginParameters.unviredUserPwd = activationResponseObject[ServiceConstants.KeySettings][ServiceConstants.KeyUnviredMd5Pwd]
344
- }
345
- const unviredId = UserSettingsFields[UserSettingsFields.unviredId];
346
- userSettings[unviredId] = loginParameters.username;
347
- const unviredPwd = UserSettingsFields[UserSettingsFields.unviredPassword];
348
-
349
- let pwdToSave = loginParameters.password;
350
- if (loginParameters.loginType !== LoginType.ads && loginParameters.loginType !== LoginType.sap) {
351
- pwdToSave = FrameworkHelper.getMD5String(loginParameters.password);
352
- }
353
- userSettings[unviredPwd] = pwdToSave;
354
- } else {
355
- let errorMsg = "Login Failed. Error: ";
356
- if (activationResponseObject[ServiceConstants.KeyError] != null && activationResponseObject[ServiceConstants.KeyError].length > 0) {
357
- errorMsg += activationResponseObject[ServiceConstants.KeyError];
358
- }
359
- Logger.logError(fileName, "authenticateAndActivate", errorMsg);
360
- unviredResult.type = LoginListenerType.auth_activation_error;
361
- unviredResult.error = errorMsg;
362
- resolve(unviredResult);
363
- return;
364
- }
365
- } else {
366
- const unviredId = UserSettingsFields[UserSettingsFields.unviredId];
367
- userSettings[unviredId] = loginParameters.username;
368
- const unviredUserId = UserSettingsFields[UserSettingsFields.unviredUserId];
369
- userSettings[unviredUserId] = frameworkSettings[unviredId];
370
- const unviredPwd = UserSettingsFields[UserSettingsFields.unviredPassword];
371
- let pwdToSave = loginParameters.password;
372
- if (loginParameters.loginType !== LoginType.ads && loginParameters.loginType !== LoginType.sap) {
373
- pwdToSave = FrameworkHelper.getMD5String(loginParameters.password);
374
- }
375
- userSettings[unviredPwd] = pwdToSave;
376
- // added this to save the settings in the DB
377
- frameworkSettings = {"settings": frameworkSettings}
378
- }
379
-
380
- // Get jwt token from rest api
381
- const jwtResponse = await HttpConnection.getJwtToken(this.loginParameters);
382
- // Handle jwt Response
383
- const jwtResponseObject = await jwtResponse.json();
384
- if (jwtResponse.status !== Status.created) {
385
- let errorMsg = "Login Failed. Error: ";
386
- if (
387
- jwtResponseObject[ServiceConstants.KeyError] != null &&
388
- jwtResponseObject[ServiceConstants.KeyError].length > 0
389
- ) {
390
- errorMsg += jwtResponseObject[ServiceConstants.KeyError];
391
- }
392
- Logger.logError(fileName, "authenticateAndActivate", errorMsg);
393
- unviredResult.type = LoginListenerType.auth_activation_error;
394
- unviredResult.error = errorMsg;
395
- resolve(unviredResult);
396
- return;
397
- }
398
- const jwtToken = UserSettingsFields[UserSettingsFields.jwtToken];
399
- userSettings[jwtToken] = jwtResponseObject[ServiceConstants.KeyJwtToken];
400
- }
401
- else {
402
- resolve(unviredResult);
403
- return;
404
- }
405
- } else {
406
- // The Browser check is commented out for SAML2 login type.Because it should always call the activate rest api.
407
- // if (FrameworkHelper.getPlatform() !== "browser") {
408
- // Call activate rest api
409
- const activationResponse = await HttpConnection.activateUser(loginParameters);
410
-
411
- // Handle Activation Response
412
- const activationResponseObject = await activationResponse.json();
413
- if (activationResponse.status === Status.created) {
414
- frameworkSettings = activationResponseObject;
415
- loginParameters.frontendId = frameworkSettings[ServiceConstants.KeySettings]["frontendId"];
416
- loginParameters.feUserId = frameworkSettings[ServiceConstants.KeySettings]["feUser"];
417
- loginParameters.activationId = frameworkSettings[ServiceConstants.KeySettings]["activationId"];
418
- const unviredId = UserSettingsFields[UserSettingsFields.unviredId];
419
- userSettings[unviredId] = loginParameters.username;
420
- const unviredPwd = UserSettingsFields[UserSettingsFields.unviredPassword];
421
- userSettings[unviredPwd] = FrameworkHelper.getMD5String(loginParameters.password);
422
- } else {
423
- let errorMsg = "Login Failed. Error: ";
424
- if (
425
- activationResponseObject[ServiceConstants.KeyError] != null &&
426
- activationResponseObject[ServiceConstants.KeyError].length > 0
427
- ) {
428
- errorMsg += activationResponseObject[ServiceConstants.KeyError];
429
- }
430
- Logger.logError(fileName, "authenticateAndActivate", errorMsg);
431
- unviredResult.type = LoginListenerType.auth_activation_error;
432
- unviredResult.error = errorMsg;
433
- resolve(unviredResult);
434
- return;
435
- }
436
-
437
- // } else {
438
- // const unviredId = UserSettingsFields[UserSettingsFields.unviredId];
439
- // userSettings[unviredId] = loginParameters.username;
440
- // const unviredUserId = UserSettingsFields[UserSettingsFields.unviredUserId];
441
- // userSettings[unviredUserId] = frameworkSettings[unviredId];
442
- // const unviredPwd = UserSettingsFields[UserSettingsFields.unviredPassword];
443
- // userSettings[unviredPwd] = FrameworkHelper.getMD5String(loginParameters.password);
444
- // // added this to save the settings in the DB
445
- // frameworkSettings = {"settings": frameworkSettings}
446
- // }
447
-
448
-
449
- // NOTE: This is not required as the jwt token is already available in the loginParameters.
450
- // // Get jwt token from rest api
451
- // const jwtResponse = await HttpConnection.getJwtToken(loginParameters);
452
- // // Handle jwt Response
453
- // const jwtResponseObject = await jwtResponse.json();
454
- // if (jwtResponse.status !== Status.unauthorized) {
455
- // let errorMsg = "Login Failed. Error: ";
456
- // if (jwtResponseObject[ServiceConstants.KeyError] != null && jwtResponseObject[ServiceConstants.KeyError].length > 0) {
457
- // errorMsg += jwtResponseObject[ServiceConstants.KeyError];
458
- // }
459
- // Logger.logError(fileName, "authenticateAndActivate", errorMsg);
460
- // unviredResult.type = LoginListenerType.auth_activation_error;
461
- // unviredResult.error = errorMsg;
462
- // resolve(unviredResult);
463
- // return;
464
- // }
465
-
466
- unviredResult.type = LoginListenerType.auth_activation_success;
467
-
468
- const jwtToken = UserSettingsFields[UserSettingsFields.jwtToken];
469
- userSettings[jwtToken] = loginParameters["jwtToken"];
470
- }
471
-
472
- const metadataParser = ApplicationMetaParser.instance;
473
- await metadataParser.init(loginParameters.metadataJSON);
474
-
475
- // Save the Unvired Account in the local storage.
476
- const unviredAccount = new UnviredAccount(this.loginParameters.username, this.loginParameters.company, this.loginParameters.url, this.loginParameters.feUserId, this.loginParameters.loginType)
477
- unviredAccount.setPort(this.loginParameters.port ?? "")
478
- unviredAccount.setDomain(this.loginParameters.domain ?? "")
479
- UnviredAccountManager.getInstance().saveAccount(unviredAccount)
480
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(null)
481
- UnviredAccountManager.getInstance().setLastLoggedInAccount(unviredAccount.getAccountId())
482
-
483
- // Create FW Tables
484
- const result = await DatabaseManager.getInstance().createTables();
485
- if (!result) {
486
- UnviredAccountManager.getInstance().deleteAccount(unviredAccount.getAccountId())
487
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(null)
488
- UnviredAccountManager.getInstance().setLastLoggedInAccount(null)
489
- Logger.logError(fileName, "authenticateAndActivate", "Error creating database tables");
490
- unviredResult.type = LoginListenerType.auth_activation_error;
491
- unviredResult.error = "Error creating database tables";
492
- resolve(unviredResult);
493
- return;
494
- }
495
- Logger.logInfo(fileName, "authenticateAndActivate", "Database tables created successfully");
496
-
497
- // Save the settings in the DB
498
- try {
499
- frameworkSettings[FrameworkSettingsFields[FrameworkSettingsFields.url]] = loginParameters.url;
500
- frameworkSettings[FrameworkSettingsFields[FrameworkSettingsFields.feUser]] = loginParameters.feUserId;
501
- await this.saveSettings(frameworkSettings, userSettings);
502
- }
503
- catch (e) {
504
- UnviredAccountManager.getInstance().deleteAccount(unviredAccount.getAccountId())
505
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(null)
506
- UnviredAccountManager.getInstance().setLastLoggedInAccount(null)
507
- Logger.logError(fileName, "authenticateAndActivate", `Error while saving settings. Error: ${e}`);
508
- unviredResult.type = LoginListenerType.auth_activation_error;
509
- unviredResult.error = `Error while saving settings. Error: ${e}`;
510
- resolve(unviredResult);
511
- return;
512
- }
513
- Logger.logInfo(fileName, "authenticateAndActivate", "Settings saved successfully");
514
- if (unviredResult.type === LoginListenerType.auth_activation_success) {
515
- OutboxService.getInstance().start();
516
- GetMessageTimerManager.getInstance().startTimer();
517
- }
518
- resolve(unviredResult);
519
- });
520
- }
521
-
522
- public async authenticateLocal(loginParameters: any): Promise<any> {
523
- return new Promise(async (resolve, reject) => {
524
- const unviredResult = new UnviredResult();
525
- const unviredAccount = UnviredAccountManager.getInstance().getAccount(loginParameters.username, loginParameters.company)
526
- if (unviredAccount == null) {
527
- Logger.logError(fileName, "authenticateLocal", "Account not found.");
528
- unviredResult.type = LoginListenerType.login_error;
529
- unviredResult.error = "Account information not found.";
530
- resolve(unviredResult);
531
- return;
532
- }
533
- if (navigator.onLine) {
534
- // Get jwt token from rest api
535
- try {
536
- const jwtResponse = await HttpConnection.getJwtToken(loginParameters);
537
- // Handle jwt Response
538
- const jwtResponseObject = JSON.parse(jwtResponse.body);
539
- if (jwtResponse.status !== Status.created) {
540
- let errorMsg = "Login Failed. Error: ";
541
- if (
542
- jwtResponseObject[ServiceConstants.KeyError] != null &&
543
- jwtResponseObject[ServiceConstants.KeyError].length > 0
544
- ) {
545
- errorMsg += jwtResponseObject[ServiceConstants.KeyError];
546
- }
547
- Logger.logError(fileName, "authenticateLocal", errorMsg);
548
- unviredResult.type = LoginListenerType.login_error;
549
- unviredResult.error = errorMsg;
550
- resolve(unviredResult);
551
- return;
552
- }
553
- const jwtToken = jwtResponseObject[ServiceConstants.KeyJwtToken];
554
- await UserSettingsManager.getInstance().setFieldValue(UserSettingsFields.jwtToken, jwtToken);
555
- }
556
- catch (e) {
557
- Logger.logError(fileName, "authenticateLocal", `Error while getting jwt token. Error: ${JSON.stringify(e)}`);
558
- unviredResult.type = LoginListenerType.login_error;
559
- unviredResult.error = `Login failed. Error: ${JSON.stringify(e)}`;
560
- resolve(unviredResult);
561
- return;
562
- }
563
- }
564
- else {
565
- const storedPassword = await UserSettingsManager.getInstance().getFieldValue(UserSettingsFields.unviredPassword)
566
- const md5Password = FrameworkHelper.getMD5String(loginParameters.password)
567
- if (storedPassword !== md5Password) {
568
- Logger.logError(fileName, "authenticateLocal", "Invalid password.");
569
- unviredResult.type = LoginListenerType.login_error;
570
- unviredResult.error = "Invalid password."
571
- resolve(unviredResult)
572
- return
573
- }
574
- UnviredAccountManager.getInstance().setLastLoggedOutAccount(null)
575
- UnviredAccountManager.getInstance().setLastLoggedInAccount(unviredAccount.getAccountId())
576
- }
577
- unviredResult.type = LoginListenerType.login_success;
578
- OutboxService.getInstance().start();
579
- GetMessageTimerManager.getInstance().startTimer();
580
- resolve(unviredResult);
581
- });
582
- }
583
-
584
- public getAllAccounts(): Promise<any> {
585
- return new Promise((resolve, reject) => {
586
- try {
587
- const allAccounts = UnviredAccountManager.getInstance().getAllAccounts();
588
- resolve(allAccounts);
589
- }
590
- catch (e) {
591
- Logger.logError(fileName, "getAllAccounts", `Error while getting all accounts. Error: ${JSON.stringify(e)}`);
592
- reject(e);
593
- }
594
- });
595
- }
596
-
597
- public switchAccount(account: any): Promise<any> {
598
- return new Promise((resolve, reject) => {
599
- // TODO:
600
- let isSuccessful = true
601
- if (isSuccessful) {
602
- const result = { /* data to be returned on success */ };
603
- resolve(result);
604
- } else {
605
- const error = { /* error message */ };
606
- reject(error);
607
- }
608
- });
609
- }
610
-
611
- public deleteAccount(account: any): Promise<any> {
612
- return new Promise(async (resolve, reject) => {
613
- try {
614
- UnviredAccountManager.getInstance().deleteAccount(account.getAccountId());
615
- await FrameworkHelper.deleteUserFolder(account.getAccountId())
616
- resolve(true);
617
- }
618
- catch (e) {
619
- Logger.logError(fileName, "deleteAccount", `Error while deleting account. Error: ${JSON.stringify(e)}`);
620
- reject(e);
621
- }
622
- });
623
- }
624
-
625
- public setClientCredentials(credentials: any[]): Promise<any> {
626
- return new Promise((resolve, reject) => {
627
- // TODO:
628
- let isSuccessful = true
629
- if (isSuccessful) {
630
- const result = { /* data to be returned on success */ };
631
- resolve(result);
632
- } else {
633
- const error = { /* error message */ };
634
- reject(error);
635
- }
636
- });
637
- }
638
-
639
- public isClientCredentialsSet(): Promise<any> {
640
- return new Promise((resolve, reject) => {
641
- // TODO:
642
- let isSuccessful = true
643
- if (isSuccessful) {
644
- const result = { /* data to be returned on success */ };
645
- resolve(result);
646
- } else {
647
- const error = { /* error message */ };
648
- reject(error);
649
- }
650
- });
651
- }
652
-
653
- public setMessageInterval(interval: number): void {
654
- this.messageInterval = interval;
655
- }
656
-
657
- public getMessageInterval(): number {
658
- return this.messageInterval;
659
- }
660
-
661
- private async saveSettings(frameworkSettings: any, userSettings: any): Promise<any> {
662
- if (Object.keys(frameworkSettings).length > 0) {
663
- // Parse and insert framework data into database
664
- const fwSettingsManager = FrameworkSettingsManager.getInstance()
665
- const fwSettings: any = frameworkSettings[ServiceConstants.KeySettings];
666
- if (fwSettings != null) {
667
- const fwSettingsKeys: string[] = Object.keys(fwSettings);
668
- for (const key of fwSettingsKeys) {
669
- const value = fwSettings[key];
670
- if (key == FrameworkSettingsFields[FrameworkSettingsFields.localPassword] && value === "YES") {
671
- // TODO: Set Local Password required field to true in Unvired Account
672
- }
673
- if (key === FrameworkSettingsFields[FrameworkSettingsFields.logLevel]) {
674
- await SettingsHelper.setLogLevel(value);
675
- }
676
-
677
- if (key === ServiceConstants.KeySystems) {
678
- const systemInfo: { [key: string]: any } = value;
679
- const systemInfoArray: any[] = systemInfo[ServiceConstants.KeySystems];
680
- for (const systemInfoObj of systemInfoArray) {
681
- const timestamp: number = Date.now();
682
- const systemCredentials: any = {
683
- "lid": FrameworkHelper.getUUID(),
684
- "timestamp": timestamp,
685
- "objectStatus": ObjectStatus.global,
686
- "syncStatus": SyncStatus.none,
687
- "name": systemInfoObj[ServiceConstants.KeySystemsName],
688
- "portName": systemInfoObj[ServiceConstants.KeySystemsPortName],
689
- "portType": systemInfoObj[ServiceConstants.KeySystemsPortType],
690
- "portDesc": systemInfoObj[ServiceConstants.KeySystemsPortDesc],
691
- "systemDesc": systemInfoObj[ServiceConstants.KeySystemsDesc],
692
- "userId":"",
693
- "password": ""
694
- };
695
- await fwSettingsManager.addSystemCredential(systemCredentials);
696
- }
697
- }
698
- else if (key === ServiceConstants.KeyLocation) {
699
- const locationInfo: { [key: string]: any } = value;
700
- const locationInfoKeys: string[] = Object.keys(locationInfo);
701
- for (const key2 of locationInfoKeys) {
702
- const value2 = locationInfo[key2];
703
- switch (key2) {
704
- case ServiceConstants.KeyLocationTracking:
705
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationTracking, value2);
706
- break;
707
- case ServiceConstants.KeyLocationInterval:
708
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationTrackingInterval, value2);
709
- break;
710
- case ServiceConstants.KeyLocationUploadInterval:
711
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationUploadInterval, value2);
712
- break;
713
- case ServiceConstants.KeyLocationDays:
714
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationTrackingDays, value2);
715
- break;
716
- case ServiceConstants.KeyLocationStart:
717
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationTrackingStart, value2);
718
- break;
719
- case ServiceConstants.KeyLocationEnd:
720
- await fwSettingsManager.setFieldValue(FrameworkSettingsFields.locationTrackingEnd, value2);
721
- break;
722
- }
723
- }
724
- }
725
- else if (key === FrameworkSettingsFields[FrameworkSettingsFields.unviredUser]) {
726
- const unviredUserId = UserSettingsFields[UserSettingsFields.unviredUserId];
727
- userSettings[unviredUserId] = value;
728
- }
729
- else {
730
- if (typeof value !== 'object') {
731
- await fwSettingsManager.setFieldValue(stringToFrameworkSettingsFields(key), value);
732
- }
733
- }
734
- }
735
- }
736
- }
737
-
738
- if (Object.keys(userSettings).length > 0) {
739
- // Parse and insert user data into database
740
- const userSettingsManager = UserSettingsManager.getInstance()
741
- const userSettingsKeys: string[] = Object.keys(userSettings);
742
- for (const key of userSettingsKeys) {
743
- const value = userSettings[key];
744
- await userSettingsManager.setFieldValue(stringToUserSettingsFields(key), value);
745
- }
746
- }
747
-
748
- }
749
- }
750
-
751
- export default AuthenticationService.instance