Merhaba Laravel Dostları,
Bugün Laravel 8’de Admin Auth Nasıl Yapılır hakkında bilgi edineceğiz.
Laravel’de web uygulamaları ile çalışırken yönetici kimlik doğrulaması gereklidir. Bu yüzden burada Laravel 8’de Admin Auth Nasıl Yapılır adım adım anlatacağım.
Laravel 8’de Admin Auth Yapma Adımları:
Adım 1: Veritabanında bir yönetici tablosu oluşturun
Yönetici için bir migration oluşturun ve “admins” tablosuna “name, email, password, created_at, updated_at” alanlarını ekleyin
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateAdminsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('admins', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('admins'); } }
Adım 2: Guards Ekleme
Guards eklemek için config/auth.php dosyasında aşağıdaki değişiklikleri yapmanız gerekir.
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class, ], ],
Adım 3: admin için auth middleware oluşturalım
Aşağıdaki komutu terminalinizden çalıştırınız
php artisan make:middleware AdminAuthenticated
Şimdi, aşağıdaki yola gidin
app/Http/Middleware/AdminAuthenticated.php
Ve kodu aşağıdaki gibi ekleyin
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class AdminAuthenticated { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { if (Auth::guard('admin')->user()) { return $next($request); } if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { return redirect(route('adminLogin')); } } }
Adım 4: Middlewave’i Kernel.php dosyasına ekleyin
Aşağıdaki dosya ya gidelim
app/Http/Kernel.php
Şimdi kodu aşağıdaki gibi ekleyin
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'admin' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array<string, class-string|string> */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'adminauth' => \App\Http\Middleware\AdminAuthenticated::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, ];
Adım 5: Admin Giriş Rotalarını Ekleyin
Aşağıda belirtilen yola gidin
routes/web.php
Şimdi aşağıdaki kodu ekleyin
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function () { Route::get('/login', [AdminAuthController::class, 'getLogin'])->name('adminLogin'); Route::post('/login', [AdminAuthController::class, 'postLogin'])->name('adminLoginPost'); Route::group(['middleware' => 'adminauth'], function () { Route::get('/', function () { return view('welcome'); })->name('adminDashboard'); }); });
Adım 6: AdminAuth controller oluşturun
Aşağıdaki komutu çalıştırın
php artisan make:controller Admin/AdminAuthController
Ardından aşağıdaki yola gidin
app/Http/Controllers/Admin/AdminAuthController.php
Ve aşağıdaki kod parçacığını ekleyin
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; class AdminAuthController extends Controller { public function getLogin(){ return view('admin.auth.login'); } public function postLogin(Request $request) { $this->validate($request, [ 'email' => 'required|email', 'password' => 'required', ]); if(auth()->guard('admin')->attempt(['email' => $request->input('email'), 'password' => $request->input('password')])){ $user = auth()->guard('admin')->user(); if($user->is_admin == 1){ return redirect()->route('adminDashboard')->with('success','You are Logged in sucessfully.'); } }else { return back()->with('error','Whoops! invalid email and password.'); } } public function adminLogout(Request $request) { auth()->guard('admin')->logout(); Session::flush(); Session::put('success', 'You are logout sucessfully'); return redirect(route('adminLogin')); } }
Adım 7: Bir Blade dosyası oluşturun
Aşağıdaki yola gidin
resources\views\admin\auth\login.blade.php
Ve kodu aşağıdaki gibi ekleyin
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Bilisim34 Laravel 8 Admin AUTH Admin Login</title> </head> <body class="vertical-layout vertical-menu-modern" data-open="click" data-menu="vertical-menu-modern" data-col="" data-framework="laravel"> <div class="auth-wrapper auth-basic px-2"> <div class="auth-inner my-2"> <!-- Login basic --> @if(\Session::get('success')) <div class="alert alert-success alert-dismissible fade show" role="alert"> <div class="alert-body"> {{ \Session::get('success') }} </div> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div> @endif {{ \Session::forget('success') }} @if(\Session::get('error')) <div class="alert alert-danger alert-dismissible fade show" role="alert"> <div class="alert-body"> {{ \Session::get('error') }} </div> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div> @endif <div class="card mb-0"> <div class="card-body"> <h2 class="brand-text text-primary ms-1">Admin Login</h2> <form class="auth-login-form mt-2" action="{{route('adminLoginPost')}}" method="post"> @csrf <div class="mb-1"> <label for="email" class="form-label">Email</label> <input type="text" class="form-control" id="email" name="email" value="{{old('email') }}" autofocus /> @if ($errors->has('email')) <span class="help-block font-red-mint"> <strong>{{ $errors->first('email') }}</strong> </span> @endif </div> <div class="mb-1"> <div class="d-flex justify-content-between"> <label class="form-label" for="password">Password</label> <a href="{{url('auth/forgot-password-basic')}}"> <small>Forgot Password?</small> </a> </div> <div class="input-group input-group-merge form-password-toggle"> <input type="password" class="form-control form-control-merge" id="password" name="password" tabindex="2" /> <span class="input-group-text cursor-pointer"><i data-feather="eye"></i></span> </div> @if ($errors->has('password')) <span class="help-block font-red-mint"> <strong>{{ $errors->first('password') }}</strong> </span> @endif </div> <button type="submit" class="btn btn-primary w-100" tabindex="4">Sign in</button> </form> </div> </div> <!-- /Login basic --> </div> </div> </body> </html>
Adım 8: Yönetici Kontrol Paneli Görüntüsü
Aşağıdaki yola ilerleyin
resources\views\welcome.blade.php
Kodu aşağıdaki gibi ekleyin
<!DOCTYPE html> <html> <head> <title>Bilisim34 Admin Auth Laravel 8 </title> </head> <body> <div class="container"> Welcome, Admin </div> </body> </html>
Adım 9: Laravel uygulamanızı çalıştırın
Şimdi, admin auth giriş için hazır. terminalde aşağıdaki komutu kullanarak Laravel uygulamanızı çalıştırın
php artisan serve
Ardından tarayıcıyı açın ve aşağıdaki URL’yi tarayıcınıza yapıştırın
http://127.0.0.1:8000/admin/login
Çıktı:
Yönetici Girişi
Sonuç
Bu şekilde Laravel 8’de kolayca Admin Auth yapabilirsiniz.
Herhangi bir şüpheniz varsa, yorumlar aracılığıyla benimle paylaşın ve daha fazla Laravel dersleri için güncel kalın.