m_sasl Create SASLCap which subclasses Cap::Capability and implements OnRequest()

This commit is contained in:
Attila Molnar 2015-12-05 15:39:52 +01:00
parent bc388aa97c
commit 53b9f55c18

View File

@ -24,6 +24,25 @@
#include "modules/sasl.h"
#include "modules/ssl.h"
class SASLCap : public Cap::Capability
{
bool OnRequest(LocalUser* user, bool adding) CXX11_OVERRIDE
{
// Requesting this cap is allowed anytime
if (adding)
return true;
// But removing it can only be done when unregistered
return (user->registered != REG_ALL);
}
public:
SASLCap(Module* mod)
: Cap::Capability(mod, "sasl")
{
}
};
enum SaslState { SASL_INIT, SASL_COMM, SASL_DONE };
enum SaslResult { SASL_OK, SASL_FAIL, SASL_ABORT };
@ -247,7 +266,7 @@ class CommandSASL : public Command
class ModuleSASL : public Module
{
SimpleExtItem<SaslAuthenticator> authExt;
Cap::Capability cap;
SASLCap cap;
CommandAuthenticate auth;
CommandSASL sasl;
Events::ModuleEventProvider sasleventprov;
@ -255,7 +274,7 @@ class ModuleSASL : public Module
public:
ModuleSASL()
: authExt("sasl_auth", ExtensionItem::EXT_USER, this)
, cap(this, "sasl")
, cap(this)
, auth(this, authExt, cap)
, sasl(this, authExt)
, sasleventprov(this, "event/sasl")