Packages
step_flow
1.6.0-rc15
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/controllers/role_controller.ex
defmodule StepFlow.RoleController do
use StepFlow, :controller
alias StepFlow.Controller.Helpers
alias StepFlow.Roles
action_fallback(ExBackendWeb.FallbackController)
defp forbidden(conn) do
conn
|> put_status(:forbidden)
|> json(%{status: "error", message: "Forbidden access to roles"})
end
def index(%Plug.Conn{assigns: %{current_user: user}} = conn, params) do
if Helpers.has_right?("roles::*", user, "view") do
roles = Roles.list_roles(params)
conn
|> put_view(StepFlow.RoleView)
|> render("index.json", roles: roles)
else
conn
|> forbidden()
end
end
def index(conn, _) do
conn
|> forbidden()
end
defp show_per_id(%Plug.Conn{assigns: %{current_user: user}} = conn, %{"id" => id}) do
role = Roles.get_role(id)
if role != nil && Helpers.has_right?("roles::" <> role.name, user, "view") do
conn
|> put_view(StepFlow.RoleView)
|> render("show.json", role: role)
else
conn
|> forbidden()
end
end
defp show_per_name(%Plug.Conn{assigns: %{current_user: user}} = conn, %{"id" => name}) do
if Helpers.has_right?("roles::" <> name, user, "view") do
role = Roles.get_by(%{"name" => name})
conn
|> put_view(StepFlow.RoleView)
|> render("show.json", role: role)
else
conn
|> forbidden()
end
end
def show(%Plug.Conn{assigns: %{current_user: _user}} = conn, %{"id" => identifier}) do
case Integer.parse(identifier) do
{id, ""} -> show_per_id(conn, %{"id" => id})
_ -> show_per_name(conn, %{"id" => identifier})
end
end
def show(conn, _) do
conn
|> forbidden()
end
def create(%Plug.Conn{assigns: %{current_user: user}} = conn, param) do
if Helpers.has_right?("roles::*", user, "create") do
{:ok, role} = Roles.create_role(param)
conn
|> put_view(StepFlow.RoleView)
|> render("show.json", role: role)
else
conn
|> forbidden()
end
end
def create(conn, _) do
conn
|> forbidden()
end
def update(%Plug.Conn{assigns: %{current_user: user}} = conn, %{"id" => id} = param) do
role =
case Integer.parse(id) do
{id, ""} -> Roles.get_role(id)
_ -> nil
end
if role != nil && Helpers.has_right?("roles::" <> role.name, user, "update") do
{:ok, role} =
role
|> Roles.update_role(param)
conn
|> put_view(StepFlow.RoleView)
|> render("show.json", role: role)
else
conn
|> forbidden()
end
end
def update(conn, _) do
conn
|> forbidden()
end
def delete(%Plug.Conn{assigns: %{current_user: user}} = conn, %{"id" => id}) do
role =
case Integer.parse(id) do
{id, ""} -> Roles.get_role(id)
_ -> nil
end
if role != nil && Helpers.has_right?("roles::" <> role.name, user, "delete") do
{:ok, role} =
role
|> Roles.delete_role()
conn
|> put_view(StepFlow.RoleView)
|> render("show.json", role: role)
else
conn
|> forbidden()
end
end
def delete(conn, _) do
conn
|> forbidden()
end
end