return @includers
end
+ def runner()
+ # The Runner associated with this plugin.
+ raise NotImplementedError
+ end
+
+ def dummy_runner()
+ # The RummyRunner associated with this plugin.
+ raise NotImplementedError
+ end
+
def describe_domain(domain)
# Provide a "description" of the domain. This is output along
# with the domain name and can be anything of use to the system
raise NotImplementedError
end
- def describe_account(account)
- # Provide a "description" of the account. This is output along
+ def describe_user(user)
+ # Provide a "description" of the user. This is output along
# with the domain name and can be anything of use to the system
# administrator.
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