Laravel’da İzin Yönetimi: Uygulama Nasıl Geliştirilir?
Bu makalede Laravel ile bir izin yönetim modülü geliştirme sürecini ele alacağız. Rutin olarak kullanacağınız bazı yapıları inceleyeceğiz. Laravel uygulamalarında veritabanı optimizasyonu ve yazılım mimarisi açısından önemli noktaları göz önünde bulunduracağız.
Gereksinimler
- Laravel 8 veya üstü
- PHP 7.3 veya üstü
- Veritabanı: MySQL veya PostgreSQL
İzin Yönetimi Uygulaması
Uygulamamız, kullanıcılara belirli izinleri atayarak kaynaklara erişimi kontrol edebileceğimiz bir yapı oluşturmamıza olanak tanıyacak. Başlayalım.
Migration Oluşturma
Aşağıdaki komutla izinler için bir migration dosyası oluşturabilirsiniz:
php artisan make:migration create_permissions_tableMigration Dosyası
Oluşturulan migration dosyasını açıp şu kodları ekleyin:
Schema::create('permissions', function (Blueprint $table) {
$table->id();
$table->string('name')->unique();
$table->timestamps();
});Model Oluşturma
Şimdi izin modeli için bir model dosyası oluşturmalıyız:
php artisan make:model Permissionİzin Kontrolü için Middleware Oluşturma
İzinlerin kontrol edilmesi için bir middleware oluşturalım:
php artisan make:middleware CheckPermissionMiddleware Dosyası
İzinleri kontrol etmek için middleware dosyasına satır ekleyin:
public function handle($request, Closure $next, $permission) {
if (!auth()->user()->hasPermission($permission)) {
abort(403);
}
return $next($request);
}İzinlerin Yönetimi
İzinleri yönetmek için, kullanıcıdan izin almak ve bunları veritabanında güncel tutmak oldukça önemlidir. Laravel Eloquent ile kolaylıkla CRUD işlemleri gerçekleştirebilirsiniz.
CRUD İşlemleri
İzinleri listelemek, oluşturmak, güncellemek ve silmek için gerekli metodları yazmalısınız:
public function store(Request $request) {
$validated = $request->validate([
'name' => 'required|unique:permissions|max:255',
]);
Permission::create($validated);
return redirect()->route('permissions.index');
}Ekran Görüntüleri
İzinlerin yönetimi sırasında görüntüleyeceğiniz sayfaların ekran görüntülerini buraya ekleyebilirsiniz.
Kaynaklar
Kaynak: Orijinal Makale


