Current section

Files

Jump to
blossom lib blossom controllers users.ex
Raw

lib/blossom/controllers/users.ex

defmodule Blossom.Controllers.Users do
alias Blossom.Controllers.Users
alias Blossom.Passwords
alias KilnCore.Utils
def make_user(outcome, params, model) do
case outcome do
{:ok, _} ->
params
|> Map.replace("email", String.downcase(params["email"]))
|> Map.replace("password", Passwords.hash(params["password"]))
|> model.new(:public)
error ->
error
end
end
def new(params, auth, model) do
case params do
%{"email" => _, "password" => password} ->
password
|> auth.validate_new_password()
|> Users.make_user(params, model)
_ ->
{:error, :missing_fields}
end
end
def login(params, auth, model) do
case params do
%{"email" => email, "password" => password} ->
%{"email" => String.downcase(email)}
|> model.get(:system)
|> List.first()
|> auth.login(password)
_ ->
{:error, :missing_fields}
end
end
defmacro __using__(opts \\ []) do
quote do
use KilnCore.Controller, unquote(opts)
@auth Utils.option_or_mod_replace(
@caller,
unquote(opts),
:auth,
Auth,
1,
0..1
)
def new(params, _user, _opts), do: Users.new(params, @auth, @model)
def login(params, _user, _opts), do: Users.login(params, @auth, @model)
end
end
end