mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-23 20:18:00 +01:00
update methods
This commit is contained in:
parent
fd9ea4a991
commit
7160433c33
2 changed files with 23 additions and 1 deletions
|
@ -356,6 +356,7 @@ defmodule Philomena.Bans do
|
||||||
Fingerprint
|
Fingerprint
|
||||||
|> select([f], %{
|
|> select([f], %{
|
||||||
reason: f.reason,
|
reason: f.reason,
|
||||||
|
note: f.note,
|
||||||
valid_until: f.valid_until,
|
valid_until: f.valid_until,
|
||||||
generated_ban_id: f.generated_ban_id,
|
generated_ban_id: f.generated_ban_id,
|
||||||
type: ^"FingerprintBan"
|
type: ^"FingerprintBan"
|
||||||
|
@ -374,6 +375,7 @@ defmodule Philomena.Bans do
|
||||||
Subnet
|
Subnet
|
||||||
|> select([s], %{
|
|> select([s], %{
|
||||||
reason: s.reason,
|
reason: s.reason,
|
||||||
|
note: s.note,
|
||||||
valid_until: s.valid_until,
|
valid_until: s.valid_until,
|
||||||
generated_ban_id: s.generated_ban_id,
|
generated_ban_id: s.generated_ban_id,
|
||||||
type: ^"SubnetBan"
|
type: ^"SubnetBan"
|
||||||
|
@ -390,6 +392,7 @@ defmodule Philomena.Bans do
|
||||||
User
|
User
|
||||||
|> select([u], %{
|
|> select([u], %{
|
||||||
reason: u.reason,
|
reason: u.reason,
|
||||||
|
note: u.note,
|
||||||
valid_until: u.valid_until,
|
valid_until: u.valid_until,
|
||||||
generated_ban_id: u.generated_ban_id,
|
generated_ban_id: u.generated_ban_id,
|
||||||
type: ^"UserBan"
|
type: ^"UserBan"
|
||||||
|
|
|
@ -27,6 +27,25 @@ defmodule PhilomenaWeb.CurrentBanPlug do
|
||||||
|
|
||||||
ban = Bans.exists_for?(user, ip, fingerprint)
|
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
|
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
|
end
|
||||||
|
|
Loading…
Reference in a new issue