Deploy Bot commited on
Commit
348ef29
·
1 Parent(s): 9c944bc

Support Firebase Auth UIDs and Endpoint

Browse files
Files changed (2) hide show
  1. src/api/routes.js +54 -0
  2. src/models/User.js +2 -1
src/api/routes.js CHANGED
@@ -529,5 +529,59 @@ router.post('/auth/verify-code', async (req, res) => {
529
  }
530
  });
531
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  module.exports = router;
533
 
 
529
  }
530
  });
531
 
532
+ res.json({ success: false, message: "Kod noto'g'ri" });
533
+ }
534
+ } catch (e) {
535
+ res.status(500).json({ success: false, message: "Server Error" });
536
+ }
537
+ });
538
+
539
+ router.post('/auth/firebase', async (req, res) => {
540
+ try {
541
+ const { uid, phone, name, email } = req.body;
542
+ if (!uid) return res.status(400).json({ success: false, message: "UID required" });
543
+
544
+ let user = await User.findOne({ firebase_uid: uid });
545
+ if (!user && phone) {
546
+ // Try finding by phone if user existed before
547
+ const cleanPhone = phone.replace('+', '');
548
+ user = await User.findOne({ phone: cleanPhone });
549
+ }
550
+
551
+ if (!user) {
552
+ // Create New User
553
+ user = new User({
554
+ id: uid, // Use Firebase UID as ID
555
+ firebase_uid: uid,
556
+ first_name: name || 'Foydalanuvchi',
557
+ phone: phone ? phone.replace('+', '') : null,
558
+ username: email ? email.split('@')[0] : null
559
+ });
560
+ await user.save();
561
+ } else {
562
+ // Link existing user
563
+ if (!user.firebase_uid) {
564
+ user.firebase_uid = uid;
565
+ await user.save();
566
+ }
567
+ }
568
+
569
+ res.json({
570
+ success: true,
571
+ status: 'approved',
572
+ user: {
573
+ id: user.id.toString(),
574
+ name: user.first_name,
575
+ username: user.username,
576
+ phone: user.phone
577
+ }
578
+ });
579
+
580
+ } catch (e) {
581
+ console.error("Firebase Auth Error:", e);
582
+ res.status(500).json({ success: false, message: "Server Error" });
583
+ }
584
+ });
585
+
586
  module.exports = router;
587
 
src/models/User.js CHANGED
@@ -1,7 +1,8 @@
1
  const mongoose = require('mongoose');
2
 
3
  const userSchema = new mongoose.Schema({
4
- id: { type: Number, required: true, unique: true },
 
5
  first_name: String,
6
  username: String,
7
  language: { type: String, default: null }, // 'uz', 'ru', 'en'
 
1
  const mongoose = require('mongoose');
2
 
3
  const userSchema = new mongoose.Schema({
4
+ id: { type: String, required: true, unique: true }, // Changed to String to support Firebase UID
5
+ firebase_uid: { type: String, unique: true, sparse: true }, // NEW
6
  first_name: String,
7
  username: String,
8
  language: { type: String, default: null }, // 'uz', 'ru', 'en'