summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorIlja <ilja@ilja.space>2022-06-13 09:58:50 +0200
committerIlja <ilja@ilja.space>2022-06-21 12:10:27 +0200
commit7adfc2e0f429f84eb7eb2712529e9a3486354d01 (patch)
tree64f8f71c738025de69fea0aaf95d8514a625c1bd /lib
parent9da81f41c6e2084973095eefebbda3b1abde587c (diff)
downloadpleroma-7adfc2e0f429f84eb7eb2712529e9a3486354d01.tar.gz
pleroma-7adfc2e0f429f84eb7eb2712529e9a3486354d01.zip
Add Pleroma.User.privileged?/2
This should eventually replace Pleroma.User.superuser?/1
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 747a83e8d..b93ce9c2c 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -353,6 +353,24 @@ defmodule Pleroma.User do
end
end
+ @spec privileged?(User.t(), atom()) :: boolean()
+ def privileged?(%User{is_admin: false, is_moderator: false}, _), do: false
+
+ def privileged?(
+ %User{local: true, is_admin: is_admin, is_moderator: is_moderator},
+ privilege_tag
+ ),
+ do:
+ privileged_for?(privilege_tag, is_admin, :admin_privileges) or
+ privileged_for?(privilege_tag, is_moderator, :moderator_privileges)
+
+ def privileged?(_, _), do: false
+
+ defp privileged_for?(privilege_tag, true, config_role_key),
+ do: privilege_tag in Config.get([:instance, config_role_key])
+
+ defp privileged_for?(_, _, _), do: false
+
@spec superuser?(User.t()) :: boolean()
def superuser?(%User{local: true, is_admin: true}), do: true
def superuser?(%User{local: true, is_moderator: true}), do: true