philomena/lib/philomena_web/controllers/session/totp_controller.ex

33 lines
851 B
Elixir
Raw Normal View History

2019-11-12 22:12:46 -05:00
defmodule PhilomenaWeb.Session.TotpController do
use PhilomenaWeb, :controller
2019-12-20 16:29:29 -05:00
alias PhilomenaWeb.LayoutView
alias PhilomenaWeb.UserAuth
2019-11-12 22:12:46 -05:00
alias Philomena.Users.User
alias Philomena.Users
2019-11-12 22:12:46 -05:00
alias Philomena.Repo
def new(conn, _params) do
changeset = Users.change_user(conn.assigns.current_user)
2019-11-12 22:12:46 -05:00
2019-12-20 16:29:29 -05:00
render(conn, "new.html", layout: {LayoutView, "two_factor.html"}, changeset: changeset)
2019-11-12 22:12:46 -05:00
end
def create(conn, params) do
%{"user" => user_params} = params
conn.assigns.current_user
2019-11-12 22:12:46 -05:00
|> User.consume_totp_token_changeset(params)
|> Repo.update()
|> case do
{:error, _changeset} ->
conn
|> put_flash(:error, "Invalid TOTP token entered. Please sign in again.")
|> UserAuth.log_out_user()
2019-11-12 22:12:46 -05:00
{:ok, user} ->
2020-07-31 17:06:53 -04:00
UserAuth.totp_auth_user(conn, user, user_params)
2019-11-12 22:12:46 -05:00
end
end
2019-12-16 14:24:38 -05:00
end