Skip to content

Commit

Permalink
upsert_person in password_create/2 for #63
Browse files Browse the repository at this point in the history
  • Loading branch information
nelsonic committed May 6, 2020
1 parent f0e7f2a commit ed8c031
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
10 changes: 9 additions & 1 deletion lib/auth/person.ex
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ defmodule Auth.Person do
:email,
:givenName,
:familyName,
:password,
:password_hash,
:key_id,
:locale,
Expand Down Expand Up @@ -171,6 +172,7 @@ defmodule Auth.Person do
# end

defp put_email_hash(changeset) do
IO.inspect(changeset, label: "changeset")
put_change(changeset, :email_hash, changeset.changes.email)
# |> IO.inspect(label: "changeset with :email_hash")
end
Expand Down Expand Up @@ -201,6 +203,7 @@ defmodule Auth.Person do
end

defp put_pass_hash(changeset) do
IO.inspect(changeset, label: "changeset put_pass_hash:205")
case changeset do
%Ecto.Changeset{valid?: true, changes: %{password: pass}} ->
put_change(changeset, :password_hash, pass)
Expand All @@ -218,22 +221,27 @@ defmodule Auth.Person do
|> Repo.get_by(email_hash: email)
end

@doc """
`upsert_person/1` inserts or updates a person record.
"""
def upsert_person(person) do
IO.inspect(person, label: "person:226")
case get_person_by_email(person.email) do
nil ->
create_person(person)

ep -> # existing person
merged = Map.merge(AuthPlug.Helpers.strip_struct_metadata(ep), person)
{:ok, person} = changeset(%Person{id: ep.id}, merged)
|> IO.inspect(label: "changeset transformed:234")
|> Repo.update()

person # |> IO.inspect(label: "updated person:230")
end
end


@doc"""
@doc """
`decrypt_email/1` accepts a `cyphertext` and attempts to Base58.decode
followed by AES.decrypt it. If decode or decrypt fails, return 0 (zero).
"""
Expand Down
2 changes: 1 addition & 1 deletion lib/auth_web/controllers/apikey_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ defmodule AuthWeb.ApikeyController do
encrypt_encode(person_id) <> "/" <> encrypt_encode(person_id)
end

@doc"""
@doc """
`decode_decrypt/1` accepts a `key` and attempts to Base58.decode
followed by AES.decrypt it. If decode or decrypt fails, return 0 (zero).
"""
Expand Down
9 changes: 7 additions & 2 deletions lib/auth_web/controllers/auth_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -195,14 +195,19 @@ defmodule AuthWeb.AuthController do
|> render("password-prompt.html",
changeset: Auth.Person.password_new_changeset(%{email: params["email"]}),
state: params["state"], # so we can redirect after creatig a password
person_id: AuthWeb.ApikeyController.encrypt_encode(params["person_id"])
email: AuthWeb.ApikeyController.encrypt_encode(params["email"])
)
end

def password_create(conn, params) do
IO.inspect(params, label: "params:201")
params_person = params["person"]
person_id = AuthWeb.ApikeyController.decode_decrypt(params_person["person_id"])
email = Auth.Person.decrypt_email(params_person["email"])
IO.inspect(email, label: "email:206")
password = params_person["password"]
IO.inspect(password, label: "password:208")
person = Auth.Person.upsert_person(%{email: email, password: password})
IO.inspect(person, label: "person")

conn
|> put_resp_content_type("text/html")
Expand Down

0 comments on commit ed8c031

Please sign in to comment.