summaryrefslogtreecommitdiff
path: root/modules/commands/ns_resetpass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/commands/ns_resetpass.cpp')
-rw-r--r--modules/commands/ns_resetpass.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/modules/commands/ns_resetpass.cpp b/modules/commands/ns_resetpass.cpp
index 153691cdf..3cced2de2 100644
--- a/modules/commands/ns_resetpass.cpp
+++ b/modules/commands/ns_resetpass.cpp
@@ -56,6 +56,12 @@ class CommandNSResetPass : public Command
}
};
+struct ResetInfo : ExtensibleItem
+{
+ Anope::string code;
+ time_t time;
+};
+
class NSResetPass : public Module
{
CommandNSResetPass commandnsresetpass;
@@ -80,28 +86,25 @@ class NSResetPass : public Module
User *u = source.u;
NickAlias *na = findnick(params[0]);
- time_t t;
- Anope::string c;
- if (na && na->nc->GetExtRegular("ns_resetpass_code", c) && na->nc->GetExtRegular("ns_resetpass_time", t))
+ ResetInfo *ri = na ? na->nc->GetExt<ResetInfo *>("ns_resetpass") : NULL;
+ if (na && ri)
{
const Anope::string &passcode = params[1];
- if (t < Anope::CurTime - 3600)
+ if (ri->time < Anope::CurTime - 3600)
{
- na->nc->Shrink("ns_resetpass_code");
- na->nc->Shrink("ns_resetpass_time");
+ na->nc->Shrink("ns_resetpass");
source.Reply(_("Your password reset request has expired."));
}
- else if (passcode.equals_cs(c))
+ else if (passcode.equals_cs(ri->code))
{
- na->nc->Shrink("ns_resetpass_code");
- na->nc->Shrink("ns_resetpass_time");
+ na->nc->Shrink("ns_resetpass");
Log(LOG_COMMAND, u, &commandnsresetpass) << "confirmed RESETPASS to forcefully identify to " << na->nick;
na->nc->UnsetFlag(NI_UNCONFIRMED);
u->Identify(na);
- source.Reply(_("You are now identified for your nick. Change your passwor now."));
+ source.Reply(_("You are now identified for your nick. Change your password now."));
}
else
@@ -142,8 +145,10 @@ static bool SendResetEmail(User *u, NickAlias *na, BotInfo *bi)
message = message.replace_all_cs("%N", Config->NetworkName);
message = message.replace_all_cs("%c", passcode);
- na->nc->Extend("ns_resetpass_code", new ExtensibleItemRegular<Anope::string>(passcode));
- na->nc->Extend("ns_resetpass_time", new ExtensibleItemRegular<time_t>(Anope::CurTime));
+ ResetInfo *ri = new ResetInfo;
+ ri->code = passcode;
+ ri->time = Anope::CurTime;
+ na->nc->Extend("ns_resetpass", ri);
return Mail(u, na->nc, bi, subject, message);
}