This commit is contained in:
@@ -18,10 +18,14 @@ defmodule PolicyServiceWeb.Plugs.AuthorizationPlug do
|
||||
- :resource_owner_check - Function to check if user owns the resource (optional)
|
||||
"""
|
||||
def init(opts) do
|
||||
required_permission = Keyword.get(opts, :required_permission, nil)
|
||||
required_scopes = Keyword.get(opts, :required_scopes, [])
|
||||
resource_owner_check = Keyword.get(opts, :resource_owner_check, nil)
|
||||
|
||||
%{
|
||||
required_roles: Keyword.get(opts, :required_roles, []),
|
||||
required_scopes: Keyword.get(opts, :required_scopes, []),
|
||||
resource_owner_check: Keyword.get(opts, :resource_owner_check, nil)
|
||||
required_permission: required_permission,
|
||||
required_scopes: required_scopes,
|
||||
resource_owner_check: resource_owner_check
|
||||
}
|
||||
end
|
||||
|
||||
@@ -57,12 +61,12 @@ defmodule PolicyServiceWeb.Plugs.AuthorizationPlug do
|
||||
:ok
|
||||
end
|
||||
|
||||
defp check_roles(user_roles, required_roles) do
|
||||
if has_any_role?(user_roles, required_roles) do
|
||||
defp check_roles(user_roles, required_permission) do
|
||||
if has_any_role?(user_roles, required_permission) do
|
||||
:ok
|
||||
else
|
||||
Logger.warning(
|
||||
"User with roles #{inspect(user_roles)} lacks required roles: #{inspect(required_roles)}"
|
||||
"User with roles #{inspect(user_roles)} lacks required permission: #{inspect(required_permission)}"
|
||||
)
|
||||
|
||||
{:error, :insufficient_role}
|
||||
|
||||
Reference in New Issue
Block a user