Skip to content

Commit 40c9ae2

Browse files
Remove authentication components (Login, Logout, Signup) from the project
1 parent 4683938 commit 40c9ae2

File tree

6 files changed

+281
-336
lines changed

6 files changed

+281
-336
lines changed

app/src/components/auth/auth.js

Lines changed: 120 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
'use client';
22

33
import React, { useState, useEffect } from 'react';
4-
import { onAuthStateChanged, signOut } from 'firebase/auth';
4+
import { onAuthStateChanged, signInWithEmailAndPassword, createUserWithEmailAndPassword } from 'firebase/auth';
55
import { useRouter } from 'next/navigation';
66
import { auth } from '../../../shared/firebase';
7-
import Login from './login/login';
8-
import Signup from './signup/signup';
9-
import Logout from './logout/logout';
107
import styles from './auth.module.css';
8+
import { NEXT_PUBLIC_API_URL } from '../../../shared/api';
119

1210
const Auth = () => {
1311
const [user, setUser] = useState(null);
@@ -28,33 +26,135 @@ const Auth = () => {
2826
return () => unsubscribe();
2927
}, [router]);
3028

31-
const handleLogout = async () => {
32-
try {
33-
await signOut(auth);
34-
setUser(null);
35-
setShowLogin(true); // Reset to Login view
36-
router.push('/auth'); // Redirect to auth page
37-
} catch (error) {
38-
console.error('Logout failed:', error.message);
39-
}
29+
const Login = () => {
30+
const [email, setEmail] = useState('');
31+
const [password, setPassword] = useState('');
32+
const [error, setError] = useState('');
33+
const [success, setSuccess] = useState(false);
34+
35+
const handleLogin = async (e) => {
36+
e.preventDefault();
37+
setError('');
38+
setSuccess(false);
39+
40+
try {
41+
const userCredential = await signInWithEmailAndPassword(auth, email, password);
42+
console.log('User logged in:', userCredential.user);
43+
setSuccess(true);
44+
} catch (err) {
45+
console.error('Error logging in:', err);
46+
setError(err.message);
47+
}
48+
};
49+
50+
return (
51+
<div>
52+
<form className={styles.authForm} onSubmit={handleLogin}>
53+
<label>Email:</label>
54+
<input
55+
type="email"
56+
value={email}
57+
onChange={(e) => setEmail(e.target.value)}
58+
required
59+
/>
60+
<label>Password:</label>
61+
<input
62+
type="password"
63+
value={password}
64+
onChange={(e) => setPassword(e.target.value)}
65+
required
66+
/>
67+
<button type="submit">Login</button>
68+
</form>
69+
{success && <p className={`${styles.authMessage} ${styles.success}`}>Login successful!</p>}
70+
{error && <p className={`${styles.authMessage} ${styles.error}`}>{error}</p>}
71+
</div>
72+
);
73+
};
74+
75+
const Signup = () => {
76+
const [email, setEmail] = useState('');
77+
const [password, setPassword] = useState('');
78+
const [error, setError] = useState('');
79+
const [success, setSuccess] = useState(false);
80+
81+
const handleSignup = async (e) => {
82+
e.preventDefault();
83+
setError('');
84+
setSuccess(false);
85+
86+
try {
87+
// Step 1: Send request to the API to sign up
88+
const response = await fetch(`${NEXT_PUBLIC_API_URL}/auth/signup`, {
89+
method: 'POST',
90+
headers: {
91+
'Content-Type': 'application/json',
92+
},
93+
body: JSON.stringify({
94+
email: email,
95+
password: password,
96+
}),
97+
});
98+
99+
const data = await response.json();
100+
console.log('API Response:', data);
101+
102+
if (!response.ok) {
103+
setError(data.error || 'Failed to sign up in API');
104+
return; // Exit if API call fails
105+
}
106+
107+
// Step 2: If API call is successful, proceed with Firebase Authentication
108+
const userCredential = await createUserWithEmailAndPassword(auth, email, password);
109+
console.log('User signed up with Firebase:', userCredential.user);
110+
111+
setSuccess(true);
112+
console.log('User created successfully:', userCredential.user);
113+
114+
// Only redirect after the user is signed up successfully
115+
router.push('/dashboard'); // Redirect to dashboard after signup
116+
} catch (err) {
117+
console.error('Error signing up:', err);
118+
setError(err.message || 'Something went wrong');
119+
}
120+
};
121+
122+
return (
123+
<div>
124+
<form className={styles.authForm} onSubmit={handleSignup}>
125+
<label>Email:</label>
126+
<input
127+
type="email"
128+
value={email}
129+
onChange={(e) => setEmail(e.target.value)}
130+
required
131+
/>
132+
<label>Password:</label>
133+
<input
134+
type="password"
135+
value={password}
136+
onChange={(e) => setPassword(e.target.value)}
137+
required
138+
/>
139+
<button type="submit">Sign Up</button>
140+
</form>
141+
{success && <p className={`${styles.authMessage} ${styles.success}`}>Sign up successful!</p>}
142+
{error && <p className={`${styles.authMessage} ${styles.error}`}>{error}</p>}
143+
</div>
144+
);
40145
};
41146

42147
return (
43148
<div className={styles.authContainer}>
44149
{user ? (
45150
<div>
46151
<h2 className={styles.authHeader}>Welcome, {user.email}</h2>
47-
<p className={styles.authMessage}>
48-
You are already signed in.
49-
</p>
152+
<p className={styles.authMessage}>You are already signed in.</p>
50153
<br />
51-
<Logout onLogout={handleLogout} />
52154
</div>
53155
) : (
54156
<div>
55-
<h2 className={styles.authHeader}>
56-
{showLogin ? 'Login' : 'Signup'}
57-
</h2>
157+
<h2 className={styles.authHeader}>{showLogin ? 'Login' : 'Signup'}</h2>
58158
<div className={styles.toggleContainer}>
59159
<button
60160
className={`${styles.button} ${showLogin ? styles.active : ''}`}

app/src/components/auth/login/login.js

Lines changed: 0 additions & 54 deletions
This file was deleted.

app/src/components/auth/logout/logout.js

Lines changed: 0 additions & 37 deletions
This file was deleted.

app/src/components/auth/signup/signup.js

Lines changed: 0 additions & 83 deletions
This file was deleted.

app/src/components/dashboard/dashboard.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import React, { useState, useEffect } from 'react';
44
import { onAuthStateChanged, signOut } from 'firebase/auth';
55
import { useRouter } from 'next/navigation';
66
import { auth } from '../../../shared/firebase';
7-
import Logout from '../auth/logout/logout';
87
import styles from './dashboard.module.css';
98

109
const Dashboard = () => {
@@ -40,9 +39,16 @@ const Dashboard = () => {
4039
<div>
4140
<h2 className={styles.dashboardHeader}>Welcome to your Dashboard, {user.email}</h2>
4241
<div className={styles.dashboardContent}>
43-
<p className={styles.dashboardMessage}>Here you can manage your account, settings, and more.</p>
42+
<p className={styles.dashboardMessage}>
43+
Here you can manage your account, settings, and more.
44+
</p>
4445
<br />
45-
<Logout onLogout={handleLogout} />
46+
<button
47+
className={styles.logoutButton}
48+
onClick={handleLogout}
49+
>
50+
Logout
51+
</button>
4652
</div>
4753
</div>
4854
) : (
@@ -54,4 +60,4 @@ const Dashboard = () => {
5460
);
5561
};
5662

57-
export default Dashboard;
63+
export default Dashboard;

0 commit comments

Comments
 (0)