aloux-iam 0.0.146 → 0.0.147
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/config/utils.js +10 -40
- package/lib/controllers/auth.js +1 -33
- package/lib/controllers/business.js +51 -25
- package/lib/controllers/company.js +7 -7
- package/lib/controllers/functions.js +62 -38
- package/lib/controllers/label.js +25 -26
- package/lib/controllers/log.js +24 -24
- package/lib/controllers/menu.js +74 -47
- package/lib/controllers/operationsAWS.js +228 -0
- package/lib/controllers/permission.js +72 -52
- package/lib/controllers/user.js +175 -124
- package/lib/middleware.js +33 -28
- package/lib/models/Company.js +1 -0
- package/lib/models/Permission.js +1 -3
- package/lib/models/User.js +8 -11
- package/lib/router.js +25 -16
- package/lib/services/auth.js +113 -88
- package/lib/services/bigQuery.js +88 -0
- package/lib/services/s3.js +72 -0
- package/lib/services/ses.js +98 -0
- package/lib/services/sns.js +22 -0
- package/lib/services/totp.js +11 -13
- package/lib/services/user.js +38 -55
- package/package.json +16 -12
- package/lib/providers.js +0 -7
package/lib/config/utils.js
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
const fs = require("fs");
|
|
2
2
|
const self = module.exports;
|
|
3
3
|
|
|
4
|
-
self.responseError = (res, error
|
|
5
|
-
let
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
code = defaultCode || 400;
|
|
14
|
-
title = defaultTitle || "Error";
|
|
15
|
-
detail = error?.message || "";
|
|
16
|
-
suggestion = defaultSuggestion || "Revisa el detalle";
|
|
4
|
+
self.responseError = async (res, error) => {
|
|
5
|
+
let obj = error;
|
|
6
|
+
if (!error.code) {
|
|
7
|
+
obj = {
|
|
8
|
+
code: 400,
|
|
9
|
+
title: "Error",
|
|
10
|
+
detail: error.message,
|
|
11
|
+
suggestion: "Revisar el detalle",
|
|
12
|
+
};
|
|
17
13
|
}
|
|
18
|
-
|
|
19
|
-
res.status(code).send({ code, title, detail, suggestion });
|
|
14
|
+
res.status(obj.code).send(obj);
|
|
20
15
|
};
|
|
21
16
|
|
|
22
17
|
self.generatePaginationResponse = async (count, page, itemsPerPage, items) => {
|
|
@@ -74,31 +69,6 @@ self.brand = {
|
|
|
74
69
|
},
|
|
75
70
|
};
|
|
76
71
|
|
|
77
|
-
self.escapeRegex = (str) => {
|
|
78
|
-
if (typeof str !== 'string') return '';
|
|
79
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
self.hashToken = (token) => {
|
|
83
|
-
const crypto = require('crypto');
|
|
84
|
-
return crypto.createHash('sha256').update(String(token)).digest('hex');
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
self.hashCode = (code) => {
|
|
88
|
-
const crypto = require('crypto');
|
|
89
|
-
return crypto.createHash('sha256').update(String(code)).digest('hex');
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
self.sanitizeSort = (sort, allowedFields) => {
|
|
93
|
-
if (!sort || typeof sort !== 'object' || Array.isArray(sort)) return null;
|
|
94
|
-
const safe = {};
|
|
95
|
-
for (const [key, val] of Object.entries(sort)) {
|
|
96
|
-
const n = Number(val);
|
|
97
|
-
if (allowedFields.includes(key) && (n === 1 || n === -1)) safe[key] = n;
|
|
98
|
-
}
|
|
99
|
-
return Object.keys(safe).length > 0 ? safe : null;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
72
|
// Gkey
|
|
103
73
|
self.resolveGkey = (business) => {
|
|
104
74
|
const businessGkey = business.gkey || null;
|
package/lib/controllers/auth.js
CHANGED
|
@@ -3,33 +3,7 @@ const utils = require("../config/utils");
|
|
|
3
3
|
|
|
4
4
|
const self = module.exports;
|
|
5
5
|
|
|
6
|
-
const _rateLimitStore = new Map();
|
|
7
|
-
const _checkRateLimit = (req, res) => {
|
|
8
|
-
const maxAttempts = parseInt(process.env.FAILED_ATTEMPS) || 5;
|
|
9
|
-
const windowMs = 15 * 60 * 1000;
|
|
10
|
-
const key = req.ip || req.connection.remoteAddress;
|
|
11
|
-
const now = Date.now();
|
|
12
|
-
const record = _rateLimitStore.get(key) || { count: 0, resetAt: now + windowMs };
|
|
13
|
-
if (now > record.resetAt) {
|
|
14
|
-
record.count = 0;
|
|
15
|
-
record.resetAt = now + windowMs;
|
|
16
|
-
}
|
|
17
|
-
record.count++;
|
|
18
|
-
_rateLimitStore.set(key, record);
|
|
19
|
-
if (record.count > maxAttempts) {
|
|
20
|
-
res.status(429).send({
|
|
21
|
-
code: 429,
|
|
22
|
-
title: 'Demasiados intentos',
|
|
23
|
-
detail: 'Has superado el límite de intentos permitidos.',
|
|
24
|
-
suggestion: 'Espera unos minutos antes de intentarlo nuevamente.'
|
|
25
|
-
});
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
return true;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
6
|
self.email = async (req, res) => {
|
|
32
|
-
if (!_checkRateLimit(req, res)) return;
|
|
33
7
|
try {
|
|
34
8
|
const response = await Auth.searchEmail(req.body.email, req.body.code);
|
|
35
9
|
res.status(response.statusCode).send({
|
|
@@ -44,7 +18,6 @@ self.email = async (req, res) => {
|
|
|
44
18
|
};
|
|
45
19
|
|
|
46
20
|
self.login = async (req, res) => {
|
|
47
|
-
if (!_checkRateLimit(req, res)) return;
|
|
48
21
|
try {
|
|
49
22
|
const response = await Auth.login(req.body, res);
|
|
50
23
|
res.status(200).send(response);
|
|
@@ -73,7 +46,7 @@ self.logout = async (req, res) => {
|
|
|
73
46
|
|
|
74
47
|
self.logoutAll = async (req, res) => {
|
|
75
48
|
try {
|
|
76
|
-
await Auth.logoutAll(req
|
|
49
|
+
await Auth.logoutAll(req.body);
|
|
77
50
|
res.status(200).send();
|
|
78
51
|
} catch (error) {
|
|
79
52
|
await utils.responseError(res, error);
|
|
@@ -108,7 +81,6 @@ self.updateAny = async (req, res) => {
|
|
|
108
81
|
};
|
|
109
82
|
|
|
110
83
|
self.recoverpassword = async (req, res) => {
|
|
111
|
-
if (!_checkRateLimit(req, res)) return;
|
|
112
84
|
try {
|
|
113
85
|
await Auth.recoverpassword(req, res);
|
|
114
86
|
res.status(200).send();
|
|
@@ -118,7 +90,6 @@ self.recoverpassword = async (req, res) => {
|
|
|
118
90
|
};
|
|
119
91
|
|
|
120
92
|
self.verifyCode = async (req, res) => {
|
|
121
|
-
if (!_checkRateLimit(req, res)) return;
|
|
122
93
|
try {
|
|
123
94
|
const response = await Auth.verifyCode(req, res);
|
|
124
95
|
res.status(200).send(response);
|
|
@@ -128,7 +99,6 @@ self.verifyCode = async (req, res) => {
|
|
|
128
99
|
};
|
|
129
100
|
|
|
130
101
|
self.resetPassword = async (req, res) => {
|
|
131
|
-
if (!_checkRateLimit(req, res)) return;
|
|
132
102
|
try {
|
|
133
103
|
const response = await Auth.resetPassword(req, res);
|
|
134
104
|
res.status(200).send(response);
|
|
@@ -138,7 +108,6 @@ self.resetPassword = async (req, res) => {
|
|
|
138
108
|
};
|
|
139
109
|
|
|
140
110
|
self.sendVerifyMailAccount = async (req, res) => {
|
|
141
|
-
if (!_checkRateLimit(req, res)) return;
|
|
142
111
|
try {
|
|
143
112
|
await Auth.sendVerifyMailAccountJob(req, true);
|
|
144
113
|
res.status(200).send();
|
|
@@ -209,4 +178,3 @@ self.validatEmailChange = async (req, res) => {
|
|
|
209
178
|
await utils.responseError(res, error);
|
|
210
179
|
}
|
|
211
180
|
};
|
|
212
|
-
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const Business = require("../models/Business");
|
|
2
2
|
const Company = require("../models/Company");
|
|
3
3
|
const utils = require("../config/utils");
|
|
4
|
-
const
|
|
4
|
+
const AlouxAWS = require("./operationsAWS");
|
|
5
5
|
const errorController = require("../config/utils");
|
|
6
6
|
const { resolveGkey } = require("../config/utils");
|
|
7
7
|
|
|
@@ -41,30 +41,56 @@ self.create = async (req, res) => {
|
|
|
41
41
|
|
|
42
42
|
self.retrieve = async (req, res) => {
|
|
43
43
|
try {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const retrieve = await Business.find({}, { gkey: 0 })
|
|
45
|
+
.populate("_company")
|
|
46
|
+
.lean();
|
|
47
|
+
res.status(200).send(retrieve);
|
|
48
|
+
} catch (error) {
|
|
49
|
+
await errorController.responseError(res, error);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
|
|
54
|
+
self.retrievePages = async (req, res) => {
|
|
55
|
+
try {
|
|
56
|
+
let { page = 1, itemsPerPage = 10, sort = { createdAt: -1 } } = req.body.config || {}
|
|
57
|
+
let query = {}
|
|
58
|
+
let attributes = { pwd: 0, tokens: 0 }
|
|
59
|
+
if (req?.body?.filter?.search) {
|
|
60
|
+
query.$or = [
|
|
61
|
+
{ name: { $regex: req.body.filter.search, $options: 'i' } }
|
|
62
|
+
];
|
|
51
63
|
}
|
|
52
64
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
const count = await Business.countDocuments(query)
|
|
66
|
+
let items
|
|
67
|
+
|
|
68
|
+
if (Number(page) === 0 && Number(itemsPerPage) === 0) {
|
|
69
|
+
items = await Business.find(query, attributes)
|
|
70
|
+
.sort(sort)
|
|
71
|
+
.lean()
|
|
72
|
+
page = 1
|
|
73
|
+
itemsPerPage = count > 0 ? count : 1
|
|
74
|
+
} else {
|
|
75
|
+
items = await Business.find(query, attributes)
|
|
76
|
+
.skip(Number(itemsPerPage) * (Number(page) - 1))
|
|
77
|
+
.limit(Number(itemsPerPage))
|
|
78
|
+
.sort(sort)
|
|
79
|
+
.lean()
|
|
62
80
|
}
|
|
63
81
|
|
|
64
|
-
const
|
|
65
|
-
|
|
82
|
+
const response = await utils.generatePaginationResponse(count, page, itemsPerPage, items)
|
|
83
|
+
const active = await Business.countDocuments({ status: "Activo" })
|
|
84
|
+
const inactive = await Business.countDocuments({ status: "Inactivo" })
|
|
85
|
+
|
|
86
|
+
response.summary = {
|
|
87
|
+
active,
|
|
88
|
+
inactive,
|
|
89
|
+
total: active + inactive
|
|
90
|
+
}
|
|
91
|
+
res.status(200).send(response);
|
|
66
92
|
} catch (error) {
|
|
67
|
-
|
|
93
|
+
res.status(400).send({ error: error.message });
|
|
68
94
|
}
|
|
69
95
|
}
|
|
70
96
|
|
|
@@ -182,8 +208,8 @@ self.picture = async (req, res) => {
|
|
|
182
208
|
try {
|
|
183
209
|
let business = await Business.findOne({ _id: req.params.BUSINESS_ID });
|
|
184
210
|
|
|
185
|
-
const imgUrl = await
|
|
186
|
-
"business/picture-" + req.params.BUSINESS_ID,
|
|
211
|
+
const imgUrl = await AlouxAWS.upload(
|
|
212
|
+
"business/" + "picture" + "-" + req.params.BUSINESS_ID,
|
|
187
213
|
req.files.picture
|
|
188
214
|
);
|
|
189
215
|
|
|
@@ -192,7 +218,7 @@ self.picture = async (req, res) => {
|
|
|
192
218
|
|
|
193
219
|
res.status(202).send(updateBusiness);
|
|
194
220
|
} catch (error) {
|
|
195
|
-
|
|
221
|
+
res.status(400).send({ error: error.message });
|
|
196
222
|
}
|
|
197
223
|
};
|
|
198
224
|
|
|
@@ -200,8 +226,8 @@ self.favicon = async (req, res) => {
|
|
|
200
226
|
try {
|
|
201
227
|
let business = await Business.findOne({ _id: req.params.BUSINESS_ID });
|
|
202
228
|
|
|
203
|
-
const faviconUrl = await
|
|
204
|
-
"business/favicon-" + req.params.BUSINESS_ID,
|
|
229
|
+
const faviconUrl = await AlouxAWS.upload(
|
|
230
|
+
"business/" + "favicon" + "-" + req.params.BUSINESS_ID,
|
|
205
231
|
req.files.favicon
|
|
206
232
|
);
|
|
207
233
|
|
|
@@ -210,7 +236,7 @@ self.favicon = async (req, res) => {
|
|
|
210
236
|
|
|
211
237
|
res.status(202).send(updateBusiness);
|
|
212
238
|
} catch (error) {
|
|
213
|
-
|
|
239
|
+
res.status(400).send({ error: error.message });
|
|
214
240
|
}
|
|
215
241
|
};
|
|
216
242
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const Company = require("../models/Company");
|
|
2
|
-
const
|
|
2
|
+
const AlouxAWS = require("./operationsAWS");
|
|
3
3
|
const errorController = require("../config/utils");
|
|
4
4
|
const self = module.exports;
|
|
5
5
|
|
|
@@ -98,8 +98,8 @@ self.picture = async (req, res) => {
|
|
|
98
98
|
try {
|
|
99
99
|
let company = await Company.findOne({ _id: req.params.COMPANY_ID });
|
|
100
100
|
|
|
101
|
-
const imgUrl = await
|
|
102
|
-
"company/picture-" + req.params.COMPANY_ID,
|
|
101
|
+
const imgUrl = await AlouxAWS.upload(
|
|
102
|
+
"company/" + "picture" + "-" + req.params.COMPANY_ID,
|
|
103
103
|
req.files.picture
|
|
104
104
|
);
|
|
105
105
|
|
|
@@ -109,7 +109,7 @@ self.picture = async (req, res) => {
|
|
|
109
109
|
res.status(202).send(updateCompany);
|
|
110
110
|
} catch (error) {
|
|
111
111
|
console.error(error);
|
|
112
|
-
|
|
112
|
+
res.status(400).send({ error: error.message });
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
115
|
|
|
@@ -117,8 +117,8 @@ self.favicon = async (req, res) => {
|
|
|
117
117
|
try {
|
|
118
118
|
let company = await Company.findOne({ _id: req.params.COMPANY_ID });
|
|
119
119
|
|
|
120
|
-
const faviconUrl = await
|
|
121
|
-
"company/favicon-" + req.params.COMPANY_ID,
|
|
120
|
+
const faviconUrl = await AlouxAWS.upload(
|
|
121
|
+
"company/" + "favicon" + "-" + req.params.COMPANY_ID,
|
|
122
122
|
req.files.favicon
|
|
123
123
|
);
|
|
124
124
|
|
|
@@ -127,7 +127,7 @@ self.favicon = async (req, res) => {
|
|
|
127
127
|
|
|
128
128
|
res.status(202).send(updateCompany);
|
|
129
129
|
} catch (error) {
|
|
130
|
-
|
|
130
|
+
res.status(400).send({ error: error.message });
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
133
|
|
|
@@ -10,24 +10,25 @@ self.create = async (req, res) => {
|
|
|
10
10
|
await functions.save()
|
|
11
11
|
res.status(201).send(functions)
|
|
12
12
|
} catch (error) {
|
|
13
|
-
|
|
13
|
+
console.log(error)
|
|
14
|
+
res.status(400).send({ error: error.message })
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
self.update = async (req,
|
|
18
|
+
self.update = async (req, resp) => {
|
|
18
19
|
try {
|
|
19
|
-
|
|
20
|
+
await (new Functions(req.body)).validate()
|
|
21
|
+
const count = await Functions.findOne({ _id: req.params.FUNCTION_ID }).countDocuments()
|
|
20
22
|
if (!count)
|
|
21
23
|
throw new Error('Upss! No se encontró el registro')
|
|
22
24
|
req.body.lastUpdate = (new Date()).getTime()
|
|
23
|
-
await Functions.updateOne({ _id: req.params.FUNCTION_ID },
|
|
24
|
-
|
|
25
|
+
const result = await Functions.updateOne({ _id: req.params.FUNCTION_ID }, req.body)
|
|
26
|
+
resp.status(200).send(req.body)
|
|
25
27
|
} catch (error) {
|
|
26
|
-
|
|
28
|
+
resp.status(400).send({ error: error.message })
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
self.status = async (req, res) => {
|
|
31
|
+
self.status = async (req, resp) => {
|
|
31
32
|
try {
|
|
32
33
|
const _id = req.params.FUNCTION_ID
|
|
33
34
|
const functions = await Functions.findOne({ _id })
|
|
@@ -36,41 +37,62 @@ self.status = async (req, res) => {
|
|
|
36
37
|
functions.status = req.body.status
|
|
37
38
|
functions.lastUpdate = (new Date()).getTime()
|
|
38
39
|
const result = await functions.save()
|
|
39
|
-
|
|
40
|
+
resp.status(200).send(result)
|
|
40
41
|
} catch (error) {
|
|
41
|
-
|
|
42
|
+
resp.status(400).send({ error: error.message })
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
|
|
45
45
|
self.retrieve = async (req, res) => {
|
|
46
46
|
try {
|
|
47
|
-
const
|
|
48
|
-
|
|
47
|
+
const response = await Functions.find({}).sort({ createdAt: -1 })
|
|
48
|
+
res.status(200).send(response)
|
|
49
|
+
} catch (error) {
|
|
50
|
+
res.status(400).send(error)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
self.retrievePages = async (req, res) => {
|
|
55
|
+
try {
|
|
56
|
+
let { page = 1, itemsPerPage = 10, sort = { createdAt: -1 } } = req.body.config || {}
|
|
49
57
|
let query = {}
|
|
58
|
+
let attributes = { pwd: 0, tokens: 0 }
|
|
50
59
|
|
|
51
|
-
if (search) {
|
|
52
|
-
const s = utils.escapeRegex(String(search))
|
|
60
|
+
if (req?.body?.filter?.search) {
|
|
53
61
|
query.$or = [
|
|
54
|
-
{ name: { $regex:
|
|
55
|
-
{ description: { $regex:
|
|
56
|
-
]
|
|
62
|
+
{ name: { $regex: req.body.filter.search, $options: 'i' } },
|
|
63
|
+
{ description: { $regex: req.body.filter.search, $options: 'i' } }
|
|
64
|
+
];
|
|
57
65
|
}
|
|
58
66
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
const count = await Functions.countDocuments(query)
|
|
68
|
+
let items
|
|
69
|
+
|
|
70
|
+
if (Number(page) === 0 && Number(itemsPerPage) === 0) {
|
|
71
|
+
items = await Functions.find(query, attributes)
|
|
72
|
+
.sort(sort)
|
|
73
|
+
.lean()
|
|
74
|
+
page = 1
|
|
75
|
+
itemsPerPage = count > 0 ? count : 1
|
|
76
|
+
} else {
|
|
77
|
+
items = await Functions.find(query, attributes)
|
|
78
|
+
.skip(Number(itemsPerPage) * (Number(page) - 1))
|
|
79
|
+
.limit(Number(itemsPerPage))
|
|
80
|
+
.sort(sort)
|
|
81
|
+
.lean()
|
|
68
82
|
}
|
|
69
83
|
|
|
70
|
-
const response = await
|
|
71
|
-
|
|
84
|
+
const response = await utils.generatePaginationResponse(count, page, itemsPerPage, items)
|
|
85
|
+
const active = await Functions.countDocuments({ status: "Activo" })
|
|
86
|
+
const inactive = await Functions.countDocuments({ status: "Inactivo" })
|
|
87
|
+
|
|
88
|
+
response.summary = {
|
|
89
|
+
active,
|
|
90
|
+
inactive,
|
|
91
|
+
total: active + inactive
|
|
92
|
+
}
|
|
93
|
+
res.status(200).send(response);
|
|
72
94
|
} catch (error) {
|
|
73
|
-
|
|
95
|
+
res.status(400).send({ error: error.message });
|
|
74
96
|
}
|
|
75
97
|
}
|
|
76
98
|
|
|
@@ -79,30 +101,32 @@ self.get = async (req, res) => {
|
|
|
79
101
|
const _id = req.params.FUNCTION_ID
|
|
80
102
|
const functions = await Functions.findOne({ _id }).populate([{ path: "_permissions" }, { path: "_menus" }]).lean()
|
|
81
103
|
if (!functions)
|
|
82
|
-
|
|
104
|
+
res.status(404).send()
|
|
83
105
|
res.status(200).send(functions)
|
|
84
106
|
} catch (error) {
|
|
85
|
-
|
|
107
|
+
res.status(400).send(error)
|
|
86
108
|
}
|
|
87
109
|
}
|
|
88
110
|
|
|
89
111
|
self.delete = async (req, res) => {
|
|
90
112
|
try {
|
|
113
|
+
|
|
91
114
|
const _id = req.params.FUNCTION_ID
|
|
92
115
|
const response = await Functions.deleteOne({ _id })
|
|
93
116
|
if (!response.deletedCount)
|
|
94
|
-
|
|
95
|
-
|
|
117
|
+
res.status(404).send({ error: "El registro no existe" })
|
|
118
|
+
else
|
|
119
|
+
res.status(200).send({})
|
|
96
120
|
} catch (error) {
|
|
97
|
-
|
|
121
|
+
res.status(400).send({ error: error.message })
|
|
98
122
|
}
|
|
99
123
|
}
|
|
100
124
|
|
|
101
125
|
self.count = async (req, res) => {
|
|
102
126
|
try {
|
|
103
|
-
|
|
127
|
+
let result = await Functions.find({}).countDocuments()
|
|
104
128
|
res.status(200).send({ count: result })
|
|
105
129
|
} catch (error) {
|
|
106
|
-
|
|
130
|
+
res.status(400).send({ error: error.message })
|
|
107
131
|
}
|
|
108
|
-
}
|
|
132
|
+
}
|
package/lib/controllers/label.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const Label = require("../models/Label");
|
|
2
|
-
const utils = require("../config/utils");
|
|
3
2
|
const self = module.exports;
|
|
4
3
|
|
|
5
4
|
self.create = async (req, res) => {
|
|
@@ -10,43 +9,43 @@ self.create = async (req, res) => {
|
|
|
10
9
|
await label.save();
|
|
11
10
|
res.status(201).send(label);
|
|
12
11
|
} catch (error) {
|
|
13
|
-
|
|
12
|
+
res.status(400).send({ error: error.message });
|
|
14
13
|
}
|
|
15
14
|
};
|
|
16
15
|
|
|
17
|
-
self.update = async (req,
|
|
16
|
+
self.update = async (req, resp) => {
|
|
18
17
|
try {
|
|
18
|
+
await new Label(req.body).validate();
|
|
19
19
|
const _id = req.params.LABEL_ID;
|
|
20
|
-
const
|
|
21
|
-
if (!
|
|
20
|
+
const count = await Label.findOne({ _id }).countDocuments();
|
|
21
|
+
if (!count) throw new Error("Upss! No se encontró el registro");
|
|
22
22
|
req.body.lastUpdate = new Date().getTime();
|
|
23
|
-
await Label.updateOne({ _id }, req.body);
|
|
24
|
-
|
|
23
|
+
const result = await Label.updateOne({ _id }, req.body);
|
|
24
|
+
resp.status(200).send(req.body);
|
|
25
25
|
} catch (error) {
|
|
26
|
-
|
|
26
|
+
resp.status(400).send({ error: error.message });
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
self.status = async (req, res) => {
|
|
29
|
+
self.status = async (req, resp) => {
|
|
31
30
|
try {
|
|
32
31
|
const _id = req.params.LABEL_ID;
|
|
33
|
-
const
|
|
34
|
-
if (!
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const result = await
|
|
38
|
-
|
|
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);
|
|
39
38
|
} catch (error) {
|
|
40
|
-
|
|
39
|
+
resp.status(400).send({ error: error.message });
|
|
41
40
|
}
|
|
42
41
|
};
|
|
43
|
-
|
|
44
42
|
self.retrieve = async (req, res) => {
|
|
45
43
|
try {
|
|
46
44
|
const consulta = await Label.find({}).sort({ index: 1 });
|
|
45
|
+
if (!consulta) res.status(404).send();
|
|
47
46
|
res.status(200).send(consulta);
|
|
48
47
|
} catch (error) {
|
|
49
|
-
|
|
48
|
+
res.status(400).send(error);
|
|
50
49
|
}
|
|
51
50
|
};
|
|
52
51
|
|
|
@@ -54,10 +53,10 @@ self.get = async (req, res) => {
|
|
|
54
53
|
try {
|
|
55
54
|
const _id = req.params.LABEL_ID;
|
|
56
55
|
const label = await Label.findOne({ _id });
|
|
57
|
-
if (!label)
|
|
56
|
+
if (!label) res.status(404).send();
|
|
58
57
|
res.status(200).send(label);
|
|
59
58
|
} catch (error) {
|
|
60
|
-
|
|
59
|
+
res.status(400).send(error);
|
|
61
60
|
}
|
|
62
61
|
};
|
|
63
62
|
|
|
@@ -66,18 +65,18 @@ self.delete = async (req, res) => {
|
|
|
66
65
|
const _id = req.params.LABEL_ID;
|
|
67
66
|
const response = await Label.deleteOne({ _id });
|
|
68
67
|
if (!response.deletedCount)
|
|
69
|
-
|
|
70
|
-
res.status(200).send({});
|
|
68
|
+
res.status(404).send({ error: "El registro no existe" });
|
|
69
|
+
else res.status(200).send({});
|
|
71
70
|
} catch (error) {
|
|
72
|
-
|
|
71
|
+
res.status(400).send({ error: error.message });
|
|
73
72
|
}
|
|
74
73
|
};
|
|
75
74
|
|
|
76
75
|
self.count = async (req, res) => {
|
|
77
76
|
try {
|
|
78
|
-
|
|
77
|
+
let result = await Label.find({}).countDocuments();
|
|
79
78
|
res.status(200).send({ count: result });
|
|
80
79
|
} catch (error) {
|
|
81
|
-
|
|
80
|
+
res.status(400).send({ error: error.message });
|
|
82
81
|
}
|
|
83
82
|
};
|