Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 32 additions & 7 deletions client/src/pages/Login.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,52 @@ export default function SignInThree() {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");

// async function handleGoogleSignIn() {
// try {
// const userdata = await googleAuth();
// console.log(userdata);
// const idToken = userdata.getIdToken();
// console.log(idToken);

// const res = await axios.post(
// `${import.meta.env.VITE_API_URL}/api/login`,
// {
// accessToken: idToken,
// }
// );

// if (res.data.success) {
// toast.success(res.data.message);
// dispatch(login(res.data));
// navigate(`/${res.data.role}/profile`);
// }
// } catch (error) {
// toast.error(error.response?.data?.message || "Google login failed.");
// console.error(error);
// }
// }


async function handleGoogleSignIn() {
try {
const data = await googleAuth();
const googleToken = data.accessToken;
console.log(googleToken);

let userdata = await googleAuth();
const idToken = await userdata.getIdToken();

const res = await axios.post(
`${import.meta.env.VITE_API_URL}/api/login`,
{googleToken }
{ accessToken: idToken }
);

if (res.data.success) {
toast.success(res.data.message);
dispatch(login(res.data));
navigate(`/${res.data.role}/profile`);
}
} catch (error) {
toast.error(error.response?.data?.message || "Google login failed.");
console.error(error);
}
}


const handleSubmit = async (e) => {
e.preventDefault();
Expand Down
64 changes: 49 additions & 15 deletions client/utils/firebase.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,44 @@
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getAuth,GoogleAuthProvider, signInWithPopup } from "firebase/auth";
// // Import the functions you need from the SDKs you need
// import { initializeApp } from "firebase/app";
// import { getAuth, GoogleAuthProvider, signInWithPopup } from "firebase/auth";

// // TODO: Add SDKs for Firebase products that you want to use
// // https://firebase.google.com/docs/web/setup#available-libraries

// // For Firebase JS SDK v7.20.0 and later, measurementId is optional

// const firebaseConfig = {
// apiKey: import.meta.env.VITE_APIKEY,
// authDomain: import.meta.env.VITE_AUTHDOMAIN,
// projectId: import.meta.env.VITE_PROJECTID,
// storageBucket: import.meta.env.VITE_STORAGEBUCKET,
// messagingSenderId: import.meta.env.VITE_MESSAGINGSENDERID,
// appId: import.meta.env.VITE_APPID,
// measurementId: import.meta.env.VITE_MES,
// };

// const app = initializeApp(firebaseConfig);

// const auth = getAuth(app);

// const provider = new GoogleAuthProvider();

// export default async function googleAuth() {
// try {
// let data = await signInWithPopup(auth, provider);
// return data.user;
// } catch (err) {
// console.log(err);
// }
// }

// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries


// For Firebase JS SDK v7.20.0 and later, measurementId is optional
// Import the functions you need from the SDKs
import { initializeApp } from "firebase/app";
import { getAuth, GoogleAuthProvider, signInWithPopup } from "firebase/auth";

// Firebase configuration using environment variables
const firebaseConfig = {
apiKey: import.meta.env.VITE_APIKEY,
authDomain: import.meta.env.VITE_AUTHDOMAIN,
Expand All @@ -19,22 +49,26 @@ const firebaseConfig = {
measurementId: import.meta.env.VITE_MES,
};




// Initialize Firebase app
const app = initializeApp(firebaseConfig);

// Initialize Firebase Authentication and Google Provider
const auth = getAuth(app);

const provider = new GoogleAuthProvider();

provider.setCustomParameters({
prompt: "select_account", // Forces user to select an account every time
});

// Export the Google Authentication function
export default async function googleAuth() {
try {
let data = await signInWithPopup(auth, provider);
return data.user;
const data = await signInWithPopup(auth, provider);
return data.user; // Returns the authenticated user object
} catch (err) {
console.log(err);

console.error("Error during Google authentication:", err.message);
throw err; // Optional: re-throw the error for further handling
}
}

// Optionally export the app and auth for reuse
export { app, auth, provider };
12 changes: 11 additions & 1 deletion server/.env
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,15 @@ EMAIL_PASSWORD=
CLIENT_URL=http://localhost:5173



FIREBASE_TYPE =service_account
FIREBASE_PROJECT_ID =picwebsite-f72d2
FIREBASE_PRIVATE_KEY_ID ="e1e04a54227f38b54b1819686899c7a9cfb7c7b9"
FIREBASE_PRIVATE_KEY ="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDILWhQW5u5UhiK\nss6xkwxvJYSu88icmoiXOHZQ6U009dVNbSseWJi7Xyh1ACNQK6zGczcpita+EKfJ\nfU1pa45xBLAG0VRcRdEbq1x2KER1YFuoP5xHKRJJi1WhWS8r4HVnZ+z2Bre9oSWl\nLrKF5B1wsPrL6j+TiDi+qM2MK+KL0z70eh4w1aqgnKBzwvp1E5N1XsAAUGFtDSjA\nTLV9PkSuP2/NOve9fMsC9TQI3E7c3lsiZZU8xikdtG8Y7yGW+w4TWDlQpv3uys3C\nXx/DdLpHBZaD6voFNZTa2IdxGMOGbFjYP/sQQhrEehYCy6FZjnL/5ot2z8eWVqDm\n/DmhnNNrAgMBAAECggEANirDXWtMmjsy1OVJtRd7d+AJJWZmVKokZ/cpXP+kmr4i\n+A6galfDDIDVa8Obyqfm2tR2itE9BrVvEcDMX8hxBPglwdKHJ2jlCr22CWsgCzsF\n0mNUIJVmk2wWwdBmSVM1scOXhYOP2Mpwa2BVgpGVvdbGJsO+bGeiI0V+SX3ekcMf\nXBoDXpdnG2RkzgMHvFhBg1q+FZn3+yGdwXzIkPk3N11M+hQpTSYypxZCgLbt4/v6\nQDC9XtxGZqgsVllHs/rzJQyfbtw+qWuhDMxpUsaSQYPI2ozajQzosrSoEIkABZSa\nJP5m1F7DeZ58svTOvzMR7WM27LDdSi4dciVd5xRNcQKBgQDre6yR++OU58INFSpC\n/G9sPzmpHvpLTDVOP8PxjSM/gZ5HeDeZIhAjseAMF1zE8n7AzRJJKyqHEoU+8ePb\nCVlko1sFaSFzVAd0Lm3dpg6R98xjsEmOA1/7uqhZyCkqWzfFjTJUUWOnmY5gi6UA\nQW1z+vy1Beh0/FlKGF9hmF6thwKBgQDZnkH+ENEW7FaS/QO+16f3WU5iFZ798oLJ\nVjOQ5bcQ1HMh0PC6T8oVU2/Yl223bprfMD2XqLlwSQv62VQd2w3piANfy8CW91k2\nhbAYLUeY0aIyiHu6rqofNWry49iyDBopi0//6tEOUL4PHkOP+T1NbS3pRC9xZFOr\nR7cWRpdD/QKBgGdtpalk+lufw5Kddjd/yqy/xGKs0YCbE1qwFS8WL6IoG04G1lyz\nImWbLe4BoOR8IgIq0FpE1GQJVW8FLXA6VgIm4capm2CdSrzT27ubwRCJx0MN3fC7\nOMBHBsSQbsxEzmU9lBqGuP+XKXrsOue21Q048x/LXYNshwdNVy91jjgnAoGAOCWh\n5zhVijGOILyRE9M2bhYnqBzl+aVxYxsPkOoD8p6t2eK7yYY+oIP3jo17bGFoKf+b\nVJ7ewX7HTYB3OIDFNSS3oibC2PCWnv+dMI+2MlKcI6edLMxV7lls76Ajz8RZl7Bv\nApuGNshUUThAvEvVKj3qI45JI1t8Tuvg7Cloa80CgYEAw+BORwBDkq3YBNB1nKsF\nDYfcUgUFurzht16pGOWg+YjN52x1YCmbbwa+WorCLIGuE6Kc/KEsp9cLdVYz/rCG\neQAeUF92g8VBOZrOc3TmouQ5a/Kfckdc2toufi3w/gCdOpT2876GOxXqhpD7gUkF\nzku7DMolGUgNoIfnMkutUeM=\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL ="firebase-adminsdk-4xgs4@picwebsite-f72d2.iam.gserviceaccount.com"
FIREBASE_CLIENT_ID ="103337786084546895503"
FIREBASE_AUTH_URI ="https://accounts.google.com/o/oauth2/auth"
FIREBASE_TOKEN_URI ="https://oauth2.googleapis.com/token"
FIREBASE_AUTH_PROVIDER_X509_CERT_URL ="https://www.googleapis.com/oauth2/v1/certs"
FIREBASE_CLIENT_X509_CERT_URL ="https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-4xgs4%40picwebsite-f72d2.iam.gserviceaccount.com"
FIREBASE_UNIVERSAL_DOMAIN ="googleapis.com"

Loading