Takip et

Laravel Jetstream ile Başlangıç: Modern Kimlik Doğrulama Çözümleri

Laravel Jetstream ile Başlangıç: Modern Kimlik Doğrulama Çözümleri Laravel, PHP tabanlı web uygulamaları geliştirmek için en popüler ve g

Laravel Jetstream ile Başlangıç: Modern Kimlik Doğrulama Çözümleri

Laravel, PHP tabanlı web uygulamaları geliştirmek için en popüler ve güçlü frameworklerden biridir. Geliştiricilere hızlı, ölçeklenebilir ve bakımı kolay uygulamalar oluşturma imkanı sunar. Ancak her web uygulamasının temelinde yer alan kullanıcı kimlik doğrulama (authentication) ve yetkilendirme (authorization) süreçleri, geliştirme sürecinin önemli bir kısmını oluşturur. Bu süreçler, kayıt, giriş, şifre sıfırlama, e-posta doğrulama gibi birçok karmaşık adımı içerir ve genellikle güvenlik açıklarına karşı son derece hassas olmak zorundadır. İşte tam bu noktada Laravel Jetstream devreye girerek, geliştiricilere modern ve güvenli bir kimlik doğrulama iskeleti sunar.

Jetstream, Laravel uygulamalarınıza sadece birkaç komutla entegre edebileceğiniz, kapsamlı bir kimlik doğrulama, profil yönetimi, iki faktörlü kimlik doğrulama (2FA) ve API token yönetimi çözümüdür. Bu makalede, Laravel Jetstream’in ne olduğunu, neden kullanmanız gerektiğini, nasıl kurulup yapılandırılacağını, sunduğu temel özellikleri ve bu özellikleri nasıl özelleştirebileceğinizi detaylı bir şekilde inceleyeceğiz. Amacımız, Jetstream’i kullanarak uygulamalarınızda güçlü bir kimlik doğrulama sistemi kurmanız için size kapsamlı bir rehber sunmaktır.

Laravel Jetstream Nedir?

Laravel Jetstream, Taylor Otwell tarafından geliştirilen ve Laravel ekosisteminin bir parçası olan resmi bir “scaffolding” (iskelet) paketidir. Temel olarak, Laravel uygulamalarına modern bir kimlik doğrulama ve kullanıcı yönetimi arayüzü ve arka uç mantığı eklemek için tasarlanmıştır. Jetstream, iki ana teknoloji yığını üzerine kuruludur:

1. Laravel Fortify: Bu, kimlik doğrulama işlemlerinin (kayıt, giriş, şifre sıfırlama, e-posta doğrulama, iki faktörlü kimlik doğrulama vb.) arka uç mantığını ve eylemlerini (actions) sağlayan, başsız (headless) bir kimlik doğrulama kütüphanesidir. Fortify, herhangi bir kullanıcı arayüzü sağlamaz, sadece kimlik doğrulama akışının temelini oluşturur.
2. Kullanıcı Arayüzü (UI) Katmanı: Jetstream, Fortify’nin sağladığı arka uç mantığını kullanarak modern ve etkileşimli bir kullanıcı arayüzü sunar. Bu UI katmanı için iki farklı teknoloji yığını seçeneği sunar:
* Livewire + Blade: Laravel’in kendi ekosisteminde derinlemesine entegre olan, sunucu tarafında render edilen dinamik arayüzler oluşturmak için kullanılan bir yığındır. PHP geliştiricileri için daha tanıdık ve hızlı bir geliştirme deneyimi sunar.
* Inertia.js + Vue.js (veya React/Svelte): Tek sayfalık uygulama (SPA) benzeri bir deneyim sunan bir yığındır. Inertia.js, sunucu tarafı yönlendirmelerini (routing) korurken, istemci tarafında Vue.js (varsayılan), React veya Svelte gibi modern JavaScript framework’lerini kullanmanıza olanak tanır. Bu seçenek, daha zengin ve etkileşimli istemci tarafı deneyimleri arayanlar için idealdir.

Jetstream’in sunduğu temel özellikler şunlardır:

* Kayıt ve Giriş: Kullanıcıların kolayca hesap oluşturmasını ve oturum açmasını sağlar.
* Şifre Sıfırlama: Unutulan şifreler için güvenli sıfırlama mekanizması.
* E-posta Doğrulama: Yeni kayıt olan kullanıcıların e-posta adreslerini doğrulaması.
* Profil Yönetimi: Kullanıcıların ad, e-posta, şifre ve profil fotoğrafı gibi bilgilerini güncellemeleri.
* İki Faktörlü Kimlik Doğrulama (2FA): Uygulamanın güvenliğini artırmak için ek bir güvenlik katmanı.
* API Token Yönetimi: Laravel Sanctum ile entegre olarak, SPA’lar ve mobil uygulamalar için API token’ları oluşturma ve yönetme yeteneği.
* Tarayıcı Oturum Yönetimi: Kullanıcıların hangi cihazlarda oturum açtığını görmesi ve istenmeyen oturumları kapatması.
* Takım Yönetimi (Opsiyonel): --teams bayrağı ile kurulduğunda, kullanıcıların takımlar oluşturmasına, diğer üyeleri davet etmesine ve rol atamasına olanak tanıyan bir özellik.

Bu özellikler, modern bir web uygulamasının ihtiyaç duyduğu temel kimlik doğrulama ve kullanıcı yönetimi gereksinimlerini kutudan çıkar çıkmaz karşılar, geliştiricilerin bu karmaşık süreçleri baştan yazmak yerine doğrudan iş mantığına odaklanmasına olanak tanır.

Neden Laravel Jetstream Kullanmalısınız?

Laravel Jetstream’i projenize dahil etmek, geliştirme sürecinizde size bir dizi önemli avantaj sunar:

* Hızlı Geliştirme ve Zaman Tasarrufu: Kimlik doğrulama ve kullanıcı yönetimi, her uygulamanın olmazsa olmazıdır ve genellikle tekrar eden, zaman alıcı bir süreçtir. Jetstream, bu temel işlevleri önceden yapılandırılmış ve test edilmiş bir şekilde sunarak, geliştiricilerin haftalarca sürebilecek bu süreci dakikalara indirmesini sağlar. Bu, projenizin çekirdek özelliklerine daha fazla odaklanmanıza olanak tanır.
* Kapsamlı ve Modern Özellikler: Jetstream, günümüz modern web uygulamalarının beklediği tüm temel kimlik doğrulama özelliklerini (kayıt, giriş, şifre sıfırlama, e-posta doğrulama) ve ek güvenlik katmanlarını (iki faktörlü kimlik doğrulama, tarayıcı oturum yönetimi, API token yönetimi) standart olarak sunar. Bu, uygulamanızın baştan itibaren güvenli ve zengin özelliklere sahip olmasını sağlar.
* Güvenlik: Kimlik doğrulama, uygulamanın en kritik güvenlik alanlarından biridir. Jetstream, Laravel Fortify’nin sağlam güvenlik temelleri üzerine inşa edilmiştir ve Laravel topluluğu tarafından sürekli olarak denetlenir ve güncellenir. Bu, yaygın güvenlik açıklarına karşı korunmuş, güvenilir bir çözüm kullandığınız anlamına gelir.
* Esneklik ve Teknoloji Seçimi: Jetstream, kullanıcı arayüzü için Livewire + Blade veya Inertia.js + Vue.js olmak üzere iki farklı teknoloji yığını seçeneği sunar. Bu esneklik, projenizin gereksinimlerine ve ekibinizin yetkinliklerine en uygun teknoloji yığınını seçmenize olanak tanır. İster geleneksel sunucu taraflı renderlama, ister modern SPA benzeri bir deneyim isteyin, Jetstream size uygun bir çözüm sunar.
* API Desteği: Laravel Sanctum ile derinlemesine entegrasyon sayesinde Jetstream, SPA’lar, mobil uygulamalar veya diğer API tüketicileri için güvenli API token yönetimi sağlar. Bu, modern, çok katmanlı uygulamalar geliştirirken büyük bir kolaylık sağlar.
* Kolay Bakım ve Güncelleme: Jetstream, Laravel’in kendi geliştirme ekibi tarafından desteklenir ve güncellenir. Bu, Laravel’in yeni sürümleriyle uyumluluğun korunacağı ve herhangi bir güvenlik açığı veya hata durumunda hızlıca yamaların sağlanacağı anlamına gelir. Ayrıca, iyi yapılandırılmış ve modüler yapısı sayesinde, mevcut özellikleri özelleştirmek veya genişletmek de nispeten kolaydır.
* Topluluk Desteği: Laravel’in geniş ve aktif bir topluluğu vardır. Jetstream ile ilgili herhangi bir sorunla karşılaştığınızda veya bir özelliğin nasıl uygulanacağını merak ettiğinizde, çevrimiçi forumlarda, dokümantasyonda ve diğer kaynaklarda kolayca yardım bulabilirsiniz.

Özetle, Laravel Jetstream, geliştiricilerin kimlik doğrulama ve kullanıcı yönetimi süreçlerini hızlı, güvenli ve esnek bir şekilde uygulamalarına olanak tanıyan güçlü bir araçtır. Bu, projenizin kalitesini artırırken geliştirme süresini önemli ölçüde azaltır.

Kurulum Öncesi Hazırlıklar

Laravel Jetstream’i projenize entegre etmeden önce, sisteminizde belirli yazılımların kurulu ve yapılandırılmış olduğundan emin olmanız gerekir. Bu ön koşullar, Laravel ve Jetstream’in sorunsuz çalışması için gereklidir.

1. PHP: Laravel Jetstream, PHP 8.1 veya daha yeni bir sürümünü gerektirir. PHP’nin doğru bir şekilde kurulduğundan ve gerekli uzantıların (örneğin, mbstring, pdo, xml, bcmath, ctype, json, tokenizer) etkinleştirildiğinden emin olun. PHP’nin sürümünü kontrol etmek için terminalinizde php -v komutunu kullanabilirsiniz.
2. Composer: PHP bağımlılık yöneticisi Composer, Laravel ve Jetstream paketlerini projenize yüklemek için olmazsa olmazdır. Composer’ın kurulu olup olmadığını kontrol etmek için composer -V komutunu kullanabilirsiniz. Kurulu değilse, resmi Composer web sitesinden (getcomposer.org) kurulum talimatlarını takip edebilirsiniz.
3. Node.js ve npm/Yarn: Jetstream’in kullanıcı arayüzü katmanı (Livewire/Inertia.js), modern JavaScript araçlarını (derleme, paketleme vb.) kullanır. Bu nedenle Node.js ve bir paket yöneticisi (npm veya Yarn) sisteminizde kurulu olmalıdır. Node.js’nin sürümünü node -v ve npm’nin sürümünü npm -v komutlarıyla kontrol edebilirsiniz. Kurulu değilse, Node.js’nin resmi web sitesinden (nodejs.org) indirip kurabilirsiniz.
4. Veritabanı: Laravel projeniz için bir veritabanı sunucusu (MySQL, PostgreSQL, SQLite vb.) kurulu ve erişilebilir olmalıdır. Jetstream, kullanıcı ve oturum bilgilerini saklamak için veritabanını kullanır.
5. Laravel Projesi: Jetstream’i mevcut bir Laravel projesine kurabilir veya yeni bir Laravel projesi oluşturup ardından Jetstream’i entegre edebilirsiniz. Bu makale, yeni bir Laravel projesi oluşturarak Jetstream kurulumunu gösterecektir.

Bu ön koşulları sağladıktan sonra, Laravel Jetstream’i projenize dahil etmeye hazırsınız demektir.

Laravel Jetstream Kurulumu

Laravel Jetstream’i projenize entegre etmek oldukça basit bir süreçtir ve birkaç adımdan oluşur. İşte adım adım kurulum rehberi:

Yeni Bir Laravel Projesi Oluşturma

Eğer mevcut bir Laravel projeniz varsa bu adımı atlayabilirsiniz. Yeni bir proje oluşturmak için Composer’ı kullanabilirsiniz:

composer create-project laravel/laravel jetstream-app
cd jetstream-app

Bu komut, jetstream-app adında yeni bir Laravel projesi oluşturacak ve projenin dizinine geçiş yapacaktır.

Veritabanı Yapılandırması

Projenizin .env dosyasını açın ve veritabanı bağlantı bilgilerinizi güncelleyin. Örneğin, MySQL kullanıyorsanız:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=jetstream_db
DB_USERNAME=root
DB_PASSWORD=

jetstream_db adında bir veritabanının sunucunuzda mevcut olduğundan emin olun.

Jetstream’i Yükleme

Composer kullanarak Jetstream paketini projenize ekleyin:

composer require laravel/jetstream

Bu komut, Jetstream’in tüm bağımlılıklarını projenize indirecektir.

Stack Seçimi ve Kurulumu

Jetstream’i yükledikten sonra, kullanmak istediğiniz UI yığınını (Livewire veya Inertia.js) seçerek kurulumu tamamlamanız gerekir. Ayrıca, takım yönetimi özelliğini de bu adımda etkinleştirebilirsiniz.

Livewire + Blade ile Kurulum

Livewire ve Blade yığınını kullanmak istiyorsanız, aşağıdaki komutu çalıştırın:

php artisan jetstream:install livewire

Eğer takım yönetimini de dahil etmek isterseniz:

php artisan jetstream:install livewire --teams

Bu komut, gerekli Livewire bileşenlerini, Blade şablonlarını ve diğer yapılandırma dosyalarını projenize ekler.

Inertia.js + Vue.js ile Kurulum

Inertia.js ve Vue.js yığınını kullanmak istiyorsanız, aşağıdaki komutu çalıştırın:

php artisan jetstream:install inertia

Eğer takım yönetimini de dahil etmek isterseniz:

php artisan jetstream:install inertia --teams

Bu komut, Inertia.js ve Vue.js ile ilgili dosyaları, JavaScript bağımlılıklarını ve diğer yapılandırmaları projenize ekler.

Not: React veya Svelte gibi diğer Inertia.js istemci adaptörlerini kullanmak isterseniz, Jetstream kurulumundan sonra ilgili adaptörü manuel olarak kurmanız ve app.js dosyasını düzenlemeniz gerekecektir.

JavaScript Bağımlılıklarını Yükleme ve Derleme

Seçtiğiniz yığının kurulum komutunu çalıştırdıktan sonra, frontend bağımlılıklarını yüklemeniz ve derlemeniz gerekir:

npm install
npm run dev

* npm install: package.json dosyasında belirtilen tüm JavaScript bağımlılıklarını indirir.
* npm run dev: Geliştirme ortamı için JavaScript ve CSS dosyalarını derler. Üretim için npm run build komutunu kullanabilirsiniz.

Veritabanı Göçlerini Çalıştırma

Jetstream, kullanıcılar, kişisel erişim jetonları (API tokenları) ve oturumlar için ek veritabanı tabloları gerektirir. Bu tabloları oluşturmak için veritabanı göçlerini çalıştırmanız gerekir:

php artisan migrate

Bu komut, Laravel projenizdeki tüm bekleyen göçleri (migrations) çalıştırarak gerekli tabloları veritabanınızda oluşturacaktır.

Tüm bu adımları tamamladıktan sonra, Laravel uygulamanız Jetstream ile tam entegre hale gelmiş olacaktır. Uygulamanızı bir tarayıcıda açtığınızda (örneğin, php artisan serve komutunu çalıştırarak), sağ üst köşede “Login” (Giriş) ve “Register” (Kayıt Ol) bağlantılarını görmelisiniz. Artık kullanıcı kaydı, girişi ve diğer Jetstream özelliklerini kullanmaya başlayabilirsiniz.

Jetstream Özelliklerine Derinlemesine Bakış

Laravel Jetstream, modern web uygulamalarının ihtiyaç duyduğu kapsamlı bir dizi kimlik doğrulama ve kullanıcı yönetimi özelliği sunar. Bu bölümde, Jetstream’in temel özelliklerini daha yakından inceleyeceğiz.

Kimlik Doğrulama Akışı

Jetstream, Laravel Fortify sayesinde sağlam bir kimlik doğrulama akışı sunar:

* Kayıt (Registration): Yeni kullanıcıların e-posta, şifre ve isteğe bağlı olarak isim gibi bilgilerle hesap oluşturmasını sağlar. Arka planda App\Actions\Fortify\CreateNewUser action’ı çalışır.
* Giriş (Login): Mevcut kullanıcıların e-posta ve şifreleriyle oturum açmasını sağlar. App\Actions\Fortify\AttemptToAuthenticate action’ı bu süreci yönetir.
* Şifre Sıfırlama (Password Reset): Kullanıcıların unutulan şifrelerini e-posta aracılığıyla güvenli bir şekilde sıfırlamasına olanak tanır. App\Actions\Fortify\ResetUserPassword action’ı bu işlemi gerçekleştirir.
* E-posta Doğrulama (Email Verification): Yeni kayıt olan kullanıcıların e-posta adreslerini doğrulamalarını gerektirir. Bu, uygulamanın güvenliğini artırır ve spam hesapları azaltır.

Tüm bu akışlar, önceden tanımlanmış view’lar (Blade veya Vue/React bileşenleri) ve Fortify tarafından sağlanan arka uç mantığı ile sorunsuz bir şekilde çalışır.

Profil Yönetimi

Kullanıcılar oturum açtıktan sonra, profil bilgilerini yönetebilirler:

* Kullanıcı Bilgilerini Güncelleme: Ad, e-posta adresi gibi temel profil bilgilerini değiştirebilirler. Bu işlem genellikle App\Actions\Jetstream\UpdateUserProfileInformation action’ı tarafından ele alınır.
* Şifre Güncelleme: Mevcut şifrelerini güvenli bir şekilde yeni bir şifreyle değiştirebilirler. App\Actions\Fortify\UpdateUserPassword action’ı kullanılır.
* Profil Fotoğrafı (Avatar) Yönetimi: Kullanıcıların profil fotoğraflarını yüklemesine, güncellemesine ve silmesine olanak tanır. Bu özellik, Livewire veya Inertia.js bileşenleri aracılığıyla sağlanır ve dosya yükleme mantığı App\Actions\Jetstream\UpdateUserProfileInformation action’ında bulunur.

İki Faktörlü Kimlik Doğrulama (2FA)

Jetstream, uygulamanızın güvenliğini artırmak için iki faktörlü kimlik doğrulama özelliğini entegre eder. Kullanıcılar, bu özelliği etkinleştirerek şifrelerinin yanı sıra bir doğrulama kodu (genellikle Google Authenticator gibi bir uygulama aracılığıyla) girmeleri gerekir.

* Etkinleştirme: Kullanıcılar, profillerindeki bir seçenek aracılığıyla 2FA’yı etkinleştirebilirler. Bu, bir QR kodu ve kurtarma kodları üretir.
* Kurtarma Kodları: 2FA cihazlarına erişimlerini kaybetmeleri durumunda kullanıcıların oturum açmalarını sağlayan tek kullanımlık kodlardır.
* Google Authenticator Entegrasyonu: Jetstream, TOTP (Time-based One-Time Password) algoritmalarını destekleyerek Google Authenticator gibi uygulamalarla kolayca entegre olur.

Tarayıcı Oturum Yönetimi

Bu özellik, kullanıcıların hesaplarının güvenliğini sağlamalarına yardımcı olur. Kullanıcılar, profillerindeki bir panelden, hesaplarının hangi cihazlarda ve tarayıcılarda etkin oturumları olduğunu görebilir ve istenmeyen oturumları uzaktan kapatabilirler. Bu, özellikle halka açık bilgisayarlarda oturum açmış ve çıkış yapmayı unutmuş kullanıcılar için faydalıdır. Arka planda App\Actions\Jetstream\LogoutOtherBrowserSessions action’ı bu işlemi yönetir.

API Token Yönetimi (Laravel Sanctum ile)

Jetstream, Laravel Sanctum ile derinlemesine entegrasyon sayesinde API token yönetimini kutudan çıkar çıkmaz sunar. Bu özellik, özellikle tek sayfalık uygulamalar (SPA’lar), mobil uygulamalar veya diğer API tüketicileri için önemlidir.

* Token Oluşturma: Kullanıcılar, profillerindeki bir arayüz aracılığıyla yeni API token’ları oluşturabilirler.
* İzinler (Scopes): Token’lara belirli izinler (örneğin, read, create, update, delete) atayabilirler. Bu, API token’larının belirli işlevlerle sınırlı olmasını sağlar ve güvenlik riskini azaltır.
* Token Silme: Oluşturulan token’ları gerektiğinde silebilirler.

Bu özellik, uygulamanızın API’lerini güvenli bir şekilde tüketmek isteyen diğer hizmetler veya uygulamalar için güçlü bir mekanizma sunar.

Takım Yönetimi (Opsiyonel)

Eğer Jetstream’i --teams bayrağı ile kurduysanız, uygulamanız çoklu takım desteği ile birlikte gelir. Bu özellik, SaaS (Software as a Service) uygulamaları veya birden fazla kullanıcının işbirliği yapması gereken uygulamalar için idealdir.

* Takım Oluşturma: Kullanıcılar kendi takımlarını oluşturabilirler.
* Üye Davet Etme: Takım sahipleri, diğer kullanıcıları takımlarına davet edebilir. Davet edilen kullanıcılar, e-posta aracılığıyla daveti kabul edebilirler.
* Rol Atama: Takım üyelerine farklı roller (örneğin, “owner”, “member”) atanabilir. Bu roller, yetkilendirme (authorization) süreçlerinde kullanılabilir.
* Takım Değiştirme: Kullanıcılar, birden fazla takımın üyesi iseler, aktif takımlarını değiştirebilirler.

Takım yönetimi, App\Actions\Jetstream dizini altındaki CreateTeam, AddTeamMember, UpdateTeamName, UpdateTeamMemberRole, RemoveTeamMember ve DeleteTeam gibi action’lar tarafından yönetilir. Bu action’lar, takım ile ilgili iş mantığını içerir ve özelleştirilebilir.

Jetstream’in bu özellikleri, geliştiricilere karmaşık kimlik doğrulama ve kullanıcı yönetimi işlevlerini hızlı ve güvenli bir şekilde entegre etme olanağı tanır. Her bir özellik, modern uygulamaların gereksinimlerini karşılayacak şekilde tasarlanmıştır ve Laravel’in gücünden tam olarak yararlanır.

Jetstream’i Özelleştirme

Laravel Jetstream, kutudan çıkar çıkmaz kapsamlı özellikler sunsa da, her uygulamanın kendine özgü gereksinimleri olabilir. Jetstream’in modüler yapısı sayesinde, varsayılan davranışları ve görünümleri kolayca özelleştirebilirsiniz.

View’ları Yayımlama ve Değiştirme

Jetstream’in kullanıcı arayüzü, Livewire + Blade veya Inertia.js + Vue/React kullanılarak oluşturulur. Bu görünümleri doğrudan değiştirmek için, Jetstream’in view dosyalarını projenize yayımlamanız gerekir:

php artisan vendor:publish --tag=jetstream-views

Bu komut, Jetstream’in tüm Blade (Livewire için) veya Vue/React (Inertia.js için) bileşenlerini resources/views/vendor/jetstream veya resources/js/Pages dizinlerine kopyalar. Artık bu dosyaları kendi ihtiyaçlarınıza göre düzenleyebilirsiniz. Örneğin, kayıt formuna ek bir alan eklemek veya profil yönetim sayfasının tasarımını değiştirmek mümkündür.

Önemli Not: vendor:publish komutunu çalıştırdıktan sonra, Jetstream güncellemeleri geldiğinde bu dosyalar otomatik olarak güncellenmeyecektir. Kendi özelleştirmelerinizi yaparken dikkatli olmalı ve gelecekteki güncellemelerle çakışmaları önlemek için değişikliklerinizi iyi yönetmelisiniz.

Rotayı Değiştirme

Jetstream, kimlik doğrulama ile ilgili rotaları (örneğin, giriş, kayıt, şifre sıfırlama) FortifyServiceProvider.php dosyası aracılığıyla tanımlar. Bu rotaların bazılarını özelleştirmek isteyebilirsiniz. Örneğin, giriş sayfasının varsayılan URL’sini değiştirmek için FortifyServiceProvider içindeki boot metodunda değişiklik yapabilirsiniz:

use Laravel\Fortify\Fortify;

public function boot()
{
    // ...
    Fortify::loginView(function () {
        return view('auth.login'); // Kendi özel giriş görünümünüzü kullanın
    });
    // ...
}

Benzer şekilde, kayıt veya şifre sıfırlama görünümlerini de değiştirebilirsiniz.

Action’ları Özelleştirme

Jetstream ve Fortify, kimlik doğrulama ve kullanıcı yönetimi işlemlerinin mantığını app/Actions/Fortify ve app/Actions/Jetstream dizinlerinde bulunan action sınıfları aracılığıyla yönetir. Bu sınıfları özelleştirerek varsayılan davranışları değiştirebilirsiniz.

Örneğin, kayıt işlemine ek bir alan eklemek isterseniz (telefon_numarasi gibi):

1. Veritabanı migration’ı oluşturun:

php artisan make:migration add_phone_number_to_users_table --table=users

Migration dosyasında phone_number sütununu ekleyin.
2. CreateNewUser action’ını düzenleyin:
app/Actions/Fortify/CreateNewUser.php dosyasını açın ve create metodunu aşağıdaki gibi güncelleyin:

use App\Models\User;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Support\Facades\Validator;
    use Laravel\Fortify\Contracts\CreatesNewUsers;
    use Laravel\Jetstream\Jetstream;

    class CreateNewUser implements CreatesNewUsers
    {
        use PasswordValidationRules;

        public function create(array $input)
        {
            Validator::make($input, [
                'name' => ['required', 'string', 'max:255'],
                'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
                'password' => $this->passwordRules(),
                'phone_number' => ['nullable', 'string', 'max:20'], // Yeni alan için doğrulama kuralı
                'terms' => Jetstream::has=Feature(Jetstream::TermsAndPrivacyPolicy) ? ['accepted', 'required'] : '',
            ])->validate();

            return User::create([
                'name' => $input['name'],
                'email' => $input['email'],
                'password' => Hash::make($input['password']),
                'phone_number' => $input['phone_number'] ?? null, // Yeni alanı kaydet
            ]);
        }
    }

3. Kayıt formuna alanı ekleyin:
Yayımladığınız resources/views/auth/register.blade.php (Livewire) veya resources/js/Pages/Auth/Register.vue (Inertia.js) dosyasına telefon_numarasi alanını ekleyin.

Bu yöntemle, Jetstream’in sağladığı temel işlevlerin herhangi birini kendi iş mantığınıza göre genişletebilir veya değiştirebilirsiniz.

Livewire/Inertia Bileşenlerini Değiştirme

Yayımladığınız view’lar arasında, Jetstream’in ana navigasyon menüsü (navigation-menu.blade.php veya ilgili Vue/React bileşeni) ve profil yönetim sayfaları gibi birçok bileşen bulunur. Bu bileşenleri doğrudan düzenleyerek uygulamanızın görünümünü ve hissini tamamen değiştirebilirsiniz.

* CSS/Tailwind Özelleştirmeleri: Jetstream, varsayılan olarak Tailwind CSS kullanır. tailwind.config.js dosyasını düzenleyerek veya özel CSS ekleyerek renkleri, fontları ve genel stilini uygulamanızın markasına uygun hale getirebilirsiniz.
* Navigasyon Menüsü Entegrasyonu: navigation-menu.blade.php dosyasını düzenleyerek kendi özel bağlantılarınızı ekleyebilir veya mevcut bağlantıları kaldırabilirsiniz. Bu, uygulamanızın genel navigasyon yapısına Jetstream bileşenlerini entegre etmek için önemlidir.

Feature Flag’leri ile Özelleştirme

Jetstream, belirli özellikleri (örneğin, API token yönetimi, takım yönetimi, profil fotoğrafı) etkinleştirmek veya devre dışı bırakmak için “feature flag” mekanizması kullanır. Bu bayraklar, config/jetstream.php dosyasında bulunur.

// config/jetstream.php
return [
    // ...
    'features' => [
        Features::profilePhotos(),
        Features::apiTokens(),
        Features::teams(),
        Features::twoFactorAuthentication([
            'confirm' => true,
        ]),
    ],
    // ...
];

Bu diziden bir özelliği kaldırarak veya ekleyerek, Jetstream’in hangi işlevleri uygulamanızda sunacağını kontrol edebilirsiniz. Örneğin, API token yönetimine ihtiyacınız yoksa Features::apiTokens() satırını kaldırabilirsiniz.

Jetstream’in bu esnek özelleştirme yetenekleri, geliştiricilerin temel kimlik doğrulama altyapısından ödün vermeden uygulamalarını kendi özel gereksinimlerine göre şekillendirmelerine olanak tanır.

Gelişmiş Kullanım Senaryoları ve İpuçları

Laravel Jetstream’in temel kurulum ve özelleştirmelerinin ötesinde, uygulamanızın gereksinimlerine göre daha gelişmiş senaryolarda da kullanabilirsiniz.

Middleware Kullanımı

Jetstream ile kimlik doğrulama mekanizmasını kurduktan sonra, belirli rotaları veya rota gruplarını sadece oturum açmış kullanıcılar için erişilebilir hale getirmeniz gerekir. Laravel’in auth middleware’i bu amaçla kullanılır.

* Web Rotası Koruması: Web tabanlı rotalarınız için web middleware grubunda veya doğrudan rota tanımında auth middleware’ini kullanabilirsiniz:

// routes/web.php
    Route::middleware(['auth'])->group(function () {
        Route::get('/dashboard', function () {
            return view('dashboard');
        })->name('dashboard');
    });

* API Rotası Koruması: Eğer API tokenları kullanıyorsanız, API rotalarınızı auth:sanctum middleware’i ile koruyabilirsiniz. Bu, Laravel Sanctum’ın API tokenları aracılığıyla kimlik doğrulamayı sağlar:

// routes/api.php
    Route::middleware(['auth:sanctum'])->group(function () {
        Route::get('/user', function (Request $request) {
            return $request->user();
        });
    });

Yetkilendirme (Authorization)

Kimlik doğrulama, kullanıcının kim olduğunu belirlerken, yetkilendirme kullanıcının ne yapmasına izin verildiğini belirler. Jetstream, Laravel’in Gates ve Policies özellikleriyle sorunsuz bir şekilde entegre olur.

* Gates: Basit yetkilendirme kontrolleri için Gates kullanabilirsiniz. Örneğin, bir kullanıcının bir takımı yönetmeye yetkili olup olmadığını kontrol etmek:

// AuthServiceProvider.php
    use App\Models\User;
    use App\Models\Team;
    use Illuminate\Support\Facades\Gate;

    public function boot()
    {
        $this->registerPolicies();

        Gate::define('manage-team', function (User $user, Team $team) {
            return $user->ownsTeam($team);
        });
    }

Daha sonra bir Blade dosyasında: @can('manage-team', $team)
* Policies: Daha karmaşık ve model odaklı yetkilendirme mantığı için Policies kullanın. Örneğin, TeamPolicy oluşturarak bir takımın oluşturulması, güncellenmesi veya silinmesi gibi işlemleri kontrol edebilirsiniz. Jetstream’in takım yönetimi, varsayılan olarak zaten bazı temel TeamPolicy kuralları ile gelir.

Test Etme

Jetstream, kapsamlı bir test paketiyle birlikte gelir. Kendi uygulamanızı geliştirirken, Jetstream’in kimlik doğrulama akışlarının doğru çalıştığından emin olmak için kendi testlerinizi yazmanız önemlidir. Laravel’in entegrasyon testleri ve tarayıcı testleri (örneğin Dusk ile) bu konuda size yardımcı olabilir.

* tests/Feature/AuthenticationTest.php gibi dosyaları inceleyerek Jetstream’in kendi testlerini nasıl yazdığını görebilir ve kendi testleriniz için bir başlangıç noktası olarak kullanabilirsiniz.

Deployment (Üretim Ortamına Dağıtım)

Uygulamanızı bir üretim ortamına dağıtırken dikkat etmeniz gereken bazı noktalar vardır:

* Ortam Değişkenleri: .env dosyanızdaki APP_ENV=production ve APP_DEBUG=false gibi ayarları doğru yapılandırdığınızdan emin olun. Veritabanı bağlantı bilgilerinin de doğru olduğundan emin olun.
* Önbellekleme: Performansı artırmak için Laravel’in yapılandırma, rota ve görünüm önbelleklerini temizleyin ve yeniden oluşturun:

php artisan config:cache
    php artisan route:cache
    php artisan view:cache

* JavaScript ve CSS Derlemesi: Üretim için JavaScript ve CSS dosyalarını sıkıştırılmış ve optimize edilmiş bir şekilde derleyin:

npm run build

* PHP Optimizasyonu: PHP opcache’i etkinleştirerek PHP kodunuzun daha hızlı çalışmasını sağlayın.
* SSL/HTTPS: Uygulamanızın güvenliği için her zaman HTTPS kullanın.

Bu ipuçları, Jetstream ile oluşturduğunuz Laravel uygulamanızı daha güvenli, performanslı ve bakımı kolay hale getirmenize yardımcı olacaktır.

Sonuç

Laravel Jetstream, modern web uygulamaları geliştiren PHP geliştiricileri için oyun değiştirici bir araçtır. Kimlik doğrulama ve kullanıcı yönetimi gibi temel ancak karmaşık işlevleri hızlı, güvenli ve esnek bir şekilde uygulamaya entegre etme yeteneği sunar. Kayıt, giriş, şifre sıfırlama gibi standart özelliklerin yanı sıra, iki faktörlü kimlik doğrulama, API token yönetimi, tarayıcı oturum yönetimi ve opsiyonel takım yönetimi gibi gelişmiş özelliklerle birlikte gelir.

Jetstream’in Laravel Fortify üzerine inşa edilmiş olması, arka uç mantığının sağlam ve test edilmiş olmasını sağlarken, Livewire + Blade veya Inertia.js + Vue.js gibi popüler UI yığınları sayesinde geliştiricilere arayüz katmanında önemli bir esneklik sunar. Bu, projenizin gereksinimlerine ve ekibinizin yetkinliklerine en uygun teknoloji seçimini yapmanıza olanak tanır.

Bu makalede, Jetstream’in ne olduğunu, neden kullanmanız gerektiğini, adım adım nasıl kurulacağını, sunduğu temel özellikleri ve bu özellikleri nasıl özelleştirebileceğinizi detaylı bir şekilde inceledik. Kurulum öncesi hazırlıklardan başlayarak, stack seçimi, veritabanı göçleri, action’ları özelleştirme ve view’ları yayımlama gibi konulara değindik. Ayrıca, middleware kullanımı, yetkilendirme ve dağıtım gibi gelişmiş senaryolar için de ipuçları sunduk.

Laravel Jetstream’i kullanarak, uygulamanızın en kritik bölümlerinden birini hızlıca hayata geçirebilir, geliştirme sürenizi önemli ölçüde azaltabilir ve daha da önemlisi, uygulamanızın güvenliğini artırabilirsiniz. Artık temel kimlik doğrulama süreçleriyle uğraşmak yerine, uygulamanızın benzersiz iş mantığına ve yenilikçi özelliklerine odaklanarak kullanıcılara daha fazla değer sunabilirsiniz. Jetstream, Laravel ekosistemindeki yerini sağlamlaştırmış ve modern web geliştirmenin vazgeçilmez bir parçası haline gelmiştir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version