add user flag to bypass rate limits

This commit is contained in:
Luna D 2021-09-17 21:14:23 +02:00
parent fae0827c81
commit ae3411b7a2
No known key found for this signature in database
GPG key ID: 81AF416F2CC36FC8
5 changed files with 28 additions and 4 deletions

View file

@ -118,6 +118,7 @@ defmodule Philomena.Users.User do
field :secondary_role, :string field :secondary_role, :string
field :hide_default_role, :boolean, default: false field :hide_default_role, :boolean, default: false
field :senior_staff, :boolean, default: false field :senior_staff, :boolean, default: false
field :bypass_rate_limits, :boolean, default: false
# For avatar validation/persistence # For avatar validation/persistence
field :avatar_width, :integer, virtual: true field :avatar_width, :integer, virtual: true
@ -271,7 +272,7 @@ defmodule Philomena.Users.User do
def update_changeset(user, attrs, roles) do def update_changeset(user, attrs, roles) do
user user
|> cast(attrs, [:name, :email, :role, :secondary_role, :hide_default_role, :senior_staff]) |> cast(attrs, [:name, :email, :role, :secondary_role, :hide_default_role, :senior_staff, :bypass_rate_limits])
|> validate_required([:name, :email, :role]) |> validate_required([:name, :email, :role])
|> validate_inclusion(:role, ["user", "assistant", "moderator", "admin"]) |> validate_inclusion(:role, ["user", "assistant", "moderator", "admin"])
|> put_assoc(:roles, roles) |> put_assoc(:roles, roles)

View file

@ -43,6 +43,9 @@ defmodule PhilomenaWeb.LimitPlug do
is_staff(conn.assigns.current_user) and skip_staff -> is_staff(conn.assigns.current_user) and skip_staff ->
conn conn
conn.assigns.current_user.bypass_rate_limits ->
conn
conn.assigns.ajax? -> conn.assigns.ajax? ->
conn conn
|> Controller.put_flash(:error, error) |> Controller.put_flash(:error, error)

View file

@ -24,6 +24,9 @@
label.table-list__label label.table-list__label
.table-list__label__text Senior staff: .table-list__label__text Senior staff:
.table-list__label__input = checkbox f, :senior_staff, class: "checkbox" .table-list__label__input = checkbox f, :senior_staff, class: "checkbox"
label.table-list__label
.table-list__label__text Bypass rate limits:
.table-list__label__input = checkbox f, :bypass_rate_limits, class: "checkbox"
.table-list__label .table-list__label
.table-list__label__text Avatar .table-list__label__text Avatar
.table-list__label__input .table-list__label__input

View file

@ -0,0 +1,15 @@
defmodule Philomena.Repo.Migrations.AddBypassRateLimitsToUsers do
use Ecto.Migration
def up do
alter table(:users) do
add :bypass_rate_limits, :boolean, default: false
end
end
def down do
alter table(:users) do
remove :bypass_rate_limits
end
end
end

View file

@ -2,8 +2,8 @@
-- PostgreSQL database dump -- PostgreSQL database dump
-- --
-- Dumped from database version 13.2 -- Dumped from database version 13.4
-- Dumped by pg_dump version 13.2 -- Dumped by pg_dump version 13.4
SET statement_timeout = 0; SET statement_timeout = 0;
SET lock_timeout = 0; SET lock_timeout = 0;
@ -1988,7 +1988,8 @@ CREATE TABLE public.users (
last_renamed_at timestamp without time zone DEFAULT '1970-01-01 00:00:00'::timestamp without time zone NOT NULL, last_renamed_at timestamp without time zone DEFAULT '1970-01-01 00:00:00'::timestamp without time zone NOT NULL,
forced_filter_id bigint, forced_filter_id bigint,
confirmed_at timestamp(0) without time zone, confirmed_at timestamp(0) without time zone,
senior_staff boolean DEFAULT false senior_staff boolean DEFAULT false,
bypass_rate_limits boolean DEFAULT false
); );
@ -4844,3 +4845,4 @@ INSERT INTO public."schema_migrations" (version) VALUES (20201124224116);
INSERT INTO public."schema_migrations" (version) VALUES (20210121200815); INSERT INTO public."schema_migrations" (version) VALUES (20210121200815);
INSERT INTO public."schema_migrations" (version) VALUES (20210301012137); INSERT INTO public."schema_migrations" (version) VALUES (20210301012137);
INSERT INTO public."schema_migrations" (version) VALUES (20210427022351); INSERT INTO public."schema_migrations" (version) VALUES (20210427022351);
INSERT INTO public."schema_migrations" (version) VALUES (20210917190346);