aloux-iam 0.0.116 → 0.0.117
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/lib/controllers/label.js +82 -0
- package/lib/controllers/log.js +268 -0
- package/lib/controllers/user.js +34 -2
- package/lib/models/Label.js +13 -0
- package/lib/models/Log.js +11 -0
- package/lib/router.js +22 -0
- package/lib/services/auth.js +11 -9
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const Label = require("../models/Label");
|
|
2
|
+
const self = module.exports;
|
|
3
|
+
|
|
4
|
+
self.create = async (req, res) => {
|
|
5
|
+
try {
|
|
6
|
+
const label = new Label(req.body);
|
|
7
|
+
label.createdAt = new Date().getTime();
|
|
8
|
+
label.status = "Activo";
|
|
9
|
+
await label.save();
|
|
10
|
+
res.status(201).send(label);
|
|
11
|
+
} catch (error) {
|
|
12
|
+
res.status(400).send({ error: error.message });
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
self.update = async (req, resp) => {
|
|
17
|
+
try {
|
|
18
|
+
await new Label(req.body).validate();
|
|
19
|
+
const _id = req.params.LABEL_ID;
|
|
20
|
+
const count = await Label.findOne({ _id }).countDocuments();
|
|
21
|
+
if (!count) throw new Error("Upss! No se encontró el registro");
|
|
22
|
+
req.body.lastUpdate = new Date().getTime();
|
|
23
|
+
const result = await Label.updateOne({ _id }, req.body);
|
|
24
|
+
resp.status(200).send(req.body);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
resp.status(400).send({ error: error.message });
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
self.status = async (req, resp) => {
|
|
30
|
+
try {
|
|
31
|
+
const _id = req.params.LABEL_ID;
|
|
32
|
+
const user = await Label.findOne({ _id });
|
|
33
|
+
if (!user) throw new Error("Upss! No se encontró el Elemento");
|
|
34
|
+
user.status = req.body.status;
|
|
35
|
+
user.lastUpdate = new Date().getTime();
|
|
36
|
+
const result = await user.save();
|
|
37
|
+
resp.status(200).send(result);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
resp.status(400).send({ error: error.message });
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
self.retrieve = async (req, res) => {
|
|
43
|
+
try {
|
|
44
|
+
const consulta = await Label.find({}).sort({ index: 1 });
|
|
45
|
+
if (!consulta) res.status(404).send();
|
|
46
|
+
res.status(200).send(consulta);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
res.status(400).send(error);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
self.get = async (req, res) => {
|
|
53
|
+
try {
|
|
54
|
+
const _id = req.params.LABEL_ID;
|
|
55
|
+
const label = await Label.findOne({ _id });
|
|
56
|
+
if (!label) res.status(404).send();
|
|
57
|
+
res.status(200).send(label);
|
|
58
|
+
} catch (error) {
|
|
59
|
+
res.status(400).send(error);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
self.delete = async (req, res) => {
|
|
64
|
+
try {
|
|
65
|
+
const _id = req.params.LABEL_ID;
|
|
66
|
+
const response = await Label.deleteOne({ _id });
|
|
67
|
+
if (!response.deletedCount)
|
|
68
|
+
res.status(404).send({ error: "El registro no existe" });
|
|
69
|
+
else res.status(200).send({});
|
|
70
|
+
} catch (error) {
|
|
71
|
+
res.status(400).send({ error: error.message });
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
self.count = async (req, res) => {
|
|
76
|
+
try {
|
|
77
|
+
let result = await Label.find({}).countDocuments();
|
|
78
|
+
res.status(200).send({ count: result });
|
|
79
|
+
} catch (error) {
|
|
80
|
+
res.status(400).send({ error: error.message });
|
|
81
|
+
}
|
|
82
|
+
};
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
const Log = require("../models/Log");
|
|
2
|
+
const Label = require("../models/Label");
|
|
3
|
+
const self = module.exports;
|
|
4
|
+
|
|
5
|
+
self.create = async (req, res) => {
|
|
6
|
+
try {
|
|
7
|
+
const log = new Log(req.body);
|
|
8
|
+
log.createdAt = new Date().getTime();
|
|
9
|
+
log._user = req.user._id;
|
|
10
|
+
const label = await Label.findOne(
|
|
11
|
+
{ label: req.body.label },
|
|
12
|
+
{ _id: 1 }
|
|
13
|
+
).lean();
|
|
14
|
+
if (label) {
|
|
15
|
+
log._label = label._id;
|
|
16
|
+
await log.save();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
res.status(201).send(log);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
res.status(400).send({ error: error.message });
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
self.update = async (req, resp) => {
|
|
26
|
+
try {
|
|
27
|
+
await new Log(req.body).validate();
|
|
28
|
+
const _id = req.params.LOG_ID;
|
|
29
|
+
const count = await Log.findOne({ _id }).countDocuments();
|
|
30
|
+
if (!count) throw new Error("Upss! No se encontró el registro");
|
|
31
|
+
req.body.lastUpdate = new Date().getTime();
|
|
32
|
+
const result = await Log.updateOne({ _id }, req.body);
|
|
33
|
+
resp.status(200).send(req.body);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
resp.status(400).send({ error: error.message });
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
self.status = async (req, resp) => {
|
|
39
|
+
try {
|
|
40
|
+
const _id = req.params.LOG_ID;
|
|
41
|
+
const user = await Log.findOne({ _id });
|
|
42
|
+
if (!user) throw new Error("Upss! No se encontró el Elemento");
|
|
43
|
+
user.status = req.body.status;
|
|
44
|
+
user.lastUpdate = new Date().getTime();
|
|
45
|
+
const result = await user.save();
|
|
46
|
+
resp.status(200).send(result);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
resp.status(400).send({ error: error.message });
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
self.retrieve = async (req, res) => {
|
|
52
|
+
try {
|
|
53
|
+
let query = {};
|
|
54
|
+
|
|
55
|
+
if (req.body.users.length) {
|
|
56
|
+
query = {
|
|
57
|
+
_user: { $in: req.body.users },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const consulta = await Log.find(query)
|
|
62
|
+
.populate([
|
|
63
|
+
{ path: "_label" },
|
|
64
|
+
{ path: "_user", select: { name: 1, lastName: 1 } },
|
|
65
|
+
])
|
|
66
|
+
.sort({ createdAt: 1 })
|
|
67
|
+
.lean();
|
|
68
|
+
|
|
69
|
+
const response = {
|
|
70
|
+
dataset0: { field: "Total de operaciones", count: consulta.length },
|
|
71
|
+
dataset1: consulta,
|
|
72
|
+
dataset2: processDataset2(consulta),
|
|
73
|
+
dataset3: processDataset3(consulta),
|
|
74
|
+
dataset4: processDataset4(consulta),
|
|
75
|
+
dataset5: processDataset5(consulta),
|
|
76
|
+
dataset6: processDataset6(consulta),
|
|
77
|
+
dataset7: processDataset7(consulta),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
res.status(200).send(response);
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.error(error);
|
|
83
|
+
res.status(400).send(error);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
function formatDate(date) {
|
|
88
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
89
|
+
const monthNames = [
|
|
90
|
+
"Ene",
|
|
91
|
+
"Feb",
|
|
92
|
+
"Mar",
|
|
93
|
+
"Abr",
|
|
94
|
+
"May",
|
|
95
|
+
"Jun",
|
|
96
|
+
"Jul",
|
|
97
|
+
"Ago",
|
|
98
|
+
"Sep",
|
|
99
|
+
"Oct",
|
|
100
|
+
"Nov",
|
|
101
|
+
"Dic",
|
|
102
|
+
];
|
|
103
|
+
const month = monthNames[date.getMonth()];
|
|
104
|
+
const year = date.getFullYear();
|
|
105
|
+
return `${day} ${month} ${year}`;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function processDataset2(consulta) {
|
|
109
|
+
const labelCounts = consulta.reduce((acc, item) => {
|
|
110
|
+
const label = item._label.label;
|
|
111
|
+
acc[label] = (acc[label] || 0) + 1;
|
|
112
|
+
return acc;
|
|
113
|
+
}, {});
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
field: "Distribución de acciones",
|
|
117
|
+
counts: Object.values(labelCounts),
|
|
118
|
+
operations: Object.keys(labelCounts),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function processDataset3(consulta) {
|
|
123
|
+
const labelCounts = consulta.reduce((acc, item) => {
|
|
124
|
+
const label = item._label.label;
|
|
125
|
+
acc[label] = (acc[label] || 0) + 1;
|
|
126
|
+
return acc;
|
|
127
|
+
}, {});
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
field: "Distribución de acciones",
|
|
131
|
+
items: Object.keys(labelCounts).map((label) => ({
|
|
132
|
+
addGroup: label,
|
|
133
|
+
totalResponse: labelCounts[label],
|
|
134
|
+
})),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function processDataset4(consulta) {
|
|
139
|
+
const dateCounts = consulta.reduce((acc, item) => {
|
|
140
|
+
const date = formatDate(new Date(item.createdAt));
|
|
141
|
+
acc[date] = (acc[date] || 0) + 1;
|
|
142
|
+
return acc;
|
|
143
|
+
}, {});
|
|
144
|
+
|
|
145
|
+
return {
|
|
146
|
+
field: "Actividad en la plataforma",
|
|
147
|
+
counts: Object.values(dateCounts),
|
|
148
|
+
actionsName: Object.keys(dateCounts),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function processDataset5(consulta) {
|
|
153
|
+
const labelCountsByDate = {};
|
|
154
|
+
const categories = new Set();
|
|
155
|
+
|
|
156
|
+
consulta.forEach((item) => {
|
|
157
|
+
const date = formatDate(new Date(item.createdAt));
|
|
158
|
+
const label = item._label.label;
|
|
159
|
+
categories.add(date);
|
|
160
|
+
|
|
161
|
+
if (!labelCountsByDate[date]) {
|
|
162
|
+
labelCountsByDate[date] = {};
|
|
163
|
+
}
|
|
164
|
+
labelCountsByDate[date][label] = (labelCountsByDate[date][label] || 0) + 1;
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const uniqueLabels = new Set(
|
|
168
|
+
Object.values(labelCountsByDate).flatMap(Object.keys)
|
|
169
|
+
);
|
|
170
|
+
const series = Array.from(uniqueLabels).map((label) => ({
|
|
171
|
+
name: label,
|
|
172
|
+
data: Array.from(categories).map(
|
|
173
|
+
(date) => labelCountsByDate[date]?.[label] || 0
|
|
174
|
+
),
|
|
175
|
+
}));
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
field: "Actividad en la plataforma por operación",
|
|
179
|
+
categories: Array.from(categories),
|
|
180
|
+
series: series,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function processDataset6(data) {
|
|
185
|
+
const userActivity = {};
|
|
186
|
+
|
|
187
|
+
// Count activity per user. Assuming data contains _user with name and lastName
|
|
188
|
+
data.forEach((item) => {
|
|
189
|
+
const fullName = `${item._user.name} ${item._user.lastName}`;
|
|
190
|
+
userActivity[fullName] = (userActivity[fullName] || 0) + 1;
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Sort users by activity count in descending order
|
|
194
|
+
const sortedUsers = Object.entries(userActivity).sort(
|
|
195
|
+
([, countA], [, countB]) => countB - countA
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
// Extract top 10 users
|
|
199
|
+
const topUsers = sortedUsers.slice(0, 10);
|
|
200
|
+
|
|
201
|
+
// Build the result object
|
|
202
|
+
const result = {
|
|
203
|
+
counts: topUsers.map(([, count]) => count),
|
|
204
|
+
actionsName: topUsers.map(([fullName]) => fullName.split(" ")),
|
|
205
|
+
field: "Usuarios con mas actividad en la plataforma",
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function processDataset7(data) {
|
|
212
|
+
const userActivity = {};
|
|
213
|
+
|
|
214
|
+
// Count activity per user. Assuming data contains _user with name and lastName
|
|
215
|
+
data.forEach((item) => {
|
|
216
|
+
const fullName = `${item._user.name} ${item._user.lastName}`;
|
|
217
|
+
userActivity[fullName] = (userActivity[fullName] || 0) + 1;
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
// Sort users by activity count in ascending order
|
|
221
|
+
const sortedUsers = Object.entries(userActivity).sort(
|
|
222
|
+
([, countA], [, countB]) => countA - countB
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
// Extract top 10 least active users
|
|
226
|
+
const leastActiveUsers = sortedUsers.slice(0, 10);
|
|
227
|
+
|
|
228
|
+
// Build the result object
|
|
229
|
+
const result = {
|
|
230
|
+
counts: leastActiveUsers.map(([, count]) => count),
|
|
231
|
+
actionsName: leastActiveUsers.map(([fullName]) => fullName.split(" ")),
|
|
232
|
+
field: "Usuarios con menos actividad en la plataforma",
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
self.get = async (req, res) => {
|
|
239
|
+
try {
|
|
240
|
+
const _id = req.params.LOG_ID;
|
|
241
|
+
const log = await Log.findOne({ _id });
|
|
242
|
+
if (!log) res.status(404).send();
|
|
243
|
+
res.status(200).send(log);
|
|
244
|
+
} catch (error) {
|
|
245
|
+
res.status(400).send(error);
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
self.delete = async (req, res) => {
|
|
250
|
+
try {
|
|
251
|
+
const _id = req.params.LOG_ID;
|
|
252
|
+
const response = await Log.deleteOne({ _id });
|
|
253
|
+
if (!response.deletedCount)
|
|
254
|
+
res.status(404).send({ error: "El registro no existe" });
|
|
255
|
+
else res.status(200).send({});
|
|
256
|
+
} catch (error) {
|
|
257
|
+
res.status(400).send({ error: error.message });
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
self.count = async (req, res) => {
|
|
262
|
+
try {
|
|
263
|
+
let result = await Log.find({}).countDocuments();
|
|
264
|
+
res.status(200).send({ count: result });
|
|
265
|
+
} catch (error) {
|
|
266
|
+
res.status(400).send({ error: error.message });
|
|
267
|
+
}
|
|
268
|
+
};
|
package/lib/controllers/user.js
CHANGED
|
@@ -8,6 +8,7 @@ const serviceUser = require("../services/user");
|
|
|
8
8
|
const utils = require("../config/utils");
|
|
9
9
|
const mongoose = require("mongoose");
|
|
10
10
|
const AWS_SES = require("../services/ses");
|
|
11
|
+
const Business = require("../models/Business");
|
|
11
12
|
const self = module.exports;
|
|
12
13
|
|
|
13
14
|
self.create = async (req, res) => {
|
|
@@ -20,10 +21,14 @@ self.create = async (req, res) => {
|
|
|
20
21
|
file = file.replace("{{user}}", user.name);
|
|
21
22
|
file = file.replace("{{email}}", req.body.email);
|
|
22
23
|
file = file.replace("{{password}}", req.body.pwd);
|
|
23
|
-
if(process.env.URL_EMAIL){
|
|
24
|
+
if (process.env.URL_EMAIL) {
|
|
24
25
|
file = file.replace("{{urlToken}}", process.env.URL_EMAIL);
|
|
25
26
|
}
|
|
26
|
-
await AWS_SES.sendCustom(
|
|
27
|
+
await AWS_SES.sendCustom(
|
|
28
|
+
user.email,
|
|
29
|
+
file,
|
|
30
|
+
process.env.SUBJECT_EMAIL || "bienvenido"
|
|
31
|
+
);
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
res.status(201).send(user);
|
|
@@ -140,6 +145,33 @@ self.retrieve = async (req, res) => {
|
|
|
140
145
|
}
|
|
141
146
|
};
|
|
142
147
|
|
|
148
|
+
self.retrieveByBusiness = async (req, res) => {
|
|
149
|
+
try {
|
|
150
|
+
const businessId = req.header("Business") || null;
|
|
151
|
+
const business = await Business.findOne({ id: businessId }).lean();
|
|
152
|
+
|
|
153
|
+
if (!business) {
|
|
154
|
+
throw {
|
|
155
|
+
code: 401,
|
|
156
|
+
title: "El negocio no existe",
|
|
157
|
+
detail: "",
|
|
158
|
+
suggestion: "No se encontro el negocio",
|
|
159
|
+
error: new Error(),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
let result = await User.find({ _business: business._id })
|
|
164
|
+
.select("-pwd -tokens")
|
|
165
|
+
.populate({ path: "_functions", select: { name: 1 } })
|
|
166
|
+
.sort({ createdAt: -1 })
|
|
167
|
+
.lean();
|
|
168
|
+
|
|
169
|
+
res.status(200).send(result);
|
|
170
|
+
} catch (error) {
|
|
171
|
+
res.status(400).send({ error: error.message });
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
143
175
|
self.delete = async (req, res) => {
|
|
144
176
|
try {
|
|
145
177
|
const _id = req.params.USER_ID;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
const menuSchema = mongoose.Schema({
|
|
4
|
+
label: { type: String, required: true, trim: true },
|
|
5
|
+
description: { type: String, required: false, trim: true },
|
|
6
|
+
|
|
7
|
+
status: { type: String, required: true, enum: ["Activo", "Inactivo"] },
|
|
8
|
+
createdAt: { type: Number },
|
|
9
|
+
lastUpdate: { type: Number },
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const Menu = mongoose.model("Label", menuSchema);
|
|
13
|
+
module.exports = Menu;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
const ObjectId = mongoose.Schema.Types.ObjectId;
|
|
3
|
+
|
|
4
|
+
const menuSchema = mongoose.Schema({
|
|
5
|
+
_label: { type: ObjectId, required: true, ref: "Label" },
|
|
6
|
+
_user: { type: ObjectId, required: true, ref: "User" },
|
|
7
|
+
createdAt: { type: Number },
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const Menu = mongoose.model("Log", menuSchema);
|
|
11
|
+
module.exports = Menu;
|
package/lib/router.js
CHANGED
|
@@ -7,6 +7,9 @@ const user = require("./controllers/user");
|
|
|
7
7
|
const menu = require("./controllers/menu");
|
|
8
8
|
const permission = require("./controllers/permission");
|
|
9
9
|
const functions = require("./controllers/functions");
|
|
10
|
+
const label = require("./controllers/label");
|
|
11
|
+
const log = require("./controllers/log");
|
|
12
|
+
|
|
10
13
|
const history = require("./controllers/history.js");
|
|
11
14
|
|
|
12
15
|
// User / user self (no auth)
|
|
@@ -33,6 +36,7 @@ router.post("/iam/auth/validate/mail", middleware, auth.validatEmailChange);
|
|
|
33
36
|
// IAM / User
|
|
34
37
|
router.post("/iam/user", middleware, user.create);
|
|
35
38
|
router.get("/iam/user", middleware, user.retrieve);
|
|
39
|
+
router.get("/iam/business/user", middleware, user.retrieveByBusiness);
|
|
36
40
|
router.get("/iam/user/:USER_ID", middleware, user.get);
|
|
37
41
|
router.patch("/iam/user/:USER_ID", middleware, user.update);
|
|
38
42
|
router.put("/iam/user/:USER_ID/status", middleware, user.status);
|
|
@@ -79,4 +83,22 @@ router.get("/iam/history/:HISTORY_ID", middleware, history.detail);
|
|
|
79
83
|
// Utilities
|
|
80
84
|
router.patch("/iam/add/time/:TOKEN", user.addTimeToken);
|
|
81
85
|
|
|
86
|
+
// IAM / Label
|
|
87
|
+
router.post("/iam/label", middleware, label.create);
|
|
88
|
+
router.patch("/iam/label/:LABEL_ID", middleware, label.update);
|
|
89
|
+
router.put("/iam/label/:LABEL_ID/status", middleware, label.status);
|
|
90
|
+
router.get("/iam/label", middleware, label.retrieve);
|
|
91
|
+
router.get("/iam/label/:LABEL_ID", middleware, label.get);
|
|
92
|
+
router.delete("/iam/label/:LABEL_ID", middleware, label.delete);
|
|
93
|
+
router.get("/iam/label/count/all", middleware, label.count);
|
|
94
|
+
|
|
95
|
+
// IAM / Log
|
|
96
|
+
router.post("/iam/log", middleware, log.create);
|
|
97
|
+
router.patch("/iam/log/:LOG_ID", middleware, log.update);
|
|
98
|
+
router.put("/iam/log/:LOG_ID/status", middleware, log.status);
|
|
99
|
+
router.post("/iam/log/retrieve", middleware, log.retrieve);
|
|
100
|
+
router.get("/iam/log/:LOG_ID", middleware, log.get);
|
|
101
|
+
router.delete("/iam/log/:LOG_ID", middleware, log.delete);
|
|
102
|
+
router.get("/iam/log/count/all", middleware, log.count);
|
|
103
|
+
|
|
82
104
|
module.exports = router;
|
package/lib/services/auth.js
CHANGED
|
@@ -574,15 +574,17 @@ self.resetPassword = async (req, res) => {
|
|
|
574
574
|
var body = JSON.parse(JSON.stringify(req.body));
|
|
575
575
|
let usuario = await User.findOne({ email: correo });
|
|
576
576
|
|
|
577
|
-
if (
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
577
|
+
if (process.env.CHANGE_PWD === "true") {
|
|
578
|
+
if (!usuario || !usuario?.data?.changePwd) {
|
|
579
|
+
//evaluar si se queda
|
|
580
|
+
throw {
|
|
581
|
+
code: 409,
|
|
582
|
+
title: "Usuario no encontrado.",
|
|
583
|
+
detail: "",
|
|
584
|
+
suggestion: "Verifica que el usuario exista",
|
|
585
|
+
error: new Error(),
|
|
586
|
+
};
|
|
587
|
+
}
|
|
586
588
|
}
|
|
587
589
|
|
|
588
590
|
const newTime = new Date().getTime();
|