UNPKG

@payloadcms/plugin-multi-tenant

Version:
63 lines (62 loc) 2.32 kB
export const getTenantOptions = async ({ payload, tenantsArrayFieldName, tenantsArrayTenantFieldName, tenantsCollectionSlug, useAsTitle, user, userHasAccessToAllTenants })=>{ let tenantOptions = []; if (!user) { return tenantOptions; } if (userHasAccessToAllTenants(user)) { // If the user has access to all tenants get them from the DB const isOrderable = payload.collections[tenantsCollectionSlug]?.config?.orderable || false; const tenants = await payload.find({ collection: tenantsCollectionSlug, depth: 0, limit: 0, overrideAccess: false, select: { [useAsTitle]: true, ...isOrderable && { _order: true } }, sort: isOrderable ? '_order' : useAsTitle, user }); tenantOptions = tenants.docs.map((doc)=>({ label: String(doc[useAsTitle]), value: doc.id })); } else { const tenantsToPopulate = []; (user[tenantsArrayFieldName] || []).map((tenantRow)=>{ const tenantField = tenantRow[tenantsArrayTenantFieldName] // tenants.tenant ; if (typeof tenantField === 'string' || typeof tenantField === 'number') { tenantsToPopulate.push(tenantField); } else if (tenantField && typeof tenantField === 'object') { tenantOptions.push({ label: String(tenantField[useAsTitle]), value: tenantField.id }); } }); if (tenantsToPopulate.length > 0) { const populatedTenants = await payload.find({ collection: tenantsCollectionSlug, depth: 0, limit: 0, overrideAccess: false, user, where: { id: { in: tenantsToPopulate } } }); tenantOptions = populatedTenants.docs.map((doc)=>({ label: String(doc[useAsTitle]), value: doc.id })); } } return tenantOptions; }; //# sourceMappingURL=getTenantOptions.js.map