Laravel: Sıfırdan İleri Seviye

Ders 10/17 1 saat 15 dk

Authentication Sistemi

Laravel'in auth sistemi, Breeze/Jetstream, session ve remember me.

Authentication Sistemi

Laravel, kullanıcı kimlik doğrulaması için hazır çözümler sunar.

Laravel Breeze Kurulumu

# Breeze kurulumu
composer require laravel/breeze --dev

# Breeze scaffold'unu yükle
php artisan breeze:install

# Seçenekler:
# - blade (klasik)
# - livewire
# - react
# - vue
# - api (sadece API)

# Assets'i derle
npm install && npm run dev

# Migration'ları çalıştır
php artisan migrate

Auth Facade Kullanımı

use Illuminate\Support\Facades\Auth;

// Giriş kontrolü
if (Auth::check()) {
    // Kullanıcı giriş yapmış
}

if (Auth::guest()) {
    // Kullanıcı giriş yapmamış
}

// Giriş yapmış kullanıcı
$user = Auth::user();
$userId = Auth::id();

// Helper fonksiyonlar
$user = auth()->user();
$userId = auth()->id();
$isLoggedIn = auth()->check();

// Manuel giriş
if (Auth::attempt(['email' => $email, 'password' => $password])) {
    // Giriş başarılı
    return redirect()->intended('dashboard');
}

// Remember me ile
Auth::attempt($credentials, $remember = true);

// Kullanıcı ile giriş
Auth::login($user);
Auth::login($user, $remember = true);

// ID ile giriş
Auth::loginUsingId(1);

// Çıkış
Auth::logout();

// Session'ı invalidate et ve token yenile
$request->session()->invalidate();
$request->session()->regenerateToken();

Middleware ile Koruma

// Route'larda
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');

// Grup olarak
Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'show']);
    Route::get('/settings', [SettingsController::class, 'index']);
});

// Controller constructor'da
class ProfileController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
}

// Guest (giriş yapmamış) için
Route::get('/login', [AuthController::class, 'showLogin'])
    ->middleware('guest');

Password Hashing

use Illuminate\Support\Facades\Hash;

// Hash oluşturma
$hashed = Hash::make('password');
$hashed = bcrypt('password');  // Kısayol

// Hash doğrulama
if (Hash::check('password', $hashedPassword)) {
    // Eşleşiyor
}

// User model'de otomatik hash (mutator)
class User extends Authenticatable
{
    protected function password(): Attribute
    {
        return Attribute::make(
            set: fn ($value) => Hash::make($value),
        );
    }
}

Email Verification

// User model
class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

// Route'lar (Breeze otomatik ekler)
Route::get('/email/verify', function () {
    return view('auth.verify-email');
})->middleware('auth')->name('verification.notice');

// Verified middleware
Route::get('/dashboard', function () {
    // Sadece email doğrulanmış kullanıcılar
})->middleware(['auth', 'verified']);

Password Reset

use Illuminate\Support\Facades\Password;

// Reset link gönder
$status = Password::sendResetLink(
    $request->only('email')
);

return $status === Password::RESET_LINK_SENT
    ? back()->with('status', __($status))
    : back()->withErrors(['email' => __($status)]);

// Şifre sıfırlama
$status = Password::reset(
    $request->only('email', 'password', 'password_confirmation', 'token'),
    function ($user, $password) {
        $user->forceFill([
            'password' => Hash::make($password)
        ])->save();
    }
);

Önemli Noktalar

  • Laravel Breeze en basit auth scaffold'u
  • Auth facade ile authentication işlemleri
  • auth() helper ile kullanıcıya erişim
  • Guards farklı kullanıcı tipleri için
  • Password hashing otomatik yapılır