Skip to content

Commit b39e29b

Browse files
committed
refactor(api, web): restrict membership roles to "member" and "admin" only
1 parent 54bc8b1 commit b39e29b

3 files changed

Lines changed: 11 additions & 13 deletions

File tree

apps/api/src/routes/organizations.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ organizationRoutes.post(
174174
"json",
175175
z.object({
176176
email: z.string().email("Valid email is required"),
177-
role: z.enum(["member", "admin", "owner"], {
178-
errorMap: () => ({ message: "Role must be member, admin, or owner" }),
177+
role: z.enum(["member", "admin"], {
178+
errorMap: () => ({ message: "Role must be member or admin" }),
179179
}),
180180
}) as z.ZodType<Omit<AddMembershipRequest, "organizationId">>
181181
),
@@ -222,8 +222,8 @@ organizationRoutes.put(
222222
"json",
223223
z.object({
224224
email: z.string().email("Valid email is required"),
225-
role: z.enum(["member", "admin", "owner"], {
226-
errorMap: () => ({ message: "Role must be member, admin, or owner" }),
225+
role: z.enum(["member", "admin"], {
226+
errorMap: () => ({ message: "Role must be member or admin" }),
227227
}),
228228
}) as z.ZodType<Omit<UpdateMembershipRequest, "organizationId">>
229229
),

apps/web/src/pages/members-page.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ export function MembersPage() {
206206
// Add member state
207207
const [newMemberEmail, setNewMemberEmail] = useState("");
208208
const [newMemberRole, setNewMemberRole] = useState<
209-
"member" | "admin" | "owner"
209+
"member" | "admin"
210210
>("member");
211211

212212
// Update role state
@@ -216,7 +216,7 @@ export function MembersPage() {
216216
userEmail: string;
217217
currentRole: string;
218218
} | null>(null);
219-
const [newRole, setNewRole] = useState<"member" | "admin" | "owner">(
219+
const [newRole, setNewRole] = useState<"member" | "admin">(
220220
"member"
221221
);
222222

@@ -307,7 +307,7 @@ export function MembersPage() {
307307
}>;
308308
if (custom.detail) {
309309
setMemberToUpdate(custom.detail);
310-
setNewRole(custom.detail.currentRole as "member" | "admin" | "owner");
310+
setNewRole(custom.detail.currentRole as "member" | "admin");
311311
setIsUpdateRoleDialogOpen(true);
312312
}
313313
}, []);
@@ -402,7 +402,7 @@ export function MembersPage() {
402402
<Label htmlFor="role">Role</Label>
403403
<Select
404404
value={newMemberRole}
405-
onValueChange={(value: "member" | "admin" | "owner") =>
405+
onValueChange={(value: "member" | "admin") =>
406406
setNewMemberRole(value)
407407
}
408408
disabled={isProcessing}
@@ -413,7 +413,6 @@ export function MembersPage() {
413413
<SelectContent>
414414
<SelectItem value="member">Member</SelectItem>
415415
<SelectItem value="admin">Admin</SelectItem>
416-
<SelectItem value="owner">Owner</SelectItem>
417416
</SelectContent>
418417
</Select>
419418
</div>
@@ -454,7 +453,7 @@ export function MembersPage() {
454453
<Label htmlFor="new-role">New Role</Label>
455454
<Select
456455
value={newRole}
457-
onValueChange={(value: "member" | "admin" | "owner") =>
456+
onValueChange={(value: "member" | "admin") =>
458457
setNewRole(value)
459458
}
460459
disabled={isProcessing}
@@ -465,7 +464,6 @@ export function MembersPage() {
465464
<SelectContent>
466465
<SelectItem value="member">Member</SelectItem>
467466
<SelectItem value="admin">Admin</SelectItem>
468-
<SelectItem value="owner">Owner</SelectItem>
469467
</SelectContent>
470468
</Select>
471469
</div>

packages/types/src/organization.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export interface ListMembershipsResponse {
5353
export interface AddMembershipRequest {
5454
organizationId: string;
5555
email: string;
56-
role: "member" | "admin" | "owner";
56+
role: "member" | "admin";
5757
}
5858

5959
export interface AddMembershipResponse {
@@ -69,7 +69,7 @@ export interface AddMembershipResponse {
6969
export interface UpdateMembershipRequest {
7070
organizationId: string;
7171
email: string;
72-
role: "member" | "admin" | "owner";
72+
role: "member" | "admin";
7373
}
7474

7575
export interface UpdateMembershipResponse {

0 commit comments

Comments
 (0)