diff --git a/apps/web/src/app/(dashboard)/components/Header/Header.tsx b/apps/web/src/app/(dashboard)/components/Header/Header.tsx
index 29325e59ae8..a62f7c35a7b 100644
--- a/apps/web/src/app/(dashboard)/components/Header/Header.tsx
+++ b/apps/web/src/app/(dashboard)/components/Header/Header.tsx
@@ -1,7 +1,6 @@
"use client";
import { authClient } from "@superset/auth/client";
-import { getInitials } from "@superset/shared/names";
import { Avatar, AvatarFallback, AvatarImage } from "@superset/ui/avatar";
import {
DropdownMenu,
@@ -15,7 +14,7 @@ import {
DropdownMenuTrigger,
} from "@superset/ui/dropdown-menu";
import { useQuery, useQueryClient } from "@tanstack/react-query";
-import { Check, LogOut } from "lucide-react";
+import { Check, ChevronDown, LogOut } from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
@@ -33,12 +32,13 @@ export function Header() {
);
const user = session?.user;
- const initials = getInitials(user?.name, user?.email);
const activeOrganizationId = session?.session?.activeOrganizationId;
const activeOrganization = organizations?.find(
(org) => org.id === activeOrganizationId,
);
+ const displayName = activeOrganization?.name ?? "Organization";
+
const handleSignOut = async () => {
await authClient.signOut();
router.push("/sign-in");
@@ -66,15 +66,22 @@ export function Header() {
@@ -85,52 +92,34 @@ export function Header() {
- {organizations && organizations.length === 1 && (
- <>
-
-
-
- {activeOrganization?.name?.charAt(0) ?? "O"}
-
-
-
- {activeOrganization?.name ?? "Organization"}
-
-
-
- >
- )}
{organizations && organizations.length > 1 && (
<>
-
-
- {activeOrganization?.name?.charAt(0) ?? "O"}
-
-
-
- {activeOrganization?.name ?? "Organization"}
-
+ Switch organization
- Switch organization
+ {user?.email}
{organizations.map((org) => (
handleSwitchOrganization(org.id)}
>
-
+
+
{org.name?.charAt(0) ?? "O"}
{org.name}
{org.id === activeOrganizationId && (
-
+
)}
))}
@@ -140,11 +129,11 @@ export function Header() {
>
)}
-
- Logout
+
+ Log out
diff --git a/packages/trpc/src/router/user/user.ts b/packages/trpc/src/router/user/user.ts
index 3c108db237b..4c4df3f2fd4 100644
--- a/packages/trpc/src/router/user/user.ts
+++ b/packages/trpc/src/router/user/user.ts
@@ -2,7 +2,7 @@ import { db } from "@superset/db/client";
import { members, users } from "@superset/db/schema";
import { TRPCError, type TRPCRouterRecord } from "@trpc/server";
import { del, put } from "@vercel/blob";
-import { eq } from "drizzle-orm";
+import { and, eq } from "drizzle-orm";
import { z } from "zod";
import { protectedProcedure } from "../../trpc";
@@ -11,8 +11,15 @@ export const userRouter = {
me: protectedProcedure.query(({ ctx }) => ctx.session.user),
myOrganization: protectedProcedure.query(async ({ ctx }) => {
+ const activeOrganizationId = ctx.session.session.activeOrganizationId;
+
const membership = await db.query.members.findFirst({
- where: eq(members.userId, ctx.session.user.id),
+ where: activeOrganizationId
+ ? and(
+ eq(members.userId, ctx.session.user.id),
+ eq(members.organizationId, activeOrganizationId),
+ )
+ : eq(members.userId, ctx.session.user.id),
with: {
organization: true,
},