Spaces:
Paused
Paused
Deploy Bot commited on
Commit ·
348ef29
1
Parent(s): 9c944bc
Support Firebase Auth UIDs and Endpoint
Browse files- src/api/routes.js +54 -0
- 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:
|
|
|
|
| 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'
|