Packages
openmaize
2.6.0
3.0.1
retired
3.0.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.1
2.5.0
2.4.0
2.3.2
2.3.1
2.3.0
2.2.0
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.0.1
1.0.0
1.0.0-beta.5
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
1.0.0-beta.1
1.0.0-beta.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.8.1
0.8.0
0.7.5
0.7.4
0.7.2
0.7.1
0.7.0
0.6.7
0.6.6
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
Authentication library for Elixir using Plug
Current section
Files
Jump to
Current section
Files
priv/templates/phoenix/phx_api/user_controller.ex
defmodule <%= base %>.UserController do
use <%= base %>.Web, :controller<%= if confirm do %>
alias <%= base %>.{Mailer, User}
alias Openmaize.ConfirmEmail<% else %>
alias <%= base %>.User<% end %>
plug :user_check when action in [:index, :show]
plug :id_check when action in [:update, :delete]
def index(conn, _params) do
users = Repo.all(User)
render(conn, "index.json", users: users)
end<%= if confirm do %>
def create(conn, %{"user" => %{"email" => email} = user_params}) do
{key, link} = ConfirmEmail.gen_token_link(email)
changeset = User.auth_changeset(%User{}, user_params, key)
case Repo.insert(changeset) do
{:ok, user} ->
Mailer.ask_confirm(email, link)<% else %>
def create(conn, %{"user" => user_params}) do
changeset = User.auth_changeset(%User{}, user_params)
case Repo.insert(changeset) do
{:ok, user} -><% end %>
conn
|> put_status(:created)
|> put_resp_header("location", user_path(conn, :show, user))
|> render("show.json", user: user)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(<%= base %>.ChangesetView, "error.json", changeset: changeset)
end
end
def show(conn, %{"id" => id}) do
user = Repo.get!(User, id)
render(conn, "show.json", user: user)
end
def update(conn, %{"id" => id, "user" => user_params}) do
user = Repo.get!(User, id)
changeset = User.changeset(user, user_params)
case Repo.update(changeset) do
{:ok, user} ->
render(conn, "show.json", user: user)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(<%= base %>.ChangesetView, "error.json", changeset: changeset)
end
end
def delete(conn, %{"id" => id}) do
Repo.get!(User, id) |> Repo.delete!
send_resp(conn, :no_content, "")
end
defp user_check(%Plug.Conn{assigns: %{current_user: nil}} = conn, _opts) do
put_status(conn, :unauthorized) |> render(<%= base %>.AuthView, "401.json", []) |> halt
end
defp user_check(conn, _opts), do: conn
defp id_check(%Plug.Conn{assigns: %{current_user: nil}} = conn, _opts) do
put_status(conn, :unauthorized) |> render(<%= base %>.AuthView, "401.json", []) |> halt
end
defp id_check(%Plug.Conn{params: %{"id" => id},
assigns: %{current_user: current_user_id}} = conn, _opts) do
id == to_string(current_user_id) and conn ||
put_status(conn, :forbidden) |> render(<%= base %>.AuthView, "403.json", []) |> halt
end
end