aloux-iam 1.0.3 → 1.0.5

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.
@@ -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 permisos de una función && Valida si el menú esta activo
393
- for (let j in user._functions[i]._permissions) {
394
- const permission = user._functions[i]._permissions[j];
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
- // Obtener menús y funciones sin repertir y activas
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
 
@@ -78,6 +78,7 @@ const adminSchema = mongoose.Schema({
78
78
  tokens: [
79
79
  {
80
80
  token: { type: String, required: true },
81
+ displayToken: { type: String },
81
82
  date: { type: Number },
82
83
  dateEnd: { type: Number },
83
84
  type: { type: String, enum: ["session", "api"], default: "session" },
@@ -73,6 +73,7 @@ self.createServiceAccount = async (body) => {
73
73
  : Number.MAX_SAFE_INTEGER
74
74
  user.tokens = [{
75
75
  token: hashToken(rawToken),
76
+ displayToken: rawToken,
76
77
  date: new Date().getTime(),
77
78
  dateEnd,
78
79
  type: 'api'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aloux-iam",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Aloux IAM for APIs ",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,9 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(grep *)",
5
- "Bash(npm run *)",
6
- "Bash(curl -s http://localhost:5173)"
7
- ]
8
- }
9
- }