📁 File Manager Pro
v10.0.3 | PHP: 8.2.31
Server: LiteSpeed
2026-06-29 07:59:30
📂
/ (Root)
/
home
/
orkouolp
/
node_js
/
orkofarms.com
/
controller
📍 /home/orkouolp/node_js/orkofarms.com/controller
🔄 Refresh
✏️
Editing: auth.controller.js
Writable
const firebase = require('../firebase'); const authController = {}; authController.getUsers = async (req, res) => { console.log("GET /get-users"); try { let users = []; const qrRef = firebase.db.collection('users'); //.where('phoneNumber', '==', '+88'+phone); const qrSnapSh = await qrRef.get(); //console.log('qrSnapSh:', qrSnapSh); if(!qrSnapSh.empty) { //console.log('qrSnapSh.docs:', qrSnapSh.docs); users = qrSnapSh.docs.map(doc => { const user = doc.data(); if(user.createdAt) { //console.log('createdAt:', user.createdAt, (user.createdAt._seconds * 1000)); //console.log('Date(createdAt):', new Date(user.createdAt._seconds * 1000)); //user.createdAt = new Date(user.createdAt._seconds * 1000 + user.createdAt._nanoseconds/1000); //console.log('createdAt.toDate():', user.createdAt.toDate()); //firebase Timestamp user.createdAt = user.createdAt.toDate(); } return user; }); } //console.log('users:', users); res.status(200).json({ users }); } catch(error) { console.log(error); res.status(400).json({ error: 'an error occured, unable to get users' }); } }; //---------------------------------------------------------------------------------------------------------// authController.getUserEmail = async (req, res) => { console.log('GET /get-user-email'); const { phone } = req.query; console.log('phone:', phone, ', req.query:', req.query); let email = ''; const qrRef = firebase.db.collection('users').where('phoneNumber', '==', '+88'+phone); const qrSnapSh = await qrRef.get(); //console.log('qrSnapSh:', qrSnapSh); if(!qrSnapSh.empty) { const user = qrSnapSh.docs[0].data(); console.log('user:', user); if(user&& user.email) email = user.email; } res.status(200).json({email}); }; //---------------------------------------------------------------------------------------------------------// authController.getUserName = async (req, res) => { console.log('GET /get-user-name'); const { phone } = req.query; console.log('phone:', phone, ', req.query:', req.query); let displayName = '', email = ''; const qrRef = firebase.db.collection('users').where('phoneNumber', '==', '+88'+phone); const qrSnapSh = await qrRef.get(); //console.log('qrSnapSh:', qrSnapSh); if(!qrSnapSh.empty) { const user = qrSnapSh.docs[0].data(); console.log('user:', user); if(user) { if(user.displayName) displayName = user.displayName; if(user.email) { email = user.email; if(email[0]==='p'&& email[1]==='_') email = ''; } } } res.status(200).json({displayName, email}); }; //---------------------------------------------------------------------------------------------------------// authController.getUser = async (req, res) => { console.log('GET /get-user'); const { phone } = req.query; console.log('phone:', phone, ', req.query:', req.query); const qrRef = firebase.db.collection('users').where('phoneNumber', '==', '+88'+phone); const qrSnapSh = await qrRef.get(); //console.log('qrSnapSh:', qrSnapSh); let user = null; if(!qrSnapSh.empty) { user = qrSnapSh.docs[0].data(); console.log('user:', user); } if(!user) { user = {}; if(phone) { console.log('Finding user in firebase Auth, phone:', phone); try { const res = await firebase.auth.getUserByPhoneNumber('+88'+phone); console.log('res:', res); if(res) { let type = ''; console.log('res.uid:', res.uid); const { uid, displayName, phoneNumber, email, customClaims } = res; console.log('customClaims:', customClaims); if(customClaims && customClaims.type) type = customClaims.type; user = { uid, displayName, phoneNumber, email, type }; console.log('user:', user); } } catch(error) { console.log('Error finding user in Auth:', error); } } } console.log('user:', user); res.status(200).json(user); }; //---------------------------------------------------------------------------------------------------------// authController.updateUser = async (req, res) => { console.log('POST /update-user'); let { uid, displayName, phoneNumber, email, password, type } = req.body; console.log('updateUser:: uid:', uid, displayName, phoneNumber, email, password, type); try { let createdAt = new Date(); const userDb = firebase.db.collection('users'); if(uid) { //Find User by uid const foundDoc = (await userDb.doc(uid).get()).data(); console.log('foundDoc:', foundDoc); if(foundDoc) { if(!displayName && foundDoc.displayName) displayName = foundDoc.displayName; if(foundDoc.createdAt) createdAt = foundDoc.createdAt; } } else { //Find User by phoneNumber const qrRef = firebase.db.collection('users').where('phoneNumber', '==', phoneNumber); const qrSnapSh = await qrRef.get(); //console.log('qrSnapSh:', qrSnapSh); if(!qrSnapSh.empty) { //uid = qrSnapSh.docs[0].data().uid; console.log('User found uid:', uid); const foundDoc = qrSnapSh.docs[0].data(); console.log('foundDoc:', foundDoc); if(foundDoc) { uid = foundDoc.uid; console.log('User found uid:', uid); if(!displayName && foundDoc.displayName) displayName = foundDoc.displayName; if(foundDoc.createdAt) createdAt = foundDoc.createdAt; // if(!type) type = (foundDoc.type? foundDoc.type: ''); } } if(!uid) { //Find User in firebase Auth const res = await firebase.auth.getUserByPhoneNumber(phoneNumber); if(res&& res.uid) uid = res.uid; } } //-------------------------------------------------------------------------------------------// if(uid) { //Update User in firebase Auth if(password) { try { console.log('Updating user in firebase Auth'); await firebase.auth.updateUser(uid, { displayName, phoneNumber, email, password }); } catch(error) { console.log('error:', error); res.status(200).json({userDoc:null, message:'Error updating user in firebase Auth'}); } } } else { //Create User in firebase Auth try { console.log('Trying to create user in firebase Auth'); const user = await firebase.auth.createUser({ displayName, phoneNumber, email, password: (password? password: 'Pass@123') }); uid = user.uid; } catch(error) { console.log('error:', error); res.status(200).json({userDoc:null, message:'Error creating user in firebase Auth'}); } } //-------------------------------------------------------------------------------------------// if(uid) { //Update User in firebase Db // const userDb = firebase.db.collection('users'); // const foundDoc = (await userDb.doc(uid).get()).data(); console.log('foundDoc:', foundDoc); // const createdAt = (foundDoc && foundDoc.createdAt? foundDoc.createdAt: new Date()); // if(!type) type = (foundDoc && foundDoc.type? foundDoc.type: ''); let userDoc = { uid, displayName, phoneNumber, email, type, createdAt }; console.log('userDoc:', userDoc); await firebase.auth.setCustomUserClaims(uid, { type }); await userDb.doc(uid).set(userDoc); res.status(200).json({userDoc}); } else { res.status(200).json({userDoc:null, message:'Error updating user'}); } } catch(error) { console.log('error', error); res.status(200).json({userDoc:null, message:'Error updating user'}); } } //---------------------------------------------------------------------------------------------------------// module.exports = authController;
💾 Save Changes
❌ Cancel