Fix sidemenu loading and permissions in MongoDB backend

This commit is contained in:
Azmat-7860
2026-11-03 07:46:01 +05:30
parent 51fb1e68bb
commit 9556db14cb
3 changed files with 77 additions and 17 deletions
@@ -187,6 +187,46 @@ public class MongoDataInitializer implements CommandLineRunner {
}
LOGGER.info("[MongoDataInitializer] Core menus and permissions initialized successfully.");
}
// Ensure all existing GrpMenuAccess records have valid status and metadata populated
try {
List<GrpMenuAccess> existingAccess = grpMenuAccessRepository.findAll();
for (GrpMenuAccess a : existingAccess) {
boolean changed = false;
if (a.getStatus() == null || !"Enable".equals(a.getStatus())) {
a.setStatus("Enable");
changed = true;
}
if (a.getMenuItemId() != null) {
MenuDet m = a.getMenuItemId();
if (a.getMenuItemDesc() == null && m.getMenuItemDesc() != null) {
a.setMenuItemDesc(m.getMenuItemDesc());
changed = true;
}
if (a.getMain_menu_action_name() == null && m.getMain_menu_action_name() != null) {
a.setMain_menu_action_name(m.getMain_menu_action_name());
changed = true;
}
if (a.getMain_menu_icon_name() == null && m.getMain_menu_icon_name() != null) {
a.setMain_menu_icon_name(m.getMain_menu_icon_name());
changed = true;
}
if (a.getItemSeq() == null && m.getItemSeq() != null) {
a.setItemSeq(m.getItemSeq());
changed = true;
}
if (a.getMenuId() == null && m.getMenuId() != null) {
a.setMenuId(m.getMenuId());
changed = true;
}
}
if (changed) {
grpMenuAccessRepository.save(a);
}
}
} catch (Exception e) {
LOGGER.warn("[MongoDataInitializer] Could not heal existing GrpMenuAccess: {}", e.getMessage());
}
}
private MenuDet createMenu(Long menuItemId, Long menuId, Long seq, String desc, String modName, String action, String icon) {
@@ -208,6 +248,13 @@ public class MongoDataInitializer implements CommandLineRunner {
a.setUsrGrp(grp);
a.setMenuItemId(menu);
a.setMenuId(menu.getMenuId());
a.setItemSeq(menu.getItemSeq());
a.setMenuItemDesc(menu.getMenuItemDesc());
a.setModuleName(menu.getModuleName());
a.setMain_menu_action_name(menu.getMain_menu_action_name());
a.setMain_menu_icon_name(menu.getMain_menu_icon_name());
a.setStatus("Enable");
a.setIsdisable("false");
a.setMVisible("true");
a.setMCreate("true");
a.setMEdit("true");
@@ -220,7 +267,6 @@ public class MongoDataInitializer implements CommandLineRunner {
LOGGER.warn("[MongoDataInitializer] Could not grant access for menu {}: {}", menu.getMenuItemId(), e.getMessage());
}
}
public void addCustomMenu(String tableName, String menuActionLink, String menuType) {
Long parentMenuId = 1577L;
if ("Master".equalsIgnoreCase(menuType) || "Masters".equalsIgnoreCase(menuType)) {
@@ -58,19 +58,33 @@ public class LoadMenuController {
List<GrpMenuAccess> root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); // menu id =0
for (int i = 0; i < root.size(); i++) {
// find menu item id by menu id =0
List<GrpMenuAccess> menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(),
root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique
for (GrpMenuAccess g : menu) {
// all submenu by menuid = menu itemid with status
GrpMenuAccess r = root.get(i);
if (r.getMenuItemId() != null) {
Long menuItemId = r.getMenuItemId().getMenuItemId();
List<GrpMenuAccess> allSubmenu = grpMenuAccessRepository
.findAllSubmenuByMenuIdWithStatus(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find
g.setSubMenus(allSubmenu);
.findAllSubmenuByMenuIdWithStatus(menuItemId, usrGrp);
for (GrpMenuAccess sub : allSubmenu) {
if (sub.getMenuItemDesc() == null && sub.getMenuItemId() != null) {
sub.setMenuItemDesc(sub.getMenuItemId().getMenuItemDesc());
}
if (sub.getMain_menu_action_name() == null && sub.getMenuItemId() != null) {
sub.setMain_menu_action_name(sub.getMenuItemId().getMain_menu_action_name());
}
if (sub.getMain_menu_icon_name() == null && sub.getMenuItemId() != null) {
sub.setMain_menu_icon_name(sub.getMenuItemId().getMain_menu_icon_name());
}
}
r.setSubMenus(allSubmenu);
}
if (r.getMenuItemDesc() == null && r.getMenuItemId() != null) {
r.setMenuItemDesc(r.getMenuItemId().getMenuItemDesc());
}
if (r.getMain_menu_action_name() == null && r.getMenuItemId() != null) {
r.setMain_menu_action_name(r.getMenuItemId().getMain_menu_action_name());
}
if (r.getMain_menu_icon_name() == null && r.getMenuItemId() != null) {
r.setMain_menu_icon_name(r.getMenuItemId().getMain_menu_icon_name());
}
}
return new ResponseEntity<>(root, HttpStatus.OK);
}
@@ -47,7 +47,7 @@ public interface GrpMenuAccessRepository extends MongoRepository<GrpMenuAccess,
// @Query("{'menu_id': ?0, 'status': Enable}")
// List<GrpMenuAccess> findAllRootsByMenuId(@Param("usr_grp") Long usr_grp);
@Query("{'menu_id': 0, 'status': 'Enable', 'usr_grp': ?0}")
@Query(value = "{ $and: [ { $or: [ {'menuId': 0}, {'menu_id': 0} ] }, { 'status': 'Enable' }, { $or: [ {'usrGrp.usrGrp': ?0}, {'usrGrp': ?0} ] } ] }", sort = "{'itemSeq': 1}")
List<GrpMenuAccess> findAllRootsByMenuId(Long usr_grp);
//
//// @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true)
@@ -94,10 +94,10 @@ public interface GrpMenuAccessRepository extends MongoRepository<GrpMenuAccess,
//// @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true)
// List<GrpMenuAccess> findAllById(@Param("menu_item_id") Long menu_item_id);
@Query("{ 'menu_id': ?0, 'usrGrp': ?1 }")
@Query(value = "{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }", sort = "{'itemSeq': 1}")
List<GrpMenuAccess> findAllSubmenuByMenuId(Long menuItemId, Long usrGrp);
@Query("{ 'status': 'Enable', 'menu_id': ?0, 'usrGrp': ?1 }")
@Query(value = "{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { 'status': 'Enable' }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }", sort = "{'itemSeq': 1}")
List<GrpMenuAccess> findAllSubmenuByMenuIdWithStatus(Long menuItemId, Long usrGrp);
@Query("{ 'menuItem_id': ?0 }")
@@ -124,13 +124,13 @@ public interface GrpMenuAccessRepository extends MongoRepository<GrpMenuAccess,
@Query("{ 'menuItem_id': ?0 }")
List<GrpMenuAccess> findByGrpAndMenuid1(Long menuItemId);
@Query("{ 'menu_id': 0, 'usrGrp': ?1, 'menuItem_id': ?0 }")
@Query("{ $and: [ { $or: [ {'menuId': 0}, {'menu_id': 0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] }, { $or: [ {'menuItemId.menuItemId': ?0}, {'menuItem_id': ?0} ] } ] }")
GrpMenuAccess findAllRootsByMenuIdAndGrp(Long menuItemId, Long usrGrp);
@Query("{ 'menuItem_id': ?0 }")
List<GrpMenuAccess> findAllSubmenuByMenuitemid(Long menuItemId);
@Query("{ 'menu_id': ?0, 'usrGrp': ?1 }")
@Query("{ $and: [ { $or: [ {'menuId': ?0}, {'menu_id': ?0} ] }, { $or: [ {'usrGrp.usrGrp': ?1}, {'usrGrp': ?1} ] } ] }")
List<GrpMenuAccess> findAllSubmenuByMenuitemidAndUsrGrp(Long menuItemId, Long usrGrp);
@Query("{ 'menuItem_id': ?0 }")