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
if Canada.Can.can?(user, :manage, DnpEntry) do
DnpEntry DnpEntry
|> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"]) |> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"])
|> Repo.aggregate(:count, :id) |> 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
if Canada.Can.can?(user, :manage, DuplicateReport) do
DuplicateReport DuplicateReport
|> where(state: "open") |> where(state: "open")
|> Repo.aggregate(:count, :id) |> 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
if Canada.Can.can?(user, :manage, Report) do
Report Report
|> where(open: true) |> where(open: true)
|> Repo.aggregate(:count, :id) |> 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
if Canada.Can.can?(user, :edit, UserLink) do
UserLink UserLink
|> where(aasm_state: "unverified") |> where(aasm_state: "unverified")
|> Repo.aggregate(:count, :id) |> 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,18 +35,22 @@
= 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
= if @duplicate_report_count do
= link to: "#", class: "header__link", title: "Duplicates" do = link to: "#", class: "header__link", title: "Duplicates" do
=<> "D" =<> "D"
span.header__counter__admin span.header__counter__admin
= @duplicate_report_count = @duplicate_report_count
= if @report_count do
= link to: "#", class: "header__link", title: "Reports" do = link to: "#", class: "header__link", title: "Reports" do
=<> "R" =<> "R"
span.header__counter__admin span.header__counter__admin
= @report_count = @report_count
= if @user_link_count do
= link to: "#", class: "header__link", title: "User Links" do = link to: "#", class: "header__link", title: "User Links" do
=<> "L" =<> "L"
span.header__counter__admin span.header__counter__admin
= @user_link_count = @user_link_count
= if @dnp_entry_count do
= link to: "#", class: "header__link", title: "DNP Requests" do = link to: "#", class: "header__link", title: "DNP Requests" do
=<> "S" =<> "S"
span.header__counter__admin span.header__counter__admin