Fixed bug where alarm categories would not check group members
authorEriks Jenkevics <eriks@netxms.org>
Mon, 24 Apr 2017 12:41:52 +0000 (15:41 +0300)
committerEriks Jenkevics <eriks@netxms.org>
Mon, 24 Apr 2017 12:41:58 +0000 (15:41 +0300)
src/server/core/alarm_category.cpp

index 84c95a0..590f3c3 100644 (file)
@@ -42,7 +42,7 @@ public:
    const TCHAR *getName() const { return m_name; }
    const TCHAR *getDescription() const { return m_description; }
 
-   bool checkAccess(UINT32 userId) const { return m_acl.contains(userId); }
+   bool checkAccess(UINT32 userId);
 
    void fillMessage(NXCPMessage *msg, UINT32 baseId) const;
    void modifyFromMessage(const NXCPMessage *msg);
@@ -176,6 +176,16 @@ bool AlarmCategory::saveToDatabase() const
    return success;
 }
 
+bool AlarmCategory::checkAccess(UINT32 userId)
+{
+   for(int i = 0; i < m_acl.size(); i++)
+   {
+      if (((m_acl.get(i) & GROUP_FLAG) && CheckUserMembership(userId, m_acl.get(i))) || (m_acl.get(i) == userId))
+         return true;
+   }
+   return false;
+}
+
 /**
  * Alarm categories
  */