Sosyal Medya hesaplarında Workintech ile ilgili yazdığın bir yazıyı gören biri de senin gibi Workintechde eğitim almaya başlamış. Geçen gün sana ulaştı ve beraber kahve içmeye gittiniz. Sana süper bir fikri olduğunu söyledi. Bir platform kurmak istiyor. Üye olanlar arkadaşlarını da ekleyebilecek. Mesaj atabilecek, istediği bir yazıyı post edebilecek. başkarlınınkini görebilecek.
Sana çok tanıdık geldi :) Hayalindeki fikri öyel bir anlattı ki, gözünde canlandı: https://player.vimeo.com/video/907738862 Kendi de bir şeyler yapmaya başlamış ama tam tamamlayamamış. Senden de eksik yerlerde yardımcı olmanı istedi. Beraber oturup listeyi hazırladınız.
-
ADIM 1: Routing ekleyelim. main.jsx dosyasında uygulamayı
BrowserRouterile sarmala. -
App.jsxde routeları ekle -
/friendsFriendsList componentini render etsin -
/loginLoginForm componetini render etsin -
/friends/addAddForm componentini render etsin -
/FriendsList componentini render etsin -
ADIM 2: LoginForm componentini oluştur. AddFriend.jsxden bakabilirsin. Tasarım: https://i.ibb.co/RTJty0w/login-mockup.png
-
username inputunda placeholder
Usernameolsun -
password inputunda placeholder
Passwordolsun -
submit butonunda metin olarak
SUBMITyazsın -
Form submit edildiğinde
https://nextgen-project.onrender.com/api/s11d2/logine form datasını POST etsin. -
Test için
username: workintechvepassword:wecandoiti kullan -
ADIM 3: AuthContext oluştur.
contextsklasörü yaratıp içindeAuthContext.jsxdosyası oluştur. -
AuthContext adıyla bir context create et.
-
AuthContext.Provider return eden AuthContextProvider isimli Context Provider componenti oluştur.
-
İçinde Auth için gerekli fonksiyonları ve state değişkenlerini tanımla. (login post, isLoggedIn, authUserInfo v.b.)
-
AuthContext.Providera bunları value olarak vermeyi unutma
-
App.jsxde uygulamayı bu provider ile sarmala
-
ADIM 4:
hooksklasörü içinde tanımlıuseLocalStoragehookunu kullanarak gerekli bilgileris11d2anahtarı ile localstorageda sakla ve gerekli durumlarda al. -
ADIM 5:
Header.jsxde kullanıcı authenticated değil ise sadece LOGIN butonunu göster. authenticated ise FRIENDS LIST, ADD FRIEND, LOGOUT butonu göster -
butonların ilgili routeları açmasını sağla
-
ADIM 6: FriendsList componentinde listeyi göster. Tasarım: https://i.ibb.co/jv3GQMj/friends-List-mockup.png
-
https://nextgen-project.onrender.com/api/s11d2/friendsadresine GET istedği at -
requestin headerında
authenticationanahtarının değeri olaraktokenbilgisini gönder -
gelen datayı ekranda göster
-
ADIM 7:
AddFriend.jsxde yeni arkadaş için atılan isteğin headerında loginden gelentokenı gönder -
ADIM 8: component klasörü içinde
PrivateRoute.jsxisminde Protected route componenti oluştur. -
authenticated user değilse
/loginsayfasınaRedirectet.