diff options
author | Ilja <ilja@ilja.space> | 2022-06-13 09:58:50 +0200 |
---|---|---|
committer | Ilja <ilja@ilja.space> | 2022-06-21 12:10:27 +0200 |
commit | 7adfc2e0f429f84eb7eb2712529e9a3486354d01 (patch) | |
tree | 64f8f71c738025de69fea0aaf95d8514a625c1bd /lib | |
parent | 9da81f41c6e2084973095eefebbda3b1abde587c (diff) | |
download | pleroma-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.ex | 18 |
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 |