Packages
guard
0.1.0
0.19.1
0.19.0
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
Useful package for dealing with user authentication and signup
Current section
Files
Jump to
Current section
Files
lib/doorman/controller/account_controller.ex
defmodule Doorman.Controller.Account do
use Phoenix.Controller
alias Doorman.{Authenticator, Users}
import Doorman.Controller, only: [send_error: 2, send_error: 3]
plug Guardian.Plug.EnsureAuthenticated, claims: %{"typ" => "access"}
def call(conn, opts) do
try do
super(conn, opts)
rescue
error -> send_error(conn, error, :internal_server_error)
end
end
def update_attributes(conn, params) do
user = Authenticator.authenticated_user!(conn)
attrs = if user.attrs == nil, do: params, else: Map.merge(user.attrs, params)
case Users.update_user(user, %{attrs: attrs}) do
{:ok, user} ->
json conn, %{user: user}
{:error, error, _} ->
send_error(conn, error)
end
end
def update(conn, params) do
updatable_fields = MapSet.new(["attrs", "requested_email", "username"])
user = Authenticator.authenticated_user!(conn)
changes = Enum.reduce(params, %{},
fn ({k,v}, sum)->
if MapSet.member?(updatable_fields, k) do
Map.put(sum,k,v)
else
sum
end
end)
case Users.update_user(user, changes) do
{:ok, user} ->
json conn, %{user: user}
{:error, error, _} ->
send_error(conn, error)
end
end
def delete(conn, _) do
user = Authenticator.authenticated_user!(conn)
case Users.delete_user(user) do
{:ok, user} ->
json conn, %{user: user}
{:error, error, _} ->
send_error(conn, error)
end
end
end