aloux-iam 1.0.3 → 1.0.4
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/user.js +30 -31
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -9
package/lib/controllers/user.js
CHANGED
|
@@ -10,6 +10,7 @@ const utils = require("../config/utils");
|
|
|
10
10
|
const _brand = utils.brand;
|
|
11
11
|
const mongoose = require("mongoose");
|
|
12
12
|
const Business = require("../models/Business");
|
|
13
|
+
const Menu = require("../models/Menu");
|
|
13
14
|
const self = module.exports;
|
|
14
15
|
|
|
15
16
|
self.createService = async (req, res) => {
|
|
@@ -389,18 +390,11 @@ self.getMenu = (user) => {
|
|
|
389
390
|
// Recorre funciones de un user
|
|
390
391
|
for (let i in user._functions) {
|
|
391
392
|
if (user._functions[i].status === "Activo") {
|
|
392
|
-
// Recorre
|
|
393
|
-
for (let j in user._functions[i].
|
|
394
|
-
const
|
|
395
|
-
if (
|
|
396
|
-
permission.status === "Activo" &&
|
|
397
|
-
permission._menu &&
|
|
398
|
-
permission._menu.status === "Activo"
|
|
399
|
-
) {
|
|
400
|
-
const menu = user._functions[i]._permissions[j]._menu;
|
|
393
|
+
// Recorre menus asignados a la función
|
|
394
|
+
for (let j in user._functions[i]._menus) {
|
|
395
|
+
const menu = user._functions[i]._menus[j];
|
|
396
|
+
if (menu && menu.status === "Activo") {
|
|
401
397
|
result.push(menu);
|
|
402
|
-
|
|
403
|
-
// Obtiene el menú padre
|
|
404
398
|
if (menu._menu && menu._menu.status === "Activo") {
|
|
405
399
|
result.push(menu._menu);
|
|
406
400
|
}
|
|
@@ -455,27 +449,33 @@ self.getMenu = (user) => {
|
|
|
455
449
|
self.getMe = async (req, res) => {
|
|
456
450
|
try {
|
|
457
451
|
let user = await User.findOne({ _id: req.user._id }, { tokens: 0, pwd: 0 })
|
|
458
|
-
.populate({
|
|
459
|
-
path: "_functions",
|
|
460
|
-
populate: [
|
|
461
|
-
{
|
|
462
|
-
path: "_permissions",
|
|
463
|
-
populate: [
|
|
464
|
-
{
|
|
465
|
-
path: "_menu",
|
|
466
|
-
populate: [
|
|
467
|
-
{
|
|
468
|
-
path: "_menu",
|
|
469
|
-
},
|
|
470
|
-
],
|
|
471
|
-
},
|
|
472
|
-
],
|
|
473
|
-
},
|
|
474
|
-
],
|
|
475
|
-
})
|
|
452
|
+
.populate({ path: "_functions", populate: { path: "_permissions" } })
|
|
476
453
|
.lean();
|
|
477
454
|
|
|
478
|
-
|
|
455
|
+
const isValidId = (id) => {
|
|
456
|
+
if (!id || String(id) === "") return false;
|
|
457
|
+
try { new mongoose.Types.ObjectId(String(id)); return true; } catch { return false; }
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
for (const fn of user._functions || []) {
|
|
461
|
+
const validIds = (fn._menus || []).filter(isValidId);
|
|
462
|
+
if (!validIds.length) { fn._menus = []; continue; }
|
|
463
|
+
|
|
464
|
+
const menus = await Menu.find({ _id: { $in: validIds } }).lean();
|
|
465
|
+
|
|
466
|
+
const parentIds = menus.map(m => m._menu).filter(isValidId);
|
|
467
|
+
const parentMenus = parentIds.length
|
|
468
|
+
? await Menu.find({ _id: { $in: parentIds } }).lean()
|
|
469
|
+
: [];
|
|
470
|
+
const parentMap = Object.fromEntries(parentMenus.map(m => [m._id.toString(), m]));
|
|
471
|
+
|
|
472
|
+
for (const menu of menus) {
|
|
473
|
+
menu._menu = isValidId(menu._menu) ? (parentMap[String(menu._menu)] || null) : null;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
fn._menus = menus;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
479
|
user.menus = self.getMenu(user);
|
|
480
480
|
user.permissions = self.getPermission(user);
|
|
481
481
|
for (let i in user._functions) {
|
|
@@ -557,7 +557,6 @@ self.recoverpassword = async (req, res) => {
|
|
|
557
557
|
};
|
|
558
558
|
|
|
559
559
|
self.generatecode = () => {
|
|
560
|
-
const crypto = require("crypto");
|
|
561
560
|
return crypto.randomInt(0, 1000000).toString().padStart(6, '0');
|
|
562
561
|
};
|
|
563
562
|
|
package/package.json
CHANGED