defmodule SecureX.Permissions do
alias SecureXWeb.{PermissionController}
@moduledoc """
Contains CRUD For Permissions.
"""
@doc """
Get list of Permissions by User Roles.
## Examples
iex> list(["owner", "super_admin"])
[
%{ permission: 4, resource_id: "users", role_id: "admin"},
%{ permission: 4, resource_id: "person_form", role_id: "super_admin"}
]
"""
@spec list(list(), number(), number()) :: tuple()
def list(params, page, page_size \\ 10), do:
PermissionController.list_permissions(params, page, page_size)
@doc """
Add a Permission. You can send either `Atom Map` or `String Map` to add a Permission.
## Examples
iex> add(%{"permission" => -1, "resource_id" => "users", "role_id" => "super_admin"})
%Permission{
id: 1,
permission: -1,
resource_id: "users",
role_id: "super_admin"
}
"""
@spec add(map()) :: tuple()
def add(params) do
case PermissionController.create(params) do
{:error, error} -> {:error, error}
{:ok, role} -> {:ok, role}
end
end
@doc """
Update a Permission. You can send either `Atom Map` or `String Map` to update a Permission.
## Examples
iex> update(%{"id" => "1", "resource_id" => "users", "permission" => 4, "role_id" => "admin"})
%Permission{
id: 1,
permission: 4,
resource_id: "users",
role_id: "admin"
}
"""
@spec update(map()) :: tuple()
def update(params) do
case PermissionController.update(params) do
{:error, error} -> {:error, error}
{:ok, role} -> {:ok, role}
end
end
@doc """
Delete a Permission.
## Examples
iex> delete(%{"id" => 1)
%Permission{
id: 1,
permission: 4,
resource_id: "users",
role_id: "admin"
}
"""
@spec delete(map()) :: tuple()
def delete(params) do
case PermissionController.delete(params) do
{:error, error} -> {:error, error}
{:ok, role} -> {:ok, role}
end
end
end