12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # frozen_string_literal: true
- require 'concurrent'
- require_relative '../../config/boot'
- require_relative '../../config/environment'
- require_relative 'cli_helper'
- module Mastodon
- class CanonicalEmailBlocksCLI < Thor
- include CLIHelper
- def self.exit_on_failure?
- true
- end
- desc 'find EMAIL', 'Find a given e-mail address in the canonical e-mail blocks'
- long_desc <<-LONG_DESC
- When suspending a local user, a hash of a "canonical" version of their e-mail
- address is stored to prevent them from signing up again.
- This command can be used to find whether a known email address is blocked,
- and if so, which account it was attached to.
- LONG_DESC
- def find(email)
- accts = CanonicalEmailBlock.find_blocks(email).map(&:reference_account).map(&:acct).to_a
- if accts.empty?
- say("#{email} is not blocked", :yellow)
- else
- accts.each do |acct|
- say(acct, :white)
- end
- end
- end
- desc 'remove EMAIL', 'Remove a canonical e-mail block'
- long_desc <<-LONG_DESC
- When suspending a local user, a hash of a "canonical" version of their e-mail
- address is stored to prevent them from signing up again.
- This command allows removing a canonical email block.
- LONG_DESC
- def remove(email)
- blocks = CanonicalEmailBlock.find_blocks(email)
- if blocks.empty?
- say("#{email} is not blocked", :yellow)
- else
- blocks.destroy_all
- say("Removed canonical email block for #{email}", :green)
- end
- end
- private
- def color(processed, failed)
- if !processed.zero? && failed.zero?
- :green
- elsif failed.zero?
- :yellow
- else
- :red
- end
- end
- end
- end
|