Packages
integratedb
0.1.0
IntegrateDB is a database sharing system. It provides integration primitives and data ownership and migration controls. Use it to integrate applications directly through a Postgres database.
Current section
Files
Jump to
Current section
Files
lib/integrate_web/controllers/auth_controller.ex
defmodule IntegrateWeb.AuthController do
use IntegrateWeb, :controller
alias Integrate.Accounts
alias Integrate.Accounts.User
alias IntegrateWeb.Auth
action_fallback IntegrateWeb.FallbackController
def login(conn, %{"data" => params}) do
with {:ok, credentials} <- Accounts.validate_credentials(params),
{:ok, %User{id: user_id}} <- Accounts.authenticate(credentials) do
render_login(conn, user_id)
else
nil ->
{:error, :forbidden}
val ->
val
end
end
def renew(conn, %{"data" => param}) do
with true <- is_binary(param),
{:ok, user_id} <- Auth.verify_refresh_token(conn, param) do
render_login(conn, user_id)
else
_ ->
{:error, :forbidden}
end
end
defp render_login(conn, user_id) do
{token, refresh_token} = Auth.login(conn, user_id)
assigns = %{
id: user_id,
token: token,
refresh_token: refresh_token
}
render(conn, "show.json", assigns)
end
end