-
app/Http/Livewire/Auth/Login.php
Open in GitHubuse App\Models\User; use Livewire\Component; class Login extends Component { public $email = ''; public $password = ''; public $remember_me = false; protected $rules = [ 'email' => 'required|email:rfc,dns', 'password' => 'required|min:6', ]; //This mounts the default credentials for the admin. Remove this section if you want to make it public. public function mount() { if (auth()->user()) { return redirect()->intended('/dashboard'); } $this->fill([ 'email' => 'admin@volt.com', 'password' => 'secret', ]); } public function login() { $credentials = $this->validate(); if (auth()->attempt(['email' => $this->email, 'password' => $this->password], $this->remember_me)) { $user = User::where(['email' => $this->email])->first(); auth()->login($user, $this->remember_me); return redirect()->intended('/dashboard'); } else { return $this->addError('email', trans('auth.failed')); } } public function render() { return view('livewire.auth.login'); } }
-
resources/views/livewire/auth/login.blade.php
Open in GitHub<main> <!-- Section --> <section class="vh-lg-100 mt-5 mt-lg-0 bg-soft d-flex align-items-center"> <div class="container"> {{-- <p class="text-center"><a href="{{ route('dashboard') }}" class="text-gray-700"><i class="fas fa-angle-left me-2"></i> Back to homepage</a></p> --}} <div wire:ignore.self class="row justify-content-center form-bg-image" data-background-lg="/assets/img/illustrations/signin.svg"> <div class="col-12 d-flex align-items-center justify-content-center"> <div class="bg-white shadow-soft border rounded border-light p-4 p-lg-5 w-100 fmxw-500"> <div class="text-center text-md-center mb-4 mt-md-0"> <h1 class="mb-3 h3">Welcome back</h1> <p class="mb-0"> Create new account or <p class="mb-0">Sign in with these credentials:</p> <p class="mb-0"> Email: <strong>admin@volt.com</strong> Password: <strong>secret</strong></p> </p> </div> <form wire:submit.prevent="login" action="#" class="mt-4" method="POST"> <!-- Form --> <div class="form-group mb-4"> <label for="email">Your Email</label> <div class="input-group"> <span class="input-group-text" id="basic-addon1"><svg class="icon icon-xs text-gray-600" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"> </path> <path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"></path> </svg></span> <input wire:model="email" type="email" class="form-control" placeholder="example@company.com" id="email" autofocus required> </div> @error('email') <div wire:key="form" class="invalid-feedback"> {{$message}} </div> @enderror </div> <!-- End of Form --> <div class="form-group"> <!-- Form --> <div class="form-group mb-4"> <label for="password">Your Password</label> <div class="input-group"> <span class="input-group-text" id="basic-addon2"><svg class="icon icon-xs text-gray-600" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z" clip-rule="evenodd"></path> </svg></span> <input wire:model.lazy="password" type="password" placeholder="Password" class="form-control" id="password" required> </div> @error('password') <div class="invalid-feedback"> {{ $message }} </div> @enderror </div> <!-- End of Form --> <div class="d-flex justify-content-between align-items-top mb-4"> <div class="form-check"> <input wire:model="remember_me" class="form-check-input" type="checkbox" value="" id="remember"> <label class="form-check-label mb-0" for="remember"> Remember me </label> </div> <div><a href="{{ route('forgot-password') }}" class="small text-right">Lost password?</a></div> </div> </div> <div class="d-grid"> <button type="submit" class="btn btn-gray-800">Sign in</button> </div> </form> <div class="mt-3 mb-4 text-center"> <span class="fw-normal">or login with</span> </div> <div class="d-flex justify-content-center my-4"> <a href="#" class="btn btn-icon-only btn-pill btn-outline-gray-500 me-2" aria-label="facebook button" title="facebook button"> <svg class="icon icon-xxs" aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook-f" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"> <path fill="currentColor" d="M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"> </path> </svg> </a> <a href="#" class="btn btn-icon-only btn-pill btn-outline-gray-500 me-2" aria-label="twitter button" title="twitter button"> <svg class="icon icon-xxs" aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> <path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"> </path> </svg> </a> <a href="#" class="btn btn-icon-only btn-pill btn-outline-gray-500" aria-label="github button" title="github button"> <svg class="icon icon-xxs" aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"> <path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"> </path> </svg> </a> </div> <div class="d-flex justify-content-center align-items-center mt-4"> <span class="fw-normal"> Not registered? <a href="{{ route('register') }}" class="fw-bold">Create account</a> </span> </div> </div> </div> </div> </div> </section> </main>