Skip to content

Commit 63d3123

Browse files
committed
hide member page if not owner
1 parent dbd8ef7 commit 63d3123

File tree

5 files changed

+27
-48
lines changed

5 files changed

+27
-48
lines changed

packages/web/src/app/[domain]/settings/access/page.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { getOrgFromDomain } from "@/data/org";
22
import { OrganizationAccessSettings } from "@/app/components/organizationAccessSettings";
3+
import { isServiceError } from "@/lib/utils";
4+
import { ServiceErrorException } from "@/lib/serviceError";
5+
import { getMe } from "@/actions";
6+
import { OrgRole } from "@sourcebot/db";
7+
import { redirect } from "next/navigation";
38

49
interface AccessPageProps {
510
params: {
@@ -13,6 +18,20 @@ export default async function AccessPage({ params: { domain } }: AccessPageProps
1318
throw new Error("Organization not found");
1419
}
1520

21+
const me = await getMe();
22+
if (isServiceError(me)) {
23+
throw new ServiceErrorException(me);
24+
}
25+
26+
const userRoleInOrg = me.memberships.find((membership) => membership.id === org.id)?.role;
27+
if (!userRoleInOrg) {
28+
throw new Error("User role not found");
29+
}
30+
31+
if (userRoleInOrg !== OrgRole.OWNER) {
32+
redirect(`/${domain}/settings`);
33+
}
34+
1635
return (
1736
<div className="flex flex-col gap-6">
1837
<div>

packages/web/src/app/[domain]/settings/layout.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,19 @@ export default async function SettingsLayout({
7070
href: `/${domain}/settings/access`,
7171
}
7272
] : []),
73-
{
73+
...(userRoleInOrg === OrgRole.OWNER ? [{
7474
title: (
7575
<div className="flex items-center gap-2">
7676
Members
77-
{userRoleInOrg === OrgRole.OWNER && numJoinRequests !== undefined && numJoinRequests > 0 && (
77+
{numJoinRequests !== undefined && numJoinRequests > 0 && (
7878
<span className="inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-xs font-medium text-primary-foreground">
7979
{numJoinRequests}
8080
</span>
8181
)}
8282
</div>
8383
),
8484
href: `/${domain}/settings/members`,
85-
},
85+
}] : []),
8686
{
8787
title: "Secrets",
8888
href: `/${domain}/settings/secrets`,

packages/web/src/app/[domain]/settings/members/page.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { ServiceErrorException } from "@/lib/serviceError";
1212
import { getSeats, SOURCEBOT_UNLIMITED_SEATS } from "@sourcebot/shared";
1313
import { RequestsList } from "./components/requestsList";
1414
import { OrgRole } from "@prisma/client";
15+
import { redirect } from "next/navigation";
1516

1617
interface MembersSettingsPageProps {
1718
params: {
@@ -38,6 +39,10 @@ export default async function MembersSettingsPage({ params: { domain }, searchPa
3839
throw new Error("User role not found");
3940
}
4041

42+
if (userRoleInOrg !== OrgRole.OWNER) {
43+
redirect(`/${domain}/settings`);
44+
}
45+
4146
const members = await getOrgMembers(domain);
4247
if (isServiceError(members)) {
4348
throw new ServiceErrorException(members);

packages/web/src/app/login/components/demoCard.tsx

Lines changed: 0 additions & 39 deletions
This file was deleted.

packages/web/src/app/login/components/loginForm.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { Card } from "@/components/ui/card";
55
import { SourcebotLogo } from "@/app/components/sourcebotLogo";
66
import { AuthMethodSelector } from "@/app/components/authMethodSelector";
77
import useCaptureEvent from "@/hooks/useCaptureEvent";
8-
import DemoCard from "@/app/login/components/demoCard";
98
import Link from "next/link";
109
import { env } from "@/env.mjs";
1110
import type { AuthProvider } from "@/lib/authProviders";
@@ -72,11 +71,6 @@ export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormP
7271
{context === "login" ? "Sign in to your account" : "Create a new account"}
7372
</h2>
7473
</div>
75-
{env.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT !== undefined && (
76-
<div className="w-full sm:w-[500px] max-w-[500px]">
77-
<DemoCard />
78-
</div>
79-
)}
8074
<Card className="flex flex-col items-center border p-6 sm:p-12 rounded-lg gap-4 sm:gap-6 w-full sm:w-[500px] max-w-[500px] bg-background">
8175
{error && (
8276
<div className="text-sm text-destructive text-center text-wrap border p-2 rounded-md border-destructive">

0 commit comments

Comments
 (0)