Delegate :superadmin check to get_for_user/3
I'll do props settings separately, it's work in progress in a branch on top of this one already. cc @ukutaht
This commit is contained in:
parent
7e99e80128
commit
5c9f58e78f
|
|
@ -8,6 +8,10 @@ defmodule Plausible.Sites do
|
||||||
Repo.get_by(Site, domain: domain)
|
Repo.get_by(Site, domain: domain)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_by_domain!(domain) do
|
||||||
|
Repo.get_by!(Site, domain: domain)
|
||||||
|
end
|
||||||
|
|
||||||
def create(user, params) do
|
def create(user, params) do
|
||||||
site_changeset = Site.changeset(%Site{}, params)
|
site_changeset = Site.changeset(%Site{}, params)
|
||||||
|
|
||||||
|
|
@ -93,11 +97,25 @@ defmodule Plausible.Sites do
|
||||||
base <> domain <> "?auth=" <> link.slug
|
base <> domain <> "?auth=" <> link.slug
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_for_user!(user_id, domain, roles \\ [:owner, :admin, :viewer]),
|
def get_for_user!(user_id, domain, roles \\ [:owner, :admin, :viewer]) do
|
||||||
do: Repo.one!(get_for_user_q(user_id, domain, roles))
|
if :superuser in roles and Plausible.Auth.is_super_admin?(domain) do
|
||||||
|
get_by_domain!(domain)
|
||||||
|
else
|
||||||
|
user_id
|
||||||
|
|> get_for_user_q(domain, List.delete(roles, :superadmin))
|
||||||
|
|> Repo.one!()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def get_for_user(user_id, domain, roles \\ [:owner, :admin, :viewer]),
|
def get_for_user(user_id, domain, roles \\ [:owner, :admin, :viewer]) do
|
||||||
do: Repo.one(get_for_user_q(user_id, domain, roles))
|
if :superuser in roles and Plausible.Auth.is_super_admin?(domain) do
|
||||||
|
get_by_domain(domain)
|
||||||
|
else
|
||||||
|
user_id
|
||||||
|
|> get_for_user_q(domain, List.delete(roles, :superadmin))
|
||||||
|
|> Repo.one()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp get_for_user_q(user_id, domain, roles) do
|
defp get_for_user_q(user_id, domain, roles) do
|
||||||
from(s in Site,
|
from(s in Site,
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,7 @@ defmodule PlausibleWeb.Live.FunnelSettings do
|
||||||
) do
|
) do
|
||||||
true = Plausible.Funnels.enabled_for?("user:#{user_id}")
|
true = Plausible.Funnels.enabled_for?("user:#{user_id}")
|
||||||
|
|
||||||
site =
|
site = Sites.get_for_user!(user_id, domain, [:owner, :admin, :superadmin])
|
||||||
if Plausible.Auth.is_super_admin?(user_id) do
|
|
||||||
Sites.get_by_domain(domain)
|
|
||||||
else
|
|
||||||
Sites.get_for_user!(user_id, domain, [:owner, :admin])
|
|
||||||
end
|
|
||||||
|
|
||||||
funnels = Funnels.list(site)
|
funnels = Funnels.list(site)
|
||||||
goal_count = Goals.count(site)
|
goal_count = Goals.count(site)
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,7 @@ defmodule PlausibleWeb.Live.GoalSettings do
|
||||||
%{"site_id" => _site_id, "domain" => domain, "current_user_id" => user_id},
|
%{"site_id" => _site_id, "domain" => domain, "current_user_id" => user_id},
|
||||||
socket
|
socket
|
||||||
) do
|
) do
|
||||||
site =
|
site = Sites.get_for_user!(user_id, domain, [:owner, :admin, :superadmin])
|
||||||
if Plausible.Auth.is_super_admin?(user_id) do
|
|
||||||
Sites.get_by_domain(domain)
|
|
||||||
else
|
|
||||||
Sites.get_for_user!(user_id, domain, [:owner, :admin])
|
|
||||||
end
|
|
||||||
|
|
||||||
goals = Goals.for_site(site, preload_funnels?: true)
|
goals = Goals.for_site(site, preload_funnels?: true)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue