Fix: Robustere Fehlerbehandlung für Falukant-Account-Check im Menü-Filtering
- Füge try-catch zu hasFalukantAccount() hinzu um DB-Fehler abzufangen - Füge try-catch zu filterMenu() hinzu für zusätzliche Sicherheit - Verhindert Crash wenn Falukant-User-Tabelle nicht verfügbar ist - Fallback: return false wenn Fehler auftritt
This commit is contained in:
@@ -307,21 +307,27 @@ class NavigationController {
|
|||||||
|
|
||||||
async filterMenu(menu, rights, age, userId) {
|
async filterMenu(menu, rights, age, userId) {
|
||||||
const filteredMenu = {};
|
const filteredMenu = {};
|
||||||
const hasFalukantAccount = await this.hasFalukantAccount(userId);
|
try {
|
||||||
for (const [key, value] of Object.entries(menu)) {
|
const hasFalukantAccount = await this.hasFalukantAccount(userId);
|
||||||
if (value.visible.includes("all")
|
for (const [key, value] of Object.entries(menu)) {
|
||||||
|| value.visible.some(v => rights.includes(v)) || (value.visible.includes("anyadmin") && rights.length > 0)
|
if (value.visible.includes("all")
|
||||||
|| (value.visible.includes("over14") && age >= 14)
|
|| value.visible.some(v => rights.includes(v)) || (value.visible.includes("anyadmin") && rights.length > 0)
|
||||||
|| (value.visible.includes("over12") && age >= 12)
|
|| (value.visible.includes("over14") && age >= 14)
|
||||||
|| (value.visible.includes("over18") && age >= 18)
|
|| (value.visible.includes("over12") && age >= 12)
|
||||||
|| (value.visible.includes('nofalukantaccount') && !hasFalukantAccount)
|
|| (value.visible.includes("over18") && age >= 18)
|
||||||
|| (value.visible.includes('hasfalukantaccount') && hasFalukantAccount)) {
|
|| (value.visible.includes('nofalukantaccount') && !hasFalukantAccount)
|
||||||
const { visible, ...itemWithoutVisible } = value;
|
|| (value.visible.includes('hasfalukantaccount') && hasFalukantAccount)) {
|
||||||
filteredMenu[key] = { ...itemWithoutVisible };
|
const { visible, ...itemWithoutVisible } = value;
|
||||||
if (value.children) {
|
filteredMenu[key] = { ...itemWithoutVisible };
|
||||||
filteredMenu[key].children = await this.filterMenu(value.children, rights, age, userId);
|
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;
|
return filteredMenu;
|
||||||
}
|
}
|
||||||
@@ -363,8 +369,13 @@ class NavigationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async hasFalukantAccount(userId) {
|
async hasFalukantAccount(userId) {
|
||||||
const falukantUser = await FalukantUser.findOne({ where: { userId: userId } });
|
try {
|
||||||
return falukantUser !== null;
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user