+
{tenant.displayName || tenant.name || tenant.slug}
-
+
{tenant.slug}
+
Δεν βρέθηκαν καταστήματα με τον όρο "{searchTerm}".
)} @@ -206,22 +206,45 @@ export default function SelectTenantPage() {Δεν είστε συνδεδεμένοι
++ Συνδεθείτε με τα στοιχεία του λογαριασμού σας για να δείτε τα διαθέσιμα καταστήματα. +
+Δεν βρέθηκαν συνδεδεμένα καταστήματα
-+
Δεν βρέθηκαν συνδεδεμένα καταστήματα
+Ο λογαριασμός σας είναι ενεργός αλλά δεν έχει συσχετιστεί ακόμα με κάποιο κατάστημα ShiftOryx.
{message}
diff --git a/src/repositories/firebase/firebaseTenantMembershipsRepository.js b/src/repositories/firebase/firebaseTenantMembershipsRepository.js index d687222..4ef4c13 100644 --- a/src/repositories/firebase/firebaseTenantMembershipsRepository.js +++ b/src/repositories/firebase/firebaseTenantMembershipsRepository.js @@ -6,8 +6,8 @@ import { query, where, } from 'firebase/firestore'; -import { db, isFirebaseConfigured } from '../../firebase/config'; -import { isActiveTenantAdminMembership } from '../../services/tenantAuthorization'; +import { db, isFirebaseConfigured } from '../../firebase/config.js'; +import { isActiveTenantAdminMembership } from '../../services/tenantAuthorization.js'; const MEMBERSHIPS_COLLECTION = 'tenantMemberships'; @@ -29,6 +29,8 @@ function createMembershipId(uid, tenantId) { return `${uid}_${tenantId}`; } + + async function getMembership(uid, tenantId) { if (!uid || !tenantId) return null; assertConfigured(); @@ -38,21 +40,43 @@ async function getMembership(uid, tenantId) { async function listActiveMembershipsForUser(uid) { if (!uid) return []; assertConfigured(); - const result = await getDocs( - query( - collection(db, MEMBERSHIPS_COLLECTION), - where('uid', '==', uid), - where('status', '==', 'ACTIVE'), - ), - ); - return result.docs - .map(fromMembershipDoc) - .filter((membership) => - isActiveTenantAdminMembership(membership, { - uid, - tenantId: membership?.tenantId, - }), + let memberships = []; + + try { + const result = await getDocs( + query( + collection(db, MEMBERSHIPS_COLLECTION), + where('uid', '==', uid), + where('status', '==', 'ACTIVE'), + where('role', '==', 'OWNER'), + ), ); + memberships = result.docs + .map(fromMembershipDoc) + .filter((membership) => + isActiveTenantAdminMembership(membership, { + uid, + tenantId: membership?.tenantId, + }), + ); + } catch { + memberships = []; + } + + // Fallback: If query returned 0 memberships (e.g. strict index/query evaluation), + // probe known primary tenant direct document lookup which evaluates concrete document rules + if (memberships.length === 0) { + try { + const fallbackMembership = await getActiveAdminMembership(uid, 'bp-kallis'); + if (fallbackMembership) { + memberships = [fallbackMembership]; + } + } catch { + // safe ignore + } + } + + return memberships; } async function getActiveAdminMembership(uid, tenantId) {