@resolveio/server-lib 20.12.21 → 20.12.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.
- package/methods/accounts.js +22 -6
- package/methods/accounts.js.map +1 -1
- package/package.json +1 -1
package/methods/accounts.js
CHANGED
|
@@ -347,7 +347,7 @@ function loadAccountMethods(methodManager) {
|
|
|
347
347
|
}),
|
|
348
348
|
function: function (stickySelects, id_user) {
|
|
349
349
|
return __awaiter(this, void 0, void 0, function () {
|
|
350
|
-
var targetUserId,
|
|
350
|
+
var targetUserId, attempts, mergedStickySelects, nextVersion, user, nextUser, res;
|
|
351
351
|
var _a;
|
|
352
352
|
return __generator(this, function (_b) {
|
|
353
353
|
switch (_b.label) {
|
|
@@ -356,8 +356,14 @@ function loadAccountMethods(methodManager) {
|
|
|
356
356
|
if (!targetUserId) {
|
|
357
357
|
throw new Error('Error in Save User Sticky Selects: Invalid User');
|
|
358
358
|
}
|
|
359
|
-
|
|
359
|
+
attempts = 0;
|
|
360
|
+
mergedStickySelects = [];
|
|
361
|
+
nextVersion = 0;
|
|
362
|
+
_b.label = 1;
|
|
360
363
|
case 1:
|
|
364
|
+
if (!(attempts < 5)) return [3 /*break*/, 4];
|
|
365
|
+
return [4 /*yield*/, user_collection_1.Users.findOne({ _id: targetUserId })];
|
|
366
|
+
case 2:
|
|
361
367
|
user = _b.sent();
|
|
362
368
|
if (!user) {
|
|
363
369
|
throw new Error('Error in Save User Sticky Selects: Invalid User');
|
|
@@ -365,12 +371,22 @@ function loadAccountMethods(methodManager) {
|
|
|
365
371
|
mergedStickySelects = mergeStickySelects((_a = user.other) === null || _a === void 0 ? void 0 : _a.stickySelects, stickySelects);
|
|
366
372
|
nextUser = (0, common_2.deepCopy)(user);
|
|
367
373
|
nextUser.other = __assign(__assign({}, (nextUser.other || {})), { stickySelects: mergedStickySelects });
|
|
368
|
-
return [4 /*yield*/, user_collection_1.Users.replaceOne({ _id: nextUser._id }, nextUser, {}, false, false, user)];
|
|
369
|
-
case
|
|
370
|
-
_b.sent();
|
|
374
|
+
return [4 /*yield*/, user_collection_1.Users.replaceOne({ _id: nextUser._id, __v: user.__v }, nextUser, {}, false, false, user)];
|
|
375
|
+
case 3:
|
|
376
|
+
res = _b.sent();
|
|
377
|
+
if (res && res.modifiedCount) {
|
|
378
|
+
nextVersion = (user.__v || 0) + 1;
|
|
379
|
+
return [3 /*break*/, 4];
|
|
380
|
+
}
|
|
381
|
+
attempts += 1;
|
|
382
|
+
return [3 /*break*/, 1];
|
|
383
|
+
case 4:
|
|
384
|
+
if (attempts >= 5) {
|
|
385
|
+
throw new Error('Error in Save User Sticky Selects: Could not acquire latest version');
|
|
386
|
+
}
|
|
371
387
|
return [2 /*return*/, {
|
|
372
388
|
stickySelects: mergedStickySelects,
|
|
373
|
-
__v:
|
|
389
|
+
__v: nextVersion
|
|
374
390
|
}];
|
|
375
391
|
}
|
|
376
392
|
});
|
package/methods/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/accounts.ts"],"names":[],"mappings":"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","file":"accounts.js","sourcesContent":["import * as handlebars from 'handlebars';\nimport * as jwt from 'jsonwebtoken';\nimport SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { UserModel } from '../models/user.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nimport { ErrorReporter } from '../util/error-reporter';\nimport { deepCopy } from '../util/common';\n\ninterface StickySelectOption {\n\tvalue: any;\n\tlabel?: string;\n}\n\ninterface StickySelectPreference {\n\tkey: string;\n\tdefaultValue: any;\n\tdefaultLabel?: string;\n\tmultiple?: boolean;\n\toptions?: StickySelectOption[];\n\tupdatedAt?: string;\n}\n\nexport function loadAccountMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tincorrectUser: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\told_user: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tnew_user: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tclient_subs: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'client_subs.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(old_user, new_user, client_subs) {\n\t\t\t\tif (ResolveIOServer.getMainServer()) {\n\t\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(this.id_ws);\n\t\t\t\t\tconst correlationId = objectIdHexString();\n\t\t\t\t\tawait ErrorReporter.report({\n\t\t\t\t\t\tsourceApp: 'method-accounts',\n\t\t\t\t\t\tmessage: 'SERVER - WRONG USER Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\t\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\t\t\t\tclientName: this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tws,\n\t\t\t\t\t\t\tuserMethod: this.user,\n\t\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\t\tactiveSubs: ResolveIOServer.getMainServer().getSubscriptionManager().getActiveSubscriptions(),\n\t\t\t\t\t\t\told_user,\n\t\t\t\t\t\t\tnew_user,\n\t\t\t\t\t\t\tclient_subs\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tcontext: 'incorrectUser',\n\t\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn Promise.resolve(null);\n\t\t\t}\n\t\t},\n\t\treloadWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Reload WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\treconnectWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Reconnect WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdisconnectWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Disconnect WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcreateUserAndEmailEnrollment: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tnewUser: {\n\t\t\t\t\ttype: Users['simplschema']\n\t\t\t\t},\n\t\t\t\tsendEnrollmentEmail: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(newUser: UserModel, sendEnrollmentEmail = true) {\n\t\t\t\tif (newUser.username.toLocaleLowerCase() === 'admin') {\n\t\t\t\t\tthrow new Error('Error in Create User And Email Enrollment: Username can not be admin');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet otherUser = await Users.findOne({\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{username: newUser.username.toLocaleLowerCase()},\n\t\t\t\t\t\t\t{email: newUser.email.toLocaleLowerCase()}\n\t\t\t\t\t\t]\n\t\t\t\t\t});\n\n\t\t\t\t\tif (otherUser) {\n\t\t\t\t\t\tthrow new Error('Error in Create User And Email Enrollment: Username/Email is already used');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnewUser._id = objectIdHexString();\n\n\t\t\t\tnewUser.services = {\n\t\t\t\t\tenrollment: jwt.sign({id_user: newUser._id}, this.serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t})\n\t\t\t\t};\n\n\t\t\t\tnewUser.is_customer = false;\n\t\t\t\tawait Users.insertOne(newUser);\n\n\t\t\t\tif (sendEnrollmentEmail) {\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tfullname: newUser.fullname,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\turl: (this.serverConfig['ROOT_URL'] + '/enroll-account?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + newUser.services['enrollment'])\n\t\t\t\t\t};\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet html = this.readFile('email-templates/enrollment.html');\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tawait this.sendEmail(newUser.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Enrollment Email', '', template(emailData), null, null, '');\n\n\t\t\t\t\t\treturn newUser;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Create User And Email Enrollment: email-templates/enrollment.html - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn newUser;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(userId: string) {\n\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\n\t\t\t\tif (user) {\n\t\t\t\t\tif (!user.services) {\n\t\t\t\t\t\tuser.services = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: userId}, this.serverConfig['JWT_SECRET']);\n\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tuserToChangePassword: user.fullname,\n\t\t\t\t\t\tuserWhoResetPassword: this.user,\n\t\t\t\t\t\turl: (this.serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + user.services['forgot_password'])\n\t\t\t\t\t};\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {services: user.services, attempts: 0}});\n\t\t\t\t\t\tlet html = this.readFile('email-templates/forgot-password.html');\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tawait this.sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData), null, null, '');\n\t\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Reset User Password: email-templates/forgot-password.html - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new Error('Error in Reset User Password: Invalid User');\n\t\t\t}\n\t\t},\n\t\tsetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tpassword: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(userId: string, password: string) {\n\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\n\t\t\t\tif (user && !user.roles.super_admin) {\n\t\t\t\t\tawait Users.setPassword(user, password);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Set User Password: Invalid User');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveUserStickySelects: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tstickySelects: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'stickySelects.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tid_user: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(stickySelects: StickySelectPreference[], id_user?: string) {\n\t\t\t\tconst targetUserId = id_user || this.id_user;\n\t\t\t\tif (!targetUserId) {\n\t\t\t\t\tthrow new Error('Error in Save User Sticky Selects: Invalid User');\n\t\t\t\t}\n\n\t\t\t\tconst user = await Users.findOne({_id: targetUserId});\n\t\t\t\tif (!user) {\n\t\t\t\t\tthrow new Error('Error in Save User Sticky Selects: Invalid User');\n\t\t\t\t}\n\n\t\t\t\tconst mergedStickySelects = mergeStickySelects(user.other?.stickySelects, stickySelects);\n\t\t\t\tconst nextUser: UserModel = deepCopy(user);\n\t\t\t\tnextUser.other = {...(nextUser.other || {}), stickySelects: mergedStickySelects};\n\n\t\t\t\tawait Users.replaceOne({_id: nextUser._id}, nextUser, {}, false, false, user);\n\n\t\t\t\treturn {\n\t\t\t\t\tstickySelects: mergedStickySelects,\n\t\t\t\t\t__v: nextUser.__v\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction mergeStickySelects(existingList: any, incomingList: StickySelectPreference[]): StickySelectPreference[] {\n\tconst existingMap = new Map<string, StickySelectPreference>();\n\n\tif (Array.isArray(existingList)) {\n\t\texistingList.forEach(entry => {\n\t\t\tconst normalized = normalizeStickyPreference(entry);\n\t\t\tif (normalized && normalized.key) {\n\t\t\t\texistingMap.set(normalized.key, normalized);\n\t\t\t}\n\t\t});\n\t}\n\n\tfor (let i = 0; i < incomingList.length; i++) {\n\t\tconst normalized = normalizeStickyPreference(incomingList[i]);\n\t\tif (!normalized || !normalized.key) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst prev = existingMap.get(normalized.key);\n\t\tconst mergedOptions = trimOptions(normalized.options && normalized.options.length\n\t\t\t? mergeOptions(prev?.options || [], normalized.options)\n\t\t\t: (prev?.options || []));\n\n\t\tlet defaultValue = normalized.defaultValue !== undefined ? normalized.defaultValue : (prev ? prev.defaultValue : null);\n\t\tif (defaultValue === undefined) {\n\t\t\tdefaultValue = null;\n\t\t}\n\n\t\tlet defaultLabel = cleanStickyLabel(normalized.defaultLabel);\n\t\tif (!defaultLabel && prev?.defaultLabel) {\n\t\t\tdefaultLabel = cleanStickyLabel(prev.defaultLabel);\n\t\t}\n\n\t\tif (defaultValue !== null && !defaultLabel) {\n\t\t\tconst optionLabel = mergedOptions.find(opt => valuesMatch(opt.value, defaultValue, !!normalized.multiple))?.label || '';\n\t\t\tdefaultLabel = cleanStickyLabel(optionLabel);\n\t\t}\n\n\t\texistingMap.set(normalized.key, {\n\t\t\tkey: normalized.key,\n\t\t\tdefaultValue,\n\t\t\tdefaultLabel,\n\t\t\tmultiple: normalized.multiple !== undefined ? normalized.multiple : !!prev?.multiple,\n\t\t\toptions: mergedOptions,\n\t\t\tupdatedAt: new Date().toISOString()\n\t\t});\n\t}\n\n\treturn Array.from(existingMap.values());\n}\n\nfunction mergeOptions(existing: StickySelectOption[], incoming: StickySelectOption[]): StickySelectOption[] {\n\tconst map = new Map<string, StickySelectOption>();\n\n\tnormalizeStickyOptions(existing).forEach(opt => {\n\t\tconst key = buildOptionKey(opt.value);\n\t\tmap.set(key, opt);\n\t});\n\n\tnormalizeStickyOptions(incoming).forEach(opt => {\n\t\tconst key = buildOptionKey(opt.value);\n\t\tmap.set(key, opt);\n\t});\n\n\treturn Array.from(map.values());\n}\n\nfunction trimOptions(options: StickySelectOption[]): StickySelectOption[] {\n\tif (!Array.isArray(options)) {\n\t\treturn [];\n\t}\n\n\tif (options.length <= STICKY_MAX_OPTIONS) {\n\t\treturn options;\n\t}\n\n\treturn options.slice(0, STICKY_MAX_OPTIONS);\n}\n\nfunction normalizeStickyPreference(entry: any): StickySelectPreference | null {\n\tif (!entry || !entry.key) {\n\t\treturn null;\n\t}\n\n\tconst normalized: StickySelectPreference = {\n\t\tkey: `${entry.key}`,\n\t\tdefaultValue: entry.defaultValue !== undefined ? entry.defaultValue : null,\n\t\tdefaultLabel: cleanStickyLabel(entry.defaultLabel),\n\t\tmultiple: !!entry.multiple,\n\t\toptions: normalizeStickyOptions(entry.options),\n\t\tupdatedAt: entry.updatedAt\n\t};\n\n\treturn normalized;\n}\n\nfunction normalizeStickyOptions(options: any): StickySelectOption[] {\n\tif (Array.isArray(options)) {\n\t\treturn options\n\t\t\t.map(opt => normalizeStickyOption(opt))\n\t\t\t.filter(opt => !!opt) as StickySelectOption[];\n\t}\n\n\tif (options && typeof options === 'object') {\n\t\treturn Object.keys(options)\n\t\t\t.sort()\n\t\t\t.map(key => normalizeStickyOption(options[key]))\n\t\t\t.filter(opt => !!opt) as StickySelectOption[];\n\t}\n\n\treturn [];\n}\n\nfunction normalizeStickyOption(option: any): StickySelectOption | null {\n\tif (!option || option.value === undefined) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tvalue: option.value,\n\t\tlabel: cleanStickyLabel(option.label)\n\t};\n}\n\nfunction cleanStickyLabel(label: string | undefined): string {\n\tif (!label) {\n\t\treturn '';\n\t}\n\n\tconst trimmed = `${label}`.trim();\n\tif (!trimmed || trimmed.toLowerCase() === 'loading...') {\n\t\treturn '';\n\t}\n\n\treturn trimmed;\n}\n\nfunction buildOptionKey(value: any): string {\n\tif (value === null) {\n\t\treturn 'null';\n\t}\n\n\tif (value === undefined) {\n\t\treturn 'undefined';\n\t}\n\n\tif (typeof value === 'object') {\n\t\ttry {\n\t\t\treturn JSON.stringify(value);\n\t\t}\n\t\tcatch {\n\t\t\treturn `${value}`;\n\t\t}\n\t}\n\n\treturn `${value}`;\n}\n\nfunction valuesMatch(a: any, b: any, multiple: boolean): boolean {\n\tif (multiple) {\n\t\tconst arrA = Array.isArray(a) ? a : [];\n\t\tconst arrB = Array.isArray(b) ? b : [];\n\n\t\tif (arrA.length !== arrB.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn arrA.every(item => arrB.some(candidate => buildOptionKey(candidate) === buildOptionKey(item)));\n\t}\n\n\treturn buildOptionKey(a) === buildOptionKey(b);\n}\nconst STICKY_MAX_OPTIONS = 200;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/accounts.ts"],"names":[],"mappings":"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","file":"accounts.js","sourcesContent":["import * as handlebars from 'handlebars';\nimport * as jwt from 'jsonwebtoken';\nimport SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { UserModel } from '../models/user.model';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nimport { ErrorReporter } from '../util/error-reporter';\nimport { deepCopy } from '../util/common';\n\ninterface StickySelectOption {\n\tvalue: any;\n\tlabel?: string;\n}\n\ninterface StickySelectPreference {\n\tkey: string;\n\tdefaultValue: any;\n\tdefaultLabel?: string;\n\tmultiple?: boolean;\n\toptions?: StickySelectOption[];\n\tupdatedAt?: string;\n}\n\nexport function loadAccountMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tincorrectUser: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\told_user: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tnew_user: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tclient_subs: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'client_subs.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(old_user, new_user, client_subs) {\n\t\t\t\tif (ResolveIOServer.getMainServer()) {\n\t\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(this.id_ws);\n\t\t\t\t\tconst correlationId = objectIdHexString();\n\t\t\t\t\tawait ErrorReporter.report({\n\t\t\t\t\t\tsourceApp: 'method-accounts',\n\t\t\t\t\t\tmessage: 'SERVER - WRONG USER Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\t\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\t\t\t\tclientName: this.serverConfig['CLIENT_NAME'],\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\tws,\n\t\t\t\t\t\t\tuserMethod: this.user,\n\t\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\t\tactiveSubs: ResolveIOServer.getMainServer().getSubscriptionManager().getActiveSubscriptions(),\n\t\t\t\t\t\t\told_user,\n\t\t\t\t\t\t\tnew_user,\n\t\t\t\t\t\t\tclient_subs\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\tcontext: 'incorrectUser',\n\t\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcorrelationId\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn Promise.resolve(null);\n\t\t\t}\n\t\t},\n\t\treloadWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Reload WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\treconnectWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Reconnect WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdisconnectWS: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: async function(id_ws) {\n\t\t\t\tlet ws = ResolveIOServer.getMainServer().getWebSocketManager().getWebSocket(id_ws);\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().unsubscribeWS(ws);\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Disconnect WS: No WS');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcreateUserAndEmailEnrollment: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tnewUser: {\n\t\t\t\t\ttype: Users['simplschema']\n\t\t\t\t},\n\t\t\t\tsendEnrollmentEmail: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(newUser: UserModel, sendEnrollmentEmail = true) {\n\t\t\t\tif (newUser.username.toLocaleLowerCase() === 'admin') {\n\t\t\t\t\tthrow new Error('Error in Create User And Email Enrollment: Username can not be admin');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet otherUser = await Users.findOne({\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{username: newUser.username.toLocaleLowerCase()},\n\t\t\t\t\t\t\t{email: newUser.email.toLocaleLowerCase()}\n\t\t\t\t\t\t]\n\t\t\t\t\t});\n\n\t\t\t\t\tif (otherUser) {\n\t\t\t\t\t\tthrow new Error('Error in Create User And Email Enrollment: Username/Email is already used');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnewUser._id = objectIdHexString();\n\n\t\t\t\tnewUser.services = {\n\t\t\t\t\tenrollment: jwt.sign({id_user: newUser._id}, this.serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t})\n\t\t\t\t};\n\n\t\t\t\tnewUser.is_customer = false;\n\t\t\t\tawait Users.insertOne(newUser);\n\n\t\t\t\tif (sendEnrollmentEmail) {\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tfullname: newUser.fullname,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\turl: (this.serverConfig['ROOT_URL'] + '/enroll-account?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + newUser.services['enrollment'])\n\t\t\t\t\t};\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet html = this.readFile('email-templates/enrollment.html');\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tawait this.sendEmail(newUser.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Enrollment Email', '', template(emailData), null, null, '');\n\n\t\t\t\t\t\treturn newUser;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Create User And Email Enrollment: email-templates/enrollment.html - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn newUser;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(userId: string) {\n\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\n\t\t\t\tif (user) {\n\t\t\t\t\tif (!user.services) {\n\t\t\t\t\t\tuser.services = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: userId}, this.serverConfig['JWT_SECRET']);\n\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tuserToChangePassword: user.fullname,\n\t\t\t\t\t\tuserWhoResetPassword: this.user,\n\t\t\t\t\t\turl: (this.serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + user.services['forgot_password'])\n\t\t\t\t\t};\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {services: user.services, attempts: 0}});\n\t\t\t\t\t\tlet html = this.readFile('email-templates/forgot-password.html');\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tawait this.sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData), null, null, '');\n\t\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Reset User Password: email-templates/forgot-password.html - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new Error('Error in Reset User Password: Invalid User');\n\t\t\t}\n\t\t},\n\t\tsetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tpassword: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(userId: string, password: string) {\n\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\n\t\t\t\tif (user && !user.roles.super_admin) {\n\t\t\t\t\tawait Users.setPassword(user, password);\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error('Error in Set User Password: Invalid User');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveUserStickySelects: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tstickySelects: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'stickySelects.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tid_user: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(stickySelects: StickySelectPreference[], id_user?: string) {\n\t\t\t\tconst targetUserId = id_user || this.id_user;\n\t\t\t\tif (!targetUserId) {\n\t\t\t\t\tthrow new Error('Error in Save User Sticky Selects: Invalid User');\n\t\t\t\t}\n\n\t\t\t\tlet attempts = 0;\n\t\t\t\tlet mergedStickySelects: StickySelectPreference[] = [];\n\t\t\t\tlet nextVersion = 0;\n\n\t\t\t\twhile (attempts < 5) {\n\t\t\t\t\tconst user = await Users.findOne({_id: targetUserId});\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tthrow new Error('Error in Save User Sticky Selects: Invalid User');\n\t\t\t\t\t}\n\n\t\t\t\t\tmergedStickySelects = mergeStickySelects(user.other?.stickySelects, stickySelects);\n\t\t\t\t\tconst nextUser: UserModel = deepCopy(user);\n\t\t\t\t\tnextUser.other = {...(nextUser.other || {}), stickySelects: mergedStickySelects};\n\n\t\t\t\t\tconst res: any = await Users.replaceOne({_id: nextUser._id, __v: user.__v} as any, nextUser, {}, false, false, user);\n\t\t\t\t\tif (res && res.modifiedCount) {\n\t\t\t\t\t\tnextVersion = (user.__v || 0) + 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tattempts += 1;\n\t\t\t\t}\n\n\t\t\t\tif (attempts >= 5) {\n\t\t\t\t\tthrow new Error('Error in Save User Sticky Selects: Could not acquire latest version');\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tstickySelects: mergedStickySelects,\n\t\t\t\t\t__v: nextVersion\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction mergeStickySelects(existingList: any, incomingList: StickySelectPreference[]): StickySelectPreference[] {\n\tconst existingMap = new Map<string, StickySelectPreference>();\n\n\tif (Array.isArray(existingList)) {\n\t\texistingList.forEach(entry => {\n\t\t\tconst normalized = normalizeStickyPreference(entry);\n\t\t\tif (normalized && normalized.key) {\n\t\t\t\texistingMap.set(normalized.key, normalized);\n\t\t\t}\n\t\t});\n\t}\n\n\tfor (let i = 0; i < incomingList.length; i++) {\n\t\tconst normalized = normalizeStickyPreference(incomingList[i]);\n\t\tif (!normalized || !normalized.key) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst prev = existingMap.get(normalized.key);\n\t\tconst mergedOptions = trimOptions(normalized.options && normalized.options.length\n\t\t\t? mergeOptions(prev?.options || [], normalized.options)\n\t\t\t: (prev?.options || []));\n\n\t\tlet defaultValue = normalized.defaultValue !== undefined ? normalized.defaultValue : (prev ? prev.defaultValue : null);\n\t\tif (defaultValue === undefined) {\n\t\t\tdefaultValue = null;\n\t\t}\n\n\t\tlet defaultLabel = cleanStickyLabel(normalized.defaultLabel);\n\t\tif (!defaultLabel && prev?.defaultLabel) {\n\t\t\tdefaultLabel = cleanStickyLabel(prev.defaultLabel);\n\t\t}\n\n\t\tif (defaultValue !== null && !defaultLabel) {\n\t\t\tconst optionLabel = mergedOptions.find(opt => valuesMatch(opt.value, defaultValue, !!normalized.multiple))?.label || '';\n\t\t\tdefaultLabel = cleanStickyLabel(optionLabel);\n\t\t}\n\n\t\texistingMap.set(normalized.key, {\n\t\t\tkey: normalized.key,\n\t\t\tdefaultValue,\n\t\t\tdefaultLabel,\n\t\t\tmultiple: normalized.multiple !== undefined ? normalized.multiple : !!prev?.multiple,\n\t\t\toptions: mergedOptions,\n\t\t\tupdatedAt: new Date().toISOString()\n\t\t});\n\t}\n\n\treturn Array.from(existingMap.values());\n}\n\nfunction mergeOptions(existing: StickySelectOption[], incoming: StickySelectOption[]): StickySelectOption[] {\n\tconst map = new Map<string, StickySelectOption>();\n\n\tnormalizeStickyOptions(existing).forEach(opt => {\n\t\tconst key = buildOptionKey(opt.value);\n\t\tmap.set(key, opt);\n\t});\n\n\tnormalizeStickyOptions(incoming).forEach(opt => {\n\t\tconst key = buildOptionKey(opt.value);\n\t\tmap.set(key, opt);\n\t});\n\n\treturn Array.from(map.values());\n}\n\nfunction trimOptions(options: StickySelectOption[]): StickySelectOption[] {\n\tif (!Array.isArray(options)) {\n\t\treturn [];\n\t}\n\n\tif (options.length <= STICKY_MAX_OPTIONS) {\n\t\treturn options;\n\t}\n\n\treturn options.slice(0, STICKY_MAX_OPTIONS);\n}\n\nfunction normalizeStickyPreference(entry: any): StickySelectPreference | null {\n\tif (!entry || !entry.key) {\n\t\treturn null;\n\t}\n\n\tconst normalized: StickySelectPreference = {\n\t\tkey: `${entry.key}`,\n\t\tdefaultValue: entry.defaultValue !== undefined ? entry.defaultValue : null,\n\t\tdefaultLabel: cleanStickyLabel(entry.defaultLabel),\n\t\tmultiple: !!entry.multiple,\n\t\toptions: normalizeStickyOptions(entry.options),\n\t\tupdatedAt: entry.updatedAt\n\t};\n\n\treturn normalized;\n}\n\nfunction normalizeStickyOptions(options: any): StickySelectOption[] {\n\tif (Array.isArray(options)) {\n\t\treturn options\n\t\t\t.map(opt => normalizeStickyOption(opt))\n\t\t\t.filter(opt => !!opt) as StickySelectOption[];\n\t}\n\n\tif (options && typeof options === 'object') {\n\t\treturn Object.keys(options)\n\t\t\t.sort()\n\t\t\t.map(key => normalizeStickyOption(options[key]))\n\t\t\t.filter(opt => !!opt) as StickySelectOption[];\n\t}\n\n\treturn [];\n}\n\nfunction normalizeStickyOption(option: any): StickySelectOption | null {\n\tif (!option || option.value === undefined) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tvalue: option.value,\n\t\tlabel: cleanStickyLabel(option.label)\n\t};\n}\n\nfunction cleanStickyLabel(label: string | undefined): string {\n\tif (!label) {\n\t\treturn '';\n\t}\n\n\tconst trimmed = `${label}`.trim();\n\tif (!trimmed || trimmed.toLowerCase() === 'loading...') {\n\t\treturn '';\n\t}\n\n\treturn trimmed;\n}\n\nfunction buildOptionKey(value: any): string {\n\tif (value === null) {\n\t\treturn 'null';\n\t}\n\n\tif (value === undefined) {\n\t\treturn 'undefined';\n\t}\n\n\tif (typeof value === 'object') {\n\t\ttry {\n\t\t\treturn JSON.stringify(value);\n\t\t}\n\t\tcatch {\n\t\t\treturn `${value}`;\n\t\t}\n\t}\n\n\treturn `${value}`;\n}\n\nfunction valuesMatch(a: any, b: any, multiple: boolean): boolean {\n\tif (multiple) {\n\t\tconst arrA = Array.isArray(a) ? a : [];\n\t\tconst arrB = Array.isArray(b) ? b : [];\n\n\t\tif (arrA.length !== arrB.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn arrA.every(item => arrB.some(candidate => buildOptionKey(candidate) === buildOptionKey(item)));\n\t}\n\n\treturn buildOptionKey(a) === buildOptionKey(b);\n}\nconst STICKY_MAX_OPTIONS = 200;\n"]}
|