sustartx/jwt-redis-multi-auth

JWT Redis Multi Auth

v1.2 2023-07-07 10:54 UTC

This package is auto-updated.

Last update: 2024-06-07 15:03:59 UTC


README

Description

Geliştirdiğim bir Laravel projesinde oturum ve yetkilendirme işlemlerini JWT ile yapmam gerekiyordu. Projelerimde genellikle tercih ettiğim tymon/jwt-auth paketinin eskimiş olmasından ve yine sıkça tercih ettiğim spatie/laravel-permission paketini de kullanmam gerektiğinden ortak paket arayışına girerek Samet Şahin Doğan'ın geliştirdiği sametsahindogan/laravel-jwtredis paketine ulaştım. Bu paketin de kendi içindeki ufak bağımlılık sorunlarından dolayı tamamen kendi ihtiyaçlarıma uygun değişiklikler yaparak paketi farklı şekilde baştan yazmaya çalıştım. JWT paketini php-open-source-saver/jwt-auth ile değiştirip sorunları giderdim.

User modeli haricinde JWTRedisMultiAuthAuthenticatableBaseModel sınıfından extend edilmiş tüm modeller ile oturum yönetimi yapılabilir.

Geliştirdiği laravel-jwtredis paketi için Samet Şahin Doğan'a teşekkürler.

En kısa sürede paketin kullanımına dair detaylı bir içerik hazırlayıp örnek bir proje ekleyeceğim.

TODO

  • Farklı modeller ile giriş yapılabilmeli
  • İstenilen modele özel JWT üretilebilmeli
  • Gelen request ile hangi Guard, Provider ve Model ile işleneceği tespit edilebilmeli
  • Giriş sırasında yetkiler alınabilmeli
  • Redis'e bilgiler kaydedilebilmeli
  • Observer ile modeldeki herhangi bir değişiklikte Redis verisi güncellenmeli
  • Middleware işlemleri tamamlanmalı
  • Login sırasında ilgili model otomatik tespit edilerek redis key kısmında $model_adi + $model_id şeklinde key belirlenmeli
  • Kullanıcı güncellendiğinde Redis verisi güncellenmeli
  • Refreshable çalışmalı
  • Yetkiler (relation işlemleri) güncellendiğinde Redis verisi güncellenmeli
  • Response yapısı güncellenmeli
  • Hem Cookie hem Authorization header bilgisi ile token kontrol edilebilmeli
  • Kullanıcıların hangi bilgilerinin rediste saklanacağı geliştiriciye bırakılmalı
  • Redis ayarlardan aktif veya pasif yapılabilmeli
  • Geçerli bir JWT ile request geldiyse ve kullanıcı Redis içinde yoksa JWT ile yeniden cache oluşturulmalı, cache öncesinde veritananında kullanıcının olup olmadığı 1 kere kontrol edilmeli
  • Ban durumu ile ilgili altyapı güncellenmeli, banned_statuses işlemleri kontrol edilmeli
  • Config bilgilerinin publish edilmeden çalışabilmesi için merge edilmeli
  • 2FA durumları için event oluşturulmalı
  • Tüm event altyapısı değiştirilmeli
  • Oturum açmadan kullanıcıya token üretilebilmeli

License

MIT © Şakir Mehmetoğlu