diff options
Diffstat (limited to 'lib/pleroma/web/oauth.ex')
-rw-r--r-- | lib/pleroma/web/oauth.ex | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/pleroma/web/oauth.ex b/lib/pleroma/web/oauth.ex index 761b80fde..8c78d1100 100644 --- a/lib/pleroma/web/oauth.ex +++ b/lib/pleroma/web/oauth.ex @@ -3,22 +3,21 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth do - def parse_scopes(nil) do - nil + def parse_scopes(scopes, default) when is_list(scopes) do + scopes = Enum.filter(scopes, &(&1 not in [nil, ""])) + + if Enum.any?(scopes), + do: scopes, + else: default end - def parse_scopes(scopes) when is_list(scopes) do + def parse_scopes(scopes, default) when is_binary(scopes) do scopes + |> String.split(~r/[\s,]+/) + |> parse_scopes(default) end - def parse_scopes(scopes) do - scopes = - scopes - |> to_string() - |> String.trim() - - if scopes == "", - do: [], - else: String.split(scopes, [" ", ","]) + def parse_scopes(_, default) do + default end end |