summaryrefslogtreecommitdiff
path: root/modules/nickserv
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-11-11 12:58:14 -0500
committerAdam <Adam@anope.org>2016-11-11 12:58:14 -0500
commitef5b6919e3508cc9d4c722285d9d56f5a275f650 (patch)
tree56497f0a4f5d1847bae511c72bdb2d3581df58ef /modules/nickserv
parent8dd6e3195ed7600e39935e887df2626215733dfb (diff)
Fix opers not really being serializable
Diffstat (limited to 'modules/nickserv')
-rw-r--r--modules/nickserv/access.cpp2
-rw-r--r--modules/nickserv/cert.cpp2
-rw-r--r--modules/nickserv/drop.cpp2
-rw-r--r--modules/nickserv/group.cpp2
-rw-r--r--modules/nickserv/info.cpp4
-rw-r--r--modules/nickserv/main/account.cpp15
-rw-r--r--modules/nickserv/main/account.h14
-rw-r--r--modules/nickserv/main/accounttype.cpp4
-rw-r--r--modules/nickserv/main/accounttype.h2
-rw-r--r--modules/nickserv/register.cpp1
-rw-r--r--modules/nickserv/set.cpp4
-rw-r--r--modules/nickserv/suspend.cpp2
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;