0.1.58 • Published 3 years ago

@ngthuc/react-fui v0.1.58

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

React Firebase Web Auth

Install

npm i @ngthuc/react-fui

Demo usage

import React, {useEffect, useState} from 'react';
import {getAuth, signOut} from "firebase/auth";
import firebase from "firebase/compat/app";
import StyledFirebaseAuth from "@ngthuc/react-fui/StyledFirebaseAuth";
import parsePhoneNumber from "libphonenumber-js";

firebase.initializeApp({apiKey: "...", authDomain: "...", projectId: "...", ...});
const auth = getAuth();
const googleAuthProvider = new GoogleAuthProvider();
const githubAuthProvider = new GithubAuthProvider();
const phoneAuthProvider = new PhoneAuthProvider(auth);
const emailAuthProvider = new EmailAuthProvider();

const FirebaseDemo = (props) => {

	const [user, setUser] = useState({});
	const [isSignedIn, setIsSignedIn] = useState(false); // Local signed-in state.

	// Listen to the Firebase Auth state and set the local state.
	useEffect(() => {
		const unregisterAuthObserver = auth.onAuthStateChanged((user) => {
			setIsSignedIn(!!user);
		});
		return () => unregisterAuthObserver(); // Make sure we un-register Firebase observers when the component unmounts.
	}, []);

	if (isSignedIn) {
		return (
			<div>
				<p>Xin chào {user?.displayName || user?.email || user?.phoneNumber || 'Unknown'}! Bạn hiện đã đăng nhập!</p>
				<button onClick={() => signOut(auth)}>Đăng xuất</button>
			</div>
		);
	}

	return (
		<StyledFirebaseAuth
			uiConfig={{
				defaultCountry: 'VN',
				signInOptions: [
					googleAuthProvider,
					githubAuthProvider,
					phoneAuthProvider,
					emailAuthProvider
				],
				callbacks: {
					signInSuccessWithAuthResult: (authResult) => {
						console.log('signInSuccessWithAuthResult', authResult);
						setUser(authResult.user);
					},
					signInFailure: (error) => {
						// Handle Errors here.
						const errorCode = error.code;
						const errorMessage = error.message;
						// The email of the user's account used.
						const {phone, email} = error.customData;
						console.log('SignIn fail:', {errorCode, errorMessage, phone, email});
					},
				},
				locale: {
					parsePhoneNumber
				}
			}}
			firebaseAuth={auth}
		/>
	)
}

export default FirebaseDemo;

License & Credit

Publish under MIT license by ngthuc

0.1.58

3 years ago

0.1.57

3 years ago

0.1.56

3 years ago

0.1.55

3 years ago

0.1.54

3 years ago

0.1.53

3 years ago

0.1.52

3 years ago

0.1.51

3 years ago

0.1.50

3 years ago

0.1.49

3 years ago

0.1.48

3 years ago

0.1.47

3 years ago

0.1.46

3 years ago

0.1.45

3 years ago

0.1.44

3 years ago

0.1.43

3 years ago

0.1.42

3 years ago

0.1.41

3 years ago

0.1.40

3 years ago

0.1.38

3 years ago

0.1.37

3 years ago

0.1.36

3 years ago

0.1.35

3 years ago

0.1.34

3 years ago

0.1.33

3 years ago

0.1.32

3 years ago

0.1.31

3 years ago

0.1.30

3 years ago

0.1.29

3 years ago

0.1.28

3 years ago

0.1.27

3 years ago

0.1.26

3 years ago

0.1.25

3 years ago

0.1.24

3 years ago

0.1.23

3 years ago

0.1.22

3 years ago

0.1.20

3 years ago

0.1.19

3 years ago

0.1.18

3 years ago

0.1.17

3 years ago

0.1.16

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.3

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago