diff --git a/lib/clip/accounts/user.ex b/lib/clip/accounts/user.ex index c614e94..77bf32a 100644 --- a/lib/clip/accounts/user.ex +++ b/lib/clip/accounts/user.ex @@ -39,10 +39,10 @@ defmodule Clip.Accounts.User do defp validate_password(changeset) do changeset |> validate_required([:password]) - |> validate_length(:password, min: 12, max: 80) - # |> validate_format(:password, ~r/[a-z]/, message: "at least one lower case character") - # |> validate_format(:password, ~r/[A-Z]/, message: "at least one upper case character") - # |> validate_format(:password, ~r/[!?@#$%^&*_0-9]/, message: "at least one digit or punctuation character") + |> validate_length(:password, min: 8, max: 80) + |> validate_format(:password, ~r/[a-z]/, message: "at least one lower case character") + |> validate_format(:password, ~r/[A-Z]/, message: "at least one upper case character") + |> validate_format(:password, ~r/[-..:;!?@#$%^&*_0-9]/, message: "at least one digit or punctuation character (one of . . : ; ! ? @ # $ % ^ & * _ -)") |> prepare_changes(&hash_password/1) end diff --git a/lib/clip_web/live/board_live.ex b/lib/clip_web/live/board_live.ex index f0c425d..0eb43da 100644 --- a/lib/clip_web/live/board_live.ex +++ b/lib/clip_web/live/board_live.ex @@ -1,21 +1,24 @@ defmodule ClipWeb.BoardLive do use ClipWeb, :live_view + alias Clip.Accounts + @impl true def render(assigns) do ~L"""
- +
- Current content: <%= @snippet %> - """ end @impl true - def mount(_params, _session, socket) do - Phoenix.PubSub.subscribe(Clip.PubSub, "everybody") # actually only for single user - {:ok, assign(socket, snippet: "")} + def mount(_params, session, socket) do + user = Accounts.get_user_by_session_token(session |> Map.get("user_token")) + Phoenix.PubSub.subscribe(Clip.PubSub, user.email) + {:ok, assign(socket, snippet: "", current_user: user)} end defp normalize(pnumber, local_pref \\ "0351", country_pref \\ "0049") do @@ -28,15 +31,15 @@ defmodule ClipWeb.BoardLive do end @impl true - def handle_event("normalize", _, %{assigns: %{snippet: snippet}} = socket) do + def handle_event("normalize", _, %{assigns: %{snippet: snippet, current_user: user}} = socket) do norm_snipp = normalize(snippet) - Phoenix.PubSub.broadcast(Clip.PubSub, "everybody", {:snippet_pasted, %{snippet: norm_snipp}}) + Phoenix.PubSub.broadcast(Clip.PubSub, user.email, {:snippet_pasted, %{snippet: norm_snipp}}) {:noreply, assign(socket, snippet: snippet)} end @impl true - def handle_event("paste", %{"snippet" => snippet}, socket) do - Phoenix.PubSub.broadcast(Clip.PubSub, "everybody", {:snippet_pasted, %{snippet: snippet}}) + def handle_event("paste", %{"snippet" => snippet}, %{assigns: %{current_user: user}} = socket) do + Phoenix.PubSub.broadcast(Clip.PubSub, user.email, {:snippet_pasted, %{snippet: snippet}}) {:noreply, assign(socket, snippet: snippet)} end diff --git a/lib/clip_web/router.ex b/lib/clip_web/router.ex index a885cf0..b6f7ec0 100644 --- a/lib/clip_web/router.ex +++ b/lib/clip_web/router.ex @@ -17,13 +17,6 @@ defmodule ClipWeb.Router do plug :accepts, ["json"] end - scope "/", ClipWeb do - pipe_through :browser - - # live "/", PageLive, :index - live "/", BoardLive, :index - end - # Other scopes may use custom stacks. # scope "/api", ClipWeb do # pipe_through :api @@ -63,6 +56,8 @@ defmodule ClipWeb.Router do scope "/", ClipWeb do pipe_through [:browser, :require_authenticated_user] + live "/", BoardLive, :index + get "/users/settings", UserSettingsController, :edit put "/users/settings/update_password", UserSettingsController, :update_password put "/users/settings/update_email", UserSettingsController, :update_email