MCPcopy Create free account
hub / github.com/adcontextprotocol/adcp / checkAndAssignOrganizationByDomain

Function checkAndAssignOrganizationByDomain

server/src/slack/sync.ts:600–706  ·  view source on GitHub ↗
(
  workosUserId: string
)

Source from the content-addressed store, hash-verified

598 * organization domain, adds them to that organization.
599 */
600export async function checkAndAssignOrganizationByDomain(
601 workosUserId: string
602): Promise<{
603 assigned: boolean;
604 organizationId?: string;
605 organizationName?: string;
606 previousOrgId?: string;
607 previousOrgName?: string;
608 error?: string;
609} | null> {
610 const pool = getPool();
611
612 try {
613 const membershipResult = await pool.query<{
614 email: string;
615 workos_organization_id: string;
616 org_name: string;
617 is_personal: boolean;
618 }>(`
619 SELECT om.email, om.workos_organization_id, o.name as org_name, o.is_personal
620 FROM organization_memberships om
621 JOIN organizations o ON o.workos_organization_id = om.workos_organization_id
622 WHERE om.workos_user_id = $1
623 LIMIT 1
624 `, [workosUserId]);
625
626 if (membershipResult.rows.length === 0) {
627 return null;
628 }
629
630 const { email, workos_organization_id: currentOrgId, org_name: currentOrgName, is_personal: isPersonal } = membershipResult.rows[0];
631
632 if (!isPersonal) {
633 return null;
634 }
635
636 const domain = email.split('@')[1]?.toLowerCase();
637 if (!domain || isFreeEmailDomain(domain)) {
638 return null;
639 }
640
641 const domainResult = await pool.query<{
642 workos_organization_id: string;
643 org_name: string;
644 }>(`
645 SELECT od.workos_organization_id, o.name as org_name
646 FROM organization_domains od
647 JOIN organizations o ON o.workos_organization_id = od.workos_organization_id
648 WHERE LOWER(od.domain) = $1
649 AND o.is_personal = false
650 LIMIT 1
651 `, [domain]);
652
653 if (domainResult.rows.length === 0) {
654 return null;
655 }
656
657 const { workos_organization_id: targetOrgId, org_name: targetOrgName } = domainResult.rows[0];

Callers 2

createAdminSlackRouterFunction · 0.85

Calls 5

getPoolFunction · 0.85
isFreeEmailDomainFunction · 0.85
roleForNewMemberFunction · 0.85
getWorkosFunction · 0.85
queryMethod · 0.80

Tested by

no test coverage detected