]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/common/plugin.rb
Pass a Configuration object to each plugin's initialize().
[mailshears.git] / lib / common / plugin.rb
index 0687989fe03169e3aa2e4d9c256f30bf9cbe8b67..77d80c469e7b1e94f794b84b0c532f632765f77e 100644 (file)
@@ -28,4 +28,38 @@ module Plugin
     raise NotImplementedError
   end
 
+  def list_users()
+    # Return a list of all users managed by this plugin.
+    raise NotImplementedError
+  end
+
+  def user_exists(username)
+    # Does the given username exist for this plugin? We use a naive
+    # implementation here based on list_users() which is required to
+    # exist above. Plugins can override this with something fast.
+    users = list_users()
+    return users.include?(username)
+  end
+
+  def list_domains_users(domains)
+    # Get all usernames belonging to the given domains. If a username
+    # ends in @example.com, it belongs to the domain example.com
+    #
+    # This uses a naive loop, but relies only on the existence of a
+    # list_users() method which is guaranteed above. More efficient
+    # implementations can usually be made within the plugin.
+    domains_users = []
+
+    usernames = list_users();
+    domains.each do |d|
+      matches = usernames.select do |username|
+        username =~ /@#{d}$/
+      end
+
+      domains_users += matches
+    end
+
+    return domains_users
+  end
+
 end