Laravel 9 Upload Image and Display
How to install laravel 9
https://tutorial101.blogspot.com/2022/02/how-to-install-laravel-9.html
Connecting our Database
open .env file root directory.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=root
DB_PASSWORD=
Database Migration
php artisan migrate
C:\xampp\htdocs\laravel\laravelproject>php artisan migrate
Migration table created successfully.
check database table
Create Controller
Create the controller name which is CustomAuthController
php artisan make:controller CustomAuthController
C:\xampp\htdocs\laravel\laravelproject>php artisan make:controller CustomAuthController
change it with the following codes:
laravelproject\app\Http\Controllers\CustomAuthController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | //laravelproject\app\Http\Controllers\CustomAuthController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Hash; use Session; use App\Models\User; use Illuminate\Support\Facades\Auth; class CustomAuthController extends Controller { public function home() { return view( 'homepage' ); } public function index() { return view( 'login' ); } public function login(Request $request ) { $request ->validate([ 'email' => 'required' , 'password' => 'required' , ]); $credentials = $request ->only( 'email' , 'password' ); if (Auth::attempt( $credentials )) { return redirect()->intended( 'dashboard' ) ->with( 'message' , 'Signed in!' ); } return redirect( '/login' )->with( 'message' , 'Login details are not valid!' ); } public function signup() { return view( 'registration' ); } public function signupsave(Request $request ) { $request ->validate([ 'name' => 'required' , 'email' => 'required|email|unique:users' , 'password' => 'required|min:6' , ]); $data = $request ->all(); $check = $this ->create( $data ); return redirect( "dashboard" ); } public function create( array $data ) { return User::create([ 'name' => $data [ 'name' ], 'email' => $data [ 'email' ], 'password' => Hash::make( $data [ 'password' ]) ]); } public function dashboard() { if (Auth::check()){ return view( 'dashboard' ); } return redirect( '/login' ); } public function signOut() { Session:: flush (); Auth::logout(); return redirect( 'login' ); } } |
laravelproject\routes\web.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //laravelproject\routes\web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\CustomAuthController; //Route::get('/', function () { // return view('welcome'); //}); Route::get( '/' , [CustomAuthController:: class , 'home' ]); Route::get( 'dashboard' , [CustomAuthController:: class , 'dashboard' ]); Route::get( 'login' , [CustomAuthController:: class , 'index' ])->name( 'login' ); Route::post( 'postlogin' , [CustomAuthController:: class , 'login' ])->name( 'postlogin' ); Route::get( 'signup' , [CustomAuthController:: class , 'signup' ])->name( 'register-user' ); Route::post( 'postsignup' , [CustomAuthController:: class , 'signupsave' ])->name( 'postsignup' ); Route::get( 'signout' , [CustomAuthController:: class , 'signOut' ])->name( 'signout' ); |
laravelproject\resources\views\homepage.blade.php
Bootstrap 5
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | //laravelproject\resources\views\homepage.blade.php <!DOCTYPE html> <html> <head> <title>Laravel 9 Custom Auth Login and Registration</title> <link href= "https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel= "stylesheet" > </head> <body> <nav class = "navbar navbar-light navbar-expand-lg mb-5" style= "background-color: #0dcaf0;" > <div class = "container" > <a class = "navbar-brand mr-auto" href= "#" >Cairocoders</a> <button class = "navbar-toggler" type= "button" data-bs-toggle= "collapse" data-bs-target= "#navbarNav" aria-controls= "navbarNav" aria-expanded= "false" aria-label= "Toggle navigation" > <span class = "navbar-toggler-icon" ></span> </button> <div class = "collapse navbar-collapse" id= "navbarNav" > <ul class = "navbar-nav" > @guest <li class = "nav-item" > <a class = "nav-link" href= "{{ route('login') }}" >Login</a> </li> <li class = "nav-item" > <a class = "nav-link" href= "{{ route('register-user') }}" >Register</a> </li> @ else <li class = "nav-item" > <a class = "nav-link" href= "{{ route('signout') }}" >Logout</a> </li> @endguest </ul> </div> </div> </nav> @yield( 'content' ) </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | //laravelproject\resources\views\login.blade.php @ extends ( 'layout' ) @section( 'content' ) <main class = "login-form" > <div class = "cotainer" > <div class = "row justify-content-center" > <div class = "col-md-4" > <div class = "card" > <h3 class = "card-header text-center" >Login</h3> @ if (\Session::has( 'message' )) <div class = "alert alert-info" > {{\Session::get( 'message' )}} </div> @ endif <div class = "card-body" > <form method= "POST" action= "{{ route('postlogin') }}" > @csrf <div class = "form-group mb-3" > <input type= "text" placeholder= "Email" id= "email" class = "form-control" name= "email" autofocus> @ if ( $errors ->has( 'email' )) <span class = "text-danger" >{{ $errors ->first( 'email' ) }}</span> @ endif </div> <div class = "form-group mb-3" > <input type= "password" placeholder= "Password" id= "password" class = "form-control" name= "password" > @ if ( $errors ->has( 'password' )) <span class = "text-danger" >{{ $errors ->first( 'password' ) }}</span> @ endif </div> <div class = "form-group mb-3" > <div class = "checkbox" > <label> <input type= "checkbox" name= "remember" > Remember Me </label> </div> </div> <div class = "d-grid mx-auto" > <button type= "submit" class = "btn btn-dark btn-block" >Signin</button> </div> </form> </div> </div> </div> </div> </div> </main> @endsection |
1 2 3 4 5 6 7 8 9 10 11 12 | //laravelproject\resources\views\layout.blade.php <html> <head> <title>Laravel 9 Custom Auth Login and Registration</title> <link rel= "stylesheet" href= "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" > </head> <body> <div class = "container" style= "padding:50px;" > @yield( 'content' ) </div> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | //laravelproject\resources\views\registration.blade.php @ extends ( 'layout' ) @section( 'content' ) <main class = "signup-form" > <div class = "cotainer" > <div class = "row justify-content-center" > <div class = "col-md-4" > <div class = "card" > <h3 class = "card-header text-center" >Register User</h3> <div class = "card-body" > <form action= "{{ route('postsignup') }}" method= "POST" > @csrf <div class = "form-group mb-3" > <input type= "text" placeholder= "Name" id= "name" class = "form-control" name= "name" autofocus> @ if ( $errors ->has( 'name' )) <span class = "text-danger" >{{ $errors ->first( 'name' ) }}</span> @ endif </div> <div class = "form-group mb-3" > <input type= "text" placeholder= "Email" id= "email_address" class = "form-control" name= "email" autofocus> @ if ( $errors ->has( 'email' )) <span class = "text-danger" >{{ $errors ->first( 'email' ) }}</span> @ endif </div> <div class = "form-group mb-3" > <input type= "password" placeholder= "Password" id= "password" class = "form-control" name= "password" > @ if ( $errors ->has( 'password' )) <span class = "text-danger" >{{ $errors ->first( 'password' ) }}</span> @ endif </div> <div class = "form-group mb-3" > <div class = "checkbox" > <label><input type= "checkbox" name= "remember" > Remember Me</label> </div> </div> <div class = "d-grid mx-auto" > <button type= "submit" class = "btn btn-dark btn-block" >Sign up</button> </div> </form> </div> </div> </div> </div> </div> </main> @endsection |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | //laravelproject\resources\views\dashboard.blade.php <!DOCTYPE html> <html> <head> <title>Laravel 9 Custom Auth Login and Registration</title> <link href= "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel= "stylesheet" > </head> <body> <nav class = "navbar navbar-light navbar-expand-lg mb-5" style= "background-color: #0dcaf0;" > <div class = "container" > <a class = "navbar-brand mr-auto" href= "#" >Cairocoders</a> <button class = "navbar-toggler" type= "button" data-bs-toggle= "collapse" data-bs-target= "#navbarNav" aria-controls= "navbarNav" aria-expanded= "false" aria-label= "Toggle navigation" > <span class = "navbar-toggler-icon" ></span> </button> <div class = "collapse navbar-collapse" id= "navbarNav" > <ul class = "navbar-nav" > <li class = "nav-item" > <a class = "nav-link" href= "" >Profile</a> </li> <li class = "nav-item" > <a class = "nav-link" href= "{{ route('signout') }}" >Logout</a> </li> </ul> </div> </div> </nav> <div class = "container" ><br/><br/> <div class = "row" > <p><h3>Hello : {{ Auth::user()->name }} </h3> </p> </div> </div> @yield( 'content' ) </body> </html> |
Starting Laravel development server: http://127.0.0.1:8000