feature/add-client #21

Merged
benoybose merged 30 commits from feature/add-client into dev 2025-04-21 09:19:04 +00:00
7 changed files with 188 additions and 19 deletions
Showing only changes of commit 5a09e5a82f - Show all commits

View File

@ -2,6 +2,7 @@
"projects": { "projects": {
"debug": "fitlien-dev", "debug": "fitlien-dev",
"qa": "fitlien-qa", "qa": "fitlien-qa",
"release": "fitlien" "release": "fitlien",
"default": "fitlien-dev"
} }
} }

View File

@ -14,8 +14,7 @@
"firebase-debug.*.log", "firebase-debug.*.log",
"*.local" "*.local"
], ],
"predeploy": [ "predeploy": []
]
} }
], ],
"storage": { "storage": {

View File

@ -1,5 +1,33 @@
{ {
"indexes": [ "indexes": [
{
"collectionGroup": "day_pass_bookings",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "userId",
"order": "ASCENDING"
},
{
"fieldPath": "createdAt",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "day_pass_entries",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "bookingId",
"order": "ASCENDING"
},
{
"fieldPath": "entryDate",
"order": "ASCENDING"
}
]
},
{ {
"collectionGroup": "gyms", "collectionGroup": "gyms",
"queryScope": "COLLECTION_GROUP", "queryScope": "COLLECTION_GROUP",
@ -13,6 +41,144 @@
"order": "ASCENDING" "order": "ASCENDING"
} }
] ]
},
{
"collectionGroup": "gyms",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "userId",
"order": "ASCENDING"
},
{
"fieldPath": "name",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "memberships",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "gymId",
"order": "ASCENDING"
},
{
"fieldPath": "createdAt",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "clientId",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "clientId",
"order": "ASCENDING"
},
{
"fieldPath": "type",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "ownerId",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "ownerId",
"order": "ASCENDING"
},
{
"fieldPath": "type",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "trainerId",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "notifications",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "type",
"order": "ASCENDING"
},
{
"fieldPath": "userId",
"order": "ASCENDING"
},
{
"fieldPath": "timestamp",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "termsandconditions",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "normalizedName",
"order": "ASCENDING"
},
{
"fieldPath": "userUid",
"order": "ASCENDING"
}
]
} }
], ],
"fieldOverrides": [] "fieldOverrides": []

View File

@ -1,19 +1,16 @@
rules_version = '2'; rules_version = '2';
service cloud.firestore { service cloud.firestore {
match /databases/{database}/documents { match /databases/{database}/documents {
// This rule allows anyone with your Firestore database reference to view, edit,
// and delete all data in your Firestore database. It is useful for getting
// started, but it is configured to expire after 30 days because it
// leaves your app open to attackers. At that time, all client
// requests to your Firestore database will be denied.
//
// Make sure to write security rules for your app before that time, or else
// all client requests to your Firestore database will be denied until you Update
// your rules
match /{document=**} { match /{document=**} {
allow read, write: if request.time < timestamp.date(2025, 1, 10); allow read, write: if request.auth != null;
}
match /day_pass_bookings/{bookingId} {
allow read: if true;
allow write: if request.auth != null;
}
match /gyms/{gymId} {
allow read: if true;
allow write: if request.auth != null;
} }
} }
} }

View File

@ -14,6 +14,7 @@
"firebase-admin": "^12.6.0", "firebase-admin": "^12.6.0",
"firebase-functions": "^6.0.1", "firebase-functions": "^6.0.1",
"form-data": "^4.0.1", "form-data": "^4.0.1",
"functions": "file:",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"long": "^4.0.0", "long": "^4.0.0",
"mailgun.js": "^10.4.0", "mailgun.js": "^10.4.0",
@ -3084,6 +3085,10 @@
"integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
"optional": true "optional": true
}, },
"node_modules/functions": {
"resolved": "",
"link": true
},
"node_modules/gaxios": { "node_modules/gaxios": {
"version": "6.7.1", "version": "6.7.1",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",

View File

@ -21,6 +21,7 @@
"firebase-admin": "^12.6.0", "firebase-admin": "^12.6.0",
"firebase-functions": "^6.0.1", "firebase-functions": "^6.0.1",
"form-data": "^4.0.1", "form-data": "^4.0.1",
"functions": "file:",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"long": "^4.0.0", "long": "^4.0.0",
"mailgun.js": "^10.4.0", "mailgun.js": "^10.4.0",

View File

@ -384,7 +384,8 @@ export const createCashfreeOrder = onRequest({
productInfo, productInfo,
userId, userId,
gymId, gymId,
orderId orderId,
webHostUrl,
} = request.body; } = request.body;
if (!amount || !customerEmail || !customerPhone) { if (!amount || !customerEmail || !customerPhone) {
@ -422,8 +423,7 @@ export const createCashfreeOrder = onRequest({
customer_phone: customerPhone customer_phone: customerPhone
}, },
order_meta: { order_meta: {
return_url: `https://${process.env.FITLIENHOST}/payment-bridge?order_id=${orderId}&hash_key=${hashKey}&user_id=${userId}&gym_id=${gymId}`, return_url: `http://${webHostUrl}/?order_id=${orderId}&hash_key=${hashKey}&user_id=${userId}&gym_id=${gymId}#/payment-status-screen`,
// notify_url: `https://$filien.web.app/verifyCashfreePayment`
}, },
order_note: productInfo || 'Fitlien Membership' order_note: productInfo || 'Fitlien Membership'
}, },