Verify user on liveview mount
This commit is contained in:
parent
8fbeabc208
commit
626063ee76
3 changed files with 32 additions and 1 deletions
|
@ -48,6 +48,7 @@ defmodule RealEstateWeb do
|
||||||
layout: {RealEstateWeb.LayoutView, "live.html"}
|
layout: {RealEstateWeb.LayoutView, "live.html"}
|
||||||
|
|
||||||
unquote(view_helpers())
|
unquote(view_helpers())
|
||||||
|
import RealEstateWeb.LiveHelpers
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
29
lib/real_estate_web/live/live_helpers.ex
Normal file
29
lib/real_estate_web/live/live_helpers.ex
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
defmodule RealEstateWeb.LiveHelpers do
|
||||||
|
import Phoenix.LiveView
|
||||||
|
alias RealEstate.Accounts
|
||||||
|
alias RealEstate.Accounts.User
|
||||||
|
alias RealEstateWeb.Router.Helpers, as: Routes
|
||||||
|
|
||||||
|
def assign_defaults(session, socket) do
|
||||||
|
socket =
|
||||||
|
assign_new(socket, :current_user, fn ->
|
||||||
|
find_current_user(session)
|
||||||
|
end)
|
||||||
|
|
||||||
|
case socket.assigns.current_user do
|
||||||
|
%User{} ->
|
||||||
|
socket
|
||||||
|
|
||||||
|
_other ->
|
||||||
|
socket
|
||||||
|
|> put_flash(:error, "You must log in to access this page.")
|
||||||
|
|> redirect(to: Routes.user_session_path(socket, :new))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp find_current_user(session) do
|
||||||
|
with user_token when not is_nil(user_token) <- session["user_token"],
|
||||||
|
%User{} = user <- Accounts.get_user_by_session_token(user_token),
|
||||||
|
do: user
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,7 +2,8 @@ defmodule RealEstateWeb.PageLive do
|
||||||
use RealEstateWeb, :live_view
|
use RealEstateWeb, :live_view
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def mount(_params, _session, socket) do
|
def mount(_params, session, socket) do
|
||||||
|
socket = assign_defaults(session, socket)
|
||||||
{:ok, assign(socket, query: "", results: %{})}
|
{:ok, assign(socket, query: "", results: %{})}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue