diff options
| author | Adam <Adam@anope.org> | 2016-11-11 12:58:14 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2016-11-11 12:58:14 -0500 |
| commit | ef5b6919e3508cc9d4c722285d9d56f5a275f650 (patch) | |
| tree | 56497f0a4f5d1847bae511c72bdb2d3581df58ef /modules/nickserv | |
| parent | 8dd6e3195ed7600e39935e887df2626215733dfb (diff) | |
Fix opers not really being serializable
Diffstat (limited to 'modules/nickserv')
| -rw-r--r-- | modules/nickserv/access.cpp | 2 | ||||
| -rw-r--r-- | modules/nickserv/cert.cpp | 2 | ||||
| -rw-r--r-- | modules/nickserv/drop.cpp | 2 | ||||
| -rw-r--r-- | modules/nickserv/group.cpp | 2 | ||||
| -rw-r--r-- | modules/nickserv/info.cpp | 4 | ||||
| -rw-r--r-- | modules/nickserv/main/account.cpp | 15 | ||||
| -rw-r--r-- | modules/nickserv/main/account.h | 14 | ||||
| -rw-r--r-- | modules/nickserv/main/accounttype.cpp | 4 | ||||
| -rw-r--r-- | modules/nickserv/main/accounttype.h | 2 | ||||
| -rw-r--r-- | modules/nickserv/register.cpp | 1 | ||||
| -rw-r--r-- | modules/nickserv/set.cpp | 4 | ||||
| -rw-r--r-- | modules/nickserv/suspend.cpp | 2 |
12 files changed, 27 insertions, 27 deletions
diff --git a/modules/nickserv/access.cpp b/modules/nickserv/access.cpp index 48d2e3bdc..1f3622afa 100644 --- a/modules/nickserv/access.cpp +++ b/modules/nickserv/access.cpp @@ -189,7 +189,7 @@ class CommandNSAccess : public Command return; } - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.GetAccount() != na->GetAccount() && na->GetAccount()->IsServicesOper() && !cmd.equals_ci("LIST")) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.GetAccount() != na->GetAccount() && na->GetAccount()->GetOper() && !cmd.equals_ci("LIST")) { source.Reply(_("You may view but not modify the access list of other Services Operators.")); return; diff --git a/modules/nickserv/cert.cpp b/modules/nickserv/cert.cpp index 3f3ea3a5a..f84d32cea 100644 --- a/modules/nickserv/cert.cpp +++ b/modules/nickserv/cert.cpp @@ -270,7 +270,7 @@ class CommandNSCert : public Command return; } - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.GetAccount() != na->GetAccount() && na->GetAccount()->IsServicesOper() && !cmd.equals_ci("LIST")) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.GetAccount() != na->GetAccount() && na->GetAccount()->GetOper() && !cmd.equals_ci("LIST")) { source.Reply(_("You may view, but not modify, the certificate list of other Services Operators.")); return; diff --git a/modules/nickserv/drop.cpp b/modules/nickserv/drop.cpp index f4a109573..426e3115e 100644 --- a/modules/nickserv/drop.cpp +++ b/modules/nickserv/drop.cpp @@ -55,7 +55,7 @@ class CommandNSDrop : public Command return; } - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && !is_mine && na->GetAccount()->IsServicesOper()) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && !is_mine && na->GetAccount()->GetOper()) { source.Reply(_("You may not drop other Services Operators' nicknames.")); return; diff --git a/modules/nickserv/group.cpp b/modules/nickserv/group.cpp index 68e59ad7f..ea62a9012 100644 --- a/modules/nickserv/group.cpp +++ b/modules/nickserv/group.cpp @@ -178,7 +178,7 @@ class CommandNSGroup : public Command return; } - if (maxaliases && target->GetAccount()->GetRefs<NickServ::Nick *>().size() >= maxaliases && !target->GetAccount()->IsServicesOper()) + if (maxaliases && target->GetAccount()->GetRefs<NickServ::Nick *>().size() >= maxaliases && !target->GetAccount()->GetOper()) { source.Reply(_("There are too many nicknames in your group.")); return; diff --git a/modules/nickserv/info.cpp b/modules/nickserv/info.cpp index 9b916ff60..08614315e 100644 --- a/modules/nickserv/info.cpp +++ b/modules/nickserv/info.cpp @@ -65,8 +65,8 @@ class CommandNSInfo : public Command if (na->GetAccount()->HasFieldS("UNCONFIRMED")) source.Reply(_("\002{0}\002 has not confirmed their account."), na->GetNick()); - if (na->GetAccount()->IsServicesOper() && (show_hidden || !na->GetAccount()->HasFieldS("HIDE_STATUS"))) - source.Reply(_("\002{0}\002 is a Services Operator of type \002{1}\002."), na->GetNick(), na->GetAccount()->o->GetType()->GetName()); + if (na->GetAccount()->GetOper() && (show_hidden || !na->GetAccount()->HasFieldS("HIDE_STATUS"))) + source.Reply(_("\002{0}\002 is a Services Operator of type \002{1}\002."), na->GetNick(), na->GetAccount()->GetOper()->GetType()->GetName()); InfoFormatter info(source.nc); diff --git a/modules/nickserv/main/account.cpp b/modules/nickserv/main/account.cpp index 1c2266e59..1cd868194 100644 --- a/modules/nickserv/main/account.cpp +++ b/modules/nickserv/main/account.cpp @@ -77,6 +77,16 @@ void AccountImpl::SetLanguage(const Anope::string &lang) Set(&AccountType::language, lang); } +Oper *AccountImpl::GetOper() +{ + return Get(&AccountType::oper); +} + +void AccountImpl::SetOper(Oper *oper) +{ + Set(&AccountType::oper, oper); +} + MemoServ::MemoInfo *AccountImpl::GetMemos() { return GetRef<MemoServ::MemoInfo *>(); @@ -103,11 +113,6 @@ void AccountImpl::SetDisplay(NickServ::Nick *na) nc = this; } -bool AccountImpl::IsServicesOper() const -{ - return this->o != NULL; -} - bool AccountImpl::IsOnAccess(User *u) { Anope::string buf = u->GetIdent() + "@" + u->host, buf2, buf3; diff --git a/modules/nickserv/main/account.h b/modules/nickserv/main/account.h index 461a3d865..611233261 100644 --- a/modules/nickserv/main/account.h +++ b/modules/nickserv/main/account.h @@ -24,10 +24,10 @@ class AccountImpl : public NickServ::Account friend class AccountType; Anope::string display, password, email, language; + Oper *oper = nullptr; public: - AccountImpl(Serialize::TypeBase *type) : NickServ::Account(type) { } - AccountImpl(Serialize::TypeBase *type, Serialize::ID id) : NickServ::Account(type, id) { } + using NickServ::Account::Account; ~AccountImpl(); void Delete() override; @@ -43,16 +43,12 @@ class AccountImpl : public NickServ::Account Anope::string GetLanguage() override; void SetLanguage(const Anope::string &) override; + Oper *GetOper() override; + void SetOper(Oper *) override; + MemoServ::MemoInfo *GetMemos() override; void SetDisplay(NickServ::Nick *na) override; - bool IsServicesOper() const override; - /*void AddAccess(const Anope::string &entry) override; - Anope::string GetAccess(unsigned entry) const override; - unsigned GetAccessCount() const override; - bool FindAccess(const Anope::string &entry) override; - void EraseAccess(const Anope::string &entry) override; - void ClearAccess() override;*/ bool IsOnAccess(User *u) override; unsigned int GetChannelCount() override; }; diff --git a/modules/nickserv/main/accounttype.cpp b/modules/nickserv/main/accounttype.cpp index 6ea32cd83..ec37c18d4 100644 --- a/modules/nickserv/main/accounttype.cpp +++ b/modules/nickserv/main/accounttype.cpp @@ -25,6 +25,7 @@ AccountType::AccountType(Module *me) : Serialize::Type<AccountImpl>(me) , pass(this, "pass", &AccountImpl::password) , email(this, "email", &AccountImpl::email) , language(this, "language", &AccountImpl::language) + , oper(this, "oper", &AccountImpl::oper) { } @@ -38,9 +39,6 @@ void AccountType::Display::OnSet(AccountImpl *acc, const Anope::string &disp) map.erase(*old); map[disp] = acc; - -#warning "this is all wrong" - acc->o = Oper::Find(disp); } NickServ::Account *AccountType::FindAccount(const Anope::string &acc) diff --git a/modules/nickserv/main/accounttype.h b/modules/nickserv/main/accounttype.h index 27efd90dd..8e831ed2c 100644 --- a/modules/nickserv/main/accounttype.h +++ b/modules/nickserv/main/accounttype.h @@ -34,7 +34,7 @@ class AccountType : public Serialize::Type<AccountImpl> Serialize::Field<AccountImpl, Anope::string> email; /* Locale name of the language of the user. Empty means default language */ Serialize::Field<AccountImpl, Anope::string> language; - + Serialize::ObjectField<AccountImpl, Oper *> oper; AccountType(Module *); diff --git a/modules/nickserv/register.cpp b/modules/nickserv/register.cpp index e3d4d4d23..471ca57fa 100644 --- a/modules/nickserv/register.cpp +++ b/modules/nickserv/register.cpp @@ -233,6 +233,7 @@ class CommandNSRegister : public Command NickServ::Account *nc = Serialize::New<NickServ::Account *>(); nc->SetDisplay(u_nick); + nc->SetOper(Oper::Find(u_nick)); NickServ::Nick *na = Serialize::New<NickServ::Nick *>(); na->SetNick(u_nick); diff --git a/modules/nickserv/set.cpp b/modules/nickserv/set.cpp index 7b1034eca..4be031690 100644 --- a/modules/nickserv/set.cpp +++ b/modules/nickserv/set.cpp @@ -198,7 +198,7 @@ class CommandNSSASetPassword : public Command size_t len = params[1].length(); - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.nc != nc && nc->IsServicesOper()) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.nc != nc && nc->GetOper()) { source.Reply(_("You may not change the password of other Services Operators.")); return; @@ -464,7 +464,7 @@ class CommandNSSetEmail : public Command return; } - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.nc != nc && nc->IsServicesOper()) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && source.nc != nc && nc->GetOper()) { source.Reply(_("You may not change the e-mail of other Services Operators.")); return; diff --git a/modules/nickserv/suspend.cpp b/modules/nickserv/suspend.cpp index 8f436e682..e252eb67c 100644 --- a/modules/nickserv/suspend.cpp +++ b/modules/nickserv/suspend.cpp @@ -160,7 +160,7 @@ class CommandNSSuspend : public Command return; } - if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && na->GetAccount()->IsServicesOper()) + if (Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && na->GetAccount()->GetOper()) { source.Reply(_("You may not suspend other Services Operators' nicknames.")); return; |
