class Lita::Handlers::Authorization
Provides a chat interface for administering authorization groups.
Public Instance Methods
add(response)
click to toggle source
Adds a user to an authorization group. @param response [Lita::Response] The response object. @return [void]
# File lib/lita/handlers/authorization.rb, line 27 def add(response) toggle_membership(response, :add_user_to_group, "user_added", "user_already_in") end
list(response)
click to toggle source
Lists all authorization groups (or only the specified group) and the names of their members. @param response [Lita::Response] The response object. @return [void]
# File lib/lita/handlers/authorization.rb, line 42 def list(response) requested_group = response.args[1] output = get_groups_list(response.args[1]) if output.empty? response.reply(empty_state_for_list(requested_group)) else response.reply(output.join("\n")) end end
remove(response)
click to toggle source
Removes a user from an authorization group. @param response [Lita::Response] The response object. @return [void]
# File lib/lita/handlers/authorization.rb, line 34 def remove(response) toggle_membership(response, :remove_user_from_group, "user_removed", "user_not_in") end
Private Instance Methods
empty_state_for_list(requested_group)
click to toggle source
# File lib/lita/handlers/authorization.rb, line 54 def empty_state_for_list(requested_group) if requested_group t("empty_state_group", group: requested_group) else t("empty_state") end end
get_groups_list(requested_group)
click to toggle source
# File lib/lita/handlers/authorization.rb, line 62 def get_groups_list(requested_group) groups_with_users = robot.auth.groups_with_users if requested_group requested_group = requested_group.downcase.strip.to_sym groups_with_users.select! { |group, _| group == requested_group } end groups_with_users.map do |group, users| user_names = users.map(&:name).join(", ") "#{group}: #{user_names}" end end
toggle_membership(response, method_name, success_key, failure_key)
click to toggle source
# File lib/lita/handlers/authorization.rb, line 74 def toggle_membership(response, method_name, success_key, failure_key) return unless valid_message?(response) if robot.auth.public_send(method_name, response.user, @user, @group) response.reply t(success_key, user: @user.name, group: @group) else response.reply t(failure_key, user: @user.name, group: @group) end end
valid_group?(response, identifier)
click to toggle source
# File lib/lita/handlers/authorization.rb, line 84 def valid_group?(response, identifier) unless identifier && @group response.reply "#{t('format')}: #{robot.name} auth add USER GROUP" return end if @group.downcase.strip == "admins" response.reply t("admin_management") return end true end
valid_message?(response)
click to toggle source
Validates that incoming messages have the right format and a valid user. Also assigns the user and group to instance variables for the main methods to use later.
# File lib/lita/handlers/authorization.rb, line 101 def valid_message?(response) _command, identifier, @group = response.args return unless valid_group?(response, identifier) return unless valid_user?(response, identifier) true end
valid_user?(response, identifier)
click to toggle source
# File lib/lita/handlers/authorization.rb, line 111 def valid_user?(response, identifier) @user = User.fuzzy_find(identifier) if @user true else response.reply t("no_user_found", identifier: identifier) return end end