sustartx / jwt-redis-multi-auth
JWT Redis Multi Auth
Requires
- php: >=7.2
- php-open-source-saver/jwt-auth: ^2.1
- spatie/laravel-permission: ^5.5.4
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