@resolveio/server-lib 9.4.8 → 9.5.0

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/http/auth.js CHANGED
@@ -41,98 +41,125 @@ var user_collection_1 = require("../collections/user.collection");
41
41
  var jwt = require("jsonwebtoken");
42
42
  var handlebars = require("handlebars");
43
43
  var __1 = require("..");
44
+ var mongo_manager_1 = require("../managers/mongo.manager");
44
45
  var simpl_schema_1 = require("simpl-schema");
45
46
  var bodyParser = require("body-parser");
46
47
  var AuthenticationContext = require('adal-node').AuthenticationContext;
48
+ var axios_1 = require("axios");
47
49
  function setupAuthRoutes(mainServer, app, serverConfig) {
48
50
  var _this = this;
49
- app.post('/loginOffice365', bodyParser.json(), function (request, response) { return __awaiter(_this, void 0, void 0, function () {
50
- var body, schema, user_1, authorityHostUrl, tenant, authorityUrl, applicationId, resource, context;
51
+ app.post('/login365', bodyParser.json(), function (request, response) { return __awaiter(_this, void 0, void 0, function () {
52
+ var body, schema;
53
+ var _this = this;
51
54
  return __generator(this, function (_a) {
52
- switch (_a.label) {
53
- case 0:
54
- if (!(request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'])) return [3 /*break*/, 1];
55
- response.send(JSON.stringify({
56
- error: true,
57
- result: 'Invalid header'
58
- }));
59
- return [3 /*break*/, 5];
60
- case 1:
61
- body = request.body;
62
- schema = new simpl_schema_1.default({
63
- username: {
64
- type: String
65
- },
66
- password: {
67
- type: String
68
- }
69
- });
70
- try {
71
- schema.validate(body);
72
- }
73
- catch (errors) {
74
- if (errors) {
75
- console.error('Error in HTTP Check (/login)', errors);
76
- __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\n\nData Being Checked\n' + JSON.stringify(body, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
77
- response.send(JSON.stringify({
78
- error: true,
79
- result: 'Invalid Parameters'
80
- }));
81
- return [2 /*return*/];
82
- }
55
+ if (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {
56
+ response.send(JSON.stringify({
57
+ error: true,
58
+ result: 'Invalid header'
59
+ }));
60
+ }
61
+ else {
62
+ body = request.body;
63
+ schema = new simpl_schema_1.default({
64
+ id_token: {
65
+ type: String
83
66
  }
84
- return [4 /*yield*/, user_collection_1.Users.findOne({ username: body.username })];
85
- case 2:
86
- user_1 = _a.sent();
87
- if (!!user_1) return [3 /*break*/, 4];
88
- return [4 /*yield*/, user_collection_1.Users.findOne({ email: body.username })];
89
- case 3:
90
- user_1 = _a.sent();
91
- _a.label = 4;
92
- case 4:
93
- if (!user_1) {
67
+ });
68
+ try {
69
+ schema.validate(body);
70
+ }
71
+ catch (errors) {
72
+ if (errors) {
73
+ console.error('Error in HTTP Check (/login)', errors);
74
+ __1.ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', __1.ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\n\nData Being Checked\n' + JSON.stringify(body, null, 2) + '\n\nErrors\n' + JSON.stringify(errors, null, 2));
94
75
  response.send(JSON.stringify({
95
76
  error: true,
96
- result: 'Invalid Username And Password'
77
+ result: 'Invalid Parameters'
97
78
  }));
98
79
  return [2 /*return*/];
99
80
  }
100
- authorityHostUrl = 'https://login.microsoftonline.com';
101
- tenant = '11469e8f-6494-4b70-b8cd-9e995ccb60c0';
102
- authorityUrl = authorityHostUrl + '/' + tenant;
103
- applicationId = '170ef8a2-77f3-4469-a383-0fe9567fb701';
104
- resource = '170ef8a2-77f3-4469-a383-0fe9567fb701';
105
- context = new AuthenticationContext(authorityUrl);
106
- context.acquireTokenWithUsernamePassword(resource, body.username, body.password, applicationId, function (err, token) {
107
- if (err) {
108
- // console.log('well that didn\'t work: ' + err.stack);
109
- response.send(JSON.stringify({
110
- error: true,
111
- result: 'Invalid Username And Password'
112
- }));
113
- return;
114
- }
115
- else {
116
- if (token) {
81
+ }
82
+ axios_1.default.get('https://jwt.ms/#' + body, {
83
+ headers: {
84
+ Accept: 'application/json, text/plain, */*'
85
+ }
86
+ }).then(function (resp) { return __awaiter(_this, void 0, void 0, function () {
87
+ var decodedJWT, user;
88
+ return __generator(this, function (_a) {
89
+ switch (_a.label) {
90
+ case 0:
91
+ decodedJWT = resp.data;
92
+ if (!(decodedJWT && decodedJWT.name && decodedJWT.preferred_username && decodedJWT.oid)) return [3 /*break*/, 4];
93
+ return [4 /*yield*/, user_collection_1.Users.findOne({ 'other.ms_oid': decodedJWT.oid })];
94
+ case 1:
95
+ user = _a.sent();
96
+ if (!!user) return [3 /*break*/, 3];
97
+ user = {
98
+ _id: mongo_manager_1.objectIdHexString(),
99
+ __v: 0,
100
+ roles: {
101
+ super_admin: false,
102
+ approvals: [],
103
+ groups: [],
104
+ notifications: [],
105
+ miscs: []
106
+ },
107
+ username: decodedJWT.preferred_username,
108
+ email: decodedJWT.preferred_username,
109
+ fullname: decodedJWT.name,
110
+ active: true,
111
+ phonenumber: '',
112
+ readonly: false,
113
+ other: {
114
+ ms_oid: decodedJWT.oid
115
+ },
116
+ attempts: 0,
117
+ salt: jwt.sign({ now: (Date.now() - 1000).toString() }, serverConfig['JWT_SECRET'], {
118
+ expiresIn: 90 * 24 * 60 * 60 * 1000 // 90 days
119
+ }),
120
+ hash: jwt.sign({ now: (Date.now() + 1000).toString() }, serverConfig['JWT_SECRET'], {
121
+ expiresIn: 90 * 24 * 60 * 60 * 1000 // 90 days
122
+ }),
123
+ last: new Date(),
124
+ settings: null,
125
+ services: null
126
+ };
127
+ return [4 /*yield*/, user_collection_1.Users.create(user)];
128
+ case 2:
129
+ _a.sent();
130
+ _a.label = 3;
131
+ case 3:
117
132
  response.send(JSON.stringify({
118
133
  error: false,
119
134
  result: {
120
- token: jwt.sign({ id_user: user_1._id }, serverConfig['JWT_SECRET'], {
135
+ token: jwt.sign({ id_user: user._id }, serverConfig['JWT_SECRET'], {
121
136
  expiresIn: 90 * 24 * 60 * 60 * 1000 // 90 days
122
137
  })
123
138
  }
124
139
  }));
125
- }
140
+ return [3 /*break*/, 5];
141
+ case 4:
142
+ response.send(JSON.stringify({
143
+ error: true,
144
+ result: 'Invalid Azure Token'
145
+ }));
146
+ _a.label = 5;
147
+ case 5: return [2 /*return*/];
126
148
  }
127
149
  });
128
- _a.label = 5;
129
- case 5: return [2 /*return*/];
150
+ }); }, function (err) {
151
+ response.send(JSON.stringify({
152
+ error: true,
153
+ result: 'Invalid Azure Token'
154
+ }));
155
+ });
130
156
  }
157
+ return [2 /*return*/];
131
158
  });
132
159
  }); });
133
160
  // Login via HTTP, return refresh token if authenticated
134
161
  app.post('/login', bodyParser.json(), function (request, response) { return __awaiter(_this, void 0, void 0, function () {
135
- var body, schema, user_2, resAuth, emailData_1, emailData_2;
162
+ var body, schema, user_1, resAuth, emailData_1, emailData_2;
136
163
  return __generator(this, function (_a) {
137
164
  switch (_a.label) {
138
165
  case 0:
@@ -168,21 +195,21 @@ function setupAuthRoutes(mainServer, app, serverConfig) {
168
195
  }
169
196
  return [4 /*yield*/, user_collection_1.Users.findOne({ username: body.username })];
170
197
  case 2:
171
- user_2 = _a.sent();
172
- if (!!user_2) return [3 /*break*/, 4];
198
+ user_1 = _a.sent();
199
+ if (!!user_1) return [3 /*break*/, 4];
173
200
  return [4 /*yield*/, user_collection_1.Users.findOne({ email: body.username })];
174
201
  case 3:
175
- user_2 = _a.sent();
202
+ user_1 = _a.sent();
176
203
  _a.label = 4;
177
204
  case 4:
178
- if (!user_2) {
205
+ if (!user_1) {
179
206
  response.send(JSON.stringify({
180
207
  error: true,
181
208
  result: 'Invalid Username And Password'
182
209
  }));
183
210
  return [2 /*return*/];
184
211
  }
185
- return [4 /*yield*/, user_collection_1.Users.authenticate(user_2, body.password)];
212
+ return [4 /*yield*/, user_collection_1.Users.authenticate(user_1, body.password)];
186
213
  case 5:
187
214
  resAuth = _a.sent();
188
215
  if (!resAuth['error']) return [3 /*break*/, 6];
@@ -191,19 +218,19 @@ function setupAuthRoutes(mainServer, app, serverConfig) {
191
218
  error: true,
192
219
  result: resAuth['error'] + '. A password reset link has been sent to your email, please reset your password.'
193
220
  }));
194
- user_2.services['forgot_password'] = jwt.sign({ id_user: user_2._id }, serverConfig['JWT_SECRET']);
221
+ user_1.services['forgot_password'] = jwt.sign({ id_user: user_1._id }, serverConfig['JWT_SECRET']);
195
222
  emailData_1 = {
196
- userToChangePassword: user_2.fullname,
223
+ userToChangePassword: user_1.fullname,
197
224
  userWhoResetPassword: __1.ResolveIOServer.getClientName() + ' System',
198
- url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_2.services['forgot_password']
225
+ url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_1.services['forgot_password']
199
226
  };
200
- user_collection_1.Users.updateOne({ _id: user_2._id }, { $set: { services: user_2.services } }).then(function (resUp) {
227
+ user_collection_1.Users.updateOne({ _id: user_1._id }, { $set: { services: user_1.services } }).then(function (resUp) {
201
228
  mainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(function (html) {
202
229
  var template = handlebars.compile(html);
203
230
  handlebars.registerHelper('equals', function (a, b) {
204
231
  return a === b;
205
232
  });
206
- mainServer.getMethodManager().sendEmail(user_2.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_1));
233
+ mainServer.getMethodManager().sendEmail(user_1.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_1));
207
234
  }, function (errEmail) { return console.log(errEmail); });
208
235
  }, function (errUp) { });
209
236
  }
@@ -212,19 +239,19 @@ function setupAuthRoutes(mainServer, app, serverConfig) {
212
239
  error: true,
213
240
  result: 'A password reset link has been sent to your email, please reset your password.'
214
241
  }));
215
- user_2.services['forgot_password'] = jwt.sign({ id_user: user_2._id }, serverConfig['JWT_SECRET']);
242
+ user_1.services['forgot_password'] = jwt.sign({ id_user: user_1._id }, serverConfig['JWT_SECRET']);
216
243
  emailData_2 = {
217
- userToChangePassword: user_2.fullname,
244
+ userToChangePassword: user_1.fullname,
218
245
  userWhoResetPassword: __1.ResolveIOServer.getClientName() + ' System',
219
- url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_2.services['forgot_password']
246
+ url: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user_1.services['forgot_password']
220
247
  };
221
- user_collection_1.Users.updateOne({ _id: user_2._id }, { $set: { services: user_2.services } }).then(function (resUp) {
248
+ user_collection_1.Users.updateOne({ _id: user_1._id }, { $set: { services: user_1.services } }).then(function (resUp) {
222
249
  mainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(function (html) {
223
250
  var template = handlebars.compile(html);
224
251
  handlebars.registerHelper('equals', function (a, b) {
225
252
  return a === b;
226
253
  });
227
- mainServer.getMethodManager().sendEmail(user_2.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_2));
254
+ mainServer.getMethodManager().sendEmail(user_1.email, 'ResolveIO (' + __1.ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData_2));
228
255
  }, function (errEmail) { return console.log(errEmail); });
229
256
  }, function (err) { });
230
257
  }
package/http/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/http/auth.ts"],"names":[],"mappings":"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","file":"auth.js","sourcesContent":["import { Users } from '../collections/user.collection';\nimport * as jwt from 'jsonwebtoken';\nimport * as handlebars from 'handlebars';\nimport ResolveIOMainServer from '../server-app';\nimport { ResolveIOServer } from '..';\nimport { UserModel } from '../models/user.model';\nimport SimpleSchema from 'simpl-schema';\nimport * as bodyParser from 'body-parser';\nlet AuthenticationContext = require('adal-node').AuthenticationContext;\n\nexport function setupAuthRoutes(mainServer: ResolveIOMainServer, app, serverConfig) {\n\tapp.post('/loginOffice365', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tusername: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/login)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet user = await Users.findOne({username: body.username});\n\n\t\t\tif (!user) {\n\t\t\t\tuser = await Users.findOne({email: body.username});\n\t\t\t}\n\t\t\t\n\t\t\tif (!user) {\n\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\terror: true,\n\t\t\t\t\tresult: 'Invalid Username And Password'\n\t\t\t\t}));\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar authorityHostUrl = 'https://login.microsoftonline.com';\n\t\t\tvar tenant = '11469e8f-6494-4b70-b8cd-9e995ccb60c0'; // AAD Tenant name.\n\t\t\tvar authorityUrl = authorityHostUrl + '/' + tenant;\n\t\t\tvar applicationId = '170ef8a2-77f3-4469-a383-0fe9567fb701'; // Application Id of app registered under AAD.\n\t\t\t// var clientSecret = 'MnM1zGF.jGT40Z0Ce9x352~ouuV.VzQ_Rz'; // Secret generated for app. Read this environment variable.\n\t\t\tvar resource = '170ef8a2-77f3-4469-a383-0fe9567fb701'; // URI that identifies the resource for which the token is valid.\n\n\t\t\tvar context = new AuthenticationContext(authorityUrl);\n\n\t\t\tcontext.acquireTokenWithUsernamePassword(resource, body.username, body.password, applicationId, (err, token) => {\n\t\t\t\tif (err) {\n\t\t\t\t\t// console.log('well that didn\\'t work: ' + err.stack);\n\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Username And Password'\n\t\t\t\t\t}));\n\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (token) {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t// Login via HTTP, return refresh token if authenticated\n\tapp.post('/login', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tusername: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/login)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet user = await Users.findOne({username: body.username});\n\n\t\t\tif (!user) {\n\t\t\t\tuser = await Users.findOne({email: body.username});\n\t\t\t}\n\t\t\t\n\t\t\tif (!user) {\n\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\terror: true,\n\t\t\t\t\tresult: 'Invalid Username And Password'\n\t\t\t\t}));\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet resAuth = await Users.authenticate(user, body.password);\n\n\t\t\tif (resAuth['error']) {\n\t\t\t\tif (resAuth['error'] === 'Too Many Attempts') {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: resAuth['error'] + '. A password reset link has been sent to your email, please reset your password.'\n\t\t\t\t\t}));\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: user._id}, 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: ResolveIOServer.getClientName() + ' System',\n\t\t\t\t\t\turl: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t};\n\n\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(resUp => {\n\t\t\t\t\t\tmainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\t\tmainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\t\t\t}, errEmail => console.log(errEmail));\n\t\t\t\t\t}, errUp => {});\n\t\t\t\t}\n\t\t\t\telse if (resAuth['error'] === 'No Salt Value Stored') {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'A password reset link has been sent to your email, please reset your password.'\n\t\t\t\t\t}));\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: user._id}, 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: ResolveIOServer.getClientName() + ' System',\n\t\t\t\t\t\turl: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t};\n\n\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(resUp => {\n\t\t\t\t\t\tmainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\t\tmainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\t\t\t}, errEmail => console.log(errEmail));\n\t\t\t\t\t}, err => {});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: resAuth['error']\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (resAuth && resAuth['data'] && resAuth['data'].active) {\n\t\t\t\t\tawait Users.resetAttempts(resAuth['data']);\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: false,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\ttoken: jwt.sign({id_user: resAuth['data']._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} \n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tapp.post('/accessToken', bodyParser.json(), async function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\trefreshToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tappVersion: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/accessToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/accessToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\t\tjwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tUsers.findById(decoded['id_user']).then(async (user: UserModel) => {\n\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\t\tawait Users.resetAttempts(user);\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\t\n\t\t\telse {\n\t\t\t\tjwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tUsers.findById(decoded['id_user']).then(async (user: UserModel) => {\n\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\t\tawait Users.resetAttempts(user);\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tapp.post('/userWithEnrollmentToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tenrollmentToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/userWithEnrollmentToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithEnrollmentToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.enrollment': body.enrollmentToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}, {projection: {_id: 1, __v: 1, username: 1, active: 1}}).then((user) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/setUserWithEnrollmentToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tenrollmentToken: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/setUserWithEnrollmentToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithEnrollmentToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.enrollment': body.enrollmentToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}).then(async (user: UserModel) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tawait Users.setPassword(user, body.password);\n\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/userWithForgotPasswordToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tforgotPasswordToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/userWithForgotPasswordToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithForgotPasswordToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.forgot_password': body.forgotPasswordToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}, {projection: {_id: 1, __v: 1, username: 1, active: 1}}).then((user) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/setUserWithForgotPasswordToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tforgotPasswordToken: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/setUserWithForgotPasswordToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithForgotPasswordToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.forgot_password': body.forgotPasswordToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}).then(async (user: UserModel) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tawait Users.setPassword(user, body.password);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/resetPassword', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tusername: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/resetPassword)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/resetPassword' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet user = await Users.findOne({username: body.username});\n\n\t\t\tif (!user) {\n\t\t\t\tuser = await Users.findOne({email: body.username});\n\t\t\t}\n\t\t\t\n\t\t\tif (user) {\n\t\t\t\tmainServer.getMethodManager().callMethodInternal.call(mainServer.getMethodManager(), 'resetUserPassword', user._id);\n\t\t\t}\n\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: false,\n\t\t\t\tresult: ''\n\t\t\t}));\n\t\t}\n\t});\n}"]}
1
+ {"version":3,"sources":["../../src/http/auth.ts"],"names":[],"mappings":"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","file":"auth.js","sourcesContent":["import { Users } from '../collections/user.collection';\nimport * as jwt from 'jsonwebtoken';\nimport * as handlebars from 'handlebars';\nimport ResolveIOMainServer from '../server-app';\nimport { ResolveIOServer } from '..';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { UserModel } from '../models/user.model';\nimport SimpleSchema from 'simpl-schema';\nimport * as bodyParser from 'body-parser';\nlet AuthenticationContext = require('adal-node').AuthenticationContext;\nimport axios from 'axios';\n\nexport function setupAuthRoutes(mainServer: ResolveIOMainServer, app, serverConfig) {\n\tapp.post('/login365', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tid_token: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/login)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taxios.get('https://jwt.ms/#' + body, {\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: 'application/json, text/plain, */*'\n\t\t\t\t}\n\t\t\t}).then(async resp => {\n\t\t\t\tlet decodedJWT = resp.data;\n\n\t\t\t\tif (decodedJWT && decodedJWT.name && decodedJWT.preferred_username && decodedJWT.oid) {\n\t\t\t\t\tlet user = await Users.findOne({'other.ms_oid': decodedJWT.oid});\n\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tuser = {\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\troles: {\n\t\t\t\t\t\t\t\tsuper_admin: false,\n\t\t\t\t\t\t\t\tapprovals: [],\n\t\t\t\t\t\t\t\tgroups: [],\n\t\t\t\t\t\t\t\tnotifications: [],\n\t\t\t\t\t\t\t\tmiscs: []\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tusername: decodedJWT.preferred_username,\n\t\t\t\t\t\t\temail: decodedJWT.preferred_username,\n\t\t\t\t\t\t\tfullname: decodedJWT.name,\n\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\tphonenumber: '',\n\t\t\t\t\t\t\treadonly: false,\n\t\t\t\t\t\t\tother: {\n\t\t\t\t\t\t\t\tms_oid: decodedJWT.oid\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tattempts: 0,\n\t\t\t\t\t\t\tsalt: jwt.sign({now: (Date.now() - 1000).toString()}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\thash: jwt.sign({now: (Date.now() + 1000).toString()}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tlast: new Date(),\n\t\t\t\t\t\t\tsettings: null,\n\t\t\t\t\t\t\tservices: null\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tawait Users.create(user);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: false,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Azure Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\terror: true,\n\t\t\t\t\tresult: 'Invalid Azure Token'\n\t\t\t\t}));\n\t\t\t});\n\t\t}\n\t});\n\n\t// Login via HTTP, return refresh token if authenticated\n\tapp.post('/login', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tusername: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/login)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/login' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet user = await Users.findOne({username: body.username});\n\n\t\t\tif (!user) {\n\t\t\t\tuser = await Users.findOne({email: body.username});\n\t\t\t}\n\t\t\t\n\t\t\tif (!user) {\n\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\terror: true,\n\t\t\t\t\tresult: 'Invalid Username And Password'\n\t\t\t\t}));\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet resAuth = await Users.authenticate(user, body.password);\n\n\t\t\tif (resAuth['error']) {\n\t\t\t\tif (resAuth['error'] === 'Too Many Attempts') {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: resAuth['error'] + '. A password reset link has been sent to your email, please reset your password.'\n\t\t\t\t\t}));\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: user._id}, 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: ResolveIOServer.getClientName() + ' System',\n\t\t\t\t\t\turl: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t};\n\n\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(resUp => {\n\t\t\t\t\t\tmainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\t\tmainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\t\t\t}, errEmail => console.log(errEmail));\n\t\t\t\t\t}, errUp => {});\n\t\t\t\t}\n\t\t\t\telse if (resAuth['error'] === 'No Salt Value Stored') {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'A password reset link has been sent to your email, please reset your password.'\n\t\t\t\t\t}));\n\n\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: user._id}, 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: ResolveIOServer.getClientName() + ' System',\n\t\t\t\t\t\turl: serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t};\n\n\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(resUp => {\n\t\t\t\t\t\tmainServer.getMethodManager().readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t});\n\t\t\n\t\t\t\t\t\t\tmainServer.getMethodManager().sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\t\t\t}, errEmail => console.log(errEmail));\n\t\t\t\t\t}, err => {});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: resAuth['error']\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (resAuth && resAuth['data'] && resAuth['data'].active) {\n\t\t\t\t\tawait Users.resetAttempts(resAuth['data']);\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: false,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\ttoken: jwt.sign({id_user: resAuth['data']._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\texpiresIn : 90 * 24 * 60 * 60 * 1000 // 90 days\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} \n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tapp.post('/accessToken', bodyParser.json(), async function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\trefreshToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tappVersion: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/accessToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/accessToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\t\tjwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tUsers.findById(decoded['id_user']).then(async (user: UserModel) => {\n\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\t\tawait Users.resetAttempts(user);\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\t\n\t\t\telse {\n\t\t\t\tjwt.verify(body.refreshToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t}));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tUsers.findById(decoded['id_user']).then(async (user: UserModel) => {\n\t\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\t\tawait Users.resetAttempts(user);\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t\ttoken: jwt.sign({id_user: user._id}, serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tapp.post('/userWithEnrollmentToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tenrollmentToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/userWithEnrollmentToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithEnrollmentToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.enrollment': body.enrollmentToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}, {projection: {_id: 1, __v: 1, username: 1, active: 1}}).then((user) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/setUserWithEnrollmentToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tenrollmentToken: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/setUserWithEnrollmentToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithEnrollmentToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.enrollmentToken, serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.enrollment': body.enrollmentToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}).then(async (user: UserModel) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tawait Users.setPassword(user, body.password);\n\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/userWithForgotPasswordToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tforgotPasswordToken: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/userWithForgotPasswordToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/userWithForgotPasswordToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.forgot_password': body.forgotPasswordToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}, {projection: {_id: 1, __v: 1, username: 1, active: 1}}).then((user) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\tuser: user\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/setUserWithForgotPasswordToken', bodyParser.json(), function (request, response) {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_URL'] && request.headers.origin !== serverConfig['RESOLVEIO_SECONDARY_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tforgotPasswordToken: {\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\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/setUserWithForgotPasswordToken)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/setUserWithForgotPasswordToken' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tjwt.verify(body.forgotPasswordToken, serverConfig['JWT_SECRET'], async (err, decoded) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Token'\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tUsers.findOne({\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{_id: decoded['id_user']},\n\t\t\t\t\t\t\t{'services.forgot_password': body.forgotPasswordToken}\n\t\t\t\t\t\t]\n\t\t\t\t\t}).then(async (user: UserModel) => {\n\t\t\t\t\t\tif (user) {\n\t\t\t\t\t\t\tif (user.active) {\n\t\t\t\t\t\t\t\tawait Users.setPassword(user, body.password);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: false,\n\t\t\t\t\t\t\t\t\tresult: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\t\tresult: 'Account is Disabled'\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\t\tresult: 'Invalid User'\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}, error => {\n\t\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tresult: 'Invalid Mongo Get User'\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\tapp.post('/resetPassword', bodyParser.json(), async (request, response) => {\n\t\tif (request.headers.origin !== serverConfig['ROOT_URL'] && request.headers.origin !== serverConfig['SEC_ROOT_URL']) {\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: true,\n\t\t\t\tresult: 'Invalid header'\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tlet body = request.body;\n\n\t\t\tlet schema = new SimpleSchema({\n\t\t\t\tusername: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\ttry {\n\t\t\t\tschema.validate(body);\n\t\t\t}\n\t\t\tcatch (errors) {\n\t\t\t\tif (errors) {\n\t\t\t\t\tconsole.error('Error in HTTP Check (/resetPassword)', errors);\n\t\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getClientName() + 'HTTP - Error Detected', 'Match Error On HTTP ' + '/resetPassword' + '\\n\\nData Being Checked\\n' + JSON.stringify(body, null, 2) + '\\n\\nErrors\\n' + JSON.stringify(errors, null, 2));\n\t\n\t\t\t\t\tresponse.send(JSON.stringify({\n\t\t\t\t\t\terror: true,\n\t\t\t\t\t\tresult: 'Invalid Parameters'\n\t\t\t\t\t}));\n\t\t\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet user = await Users.findOne({username: body.username});\n\n\t\t\tif (!user) {\n\t\t\t\tuser = await Users.findOne({email: body.username});\n\t\t\t}\n\t\t\t\n\t\t\tif (user) {\n\t\t\t\tmainServer.getMethodManager().callMethodInternal.call(mainServer.getMethodManager(), 'resetUserPassword', user._id);\n\t\t\t}\n\n\t\t\tresponse.send(JSON.stringify({\n\t\t\t\terror: false,\n\t\t\t\tresult: ''\n\t\t\t}));\n\t\t}\n\t});\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "9.4.8",
3
+ "version": "9.5.0",
4
4
  "description": "",
5
5
  "main": "index.ts",
6
6
  "scripts": {