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/session.ex
defmodule Doorman.Controller.Session do
use Phoenix.Controller
import Doorman.Controller, only: [send_error: 2, send_error: 3]
def call(conn, opts) do
try do
super(conn, opts)
rescue
error -> send_error(conn, error, :internal_server_error)
end
end
defp process_session(conn, {:ok, user}) do
case Doorman.Authenticator.generate_access_claim(user) do
{:ok, jwt, _full_claims} ->
conn
|> put_status(:created)
|> json(%{jwt: jwt, user: user, perms: user.perms})
{:error, error} ->
send_error(conn, error)
end
end
defp process_session(conn, {:error, message}) do
conn
|> put_status(:unauthorized)
|> json(%{error: message})
end
def restore(conn, %{"token" => token}) do
process_session conn, Doorman.Session.authenticate({:jwt, token})
end
def create(conn, %{"session" => session_params}) do
process_session conn, Doorman.Session.authenticate(session_params)
end
def create(conn, params) do
process_session conn, Doorman.Session.authenticate(params)
end
def delete(conn, _) do
case Doorman.Authenticator.current_claims(conn) do
{:ok, claims} -> conn
|> Guardian.Plug.current_token
|> Doorman.Guardian.revoke(claims)
_ -> nil
end
conn
|> json(%{ok: true})
end
end