]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/authorization/ao/ao.cpp
Do not flush indexes on stop (fixes #44).
[stg.git] / projects / stargazer / plugins / authorization / ao / ao.cpp
index cef272c0b9bca72ecb75f2601ae6c8cf3fe54995..5acea091a9e17de0bbfd8a124069934877372af3 100644 (file)
@@ -41,7 +41,7 @@ $Author: faust $
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-PLUGIN_CREATOR<AUTH_AO> aoc;
+static PLUGIN_CREATOR<AUTH_AO> aoc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -53,34 +53,28 @@ return aoc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 template <typename varType>
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 template <typename varType>
-class IS_CONTAINS_USER: public binary_function<varType, USER_PTR, bool>
+class IS_CONTAINS_USER: public std::binary_function<varType, USER_PTR, bool>
 {
 public:
     bool operator()(varType notifier, USER_PTR user) const
         {
         return notifier.GetUser() == user;
 {
 public:
     bool operator()(varType notifier, USER_PTR user) const
         {
         return notifier.GetUser() == user;
-        };
+        }
 };
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 };
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const string AUTH_AO::GetVersion() const
+std::string AUTH_AO::GetVersion() const
 {
 return "Always Online authorizator v.1.0";
 }
 //-----------------------------------------------------------------------------
 AUTH_AO::AUTH_AO()
 {
 return "Always Online authorizator v.1.0";
 }
 //-----------------------------------------------------------------------------
 AUTH_AO::AUTH_AO()
-    : errorStr(),
-      users(NULL),
-      usersList(),
+    : users(NULL),
       isRunning(false),
       isRunning(false),
-      settings(),
-      BeforeChgAONotifierList(),
-      AfterChgAONotifierList(),
-      BeforeChgIPNotifierList(),
-      AfterChgIPNotifierList(),
       onAddUserNotifier(*this),
       onAddUserNotifier(*this),
-      onDelUserNotifier(*this)
+      onDelUserNotifier(*this),
+      logger(GetPluginLogger(GetStgLogger(), "auth_ao"))
 {
 }
 //-----------------------------------------------------------------------------
 {
 }
 //-----------------------------------------------------------------------------
@@ -108,7 +102,7 @@ if (!isRunning)
 users->DelNotifierUserAdd(&onAddUserNotifier);
 users->DelNotifierUserDel(&onDelUserNotifier);
 
 users->DelNotifierUserAdd(&onAddUserNotifier);
 users->DelNotifierUserDel(&onDelUserNotifier);
 
-list<USER_PTR>::iterator users_iter;
+std::list<USER_PTR>::iterator users_iter;
 users_iter = usersList.begin();
 while (users_iter != usersList.end())
     {
 users_iter = usersList.begin();
 while (users_iter != usersList.end())
     {
@@ -152,8 +146,8 @@ void AUTH_AO::UnSetUserNotifiers(USER_PTR u)
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<int> > IsContainsUserAOB;
 IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<int> > IsContainsUserAOA;
 
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<int> > IsContainsUserAOB;
 IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<int> > IsContainsUserAOA;
 
-list<CHG_BEFORE_NOTIFIER<int> >::iterator aoBIter;
-list<CHG_AFTER_NOTIFIER<int> >::iterator  aoAIter;
+std::list<CHG_BEFORE_NOTIFIER<int> >::iterator aoBIter;
+std::list<CHG_AFTER_NOTIFIER<int> >::iterator  aoAIter;
 
 aoBIter = find_if(BeforeChgAONotifierList.begin(),
                   BeforeChgAONotifierList.end(),
 
 aoBIter = find_if(BeforeChgAONotifierList.begin(),
                   BeforeChgAONotifierList.end(),
@@ -180,12 +174,12 @@ if (aoAIter != AfterChgAONotifierList.end())
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<USER_IPS> > IsContainsUserIPB;
 IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<USER_IPS> >  IsContainsUserIPA;
 
 IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<USER_IPS> > IsContainsUserIPB;
 IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<USER_IPS> >  IsContainsUserIPA;
 
-list<CHG_BEFORE_NOTIFIER<USER_IPS> >::iterator ipBIter;
-list<CHG_AFTER_NOTIFIER<USER_IPS> >::iterator  ipAIter;
+std::list<CHG_BEFORE_NOTIFIER<USER_IPS> >::iterator ipBIter;
+std::list<CHG_AFTER_NOTIFIER<USER_IPS> >::iterator  ipAIter;
 
 
-ipBIter = find_if(BeforeChgIPNotifierList.begin(),
-                  BeforeChgIPNotifierList.end(),
-                  bind2nd(IsContainsUserIPB, u));
+ipBIter = std::find_if(BeforeChgIPNotifierList.begin(),
+                       BeforeChgIPNotifierList.end(),
+                       bind2nd(IsContainsUserIPB, u));
 
 if (ipBIter != BeforeChgIPNotifierList.end())
     {
 
 if (ipBIter != BeforeChgIPNotifierList.end())
     {
@@ -241,7 +235,8 @@ UpdateUserAuthorization(u);
 //-----------------------------------------------------------------------------
 void AUTH_AO::DelUser(USER_PTR u)
 {
 //-----------------------------------------------------------------------------
 void AUTH_AO::DelUser(USER_PTR u)
 {
-users->Unauthorize(u->GetLogin(), this);
+if (u->IsAuthorizedBy(this))
+    users->Unauthorize(u->GetLogin(), this);
 UnSetUserNotifiers(u);
 usersList.remove(u);
 }
 UnSetUserNotifiers(u);
 usersList.remove(u);
 }