From 32679a107a2e893dfd32ad963a44b6ca576a91cb Mon Sep 17 00:00:00 2001 From: Austin Ellis Date: Thu, 22 Sep 2022 11:38:07 -0500 Subject: [PATCH] Add the ability to confirm accounts via webcpanel after logging in. --- modules/webcpanel/pages/nickserv/confirm.cpp | 26 +++++++++++++++++ modules/webcpanel/pages/nickserv/confirm.h | 24 +++++++++++++++ .../templates/default/nickserv/confirm.html | 29 +++++++++++++++++++ modules/webcpanel/webcpanel.cpp | 9 +++++- modules/webcpanel/webcpanel.h | 1 + 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 modules/webcpanel/pages/nickserv/confirm.cpp create mode 100644 modules/webcpanel/pages/nickserv/confirm.h create mode 100644 modules/webcpanel/templates/default/nickserv/confirm.html diff --git a/modules/webcpanel/pages/nickserv/confirm.cpp b/modules/webcpanel/pages/nickserv/confirm.cpp new file mode 100644 index 000000000..00d2196a4 --- /dev/null +++ b/modules/webcpanel/pages/nickserv/confirm.cpp @@ -0,0 +1,26 @@ +/* + * (C) 2003-2022 Anope Team + * Contact us at team@anope.org + * + * Please read COPYING and README for further details. + */ + +#include "../../webcpanel.h" + +WebCPanel::NickServ::Confirm::Confirm(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u) +{ +} + +bool WebCPanel::NickServ::Confirm::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements) +{ + + std::vector params; + params.push_back(message.post_data["code"]); + + WebPanel::RunCommand(client, na->nc->display, na->nc, "NickServ", "nickserv/confirm", params, replacements); + + TemplateFileServer page("nickserv/confirm.html"); + + page.Serve(server, page_name, client, message, reply, replacements); + return true; +} diff --git a/modules/webcpanel/pages/nickserv/confirm.h b/modules/webcpanel/pages/nickserv/confirm.h new file mode 100644 index 000000000..6b0744a76 --- /dev/null +++ b/modules/webcpanel/pages/nickserv/confirm.h @@ -0,0 +1,24 @@ +/* + * (C) 2003-2022 Anope Team + * Contact us at team@anope.org + * + * Please read COPYING and README for further details. + */ + +namespace WebCPanel +{ + +namespace NickServ +{ + +class Confirm : public WebPanelProtectedPage +{ + public: + Confirm(const Anope::string &cat, const Anope::string &u); + + bool OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, NickAlias *, TemplateFileServer::Replacements &) anope_override; +}; + +} + +} diff --git a/modules/webcpanel/templates/default/nickserv/confirm.html b/modules/webcpanel/templates/default/nickserv/confirm.html new file mode 100644 index 000000000..66dbe34df --- /dev/null +++ b/modules/webcpanel/templates/default/nickserv/confirm.html @@ -0,0 +1,29 @@ +{INCLUDE header.html} +
Confirm your Email
+
+ {FOR M IN MESSAGES} +
+ {M}
+
+ {END FOR} + + You can CONFIRM your registration by entering your confirmation code below. + +
+ +

Confirm your account

+
+
+ +
+ +
+
+
+
+ +
+
+
+
+{INCLUDE footer.html} diff --git a/modules/webcpanel/webcpanel.cpp b/modules/webcpanel/webcpanel.cpp index abe0af32a..9b46fe6c9 100644 --- a/modules/webcpanel/webcpanel.cpp +++ b/modules/webcpanel/webcpanel.cpp @@ -28,6 +28,7 @@ class ModuleWebCPanel : public Module WebCPanel::NickServ::Cert nickserv_cert; WebCPanel::NickServ::Access nickserv_access; WebCPanel::NickServ::Alist nickserv_alist; + WebCPanel::NickServ::Confirm nickserv_confirm; WebCPanel::ChanServ::Info chanserv_info; WebCPanel::ChanServ::Set chanserv_set; @@ -49,7 +50,7 @@ class ModuleWebCPanel : public Module id(this, "webcpanel_id"), ip(this, "webcpanel_ip"), last_login(this, "webcpanel_last_login"), style_css("style.css", "/static/style.css", "text/css"), logo_png("logo.png", "/static/logo.png", "image/png"), cubes_png("cubes.png", "/static/cubes.png", "image/png"), favicon_ico("favicon.ico", "/favicon.ico", "image/x-icon"), index("/"), logout("/logout"), _register("/register"), confirm("/confirm"), - nickserv_info("NickServ", "/nickserv/info"), nickserv_cert("NickServ", "/nickserv/cert"), nickserv_access("NickServ", "/nickserv/access"), nickserv_alist("NickServ", "/nickserv/alist"), + nickserv_info("NickServ", "/nickserv/info"), nickserv_cert("NickServ", "/nickserv/cert"), nickserv_access("NickServ", "/nickserv/access"), nickserv_alist("NickServ", "/nickserv/alist"), nickserv_confirm("NickServ", "/nickserv/confirm"), chanserv_info("ChanServ", "/chanserv/info"), chanserv_set("ChanServ", "/chanserv/set"), chanserv_access("ChanServ", "/chanserv/access"), chanserv_akick("ChanServ", "/chanserv/akick"), chanserv_modes("ChanServ", "/chanserv/modes"), chanserv_drop("ChanServ", "/chanserv/drop"), memoserv_memos("MemoServ", "/memoserv/memos"), hostserv_request("HostServ", "/hostserv/request"), operserv_akill("OperServ", "/operserv/akill") @@ -107,6 +108,11 @@ class ModuleWebCPanel : public Module s.subsections.push_back(ss); provider->RegisterPage(&this->nickserv_alist); + ss.name = "Confirm"; + ss.url = "/nickserv/confirm"; + s.subsections.push_back(ss); + provider->RegisterPage(&this->nickserv_confirm); + panel.sections.push_back(s); } @@ -214,6 +220,7 @@ class ModuleWebCPanel : public Module provider->UnregisterPage(&this->nickserv_cert); provider->UnregisterPage(&this->nickserv_access); provider->UnregisterPage(&this->nickserv_alist); + provider->UnregisterPage(&this->nickserv_confirm); provider->UnregisterPage(&this->chanserv_info); provider->UnregisterPage(&this->chanserv_set); diff --git a/modules/webcpanel/webcpanel.h b/modules/webcpanel/webcpanel.h index 87a498d46..0313be234 100644 --- a/modules/webcpanel/webcpanel.h +++ b/modules/webcpanel/webcpanel.h @@ -166,6 +166,7 @@ namespace WebPanel #include "pages/nickserv/cert.h" #include "pages/nickserv/access.h" #include "pages/nickserv/alist.h" +#include "pages/nickserv/confirm.h" #include "pages/chanserv/info.h" #include "pages/chanserv/set.h"