Add API tokens support #9

Merged
pierre merged 40 commits from api into master 2024-04-23 17:04:45 +00:00
Showing only changes of commit f404018392 - Show all commits

View File

@ -51,12 +51,12 @@ export function TokenRightsEditor(p: {
<TableHead>
<TableRow>
<TableCell>VM name</TableCell>
<TableCell>Get definition</TableCell>
<TableCell>Update</TableCell>
<TableCell>Delete</TableCell>
<TableCell>Get XML definition</TableCell>
<TableCell>Get autostart</TableCell>
<TableCell>Set autostart</TableCell>
<TableCell align="center">Get definition</TableCell>
<TableCell align="center">Update</TableCell>
<TableCell align="center">Delete</TableCell>
<TableCell align="center">Get XML definition</TableCell>
<TableCell align="center">Get autostart</TableCell>
<TableCell align="center">Set autostart</TableCell>
</TableRow>
</TableHead>
<TableBody>
@ -127,15 +127,15 @@ export function TokenRightsEditor(p: {
<TableHead>
<TableRow>
<TableCell>VM name</TableCell>
<TableCell>Get state</TableCell>
<TableCell>Start</TableCell>
<TableCell>Shutdown</TableCell>
<TableCell>Kill</TableCell>
<TableCell>Reset</TableCell>
<TableCell>Suspend</TableCell>
<TableCell>Resume</TableCell>
<TableCell>Screenshot</TableCell>
<TableCell>VNC token</TableCell>
<TableCell align="center">Get state</TableCell>
<TableCell align="center">Start</TableCell>
<TableCell align="center">Shutdown</TableCell>
<TableCell align="center">Kill</TableCell>
<TableCell align="center">Reset</TableCell>
<TableCell align="center">Suspend</TableCell>
<TableCell align="center">Resume</TableCell>
<TableCell align="center">Screenshot</TableCell>
<TableCell align="center">VNC token</TableCell>
</TableRow>
</TableHead>
<TableBody>
@ -236,6 +236,152 @@ export function TokenRightsEditor(p: {
</TableBody>
</Table>
</RightsSection>
{/* Networks */}
<RightsSection label="Networks">
<RouteRight
{...p}
right={{ verb: "POST", path: "/api/network/create" }}
label="Create a new network"
/>
<RouteRight
{...p}
right={{ verb: "GET", path: "/api/network/list" }}
label="Get list of networks"
/>
</RightsSection>
{/* Networks management */}
<RightsSection label="Networks management">
<Table size="small">
<TableHead>
<TableRow>
<TableCell>Network name</TableCell>
<TableCell align="center">Get definition</TableCell>
<TableCell align="center">Update</TableCell>
<TableCell align="center">Delete</TableCell>
<TableCell align="center">Get XML definition</TableCell>
<TableCell align="center">Get autostart</TableCell>
<TableCell align="center">Set autostart</TableCell>
<TableCell align="center">Get status</TableCell>
<TableCell align="center">Start</TableCell>
<TableCell align="center">Stop</TableCell>
</TableRow>
</TableHead>
<TableBody>
{/* All networks operations */}
<TableRow hover>
<TableCell>
<i>All</i>
</TableCell>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "PUT", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "DELETE", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*/src" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*/autostart" }}
/>
<CellRight
{...p}
right={{ verb: "PUT", path: "/api/network/*/autostart" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*/status" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*/start" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: "/api/network/*/stop" }}
/>
</TableRow>
{/* Per network operations */}
{p.networks.map((v, n) => (
<TableRow hover key={n}>
<TableCell>{v.name}</TableCell>
<CellRight
{...p}
right={{ verb: "GET", path: `/api/network/${v.uuid}` }}
parent={{ verb: "GET", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "PUT", path: `/api/network/${v.uuid}` }}
parent={{ verb: "PUT", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "DELETE", path: `/api/network/${v.uuid}` }}
parent={{ verb: "DELETE", path: "/api/network/*" }}
/>
<CellRight
{...p}
right={{ verb: "GET", path: `/api/network/${v.uuid}/src` }}
parent={{ verb: "GET", path: "/api/network/*/src" }}
/>
<CellRight
{...p}
right={{
verb: "GET",
path: `/api/network/${v.uuid}/autostart`,
}}
parent={{ verb: "GET", path: "/api/network/*/autostart" }}
/>
<CellRight
{...p}
right={{
verb: "PUT",
path: `/api/network/${v.uuid}/autostart`,
}}
parent={{ verb: "PUT", path: "/api/network/*/autostart" }}
/>
<CellRight
{...p}
right={{
verb: "GET",
path: `/api/network/${v.uuid}/status`,
}}
parent={{ verb: "GET", path: "/api/network/*/status" }}
/>
<CellRight
{...p}
right={{
verb: "GET",
path: `/api/network/${v.uuid}/start`,
}}
parent={{ verb: "GET", path: "/api/network/*/start" }}
/>
<CellRight
{...p}
right={{
verb: "GET",
path: `/api/network/${v.uuid}/stop`,
}}
parent={{ verb: "GET", path: "/api/network/*/stop" }}
/>
</TableRow>
))}
</TableBody>
</Table>
</RightsSection>
{/* ISO files */}
<RightsSection label="ISO files">
<RouteRight
@ -365,6 +511,7 @@ function RouteRight(p: RightOpts): React.ReactElement {
},
}}
>
{p.label ? (
<FormControlLabel
control={
<Checkbox
@ -375,6 +522,15 @@ function RouteRight(p: RightOpts): React.ReactElement {
}
label={p.label}
/>
) : (
<span>
<Checkbox
checked={activated || parentActivated}
disabled={!p.editable || parentActivated}
onChange={(_e, a) => toggle(a)}
/>
</span>
)}
</Tooltip>
</div>
);