Skip to content

Commit 61317ac

Browse files
committed
login and register form added with firebase
1 parent de79b78 commit 61317ac

19 files changed

+2161
-114
lines changed

package-lock.json

+1,796-91
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"@testing-library/jest-dom": "^5.16.5",
77
"@testing-library/react": "^13.4.0",
88
"@testing-library/user-event": "^13.5.0",
9+
"daisyui": "^2.33.0",
10+
"firebase": "^9.12.1",
911
"react": "^18.2.0",
1012
"react-dom": "^18.2.0",
1113
"react-hot-toast": "^2.4.0",
@@ -36,5 +38,10 @@
3638
"last 1 firefox version",
3739
"last 1 safari version"
3840
]
41+
},
42+
"devDependencies": {
43+
"autoprefixer": "^10.4.12",
44+
"postcss": "^8.4.18",
45+
"tailwindcss": "^3.2.1"
3946
}
4047
}

postcss.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
}

public/index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!DOCTYPE html>
2-
<html lang="en">
2+
<html lang="en" data-theme="cupcake">
33
<head>
44
<meta charset="utf-8" />
55
<link rel="icon" href="https://play-lh.googleusercontent.com/XDiye8wlBGFoAkxAyoxB5mPidDLtvViBBA9-DXWPmD6NxltrhFFTdJK2Eiv_h7EvaFc" />
@@ -24,7 +24,7 @@
2424
work correctly both with client-side routing and a non-root public URL.
2525
Learn how to configure a non-root public URL by running `npm run build`.
2626
-->
27-
<title>Fire Education</title>
27+
<title> FireShipCodeCamp</title>
2828
</head>
2929
<body>
3030
<noscript>You need to enable JavaScript to run this app.</noscript>

src/App.css

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.App {
2+
text-align: center;
3+
}

src/App.js

+2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { RouterProvider } from 'react-router-dom';
22
import './App.css';
33
import { routes } from './Routes/Routes';
4+
import { Toaster } from 'react-hot-toast';
45

56
function App() {
67
return (
78
<div>
89
<RouterProvider router={routes}></RouterProvider>
10+
<Toaster/>
911
</div>
1012
);
1113
}
+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.Navbar_container{
2+
padding: 0 12rem;
3+
}

src/Components/Pages/Header/Header.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import React from 'react';
2+
import { Link } from 'react-router-dom';
3+
import './Header.css';
4+
5+
const Header = () => {
6+
return (
7+
<div className="Navbar_container bg-slate-500 ">
8+
<div className="all-content py-2 flex items-center justify-between">
9+
<div className="left_part flex items-center">
10+
{/* image of website or logo */}
11+
<Link to="/">
12+
<div className="avatar">
13+
<div className="w-12 mr-4 rounded-xl">
14+
<img
15+
src="https://play-lh.googleusercontent.com/XDiye8wlBGFoAkxAyoxB5mPidDLtvViBBA9-DXWPmD6NxltrhFFTdJK2Eiv_h7EvaFc"
16+
alt="logo"
17+
/>
18+
</div>
19+
</div>
20+
</Link>
21+
<p>FireShip.</p>
22+
</div>
23+
<div className="middle_part">
24+
<ul className="flex">
25+
<li className="px-5">
26+
<Link to="/">Courses</Link>
27+
</li>
28+
<li className="px-5">
29+
<Link to="/">FAQ</Link>
30+
</li>
31+
<li className="px-5">
32+
<Link to="/">Blog</Link>
33+
</li>
34+
<li className="px-5">
35+
<Link to="/login">LogIn</Link>
36+
</li>
37+
<li className="px-5">
38+
<Link to="/register">Register</Link>
39+
</li>
40+
<li className="px-5">
41+
<Link to="/">LogOut</Link>
42+
</li>
43+
</ul>
44+
</div>
45+
<div className="right_part flex items-center">
46+
<div className="form-control">
47+
<label className="label cursor-pointer mr-4">
48+
<span className="label-text mr-2">Theme</span>
49+
<input type="checkbox" className="toggle toggle-accent" />
50+
</label>
51+
</div>
52+
53+
{/* user Image */}
54+
<div className="avatar online">
55+
<div className="w-14 rounded-full">
56+
<img src="https://placeimg.com/192/192/people" alt="Avatar" />
57+
</div>
58+
</div>
59+
</div>
60+
</div>
61+
</div>
62+
);
63+
};
64+
65+
export default Header;

src/Components/Pages/Home/Home.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import React from 'react';
2-
import './Home.css'
2+
import './Home.css';
33

44
const Home = () => {
5-
return (
6-
<div>
7-
<h2>This is Home</h2>
8-
</div>
9-
);
5+
return (
6+
<div>
7+
<h2>This is Home</h2>
8+
9+
</div>
10+
);
1011
};
1112

12-
export default Home;
13+
export default Home;
File renamed without changes.

src/Components/Pages/LogIn/LogIn.js

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import React from 'react';
2+
import { Link } from 'react-router-dom';
3+
import './LogIn.css';
4+
5+
const LogIn = () => {
6+
// const [errorMessage, setErrorMessage] = useState('');
7+
// const [success, setSuccess] = useState(false);
8+
// const [userEmail, setUserEmail] = useState('');
9+
10+
// const handleLogIN = (event) => {
11+
// event.preventDefault();
12+
// setSuccess(false);
13+
// const form = event.target;
14+
// const email = form.email.value;
15+
// const password = form.password.value;
16+
// signInWithEmailAndPassword(auth, email, password)
17+
// .then((result) => {
18+
// const user = result.user;
19+
// setSuccess(true);
20+
// console.log(user);
21+
// form.reset();
22+
// })
23+
// .catch((error) => {
24+
// console.error(error);
25+
// setErrorMessage(error);
26+
// });
27+
// };
28+
29+
// const handleEmail = (event) => {
30+
// const email = event.target.value;
31+
// console.log(email);
32+
// setUserEmail(email);
33+
// };
34+
35+
// const handleResetPass = () => {
36+
// if (!userEmail) {
37+
// alert('Please enter your email address.');
38+
// return;
39+
// }
40+
// sendPasswordResetEmail(auth, userEmail)
41+
// .then(() => {
42+
// alert('Password Reset email sent. Please check your email.');
43+
// })
44+
// .catch((error) => {
45+
// console.log(error);
46+
// setErrorMessage(error);
47+
// });
48+
// };
49+
return (
50+
<div className="App py-10">
51+
<div className="form-control pb-5 bg-slate-400 rounded-lg w-1/4 mx-auto">
52+
<h3 className="text-2xl text-blue-700 my-3">Please LogIn here</h3>
53+
<form >
54+
<input
55+
// onBlur={handleEmail}
56+
type="email"
57+
name="email"
58+
required
59+
placeholder="Type Email here"
60+
className="input input-bordered input-primary border-2 rounded-lg p-3 w-full max-w-xs"
61+
/>
62+
<br />
63+
<br />
64+
<input
65+
type="password"
66+
name="password"
67+
required
68+
placeholder="Type Password here"
69+
className="input border-2 rounded-lg p-3 input-bordered input-primary w-full max-w-xs"
70+
/>
71+
<br />
72+
{/* <p className="text-red-600 text-lg font-bold">{errorMessage}</p>
73+
{success && (
74+
<p className="text-indigo-700 text-lg font-bold">User successfully logged in</p>
75+
)} */}
76+
<button className="btn btn-primary p-4 mt-4" type="submit">
77+
LogIn
78+
</button>
79+
</form>
80+
<p className="text-blue-600 text-xl mt-3">
81+
If you didn't Register yet,{' '}
82+
<Link to="/register">
83+
<span className="underline-offset-2 underline text-orange-800">Register</span>
84+
</Link>{' '}
85+
now
86+
</p>
87+
<p className="text-blue-600 text-xl mt-3">
88+
If you Forget your password,{' '}
89+
<button className="underline-offset-2 underline text-white">
90+
Reset Password
91+
</button>{' '}
92+
now
93+
</p>
94+
</div>
95+
</div>
96+
);
97+
};
98+
99+
export default LogIn;

src/Components/Pages/Register/Register.css

Whitespace-only changes.
+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import React, { useState } from 'react';
2+
import { Link } from 'react-router-dom';
3+
import './Register.css'
4+
5+
const Register = () => {
6+
const [errorMessage, setErrorMessage] = useState('');
7+
const [successMessage, setSuccessMessage] = useState(false);
8+
const handleRegister = (event) => {
9+
event.preventDefault();
10+
setSuccessMessage(false);
11+
const form = event.target;
12+
const email = form.faltumail.value;
13+
const name = form.name.value;
14+
const password = form.secret.value;
15+
console.log(name,email, password);
16+
if (!/(?=.*[A-Z].*[A-Z])/.test(password)) {
17+
setErrorMessage('Please provide at least two Capital character');
18+
return;
19+
}
20+
if (!/(?=.*[!@#$&*])/.test(password)) {
21+
setErrorMessage('Please provide at least one Special character');
22+
return; // return na korle firebase problem korbe. akhan theke return korle false hole ar age jabe na
23+
}
24+
if (password.length < 6) {
25+
setErrorMessage('Password must be 6 character');
26+
return;
27+
}
28+
29+
setErrorMessage('');
30+
31+
/* createUserWithEmailAndPassword(auth, email, password)
32+
.then((result) => {
33+
const user = result.user;
34+
setSuccessMessage(true);
35+
console.log(user);
36+
form.reset();
37+
EmailVerifications();
38+
updateUserName(name);
39+
})
40+
.catch((error) => {
41+
console.error('error message : ', error);
42+
setErrorMessage(error.message);
43+
});
44+
};
45+
46+
const EmailVerifications = () => {
47+
sendEmailVerification(auth.currentUser).then(() => {
48+
alert('Verification Email link sent');
49+
});
50+
};
51+
52+
const updateUserName = (name) => {
53+
updateProfile(auth.currentUser,{
54+
displayName: name
55+
})
56+
.then(() => {
57+
console.log('display name updated')
58+
})
59+
.catch(error => {
60+
console.log(error);
61+
})
62+
} */
63+
64+
// const handleEmailBlur = (event) => {
65+
// console.log(event.target.value);
66+
// };
67+
// const handlePasswordBlur = (event) => {
68+
// console.log(event.target.value);
69+
// };
70+
}
71+
72+
return (
73+
<div className="App py-10">
74+
<div className="form-control pb-5 bg-orange-400 rounded-lg w-1/4 mx-auto">
75+
<h3 className="text-2xl text-blue-700 my-3">Please Register here</h3>
76+
<form onSubmit={handleRegister}>
77+
<input
78+
// onBlur={handleEmailBlur}
79+
type="email"
80+
name="faltumail"
81+
required
82+
placeholder="Enter Email here"
83+
className="input input-bordered input-primary border-2 rounded-lg p-3 w-full max-w-xs"
84+
/>
85+
<br />
86+
<br />
87+
<input
88+
// onBlur={handleEmailBlur}
89+
type="text"
90+
name="name"
91+
required
92+
placeholder="Enter Name here"
93+
className="input input-bordered input-primary border-2 rounded-lg p-3 w-full max-w-xs"
94+
/>
95+
<br />
96+
<br />
97+
<input
98+
// onBlur={handlePasswordBlur}
99+
type="password"
100+
name="secret"
101+
required
102+
placeholder="Enter Password here"
103+
className="input border-2 rounded-lg p-3 input-bordered input-primary w-full max-w-xs"
104+
/>
105+
<br />
106+
<p className="text-red-600 text-lg font-bold">{errorMessage}</p>
107+
{successMessage && (
108+
<p className="text-indigo-700 text-lg font-bold">User created successfully</p>
109+
)}
110+
<button className="btn btn-primary p-4 mt-4" type="submit">
111+
Register
112+
</button>
113+
</form>
114+
<p className="text-blue-600 text-xl mt-3">
115+
If you already have an account,{' '}
116+
<Link to="/login">
117+
<span className="text-green-700 underline-offset-2 underline">Login</span>{' '}
118+
</Link>{' '}
119+
now
120+
</p>
121+
</div>
122+
</div>
123+
);
124+
};
125+
126+
export default Register;

src/Components/Shared/Header/Header.js

-12
This file was deleted.

0 commit comments

Comments
 (0)