Trong phần trước, chúng ta đã hoàn thành trang Home (Guest Home Page), đồng thời cũng đã config và connect được với firebase. Trong phần phần này, chúng ta sẽ config React Context firebase, sau đó tạo Sign In Page và apply Authentication mà firebase cung cấp cho project của chúng ta nhé. Bắt đầu thôi 😉!
I. React Context for firebase.
Để các component có sử dụng các data do firebase trả về mà không cần truyền data theo kiểu nested từ cha → con, một kiểu truyền thống (phức tạp) thì chúng ta sẽ tạo một context có cho firebase như sau:
- Trong folder src ta tạo folder và file như sau:
/src/context/firebase.js
- Trong file
/src/index.js
, ta edit lại như sau:
Okie! Cơ bản như vậy đã xong, giờ chúng ta sang bước tiếp theo, tạo Sign In Page nhé 😉.
II. Tạo Sign In page.
Sign In page thì cũng có phần header và footer như bên trang Home thôi.
Trong file /pages/signin.jsx
, ta thêm đoạn code như sau:
Ta sẽ được như hình ở dưới đây:
Okie, So sánh phần UI Sign In của Netflix real và Netflix clone của chúng ta hiện tại thì sẽ có 2 thứ phải làm:
- Đầu tiên là phần form Sign In,
- Thứ 2 là phần Select box và button Sign In ở header, chúng ta sẽ ẩn nó đi ở Sign In page này.
Phần form để Sign In và cách để ẩn Select box và button Sign In, ta thực hiện như sau:
- Trong folder components tạo thêm foder và file như sau:
- Trong file
form.jsx
ta code như sau:
- Trong file
/form/index.jsx
, ta code như sau:
- Tiếp đến là file
/pages/signin.jsx
, chúng ta code như sau:
Giải thích một tý cho code của file ở trên nhé:
State
: Ta có 3 state gồm:email
,password
vàerrorMessage
.isInvalid
: Đơn giản, chỉ check khi user nhập đầy đủ email và password thì mới hiện rõ button Sign In cho người dùng nhấn.handleSignIn()
: Function handle việc Sign In, nó sẽ send request lên firebase gồmemail
vàpassword
để Sign In. Nếu thành công thì sẽ redirect đến Browse page, ngược lại sẽ show message error lên view.status="signin"
: Ở phầnHeaderContainer
, mình có truyền prop làstatus
vào header để check khi redirect sang Sign In page rồi thì ẩn phần select box và button Sign In đi.
Trong file headerContainer.jsx
ta edit lại như sau:
Okie! Sau khi xong, chúng ta sẽ được UI như hình:
Để có thể sử dụng được chức năng Sign In bằng email và password thì ta phải đăng ký với firebase trước, để đăng ký các bạn làm như sau:
- Step 1.
- Step 2.
Kết quả được như hình là đã thành công rồi.
Vì ban đầu chưa có Sign Up page để ta đăng ký account do đó ta chưa có thể Sign In lúc này. Tuy nhiên, để test thử việc Sign In bằng email và password với firebase có được hay không, chúng ta sẽ add trực tiếp 1 user vào Authentication của firebase như sau:
Step 1.
Step 2: Thêm email và password (Tùy ý các bạn).
Kết quả sẽ được như hình.
Chúng ta sẽ test thử 2 trường hợp là nhập đúng email, password và sai email hoặc password nhé.
Nhập đúng email và password:
Nhập sai email.
III. Tổng kết.
Okie! Như vậy là đã xong phần thứ 6 của series này. Trong phần này, mình đã hướng dẫn các bạn setup React Context cho firebase, phân thích cũng như code nên Sign In page hoàn chỉnh, giống 99.99% so với hàng real 😁, setup authentication cho project của chúng ta và test chức năng Sign In. Trong phần tiếp theo, chúng ta sẽ làm Sign Up page, config lại phần router để đáp ứng được vấn đề Authentication và nhiều thứ khác. Cảm ơn các bạn đã đọc 😊, See u again~
TỪ QUỐC HƯNG
Đam mêm lập trình Frontend, Yêu thích việc setup workspace theo phong cách tối giản
follow me :
Bài viết liên quan
Event Loop là gì? Cơ chế hoạt động của Event Loop trong JavaScript
Jun 18, 2024 • 7 min read
So sánh Golang và NodeJS chi tiết
Oct 14, 2023 • 22 min read
Home Feed UI Instagram with TailwindCSS: Giới thiệu về series
Nov 28, 2022 • 2 min read
ReactJS Tutorial for Beginners Phần 2
Dec 12, 2021 • 3 min read
ReactJS vs React Native - Gà cùng một mẹ liệu có giống nhau?
Dec 12, 2021 • 14 min read
Netflix Clone với ReactJS, Styled Components và Firebase (Firestore & Auth) - Phần 7
Dec 08, 2021 • 8 min read