Skip to content

Commit

Permalink
fix: 16. User Login & Middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
mfl4 committed Dec 5, 2023
1 parent b73eff0 commit 924f20f
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 41 deletions.
14 changes: 14 additions & 0 deletions app/Http/Controllers/DashboardController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace App\Http\Controllers;

class DashboardController extends Controller
{
public function index()
{
return view('dashboard.index', [
"title" => "Dashboard",
"active" => "dashboard",
]);
}
}
24 changes: 15 additions & 9 deletions app/Http/Controllers/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
Expand All @@ -16,19 +17,24 @@ public function index()

public function authenticate()
{
request()->validate([
'username' => 'required|email:dns',
$credentials = request()->validate([
'email' => 'required|email:dns',
'password' => 'required',
]);

dd(request()->all());
if (Auth::attempt($credentials)) {
request()->session()->regenerate();
return redirect()->intended('/dashboard');
}

// if (auth()->attempt($credentials)) {
// request()->session()->regenerate();

// dd(session());
// }
return back()->with('loginError', 'Login failed!');
}

// return back()->with('loginError', 'Login failed!');
public function logout()
{
Auth::logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
return redirect('/login');
}
}
16 changes: 9 additions & 7 deletions app/Http/Controllers/RegisterController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class RegisterController extends Controller
{
public function index()
Expand All @@ -14,21 +18,19 @@ public function index()

public function store()
{
request()->validate([
$validatedData = request()->validate([
"name" => "required|max:255",
"username" => "required|min:3|max:255|unique:users",
"email" => "required|email:dns|unique:users",
"password" => "required|min:5|max:255",
]);

dd(request()->all());

// $validatedData['password'] = Hash::make($validatedData['password']);
$validatedData['password'] = Hash::make($validatedData['password']);

// User::create($validatedData);
User::create($validatedData);

// // request()->session()->flash('success', 'Registration successfull! Please login');
// request()->session()->flash('success', 'Registration successfull! Please login');

// return redirect('/login')->with('success', 'Registration successfull! Please login');
return redirect('/login')->with('success', 'Registration successfull! Please login');
}
}
3 changes: 2 additions & 1 deletion app/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ class RouteServiceProvider extends ServiceProvider
*
* @var string
*/
public const HOME = '/home';
public const HOME = '/';
// public const HOME = '/home';

/**
* Define your route model bindings, pattern filters, and other route configuration.
Expand Down
5 changes: 5 additions & 0 deletions resources/views/dashboard/index.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@extends('layouts.main')

@section('container')
<h1 class="mb-3 text-center fw-bold">Welcome to {{ $title }}, Freya</h1>
@endsection
17 changes: 8 additions & 9 deletions resources/views/login/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@
<form action="/login" method="post">
@csrf
<div class="form-floating">
<input type="email" class="form-control" id="email" name="email"
placeholder="[email protected]" autofocus required @error('email') is-invalid @enderror
value="{{ old('email') }}">
<label for="email">Email address</label>
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
name="email" placeholder="[email protected]" value="{{ old('email') }}" autofocus required>
<label class="form-label" for="email">Email address</label>
@error('email')
<div class="invalid-feedback">
{{ $message }}
Expand All @@ -37,13 +36,13 @@
<div class="form-floating">
<input type="password" class="form-control" id="password" name="password" placeholder="Password"
required>
<label for="password">Password</label>
<label class="form-label" for="password">Password</label>
</div>
<div class="form-floating">
<button class="btn btn-primary w-100 py-2 mt-3" type="submit">Login</button>

<small class="d-block text-center mt-3 mb-5 ">Not registered? <a href="/register"
class="text-decoration-none">Register Now!</a></small>
<button class="btn btn-primary w-100 py-2 mt-3" type="submit">Login</button>

<small class="d-block text-center mt-3 mb-5 ">Not registered? <a href="/register"
class="text-decoration-none">Register Now!</a></small>
</form>
</main>
</div>
Expand Down
33 changes: 29 additions & 4 deletions resources/views/partials/navbar.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,36 @@
</ul>

<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link {{ $active === 'login' ? 'active' : '' }}" href="/login"><i
class="bi bi-box-arrow-in-right"></i> Login</a>
</li>
@auth
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Welcome, {{ auth()->user()->name }}
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/dashboard"><i class="bi bi-window-sidebar"></i> My
Dashboard</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<form action="/logout" method="post">
@csrf
<button type="submit" class="dropdown-item"><i class="bi bi-box-arrow-left"></i> Log
Out</button>
</form>
</li>
</ul>
</li>
@else
<li class="nav-item">
<a class="nav-link {{ $active === 'login' ? 'active' : '' }}" href="/login"><i
class="bi bi-box-arrow-in-right"></i> Log In</a>
</li>
@endauth
</ul>


</div>
</div>
</nav>
18 changes: 9 additions & 9 deletions resources/views/register/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
<form action="/register" method="post">
@csrf
<div class="form-floating">
<input required type="text" class="form-control rounded-top-3 @error('name') is-invalid @enderror"
id="name" name="name" placeholder="fullname" value="{{ old('name') }}">
<input type="text" class="form-control rounded-top-3 @error('name') is-invalid @enderror"
id="name" name="name" placeholder="fullname" value="{{ old('name') }}" autofocus
required>
<label class="form-label" for="name">Name</label>
@error('name')
<div class="invalid-feedback">
Expand All @@ -19,8 +20,8 @@
@enderror
</div>
<div class="form-floating">
<input required type="text" class="form-control @error('username') is-invalid @enderror"
id="username" name="username" placeholder="username" value="{{ old('username') }}">
<input type="text" class="form-control @error('username') is-invalid @enderror" id="username"
name="username" placeholder="username" value="{{ old('username') }}" required>
<label class="form-label" for="username">Username</label>
@error('username')
<div class="invalid-feedback">
Expand All @@ -29,8 +30,8 @@
@enderror
</div>
<div class="form-floating">
<input required type="email" class="form-control @error('email') is-invalid @enderror"
id="email" name="email" placeholder="[email protected]" value="{{ old('email') }}">
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email"
name="email" placeholder="[email protected]" value="{{ old('email') }}" required>
<label class="form-label" for="email">Email address</label>
@error('email')
<div class="invalid-feedback">
Expand All @@ -39,9 +40,8 @@
@enderror
</div>
<div class="form-floating">
<input required type="password"
class="form-control rounded-bottom-3 @error('password') is-invalid @enderror" id="password"
name="password" placeholder="Password">
<input type="password" class="form-control rounded-bottom-3 @error('password') is-invalid @enderror"
id="password" name="password" placeholder="Password" required>
<label class="form-label" for="password">Password</label>
@error('password')
<div class="invalid-feedback">
Expand Down
8 changes: 6 additions & 2 deletions routes/web.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?php

use App\Http\Controllers\DashboardController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\PostController;
use App\Http\Controllers\RegisterController;
Expand Down Expand Up @@ -62,8 +63,11 @@
// ]);
// });

Route::get('/login', [LoginController::class, 'index']);
Route::get('/login', [LoginController::class, 'index'])->name('login')->middleware('guest');
Route::post('/login', [LoginController::class, 'authenticate']);
Route::post('/logout', [LoginController::class, 'logout']);

Route::get('/register', [RegisterController::class, 'index']);
Route::get('/register', [RegisterController::class, 'index'])->middleware('guest');
Route::post('/register', [RegisterController::class, 'store']);

Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth');

0 comments on commit 924f20f

Please sign in to comment.