feat(roles): add admin store roles page, permission i18n, and menu integration
Some checks failed
Some checks failed
- Add admin store roles page with merchant→store cascading for superadmin and store-only selection for platform admin - Add permission catalog API with translated labels/descriptions (en/fr/de/lb) - Add permission translations to all 15 module locale files (60 files total) - Add info icon tooltips for permission descriptions in role editor - Add store roles menu item and admin menu item in module definition - Fix store-selector.js URL construction bug when apiEndpoint has query params - Add admin store roles API (CRUD + platform scoping) - Add integration tests for admin store roles and permission catalog Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -76,5 +76,17 @@
|
||||
"account_settings": "Kontoeinstellungen",
|
||||
"profile": "Profil",
|
||||
"settings": "Einstellungen"
|
||||
},
|
||||
"permissions": {
|
||||
"dashboard_view": "Dashboard anzeigen",
|
||||
"dashboard_view_desc": "Zugriff auf das Dashboard und die Übersicht",
|
||||
"settings_view": "Einstellungen anzeigen",
|
||||
"settings_view_desc": "Shop-Konfiguration anzeigen",
|
||||
"settings_edit": "Einstellungen bearbeiten",
|
||||
"settings_edit_desc": "Shop-Konfiguration ändern",
|
||||
"settings_theme": "Theme verwalten",
|
||||
"settings_theme_desc": "Shop-Theme und Erscheinungsbild anpassen",
|
||||
"settings_domains": "Domains verwalten",
|
||||
"settings_domains_desc": "Benutzerdefinierte Domains konfigurieren"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,18 @@
|
||||
"save_profile": "Save Profile",
|
||||
"profile_updated": "Profile updated successfully"
|
||||
},
|
||||
"permissions": {
|
||||
"dashboard_view": "View Dashboard",
|
||||
"dashboard_view_desc": "Access the store dashboard and overview",
|
||||
"settings_view": "View Settings",
|
||||
"settings_view_desc": "View store settings and configuration",
|
||||
"settings_edit": "Edit Settings",
|
||||
"settings_edit_desc": "Modify store settings and configuration",
|
||||
"settings_theme": "Manage Theme",
|
||||
"settings_theme_desc": "Customize the store theme and appearance",
|
||||
"settings_domains": "Manage Domains",
|
||||
"settings_domains_desc": "Configure custom domains for the store"
|
||||
},
|
||||
"messages": {
|
||||
"failed_to_load_dashboard_data": "Failed to load dashboard data",
|
||||
"dashboard_refreshed": "Dashboard refreshed",
|
||||
|
||||
@@ -76,5 +76,17 @@
|
||||
"account_settings": "Paramètres du compte",
|
||||
"profile": "Profil",
|
||||
"settings": "Paramètres"
|
||||
},
|
||||
"permissions": {
|
||||
"dashboard_view": "Voir le tableau de bord",
|
||||
"dashboard_view_desc": "Accéder au tableau de bord et à la vue d'ensemble",
|
||||
"settings_view": "Voir les paramètres",
|
||||
"settings_view_desc": "Voir la configuration du magasin",
|
||||
"settings_edit": "Modifier les paramètres",
|
||||
"settings_edit_desc": "Modifier la configuration du magasin",
|
||||
"settings_theme": "Gérer le thème",
|
||||
"settings_theme_desc": "Personnaliser le thème et l'apparence du magasin",
|
||||
"settings_domains": "Gérer les domaines",
|
||||
"settings_domains_desc": "Configurer les domaines personnalisés"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,5 +76,17 @@
|
||||
"account_settings": "Kont-Astellungen",
|
||||
"profile": "Profil",
|
||||
"settings": "Astellungen"
|
||||
},
|
||||
"permissions": {
|
||||
"dashboard_view": "Dashboard kucken",
|
||||
"dashboard_view_desc": "Zougang zum Dashboard an der Iwwersiicht",
|
||||
"settings_view": "Astellungen kucken",
|
||||
"settings_view_desc": "Buttek-Konfiguratioun kucken",
|
||||
"settings_edit": "Astellungen änneren",
|
||||
"settings_edit_desc": "Buttek-Konfiguratioun änneren",
|
||||
"settings_theme": "Theme verwalten",
|
||||
"settings_theme_desc": "Buttek-Theme an Ausgesinn upassen",
|
||||
"settings_domains": "Domänen verwalten",
|
||||
"settings_domains_desc": "Personaliséiert Domäne konfiguréieren"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,8 +166,9 @@ function initStoreSelector(selectElement, options = {}) {
|
||||
}
|
||||
|
||||
try {
|
||||
const sep = config.apiEndpoint.includes('?') ? '&' : '?';
|
||||
const response = await apiClient.get(
|
||||
`${config.apiEndpoint}?search=${encodeURIComponent(query)}&limit=${config.maxOptions}`
|
||||
`${config.apiEndpoint}${sep}search=${encodeURIComponent(query)}&limit=${config.maxOptions}`
|
||||
);
|
||||
|
||||
const stores = (response.stores || []).map(v => ({
|
||||
|
||||
Reference in New Issue
Block a user