permission checks

This commit is contained in:
Luna D 2019-12-05 14:31:29 -05:00
parent 7c6a189dab
commit cb4c956079
No known key found for this signature in database
GPG key ID: D0F46C94720BAA4B
6 changed files with 59 additions and 39 deletions

View file

@ -102,9 +102,13 @@ defmodule Philomena.DnpEntries do
DnpEntry.changeset(dnp_entry, %{}) DnpEntry.changeset(dnp_entry, %{})
end end
def count_dnp_entries() do def count_dnp_entries(user) do
DnpEntry if Canada.Can.can?(user, :manage, DnpEntry) do
|> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"]) DnpEntry
|> Repo.aggregate(:count, :id) |> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"])
|> Repo.aggregate(:count, :id)
else
nil
end
end end
end end

View file

@ -115,9 +115,13 @@ defmodule Philomena.DuplicateReports do
DuplicateReport.changeset(duplicate_report, %{}) DuplicateReport.changeset(duplicate_report, %{})
end end
def count_duplicate_reports() do def count_duplicate_reports(user) do
DuplicateReport if Canada.Can.can?(user, :manage, DuplicateReport) do
|> where(state: "open") DuplicateReport
|> Repo.aggregate(:count, :id) |> where(state: "open")
|> Repo.aggregate(:count, :id)
else
nil
end
end end
end end

View file

@ -117,9 +117,13 @@ defmodule Philomena.Reports do
report report
end end
def count_reports() do def count_reports(user) do
Report if Canada.Can.can?(user, :manage, Report) do
|> where(open: true) Report
|> Repo.aggregate(:count, :id) |> where(open: true)
|> Repo.aggregate(:count, :id)
else
nil
end
end end
end end

View file

@ -105,9 +105,13 @@ defmodule Philomena.UserLinks do
UserLink.changeset(user_link, %{}) UserLink.changeset(user_link, %{})
end end
def count_user_links() do def count_user_links(user) do
UserLink if Canada.Can.can?(user, :edit, UserLink) do
|> where(aasm_state: "unverified") UserLink
|> Repo.aggregate(:count, :id) |> where(aasm_state: "unverified")
|> Repo.aggregate(:count, :id)
else
nil
end
end end
end end

View file

@ -26,15 +26,15 @@ defmodule PhilomenaWeb.AdminCountersPlug do
def call(conn, _opts) do def call(conn, _opts) do
user = conn.assigns.current_user user = conn.assigns.current_user
maybe_assign_admin_metrics(conn, staff?(user)) maybe_assign_admin_metrics(conn, user, staff?(user))
end end
defp maybe_assign_admin_metrics(conn, false), do: conn defp maybe_assign_admin_metrics(conn, _user, false), do: conn
defp maybe_assign_admin_metrics(conn, true) do defp maybe_assign_admin_metrics(conn, user, true) do
duplicate_reports = DuplicateReports.count_duplicate_reports() duplicate_reports = DuplicateReports.count_duplicate_reports(user)
reports = Reports.count_reports() reports = Reports.count_reports(user)
user_links = UserLinks.count_user_links() user_links = UserLinks.count_user_links(user)
dnps = DnpEntries.count_dnp_entries() dnps = DnpEntries.count_dnp_entries(user)
conn conn
|> assign(:duplicate_report_count, duplicate_reports) |> assign(:duplicate_report_count, duplicate_reports)

View file

@ -35,22 +35,26 @@
= link to: "#", class: "header__link" do = link to: "#", class: "header__link" do
i.fa.fa-fw.fa-sticky-note i.fa.fa-fw.fa-sticky-note
| Mod Notes | Mod Notes
= link to: "#", class: "header__link", title: "Duplicates" do = if @duplicate_report_count do
=<> "D" = link to: "#", class: "header__link", title: "Duplicates" do
span.header__counter__admin =<> "D"
= @duplicate_report_count span.header__counter__admin
= link to: "#", class: "header__link", title: "Reports" do = @duplicate_report_count
=<> "R" = if @report_count do
span.header__counter__admin = link to: "#", class: "header__link", title: "Reports" do
= @report_count =<> "R"
= link to: "#", class: "header__link", title: "User Links" do span.header__counter__admin
=<> "L" = @report_count
span.header__counter__admin = if @user_link_count do
= @user_link_count = link to: "#", class: "header__link", title: "User Links" do
= link to: "#", class: "header__link", title: "DNP Requests" do =<> "L"
=<> "S" span.header__counter__admin
span.header__counter__admin = @user_link_count
= @dnp_entry_count = if @dnp_entry_count do
= link to: "#", class: "header__link", title: "DNP Requests" do
=<> "S"
span.header__counter__admin
= @dnp_entry_count
.dropdown.hide-mobile .dropdown.hide-mobile
a.header__link title="Bans" a.header__link title="Bans"
=<> "B" =<> "B"