0
0
Fork 0

Add admin API for managing canonical e-mail blocks (#19067)

This commit is contained in:
Eugen Rochko 2022-08-28 03:31:54 +02:00 committed by GitHub
parent b399d79545
commit c556c3a0d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 177 additions and 36 deletions

View file

@ -18,17 +18,15 @@ module Mastodon
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.
This command can be used to find whether a known email address is blocked.
LONG_DESC
def find(email)
accts = CanonicalEmailBlock.find_blocks(email).map(&:reference_account).map(&:acct).to_a
accts = CanonicalEmailBlock.matching_email(email)
if accts.empty?
say("#{email} is not blocked", :yellow)
say("#{email} is not blocked", :green)
else
accts.each do |acct|
say(acct, :white)
end
say("#{email} is blocked", :red)
end
end
@ -40,24 +38,13 @@ module Mastodon
This command allows removing a canonical email block.
LONG_DESC
def remove(email)
blocks = CanonicalEmailBlock.find_blocks(email)
blocks = CanonicalEmailBlock.matching_email(email)
if blocks.empty?
say("#{email} is not blocked", :yellow)
say("#{email} is not blocked", :green)
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
say("Unblocked #{email}", :green)
end
end
end