29 lines
771 B
Elixir
29 lines
771 B
Elixir
defmodule GenericRestServerWeb.UserTokenController do
|
|
use GenericRestServerWeb, :controller
|
|
|
|
alias GenericRestServer.Accounts
|
|
alias GenericRestServer.Accounts.User
|
|
|
|
action_fallback GenericRestServerWeb.FallbackController
|
|
|
|
def log_in(conn, %{"user" => user_params}) do
|
|
case Accounts.get_user_by_email_and_password(user_params["email"], user_params["password"]) do
|
|
%User{} = user ->
|
|
create_token(conn, user)
|
|
|
|
_ ->
|
|
conn
|
|
|> put_status(:forbidden)
|
|
|> render(:error, %{error: "No access for you!"})
|
|
end
|
|
end
|
|
|
|
defp create_token(conn, user) do
|
|
encoded_token = Accounts.create_user_api_token(user)
|
|
|
|
updated_user = Map.put(user, :token, encoded_token)
|
|
|
|
render(conn, :token, user: updated_user)
|
|
end
|
|
end
|