Fix sidemenu loading and permissions in MongoDB backend
This commit is contained in:
@@ -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 }")
|
||||
|
||||
Reference in New Issue
Block a user