update methods

This commit is contained in:
byte[] 2020-06-03 20:47:36 -04:00
parent fd9ea4a991
commit 7160433c33
2 changed files with 23 additions and 1 deletions

View file

@ -356,6 +356,7 @@ defmodule Philomena.Bans do
Fingerprint
|> select([f], %{
reason: f.reason,
note: f.note,
valid_until: f.valid_until,
generated_ban_id: f.generated_ban_id,
type: ^"FingerprintBan"
@ -374,6 +375,7 @@ defmodule Philomena.Bans do
Subnet
|> select([s], %{
reason: s.reason,
note: s.note,
valid_until: s.valid_until,
generated_ban_id: s.generated_ban_id,
type: ^"SubnetBan"
@ -390,6 +392,7 @@ defmodule Philomena.Bans do
User
|> select([u], %{
reason: u.reason,
note: u.note,
valid_until: u.valid_until,
generated_ban_id: u.generated_ban_id,
type: ^"UserBan"

View file

@ -27,6 +27,25 @@ defmodule PhilomenaWeb.CurrentBanPlug do
ban = Bans.exists_for?(user, ip, fingerprint)
Conn.assign(conn, :current_ban, ban)
cond do
discourage?(ban) ->
Conn.register_before_send(conn, fn conn ->
:timer.sleep(normal_time())
pass(error?(), conn)
end)
true ->
Conn.assign(conn, :current_ban, ban)
end
end
defp discourage?(%{note: note}) when is_binary(note), do: String.contains?(note, "discourage")
defp discourage?(_ban), do: false
defp normal_time, do: trunc(:rand.normal(10_000, 5_000))
defp error?, do: :rand.uniform() < 0.05
defp pass(false, conn), do: conn
defp pass(_true, _conn), do: nil
end