Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8a9b074

Browse files
committed
feat: add show all permissions checkbox
1 parent4ade224 commit8a9b074

File tree

1 file changed

+100
-44
lines changed

1 file changed

+100
-44
lines changed

‎site/src/pages/ManagementSettingsPage/CustomRolesPage/CreateEditRolePageView.tsx

Lines changed: 100 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
importtype{Interpolation,Theme}from"@emotion/react";
22
importCheckboxfrom"@mui/material/Checkbox";
3+
importFormControlLabelfrom"@mui/material/FormControlLabel";
34
importTablefrom"@mui/material/Table";
45
importTableBodyfrom"@mui/material/TableBody";
56
importTableCellfrom"@mui/material/TableCell";
67
importTableContainerfrom"@mui/material/TableContainer";
8+
importTableHeadfrom"@mui/material/TableHead";
79
importTableRowfrom"@mui/material/TableRow";
810
importTextFieldfrom"@mui/material/TextField";
911
importtype{useFormik}from"formik";
@@ -103,10 +105,28 @@ const ResourceActionComparator = (
103105
p.resource_type===resource&&
104106
(p.action.toString()==="*"||p.action===action);
105107

108+
constDEFAULT_RESOURCES=[
109+
"audit_log",
110+
"group",
111+
"template",
112+
"organization_member",
113+
"provisioner_daemon",
114+
"workspace",
115+
];
116+
117+
constresources=newSet(DEFAULT_RESOURCES);
118+
119+
constfilteredRBACResourceActions=Object.fromEntries(
120+
Object.entries(RBACResourceActions).filter(([resource])=>
121+
resources.has(resource),
122+
),
123+
);
124+
106125
constActionCheckboxes:FC<ActionCheckboxesProps>=({ permissions, form})=>{
107126
const[checkedActions,setCheckActions]=useState(permissions);
127+
const[showAllResources,setShowAllResources]=useState(false);
108128

109-
consthandleCheckChange=async(
129+
consthandleActionCheckChange=async(
110130
e:ChangeEvent<HTMLInputElement>,
111131
form:ReturnType<typeofuseFormik<Role>>&{values:Role},
112132
)=>{
@@ -130,50 +150,86 @@ const ActionCheckboxes: FC<ActionCheckboxesProps> = ({ permissions, form }) => {
130150
awaitform.setFieldValue("organization_permissions",newPermissions);
131151
};
132152

153+
constresourceActions=showAllResources
154+
?RBACResourceActions
155+
:filteredRBACResourceActions;
156+
133157
return(
134-
<TableContainer>
135-
<Table>
136-
<TableBody>
137-
{Object.entries(RBACResourceActions).map(([resourceKey,value])=>{
138-
return(
139-
<TableRowkey={resourceKey}>
140-
<TableCell>
141-
<likey={resourceKey}css={styles.checkBoxes}>
142-
{resourceKey}
143-
<ulcss={styles.checkBoxes}>
144-
{Object.entries(value).map(([actionKey,value])=>{
145-
return(
146-
<likey={actionKey}>
147-
<spancss={styles.actionText}>
148-
<Checkbox
149-
name={`${resourceKey}:${actionKey}`}
150-
checked={
151-
checkedActions?.some((p)=>
152-
ResourceActionComparator(
153-
p,
154-
resourceKey,
155-
actionKey,
156-
),
157-
)||false
158-
}
159-
onChange={(e)=>handleCheckChange(e,form)}
160-
/>
161-
{actionKey}
162-
</span>{" "}
163-
&ndash;{" "}
164-
<spancss={styles.actionDescription}>{value}</span>
165-
</li>
166-
);
167-
})}
168-
</ul>
169-
</li>
170-
</TableCell>
171-
</TableRow>
172-
);
173-
})}
174-
</TableBody>
175-
</Table>
176-
</TableContainer>
158+
<>
159+
<TableContainer>
160+
<Table>
161+
<TableHead>
162+
<TableRow>
163+
<TableCell
164+
align="right"
165+
sx={{paddingTop:0.4,paddingBottom:0.4}}
166+
>
167+
<FormControlLabel
168+
sx={{marginRight:1}}
169+
control={
170+
<Checkbox
171+
size="small"
172+
id="show_all_permissions"
173+
name="show_all_permissions"
174+
checked={showAllResources}
175+
onChange={(e)=>
176+
setShowAllResources(e.currentTarget.checked)
177+
}
178+
/>
179+
}
180+
label={
181+
<spanstyle={{fontSize:12}}>Show all permissions</span>
182+
}
183+
/>
184+
</TableCell>
185+
</TableRow>
186+
</TableHead>
187+
<TableBody>
188+
{Object.entries(resourceActions).map(([resourceKey,value])=>{
189+
return(
190+
<TableRowkey={resourceKey}>
191+
<TableCellsx={{paddingLeft:2}}>
192+
<likey={resourceKey}css={styles.checkBoxes}>
193+
{resourceKey}
194+
<ulcss={styles.checkBoxes}>
195+
{Object.entries(value).map(([actionKey,value])=>{
196+
return(
197+
<likey={actionKey}>
198+
<spancss={styles.actionText}>
199+
<Checkbox
200+
name={`${resourceKey}:${actionKey}`}
201+
checked={
202+
checkedActions?.some((p)=>
203+
ResourceActionComparator(
204+
p,
205+
resourceKey,
206+
actionKey,
207+
),
208+
)||false
209+
}
210+
onChange={(e)=>
211+
handleActionCheckChange(e,form)
212+
}
213+
/>
214+
{actionKey}
215+
</span>{" "}
216+
&ndash;{" "}
217+
<spancss={styles.actionDescription}>
218+
{value}
219+
</span>
220+
</li>
221+
);
222+
})}
223+
</ul>
224+
</li>
225+
</TableCell>
226+
</TableRow>
227+
);
228+
})}
229+
</TableBody>
230+
</Table>
231+
</TableContainer>
232+
</>
177233
);
178234
};
179235

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp