React&Redux Firebase Authetication işlemleri React

Firebase oturumu oluşturun. Ardından Authentication seçeneğini seçin Oturum açma yöntemi olarak eposta ve şifre işlemlerini aktifleştirin.

İşlemleri 
https://github.com/abdullahsuhaisk/ReactReduxFirebaseBlogApp
Reposundan da görebilirsiniz.

Sırada İndex.js den. FireStore ve FirebaseRedux kütüphanelerini aktifleştirip firebase 'e auth u set etmemiz gerekiyor.

İndex.js deki işlemlerim.

Sırada Reducerimi oluştrurmak var..

RootReducerım firebase 'e artık bağlandı. Firebase den gelen durumlara state den ulaşabileceğim.Firebase' den neler geliyormuş. Log olarak bir bakalım... Benim Main componentim bu projede dashboard oradan bakacağım.

State leri props a gönderip props'u ekranda gösterdik. Consolumuzda gelenler ;

Görüldüğü üzere firebase 'in içinde auth olarak geldi. isLoaded:false ve isEmpty:true herhangibi bir oturum açmadığını bize söylüyor. Şimdi firebase consoluma gidip bir tane test user 'i oluşturacağım. Ardından sitemiz üzerinde giriş yapmaya çalışacağız. Authentication new userden 
test@test.com şifreside 123456 olmak üzere yeni bir kullanıcı oluşturduk. Bu kullancı kendi local hostumuzdan giriş yaptıracağız.

Login componentim bu daha şimdi bunu dolduracağım



State 'ye aldığım değerleri Firebase göndermem gerekiyor.

kullanacağım method 
firebase.auth().signInWithEmailAndPassword


Belki best practise olmadı ama işe yarar bir yöntem oldu. Şimdi dashboarda gidip consola baktığınız zaman 


firebasenin içindeki auth un dolu olduğu göreceksiniz. Şimdi sırada doğru düzgün reducer ve actions larını yazma kaldı.

Reducer klasörümü authReducer oluşturuyorum. Bunu rootReducerde combine reducer' e dahil ediyorum. Ardından login işlemi için action yazacağım. En sonunda componentimi actions kullanacak şekilde modified edeceğim.

1 ve ya 2 tane de mantık kurmak gerekecek kullanıcı login olduktan sonra redirect ile main componente aktarılsın ve login olmuş kullanıcıları log off menüsünü görürken login olmamışlar Sign in menusunu görsünler.

Actions larıma göre authReducer ımı tekrar düzenleyeceğim. Reducer state yönetimi yaptığım yerdir :)

Actions 

Actions ve reducer lerim şu şekil şimdi actionsumu componentime bağlayıp methodlarımı çekeceğim. Daha önce yaptğımız SignIn Componentini düzenleyeceğim.

Bunları yaparken hata aldım hatamın sebebi config dosyamda 
import 'firebase/auth';

Kütüphanesini unutmamdı.
Config de şu şekilde oluyor. Actionsuz ilk kullandığımda hata almadım. Ama actions da kullanmak istterdiğim zaman böyle olması gerekiyor.



Şimdi Sign In olan kullanıcıyı redirect yapalım. Bunun için state mizden bir auth objesi alacağız bu auth objesi dolu ise redirect ile anasyafaya yönlendirme yapacağız.Auth u alacağımız yer firebase.auth



Hata alırsak hatamızıda ternary operator ile gösteriyoruz. Sırada log off olma kaldı.

Navbar componentime link olarak log of secenegini koyacağım tıklandığı zaman onClick methodu çalışacak. Componentimde giriş yapmış kullanıcıya bakacağım eğer giriş var ise log of yok ise sigin menu de gösterilecek.
Eğer giriş yapmış kullanıcı var ise  Menüde log off kullanılacak.
Eğer sisteminizde üyelik zorunlu ise comment linı kullanabilirsiniz. Auth objesinin uid si dolu olmadan dashboarda girişe izin vermez. Mesela daha güvenlikli alan yaparsa uid=== herhangibi bir şeye eşit olmayanlarıda sokmama mantığı kurulabilir.

Şimdi authReady yapalım dikkatli bakınca componentin render ilk renderinde auth.uid boş geliyor menu Auth beklemeden dönüyor daha sonra ise auth objesi dolunca navbar tekrar render ediliyor bunu için authReady var.
index.js de yapmam gerekenler
Artık menum firebase.auth un cevabını bekliyor..

Yorumlar

Bu blogdaki popüler yayınlar

React JS Yazalım 1

Heroku deploy

Laravel & React 4