Skip to content

Commit

Permalink
Auth cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
CharlizeHanekom committed Sep 26, 2024
1 parent 5cc4dc1 commit 792f767
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 184 deletions.
46 changes: 0 additions & 46 deletions backend/src/Auth/auth.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,52 +61,6 @@ exports.logout = async (req, res) => {
}
};

exports.googleSignIn = async (req, res) => {
try {
const result = await authService.signInWithGoogle();

const { user, customToken, token } = result;
res.status(200).json({
message: 'Google Sign-In successful',
data: { uid: user.uid, username: user.displayName, token, customToken }
});
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Internal server error', error: error.message });
}
};

exports.facebookSignIn = async (req, res) => {
try {
const result = await authService.signInWithFacebook();

const { user, customToken, accessToken } = result;
res.status(200).json({
message: 'Facebook Sign-In successful',
data: { uid: user.uid, username: user.displayName, accessToken, customToken }
});
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Internal server error', error: error.message });
}
};

exports.appleSignIn = async (req, res) => {
try {
const result = await authService.signInWithApple();

const { user, customToken, token } = result;
res.status(200).json({
message: 'Apple Sign-In successful',
data: { uid: user.uid, username: user.displayName, token, customToken }
});
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Internal server error', error: error.message });
}
};


exports.verifyEmail = async (req, res) => {
try {
const isVerified = await authService.checkEmailVerification();
Expand Down
3 changes: 0 additions & 3 deletions backend/src/Auth/auth.router.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ const router = express.Router();
router.post('/register', authController.register);
router.post('/login', authController.login);
router.post('/logout', authController.logout);
router.post('/signin/google', authController.googleSignIn);
router.post('/signin/facebook', authController.facebookSignIn);
router.post('/signin/apple', authController.appleSignIn);
router.post('/verify-email', authController.verifyEmail);
router.get('/is-verified', authController.isVerified);
router.post('/reset-password', authController.resetPassword);
Expand Down
136 changes: 1 addition & 135 deletions backend/src/Auth/auth.services.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,146 +77,12 @@ exports.logoutUser = async () => {
}
};

exports.signInWithGoogle = async () => {
try {
const provider = new GoogleAuthProvider();

// Optional: Add any scopes you need
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

// Optional: Customize OAuth parameters
provider.setCustomParameters({
'login_hint': '[email protected]'
});

const result = await signInWithPopup(auth, provider);

// Get the user and OAuth credentials
const user = result.user;
const credential = GoogleAuthProvider.credentialFromResult(result);
const token = credential.accessToken;

if (!user) {
throw new Error('Google Sign-In failed');
}

const userId = user.uid;
const username = user.displayName;

// Create a new user node in Neo4j
try {
await createUserNode(userId, username);
} catch (error) {
// If Neo4j user creation fails, delete the created Firebase user
await firebase.auth().deleteUser(userId);
throw new Error('Failed to create user in Neo4j: ' + error.message);
}

// Generate a custom token for the user
const customToken = await firebase.auth().createCustomToken(userId);

return { user, customToken, token };
} catch (error) {
throw error;
}
};

exports.signInWithFacebook = async () => {
try {
const provider = new FacebookAuthProvider();

// Optional: Add any scopes you need
provider.addScope('user_birthday');

// Optional: Customize OAuth parameters
provider.setCustomParameters({
'display': 'popup'
});

const result = await signInWithPopup(auth, provider);

// Get the user and OAuth credentials
const user = result.user;
const credential = FacebookAuthProvider.credentialFromResult(result);
const accessToken = credential.accessToken;

if (!user) {
throw new Error('Facebook Sign-In failed');
}

const userId = user.uid;
const username = user.displayName;

// Create a new user node in Neo4j
try {
await createUserNode(userId, username);
} catch (error) {
// If Neo4j user creation fails, delete the created Firebase user
await firebase.auth().deleteUser(userId);
throw new Error('Failed to create user in Neo4j: ' + error.message);
}

// Generate a custom token for the user
const customToken = await firebase.auth().createCustomToken(userId);

return { user, customToken, accessToken };
} catch (error) {
throw error;
}
};


exports.signInWithApple = async () => {
try {
const auth = getAuth();
const provider = new OAuthProvider('apple.com');

// Optional: Add any scopes you need
provider.addScope('email');
provider.addScope('name');

// Optional: Customize OAuth parameters
provider.setCustomParameters({
// Apple sign-in doesn't have many parameters you can set, but you could customize if necessary
});

const result = await signInWithPopup(auth, provider);

// Get the user and OAuth credentials
const user = result.user;
const credential = OAuthProvider.credentialFromResult(result);
const token = credential.accessToken;

if (!user) {
throw new Error('Apple Sign-In failed');
}

const userId = user.uid;
const username = user.displayName;

// Create a new user node in Neo4j
try {
await createUserNode(userId, username);
} catch (error) {
// If Neo4j user creation fails, delete the created Firebase user
await firebase.auth().deleteUser(userId);
throw new Error('Failed to create user in Neo4j: ' + error.message);
}

// Generate a custom token for the user
const customToken = await firebase.auth().createCustomToken(userId);

return { user, customToken, token };
} catch (error) {
throw error;
}
};

exports.checkEmailVerification = async () => {
console.log("In checkEmailVerification service");
try {
const user = auth.currentUser;
if (user) {
console.log("Verifying", user);
console.log("User email verified: ", user.emailVerified);
await user.reload(); // Reload user data from Firebase
return user.emailVerified;
Expand Down

0 comments on commit 792f767

Please sign in to comment.