refactor: remove can_sudo from department create/edit flow

This commit is contained in:
2026-06-05 15:29:49 +00:00
parent 0bc18364d4
commit 7aa550f62a
2 changed files with 10 additions and 41 deletions
+3 -4
View File
@@ -1067,14 +1067,14 @@ export const api = {
request<{ departments: Department[]; count: number }>(`/organizations/${orgId}/departments`, {}, true, requestConfig),
// Create department
createDepartment: (orgId: string, name: string, description?: string, canSudo?: boolean, requestConfig?: RequestConfig) =>
createDepartment: (orgId: string, name: string, description?: string, requestConfig?: RequestConfig) =>
request<{ department: Department }>(`/organizations/${orgId}/departments`, {
method: 'POST',
body: JSON.stringify({ name, description, can_sudo: canSudo }),
body: JSON.stringify({ name, description }),
}, true, requestConfig),
// Update department
updateDepartment: (orgId: string, deptId: string, data: { name?: string; description?: string; can_sudo?: boolean }, requestConfig?: RequestConfig) =>
updateDepartment: (orgId: string, deptId: string, data: { name?: string; description?: string }, requestConfig?: RequestConfig) =>
request<{ department: Department }>(`/organizations/${orgId}/departments/${deptId}`, {
method: 'PATCH',
body: JSON.stringify(data),
@@ -1780,7 +1780,6 @@ export interface Department {
organization_id: string;
name: string;
description: string | null;
can_sudo: boolean;
created_at: string;
updated_at: string;
deleted_at: string | null;
+7 -37
View File
@@ -390,7 +390,7 @@ export default function DepartmentsPage() {
const [selectedPrincipalId, setSelectedPrincipalId] = useState("");
const [isLinking, setIsLinking] = useState(false);
const [editingDept, setEditingDept] = useState<Department | null>(null);
const [formData, setFormData] = useState({ name: "", description: "", can_sudo: false });
const [formData, setFormData] = useState({ name: "", description: "" });
const [expandedPolicies, setExpandedPolicies] = useState<Set<string>>(new Set());
const [expandedMembers, setExpandedMembers] = useState<Set<string>>(new Set());
@@ -505,10 +505,9 @@ export default function DepartmentsPage() {
const dept = await api.organizations.createDepartment(
orgId,
formData.name,
formData.description || undefined,
formData.can_sudo
formData.description || undefined
);
setFormData({ name: "", description: "", can_sudo: false });
setFormData({ name: "", description: "" });
setIsCreateDialogOpen(false);
await fetchDepartments(orgId);
} catch (err) {
@@ -523,9 +522,8 @@ export default function DepartmentsPage() {
await api.organizations.updateDepartment(orgId, editingDept.id, {
name: formData.name,
description: formData.description || undefined,
can_sudo: formData.can_sudo,
});
setFormData({ name: "", description: "", can_sudo: false });
setFormData({ name: "", description: "" });
setEditingDept(null);
setIsEditDialogOpen(false);
await fetchDepartments(orgId);
@@ -548,7 +546,7 @@ export default function DepartmentsPage() {
const openEditDialog = (dept: Department) => {
setEditingDept(dept);
setFormData({ name: dept.name, description: dept.description || "", can_sudo: dept.can_sudo || false });
setFormData({ name: dept.name, description: dept.description || "" });
setIsEditDialogOpen(true);
};
@@ -574,7 +572,7 @@ export default function DepartmentsPage() {
Manage departments and organize team members
</p>
</div>
<Button onClick={() => { setFormData({ name: "", description: "", can_sudo: false }); setIsCreateDialogOpen(true); }}>
<Button onClick={() => { setFormData({ name: "", description: "" }); setIsCreateDialogOpen(true); }}>
<Plus className="w-4 h-4 mr-2" />
Create Department
</Button>
@@ -621,11 +619,7 @@ export default function DepartmentsPage() {
<p className="font-medium text-foreground">
{dept.name}
</p>
{dept.can_sudo && (
<Badge variant="secondary" className="text-xs bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-300">
Sudo enabled
</Badge>
)}
</div>
{dept.description && (
<p className="mt-1 text-sm text-muted-foreground">
@@ -758,18 +752,6 @@ export default function DepartmentsPage() {
rows={3}
/>
</div>
<div className="flex items-center justify-between p-3 border rounded-lg bg-muted/30">
<div>
<Label className="text-base font-medium cursor-pointer">Allow sudo access</Label>
<p className="text-xs text-muted-foreground mt-1">Members of this department can use sudo</p>
</div>
<input
type="checkbox"
checked={formData.can_sudo}
onChange={(e) => setFormData({ ...formData, can_sudo: e.target.checked })}
className="w-4 h-4 cursor-pointer"
/>
</div>
</div>
<DialogFooter>
<Button variant="outline" onClick={() => setIsCreateDialogOpen(false)}>
@@ -811,18 +793,6 @@ export default function DepartmentsPage() {
rows={3}
/>
</div>
<div className="flex items-center justify-between p-3 border rounded-lg bg-muted/30">
<div>
<Label className="text-base font-medium cursor-pointer">Allow sudo access</Label>
<p className="text-xs text-muted-foreground mt-1">Members of this department can use sudo</p>
</div>
<input
type="checkbox"
checked={formData.can_sudo}
onChange={(e) => setFormData({ ...formData, can_sudo: e.target.checked })}
className="w-4 h-4 cursor-pointer"
/>
</div>
</div>
<DialogFooter>
<Button variant="outline" onClick={() => setIsEditDialogOpen(false)}>