diff options
-rw-r--r-- | include/modules/ns_cert.h | 1 | ||||
-rw-r--r-- | modules/nickserv/ns_cert.cpp | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/modules/ns_cert.h b/include/modules/ns_cert.h index 8ecf610bb..078303884 100644 --- a/include/modules/ns_cert.h +++ b/include/modules/ns_cert.h @@ -79,4 +79,5 @@ public: CertService(Module *c) : Service(c, "CertService", "certs") { } virtual NickCore *FindAccountFromCert(const Anope::string &cert) = 0; + virtual void ReplaceCert(const Anope::string &oldcert, const Anope::string &newcert) = 0; }; diff --git a/modules/nickserv/ns_cert.cpp b/modules/nickserv/ns_cert.cpp index 8a5f85ded..4a19762f8 100644 --- a/modules/nickserv/ns_cert.cpp +++ b/modules/nickserv/ns_cert.cpp @@ -26,6 +26,17 @@ struct CertServiceImpl final return it->second; return NULL; } + + void ReplaceCert(const Anope::string &oldcert, const Anope::string &newcert) override + { + auto *nc = FindAccountFromCert(oldcert); + if (!nc) + return; + + auto *cl = nc->GetExt<NSCertList>("certificates"); + if (cl) + cl->ReplaceCert(oldcert, newcert); + } }; struct NSCertListImpl final |