Packages
phoenix_kit
1.7.91
1.7.208
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
Files
Jump to
Current section
Files
lib/phoenix_kit_web/users/magic_link_registration_request.ex
defmodule PhoenixKitWeb.Users.MagicLinkRegistrationRequest do
@moduledoc """
LiveView for requesting magic link registration.
Allows users to enter their email and receive a magic link to complete registration.
"""
use PhoenixKitWeb, :live_view
alias Phoenix.LiveView.JS
alias PhoenixKit.Settings
alias PhoenixKit.Users.MagicLinkRegistration
alias PhoenixKit.Utils.Routes
alias PhoenixKitWeb.Users.Auth
@impl true
def mount(_params, _session, socket) do
case Auth.maybe_redirect_authenticated(socket) do
{:redirect, socket} ->
{:ok, socket}
:cont ->
if Settings.get_boolean_setting("allow_registration", true) do
# Get project title from settings (with Config fallback)
project_title = PhoenixKit.Settings.get_project_title()
{:ok,
socket
|> assign(:page_title, "Register via Magic Link")
|> assign(:project_title, project_title)
|> assign(:email, "")
|> assign(:email_sent, false)
|> assign(:error_message, nil)
|> assign(:loading, false)}
else
socket =
socket
|> put_flash(
:error,
"User registration is currently disabled. Please contact an administrator."
)
|> redirect(to: Routes.path("/users/log-in"))
{:ok, socket}
end
end
end
@impl true
def handle_event("send_magic_link", %{"email" => email}, socket) do
if Settings.get_boolean_setting("allow_registration", true) do
email = String.trim(email)
socket = assign(socket, :loading, true)
case MagicLinkRegistration.send_registration_link(email) do
{:ok, sent_email, _token} ->
{:noreply,
socket
|> assign(:email_sent, true)
|> assign(:email, sent_email)
|> assign(:loading, false)
|> assign(:error_message, nil)
|> put_flash(:info, "Registration link sent! Check your email.")}
{:error, :email_already_exists} ->
{:noreply,
socket
|> assign(:loading, false)
|> assign(:error_message, "This email is already registered. Please log in instead.")
|> put_flash(:error, "Email already exists")}
{:error, :invalid_email} ->
{:noreply,
socket
|> assign(:loading, false)
|> assign(:error_message, "Please enter a valid email address.")
|> put_flash(:error, "Invalid email format")}
{:error, _reason} ->
{:noreply,
socket
|> assign(:loading, false)
|> assign(:error_message, "Failed to send registration link. Please try again.")
|> put_flash(:error, "Something went wrong")}
end
else
{:noreply,
socket
|> put_flash(:error, "User registration is currently disabled.")
|> redirect(to: Routes.path("/users/log-in"))}
end
end
end