diff --git a/backend/controllers/navigationController.js b/backend/controllers/navigationController.js index 40186cb..1a1625e 100644 --- a/backend/controllers/navigationController.js +++ b/backend/controllers/navigationController.js @@ -307,21 +307,27 @@ class NavigationController { async filterMenu(menu, rights, age, userId) { const filteredMenu = {}; - const hasFalukantAccount = await this.hasFalukantAccount(userId); - for (const [key, value] of Object.entries(menu)) { - if (value.visible.includes("all") - || value.visible.some(v => rights.includes(v)) || (value.visible.includes("anyadmin") && rights.length > 0) - || (value.visible.includes("over14") && age >= 14) - || (value.visible.includes("over12") && age >= 12) - || (value.visible.includes("over18") && age >= 18) - || (value.visible.includes('nofalukantaccount') && !hasFalukantAccount) - || (value.visible.includes('hasfalukantaccount') && hasFalukantAccount)) { - const { visible, ...itemWithoutVisible } = value; - filteredMenu[key] = { ...itemWithoutVisible }; - if (value.children) { - filteredMenu[key].children = await this.filterMenu(value.children, rights, age, userId); + try { + const hasFalukantAccount = await this.hasFalukantAccount(userId); + for (const [key, value] of Object.entries(menu)) { + if (value.visible.includes("all") + || value.visible.some(v => rights.includes(v)) || (value.visible.includes("anyadmin") && rights.length > 0) + || (value.visible.includes("over14") && age >= 14) + || (value.visible.includes("over12") && age >= 12) + || (value.visible.includes("over18") && age >= 18) + || (value.visible.includes('nofalukantaccount') && !hasFalukantAccount) + || (value.visible.includes('hasfalukantaccount') && hasFalukantAccount)) { + const { visible, ...itemWithoutVisible } = value; + filteredMenu[key] = { ...itemWithoutVisible }; + if (value.children) { + filteredMenu[key].children = await this.filterMenu(value.children, rights, age, userId); + } } } + } catch (error) { + console.error('Error filtering menu:', error); + // Return empty menu if filtering fails + return {}; } return filteredMenu; } @@ -363,8 +369,13 @@ class NavigationController { } async hasFalukantAccount(userId) { - const falukantUser = await FalukantUser.findOne({ where: { userId: userId } }); - return falukantUser !== null; + try { + const falukantUser = await FalukantUser.findOne({ where: { userId: userId } }); + return falukantUser !== null; + } catch (error) { + console.error('Error checking falukant account:', error); + return false; // Fallback: assume no falukant account if error occurs + } } }