浏览代码

WebAdmin: improve the error message when trying to delete referenced resources

Signed-off-by: Nicola Murino <[email protected]>
Nicola Murino 1 年之前
父节点
当前提交
c60eb050ef

+ 5 - 2
static/locales/en/translation.json

@@ -529,7 +529,8 @@
         "template_no_user": "No valid user defined, unable to complete the requested action"
     },
     "group": {
-        "view_manage": "View and manage groups"
+        "view_manage": "View and manage groups",
+        "err_delete_referenced": "Cannot delete a group with associated users, remove associations first"
     },
     "virtual_folders": {
         "view_manage": "View and manage virtual folders",
@@ -739,7 +740,8 @@
         "client": "Client: {{- val}}"
     },
     "role": {
-        "view_manage": "View and manage roles"
+        "view_manage": "View and manage roles",
+        "err_delete_referenced": "Cannot delete a role with associated admins, remove associations first"
     },
     "ip_list": {
         "view_manage": "View and manage IP lists",
@@ -896,6 +898,7 @@
     },
     "actions": {
         "view_manage": "View and manage rule actions for events",
+        "err_delete_referenced": "Cannot delete an action with associated rules, remove associations first",
         "http_url": "Server URL",
         "http_url_help": "i.e https://host:port/path. Placeholders are supported within the URL path",
         "http_url_required": "URL is required",

+ 5 - 2
static/locales/it/translation.json

@@ -529,7 +529,8 @@
         "template_no_user": "Nessun utente valido definito. Impossibile completare l'azione richiesta"
     },
     "group": {
-        "view_manage": "Visualizza e gestisci gruppi"
+        "view_manage": "Visualizza e gestisci gruppi",
+        "err_delete_referenced": "Impossibile eliminare un gruppo con utenti associati, rimuovere prima le associazioni"
     },
     "virtual_folders": {
         "view_manage": "Visualizza e gestisci cartelle virtuali",
@@ -739,7 +740,8 @@
         "client": "Client: {{- val}}"
     },
     "role": {
-        "view_manage": "Visualizza e gestisci ruoli"
+        "view_manage": "Visualizza e gestisci ruoli",
+        "err_delete_referenced": "Impossibile eliminare un ruolo con amministratori associati, rimuovere prima le associazioni"
     },
     "ip_list": {
         "view_manage": "Visualizza e gestisci liste IP",
@@ -896,6 +898,7 @@
     },
     "actions": {
         "view_manage": "Visualizza e gestisci le azioni delle regole per gli eventi",
+        "err_delete_referenced": "Impossibile eliminare un'azione con regole associate, rimuovere prima le associazioni",
         "http_url": "URL Server",
         "http_url_help": "Ad es. \"https://host:port/path\". I segnaposto sono supportati nel path dell'URL",
         "http_url_required": "L'URL è obbligatorio",

+ 18 - 6
templates/webadmin/eventactions.html

@@ -248,11 +248,11 @@ explicit grant from the SFTPGo Team ([email protected]).
                 stateSave: true,
                 stateDuration: 0,
                 stateLoadParams: function (settings, data) {
-                        if (data.search.search){
-                            const filterSearch = document.querySelector('[data-table-filter="search"]');
-                            filterSearch.value = data.search.search;
-                        }
-                    },
+                    if (data.search.search){
+                        const filterSearch = document.querySelector('[data-table-filter="search"]');
+                        filterSearch.value = data.search.search;
+                    }
+                },
                 language: {
                     info: $.t('datatable.info'),
                     infoEmpty: $.t('datatable.info_empty'),
@@ -312,7 +312,19 @@ explicit grant from the SFTPGo Team ([email protected]).
                 el.on("click", function(e){
                     e.preventDefault();
                     const parent = e.target.closest('tr');
-                    deleteAction(dt.row(parent).data()['name']);
+                    let row = dt.row(parent).data();
+                    if (row.rules && row.rules.length > 0){
+                        ModalAlert.fire({
+                            text: $.t('actions.err_delete_referenced'),
+                            icon: "warning",
+                            confirmButtonText: $.t('general.ok'),
+                            customClass: {
+                                confirmButton: "btn btn-primary"
+                            }
+                        });
+                        return;
+                    }
+                    deleteAction(row['name']);
                 });
             });
         }

+ 18 - 6
templates/webadmin/groups.html

@@ -251,11 +251,11 @@ explicit grant from the SFTPGo Team ([email protected]).
                     fixedColumnsLeft: 1
                 },
                 stateLoadParams: function (settings, data) {
-                        if (data.search.search){
-                            const filterSearch = document.querySelector('[data-table-filter="search"]');
-                            filterSearch.value = data.search.search;
-                        }
-                    },
+                    if (data.search.search){
+                        const filterSearch = document.querySelector('[data-table-filter="search"]');
+                        filterSearch.value = data.search.search;
+                    }
+                },
                 language: {
                     info: $.t('datatable.info'),
                     infoEmpty: $.t('datatable.info_empty'),
@@ -326,7 +326,19 @@ explicit grant from the SFTPGo Team ([email protected]).
                 el.on("click", function(e){
                     e.preventDefault();
                     const parent = e.target.closest('tr');
-                    deleteAction(dt.row(parent).data()['name']);
+                    let row = dt.row(parent).data();
+                    if (row.users && row.users.length > 0){
+                        ModalAlert.fire({
+                            text: $.t('group.err_delete_referenced'),
+                            icon: "warning",
+                            confirmButtonText: $.t('general.ok'),
+                            customClass: {
+                                confirmButton: "btn btn-primary"
+                            }
+                        });
+                        return;
+                    }
+                    deleteAction(row['name']);
                 });
             });
         }

+ 18 - 6
templates/webadmin/roles.html

@@ -252,11 +252,11 @@ explicit grant from the SFTPGo Team ([email protected]).
                     fixedColumnsLeft: 1
                 },
                 stateLoadParams: function (settings, data) {
-                        if (data.search.search){
-                            const filterSearch = document.querySelector('[data-table-filter="search"]');
-                            filterSearch.value = data.search.search;
-                        }
-                    },
+                    if (data.search.search){
+                        const filterSearch = document.querySelector('[data-table-filter="search"]');
+                        filterSearch.value = data.search.search;
+                    }
+                },
                 language: {
                     info: $.t('datatable.info'),
                     infoEmpty: $.t('datatable.info_empty'),
@@ -327,7 +327,19 @@ explicit grant from the SFTPGo Team ([email protected]).
                 el.on("click", function(e){
                     e.preventDefault();
                     const parent = e.target.closest('tr');
-                    deleteAction(dt.row(parent).data()['name']);
+                    let row = dt.row(parent).data();
+                    if (row.admins && row.admins.length > 0){
+                        ModalAlert.fire({
+                            text: $.t('role.err_delete_referenced'),
+                            icon: "warning",
+                            confirmButtonText: $.t('general.ok'),
+                            customClass: {
+                                confirmButton: "btn btn-primary"
+                            }
+                        });
+                        return;
+                    }
+                    deleteAction(row['name']);
                 });
             });
         }