diff options
| author | 2023-01-08 16:12:43 +0000 | |
|---|---|---|
| committer | 2023-01-08 16:28:40 +0000 | |
| commit | 8831595e1a5306f4204fedc6ecbc4a3c9299fb35 (patch) | |
| tree | f9f27322d35d199240dfeca82415ec94724f2ff9 /src/modules/m_account.cpp | |
| parent | Switch sqloper to use a local user lookup instead of IS_LOCAL. (diff) | |
Rework how users are assigned to connect classes.
- Move core connect class checks and <performance:clonesonconnect>
to the core_user module.
- Add pre-change and post-change events for when a connect class
changes.
- Split explicit class changing out into its own method.
- Remove the need to almost always call CheckClass after SetClass.
- Add use counting to the connect class instead of relying on the
shared_ptr use count.
Diffstat (limited to 'src/modules/m_account.cpp')
| -rw-r--r-- | src/modules/m_account.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/modules/m_account.cpp b/src/modules/m_account.cpp index 3e1795ed5..369ca9efb 100644 --- a/src/modules/m_account.cpp +++ b/src/modules/m_account.cpp @@ -324,15 +324,15 @@ public: return MOD_RES_DENY; // Account required but it does not match. } - ModResult OnSetConnectClass(LocalUser* user, const ConnectClass::Ptr& myclass) override + ModResult OnPreChangeConnectClass(LocalUser* user, const std::shared_ptr<ConnectClass>& klass) override { const char* error = nullptr; - if (stdalgo::string::equalsci(myclass->config->getString("requireaccount"), "nick")) + if (stdalgo::string::equalsci(klass->config->getString("requireaccount"), "nick")) { if (!accountapi.GetAccountName(user) && !accountapi.IsIdentifiedToNick(user)) error = "an account matching their current nickname"; } - else if (myclass->config->getBool("requireaccount")) + else if (klass->config->getBool("requireaccount")) { if (!accountapi.GetAccountName(user)) error = "an account"; @@ -340,8 +340,8 @@ public: if (error) { - ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as it requires the user to be logged into %s", - myclass->GetName().c_str(), error); + ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as it requires the user to be logged into %s.", + klass->GetName().c_str(), error); return MOD_RES_DENY; } return MOD_RES_PASSTHRU; |
