making the snippet private to the logged in user
This commit is contained in:
@ -39,10 +39,10 @@ defmodule Clip.Accounts.User do
|
|||||||
defp validate_password(changeset) do
|
defp validate_password(changeset) do
|
||||||
changeset
|
changeset
|
||||||
|> validate_required([:password])
|
|> validate_required([:password])
|
||||||
|> validate_length(:password, min: 12, max: 80)
|
|> 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 lower case character")
|
||||||
# |> validate_format(:password, ~r/[A-Z]/, message: "at least one upper 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_format(:password, ~r/[-..:;!?@#$%^&*_0-9]/, message: "at least one digit or punctuation character (one of . . : ; ! ? @ # $ % ^ & * _ -)")
|
||||||
|> prepare_changes(&hash_password/1)
|
|> prepare_changes(&hash_password/1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -1,21 +1,24 @@
|
|||||||
defmodule ClipWeb.BoardLive do
|
defmodule ClipWeb.BoardLive do
|
||||||
use ClipWeb, :live_view
|
use ClipWeb, :live_view
|
||||||
|
|
||||||
|
alias Clip.Accounts
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def render(assigns) do
|
def render(assigns) do
|
||||||
~L"""
|
~L"""
|
||||||
<form phx-change="paste">
|
<form phx-change="paste">
|
||||||
<input type="text" name="snippet" value="<%= @snippet %>" data-updated-val="<%= @snippet %>" phx-hook="SnippetInput" autocomplete="off"/>
|
<textarea type="text" name="snippet" data-updated-val="<%= @snippet %>" phx-hook="SnippetInput" autocomplete="off"><%= @snippet %></textarea>
|
||||||
</form>
|
</form>
|
||||||
Current content: <%= @snippet %>
|
Current content: <%= @snippet %><br>
|
||||||
<button phx-click="normalize">
|
<button phx-click="normalize">-> 004930112</button>
|
||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def mount(_params, _session, socket) do
|
def mount(_params, session, socket) do
|
||||||
Phoenix.PubSub.subscribe(Clip.PubSub, "everybody") # actually only for single user
|
user = Accounts.get_user_by_session_token(session |> Map.get("user_token"))
|
||||||
{:ok, assign(socket, snippet: "")}
|
Phoenix.PubSub.subscribe(Clip.PubSub, user.email)
|
||||||
|
{:ok, assign(socket, snippet: "", current_user: user)}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp normalize(pnumber, local_pref \\ "0351", country_pref \\ "0049") do
|
defp normalize(pnumber, local_pref \\ "0351", country_pref \\ "0049") do
|
||||||
@ -28,15 +31,15 @@ defmodule ClipWeb.BoardLive do
|
|||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@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)
|
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)}
|
{:noreply, assign(socket, snippet: snippet)}
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_event("paste", %{"snippet" => snippet}, socket) do
|
def handle_event("paste", %{"snippet" => snippet}, %{assigns: %{current_user: user}} = socket) do
|
||||||
Phoenix.PubSub.broadcast(Clip.PubSub, "everybody", {:snippet_pasted, %{snippet: snippet}})
|
Phoenix.PubSub.broadcast(Clip.PubSub, user.email, {:snippet_pasted, %{snippet: snippet}})
|
||||||
{:noreply, assign(socket, snippet: snippet)}
|
{:noreply, assign(socket, snippet: snippet)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -17,13 +17,6 @@ defmodule ClipWeb.Router do
|
|||||||
plug :accepts, ["json"]
|
plug :accepts, ["json"]
|
||||||
end
|
end
|
||||||
|
|
||||||
scope "/", ClipWeb do
|
|
||||||
pipe_through :browser
|
|
||||||
|
|
||||||
# live "/", PageLive, :index
|
|
||||||
live "/", BoardLive, :index
|
|
||||||
end
|
|
||||||
|
|
||||||
# Other scopes may use custom stacks.
|
# Other scopes may use custom stacks.
|
||||||
# scope "/api", ClipWeb do
|
# scope "/api", ClipWeb do
|
||||||
# pipe_through :api
|
# pipe_through :api
|
||||||
@ -63,6 +56,8 @@ defmodule ClipWeb.Router do
|
|||||||
scope "/", ClipWeb do
|
scope "/", ClipWeb do
|
||||||
pipe_through [:browser, :require_authenticated_user]
|
pipe_through [:browser, :require_authenticated_user]
|
||||||
|
|
||||||
|
live "/", BoardLive, :index
|
||||||
|
|
||||||
get "/users/settings", UserSettingsController, :edit
|
get "/users/settings", UserSettingsController, :edit
|
||||||
put "/users/settings/update_password", UserSettingsController, :update_password
|
put "/users/settings/update_password", UserSettingsController, :update_password
|
||||||
put "/users/settings/update_email", UserSettingsController, :update_email
|
put "/users/settings/update_email", UserSettingsController, :update_email
|
||||||
|
|||||||
Reference in New Issue
Block a user