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 779598ef..4d869a9a 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); @@ -818,8 +823,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"); @@ -831,6 +839,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()) {