From 5618cf78d78b9ff265c7b51919b34afbbc896f3d Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Mon, 19 Mar 2012 00:18:15 +0000 Subject: [PATCH] webadmin: Ask for confirmation when deleting a network Closes #142 --- modules/data/webadmin/tmpl/del_network.tmpl | 23 +++++++++++++++++++ modules/webadmin.cpp | 25 +++++++++++++++++---- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 modules/data/webadmin/tmpl/del_network.tmpl diff --git a/modules/data/webadmin/tmpl/del_network.tmpl b/modules/data/webadmin/tmpl/del_network.tmpl new file mode 100644 index 00000000..fd6f9fc9 --- /dev/null +++ b/modules/data/webadmin/tmpl/del_network.tmpl @@ -0,0 +1,23 @@ + + +
+

Confirm Network Deletion

+
+
+
+ Are you sure you want to delete "/"? +
+ + + +
+
+
+
+
+
+
+
+
+ + diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index f32f56aa..0b01a859 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -384,14 +384,19 @@ public: return NetworkPage(WebSock, Tmpl, pNetwork->GetUser(), pNetwork); } else if (sPageName == "delnetwork") { - CUser* pUser = CZNC::Get().FindUser(WebSock.GetParam("user", false)); + CString sUser = WebSock.GetParam("user"); + if (sUser.empty() && !WebSock.IsPost()) { + sUser = WebSock.GetParam("user", false); + } + + CUser* pUser = CZNC::Get().FindUser(sUser); // Admin||Self Check if (!spSession->IsAdmin() && (!spSession->GetUser() || spSession->GetUser() != pUser)) { return false; } - return DelNetwork(WebSock, pUser); + return DelNetwork(WebSock, pUser, Tmpl); } else if (sPageName == "editchan") { CIRCNetwork* pNetwork = SafeGetNetworkFromParam(WebSock); @@ -810,8 +815,11 @@ public: return true; } - bool DelNetwork(CWebSock& WebSock, CUser* pUser) { - CString sNetwork = WebSock.GetParam("name", false); + bool DelNetwork(CWebSock& WebSock, CUser* pUser, CTemplate& Tmpl) { + CString sNetwork = WebSock.GetParam("name"); + if (sNetwork.empty() && !WebSock.IsPost()) { + sNetwork = WebSock.GetParam("name", false); + } if (!pUser) { WebSock.PrintErrorPage("That user doesn't exist"); @@ -823,6 +831,15 @@ public: return true; } + if (!WebSock.IsPost()) { + // Show the "Are you sure?" page: + + Tmpl.SetFile("del_network.tmpl"); + Tmpl["Username"] = pUser->GetUserName(); + Tmpl["Network"] = sNetwork; + return true; + } + pUser->DeleteNetwork(sNetwork); if (!CZNC::Get().WriteConfig()) {