Packages
phoenix_kit
1.1.0
1.7.210
1.7.209
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/login_live.ex
defmodule PhoenixKitWeb.Users.LoginLive do
use PhoenixKitWeb, :live_view
def render(assigns) do
~H"""
<PhoenixKitWeb.Components.LayoutWrapper.app_layout
flash={@flash}
phoenix_kit_current_scope={assigns[:phoenix_kit_current_scope]}
page_title="Welcome back"
>
<div class="hero bg-base-200 py-8 min-h-[80vh]">
<div class="hero-content flex-col lg:flex-row-reverse">
<!-- Welcome Section (Left side on desktop) -->
<div class="text-center lg:text-left">
<h1 class="text-5xl font-bold">Welcome back!</h1>
<p class="py-6">
Access your PhoenixKit account to continue using authentication features.
Sign in securely with your email and password.
</p>
<div class="text-sm opacity-75">
Don't have an account?
<.link
navigate="/phoenix_kit/users/register"
class="font-semibold text-primary hover:underline"
>
Sign up for free
</.link>
</div>
</div>
<!-- Login Form Card (Right side on desktop) -->
<div class="card bg-base-100 w-full max-w-sm shrink-0 shadow-2xl">
<div class="card-body">
<h2 class="card-title justify-center">Log in to account</h2>
<!-- Traditional Password Login -->
<.form
for={@form}
id="login_form"
action="/phoenix_kit/users/log-in"
phx-update="ignore"
>
<fieldset class="fieldset">
<legend class="fieldset-legend">Login with Password</legend>
<label class="label" for="user_email">Email</label>
<input
id="user_email"
name="user[email]"
type="email"
class="input input-bordered validator w-full"
placeholder="Email"
value={@form.params["email"] || ""}
pattern="^[\w\.-]+@[\w\.-]+\.[a-zA-Z]{2,}$"
title="Please enter a valid email address"
required
/>
<p class="validator-hint">Please enter a valid email address</p>
<label class="label" for="user_password">Password</label>
<input
id="user_password"
name="user[password]"
type="password"
class="input input-bordered validator w-full"
placeholder="Password"
minlength="8"
title="Password must be at least 8 characters long"
required
/>
<p class="validator-hint">Password must be at least 8 characters long</p>
<div class="form-control mt-4">
<label class="label cursor-pointer">
<span class="label-text">Keep me logged in</span>
<input
id="user_remember_me"
name="user[remember_me]"
type="checkbox"
class="checkbox checkbox-info"
/>
</label>
</div>
<div class="text-center mt-2">
<.link
href="/phoenix_kit/users/reset-password"
class="text-sm font-semibold text-primary hover:underline"
>
Forgot your password?
</.link>
</div>
<button
type="submit"
phx-disable-with="Logging in..."
class="btn btn-primary w-full mt-4"
>
Log in <span aria-hidden="true">→</span>
</button>
</fieldset>
</.form>
<!-- Development Mode Notice -->
<div :if={show_dev_notice?()} class="alert alert-info text-sm mt-4">
<svg
xmlns="http://www.w3.org/2000/svg"
class="stroke-current shrink-0 h-6 w-6"
fill="none"
viewBox="0 0 24 24"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
>
</path>
</svg>
<span>
Development mode: Authentication testing active
</span>
</div>
</div>
</div>
</div>
</div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>
"""
end
def mount(_params, _session, socket) do
email = Phoenix.Flash.get(socket.assigns.flash, :email)
form = to_form(%{"email" => email}, as: "user")
{:ok, assign(socket, form: form), temporary_assigns: [form: form]}
end
defp show_dev_notice? do
case Application.get_env(:phoenix_kit, PhoenixKit.Mailer)[:adapter] do
Swoosh.Adapters.Local -> true
_ -> false
end
end
end