# Plugins for the removal of accounts.
#
- def delete_domain(domain)
- # Delete the given domain.
- raise NotImplementedError
+ def RmPlugin.included(c)
+ # Callback, called whenever another class or module includes this
+ # one. The parameter given is the name of the class or module
+ # that included us.
+ @includers ||= []
+ @includers << c
end
- def delete_account(account)
- # Delete the given account.
- raise NotImplementedError
+ def RmPlugin.includers
+ return @includers
end
- def get_leftover_domains(db_domains)
- # Given a list of domains, determine which domains belonging to
- # this plugin are not contained in the given list.
- raise NotImplementedError
+ def delete_domain(domain)
+ # Delete the given domain. Some plugins don't have a concept of
+ # domains, so just delete all users with a username that looks
+ # like it's in the given domain.
+ usernames = list_domains_users([domain])
+
+ raise NonexistentDomainError.new(domain) if usernames.empty?
+
+ usernames.each do |u|
+ delete_account(u)
+ end
end
- def get_leftover_accounts(db_accounts)
- # Given a list of accounts, determine which accounts belonging to
- # this plugin are not contained in the given list.
+ def delete_account(account)
+ # Delete the given account.
raise NotImplementedError
end
+
end