Refactor duplicate handling to allow any authenticated user to check for duplicates, update API methods to require general authentication, and enhance expense fetching with improved error handling and logging.
This commit is contained in:
@@ -94,6 +94,9 @@ const interestMenu = computed(() => {
|
||||
|
||||
console.log('[Dashboard] Computing interest menu - isAdmin:', userIsAdmin, 'groups:', userGroups);
|
||||
|
||||
// Check if user has sales or admin privileges
|
||||
const hasSalesAccess = userGroups.includes('sales') || userGroups.includes('admin');
|
||||
|
||||
const baseMenu = [
|
||||
//{
|
||||
// to: "/dashboard/interest-eoi-queue",
|
||||
@@ -125,11 +128,6 @@ const interestMenu = computed(() => {
|
||||
icon: "mdi-account-check",
|
||||
title: "Interest Status",
|
||||
},
|
||||
{
|
||||
to: "/dashboard/expenses",
|
||||
icon: "mdi-receipt",
|
||||
title: "Expenses",
|
||||
},
|
||||
{
|
||||
to: "/dashboard/file-browser",
|
||||
icon: "mdi-folder",
|
||||
@@ -137,6 +135,18 @@ const interestMenu = computed(() => {
|
||||
},
|
||||
];
|
||||
|
||||
// Only show expenses to sales and admin users
|
||||
if (hasSalesAccess) {
|
||||
console.log('[Dashboard] Adding expenses to menu (user has sales/admin access)');
|
||||
baseMenu.push({
|
||||
to: "/dashboard/expenses",
|
||||
icon: "mdi-receipt",
|
||||
title: "Expenses",
|
||||
});
|
||||
} else {
|
||||
console.log('[Dashboard] Hiding expenses from menu (user role:', userGroups, ')');
|
||||
}
|
||||
|
||||
// Add admin menu items if user is admin
|
||||
if (userIsAdmin) {
|
||||
console.log('[Dashboard] Adding admin console to interest menu');
|
||||
@@ -216,33 +226,48 @@ const safeMenu = computed(() => {
|
||||
|
||||
console.warn('[Dashboard] Menu is not an array, returning fallback menu');
|
||||
|
||||
// Fallback menu with essential items (including admin for safety)
|
||||
return [
|
||||
// Get current user permissions for fallback menu
|
||||
const userIsAdmin = isAdmin();
|
||||
const userGroups = getUserGroups();
|
||||
const hasSalesAccess = userGroups.includes('sales') || userGroups.includes('admin');
|
||||
|
||||
// Fallback menu with essential items (respecting permissions)
|
||||
const fallbackMenu = [
|
||||
{
|
||||
to: "/dashboard/interest-list",
|
||||
icon: "mdi-view-list",
|
||||
title: "Interest List",
|
||||
},
|
||||
{
|
||||
to: "/dashboard/expenses",
|
||||
icon: "mdi-receipt",
|
||||
title: "Expenses",
|
||||
},
|
||||
{
|
||||
to: "/dashboard/file-browser",
|
||||
icon: "mdi-folder",
|
||||
title: "File Browser",
|
||||
},
|
||||
{
|
||||
];
|
||||
|
||||
// Only add expenses if user has sales/admin access
|
||||
if (hasSalesAccess) {
|
||||
fallbackMenu.push({
|
||||
to: "/dashboard/expenses",
|
||||
icon: "mdi-receipt",
|
||||
title: "Expenses",
|
||||
});
|
||||
}
|
||||
|
||||
// Only add admin console if user is admin
|
||||
if (userIsAdmin) {
|
||||
fallbackMenu.push({
|
||||
to: "/dashboard/admin",
|
||||
icon: "mdi-shield-crown",
|
||||
title: "Admin Console",
|
||||
},
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
return fallbackMenu;
|
||||
} catch (error) {
|
||||
console.error('[Dashboard] Error computing menu:', error);
|
||||
|
||||
// Emergency fallback menu
|
||||
// Emergency fallback menu - only essential items
|
||||
return [
|
||||
{
|
||||
to: "/dashboard/interest-list",
|
||||
|
||||
Reference in New Issue
Block a user