Skip to content

Commit 296e4ff

Browse files
authored
Set Policy For Groups (#140)
1 parent 20749d2 commit 296e4ff

File tree

7 files changed

+221
-161
lines changed

7 files changed

+221
-161
lines changed

portal-ui/bindata_assetfs.go

Lines changed: 139 additions & 116 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/src/common/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export const getBytes = (value: string, unit: string) => {
7070
const vl: number = parseFloat(value);
7171
const powFactor = units.findIndex((element) => element === unit);
7272

73-
if(powFactor == -1) {
73+
if (powFactor == -1) {
7474
return 0;
7575
}
7676
const factor = Math.pow(1024, powFactor);

portal-ui/src/screens/Console/Buckets/ViewBucket/SetAccessPolicy.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class SetAccessPolicy extends React.Component<
9090
componentDidMount() {
9191
const { actualPolicy } = this.props;
9292

93-
this.setState({accessPolicy: actualPolicy});
93+
this.setState({ accessPolicy: actualPolicy });
9494
}
9595

9696
render() {

portal-ui/src/screens/Console/Buckets/ViewBucket/ViewBucket.tsx

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import Grid from "@material-ui/core/Grid";
2222
import Tabs from "@material-ui/core/Tabs";
2323
import Tab from "@material-ui/core/Tab";
2424
import api from "../../../../common/api";
25-
import {BucketEvent, BucketEventList, BucketInfo, BucketList} from "../types";
25+
import { BucketEvent, BucketEventList, BucketInfo, BucketList } from "../types";
2626
import { Button } from "@material-ui/core";
2727
import Typography from "@material-ui/core/Typography";
2828
import SetAccessPolicy from "./SetAccessPolicy";
@@ -31,7 +31,7 @@ import { CreateIcon } from "../../../../icons";
3131
import AddEvent from "./AddEvent";
3232
import DeleteEvent from "./DeleteEvent";
3333
import TableWrapper from "../../Common/TableWrapper/TableWrapper";
34-
import {niceBytes} from "../../../../common/utils";
34+
import { niceBytes } from "../../../../common/utils";
3535

3636
const styles = (theme: Theme) =>
3737
createStyles({
@@ -111,11 +111,11 @@ const styles = (theme: Theme) =>
111111
},
112112
headerContainer: {
113113
display: "flex",
114-
justifyContent: "space-between"
114+
justifyContent: "space-between",
115115
},
116116
capitalizeFirst: {
117-
textTransform: "capitalize"
118-
}
117+
textTransform: "capitalize",
118+
},
119119
});
120120

121121
interface IViewBucketProps {
@@ -199,19 +199,25 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
199199

200200
this.setState({ loadingSize: true }, () => {
201201
api
202-
.invoke("GET", `/api/v1/buckets`)
203-
.then((res: BucketList) => {
204-
const resBuckets = get(res, "buckets", []);
202+
.invoke("GET", `/api/v1/buckets`)
203+
.then((res: BucketList) => {
204+
const resBuckets = get(res, "buckets", []);
205205

206-
const bucketInfo = resBuckets.find(bucket => bucket.name === bucketName) ;
206+
const bucketInfo = resBuckets.find(
207+
(bucket) => bucket.name === bucketName
208+
);
207209

208-
const size = get(bucketInfo, "size", "0");
210+
const size = get(bucketInfo, "size", "0");
209211

210-
this.setState({ loadingSize: false, errorSize: "", bucketSize: size });
211-
})
212-
.catch((err: any) => {
213-
this.setState({ loadingSize: false, errorSize: err });
212+
this.setState({
213+
loadingSize: false,
214+
errorSize: "",
215+
bucketSize: size,
214216
});
217+
})
218+
.catch((err: any) => {
219+
this.setState({ loadingSize: false, errorSize: err });
220+
});
215221
});
216222
}
217223

@@ -330,26 +336,30 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
330336
</Grid>
331337
<Grid item xs={12}>
332338
<div className={classes.headerContainer}>
333-
<div><Paper className={classes.paperContainer}>
334-
<div className={classes.gridContainer}>
335-
<div>Access Policy:</div>
336-
<div className={classes.capitalizeFirst}>{accessPolicy.toLowerCase()}</div>
337-
<div>Reported Usage:</div>
338-
<div>{niceBytes(bucketSize)}</div>
339-
</div>
340-
</Paper></div>
339+
<div>
340+
<Paper className={classes.paperContainer}>
341+
<div className={classes.gridContainer}>
342+
<div>Access Policy:</div>
343+
<div className={classes.capitalizeFirst}>
344+
{accessPolicy.toLowerCase()}
345+
</div>
346+
<div>Reported Usage:</div>
347+
<div>{niceBytes(bucketSize)}</div>
348+
</div>
349+
</Paper>
350+
</div>
341351
<div className={classes.masterActions}>
342352
<div>
343353
<Button
344-
variant="contained"
345-
color="primary"
346-
fullWidth
347-
size="medium"
348-
onClick={() => {
349-
this.setState({
350-
setAccessPolicyScreenOpen: true,
351-
});
352-
}}
354+
variant="contained"
355+
color="primary"
356+
fullWidth
357+
size="medium"
358+
onClick={() => {
359+
this.setState({
360+
setAccessPolicyScreenOpen: true,
361+
});
362+
}}
353363
>
354364
Change Access Policy
355365
</Button>
@@ -362,10 +372,10 @@ class ViewBucket extends React.Component<IViewBucketProps, IViewBucketState> {
362372
</Grid>
363373
<Grid item xs={6}>
364374
<Tabs
365-
value={0}
366-
indicatorColor="primary"
367-
textColor="primary"
368-
aria-label="cluster-tabs"
375+
value={0}
376+
indicatorColor="primary"
377+
textColor="primary"
378+
aria-label="cluster-tabs"
369379
>
370380
<Tab label="Events" />
371381
</Tabs>

portal-ui/src/screens/Console/Groups/Groups.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { stringSort } from "../../../utils/sortFunctions";
3030
import AddGroup from "../Groups/AddGroup";
3131
import DeleteGroup from "./DeleteGroup";
3232
import TableWrapper from "../Common/TableWrapper/TableWrapper";
33+
import SetPolicy from "../Policies/SetPolicy";
3334

3435
interface IGroupsProps {
3536
classes: any;
@@ -96,6 +97,7 @@ const Groups = ({ classes }: IGroupsProps) => {
9697
const [page, setPage] = useState<number>(0);
9798
const [error, setError] = useState<string>("");
9899
const [filter, setFilter] = useState<string>("");
100+
const [policyOpen, setPolicyOpen] = useState<boolean>(false);
99101

100102
const handleChangePage = (event: unknown, newPage: number) => {
101103
setPage(newPage);
@@ -176,8 +178,14 @@ const Groups = ({ classes }: IGroupsProps) => {
176178
setSelectedGroup(group);
177179
};
178180

181+
const setPolicyAction = (selectionElement: any): void => {
182+
setPolicyOpen(true);
183+
setSelectedGroup(selectionElement);
184+
};
185+
179186
const tableActions = [
180187
{ type: "view", onClick: viewAction },
188+
{ type: "description", onClick: setPolicyAction },
181189
{ type: "delete", onClick: deleteAction },
182190
];
183191

@@ -197,6 +205,16 @@ const Groups = ({ classes }: IGroupsProps) => {
197205
closeDeleteModalAndRefresh={closeDeleteModalAndRefresh}
198206
/>
199207
)}
208+
{setPolicyOpen && (
209+
<SetPolicy
210+
open={policyOpen}
211+
selectedGroup={selectedGroup}
212+
selectedUser={null}
213+
closeModalAndRefresh={() => {
214+
setPolicyOpen(false);
215+
}}
216+
/>
217+
)}
200218
<Grid container>
201219
<Grid item xs={12}>
202220
<Typography variant="h6">Groups</Typography>

portal-ui/src/screens/Console/Policies/SetPolicy.tsx

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ import ModalWrapper from "../Common/ModalWrapper/ModalWrapper";
3434
import { Policy, PolicyList } from "./types";
3535
import api from "../../../common/api";
3636
import { policySort } from "../../../utils/sortFunctions";
37+
import { Group } from "../Groups/types";
3738

3839
interface ISetPolicyProps {
3940
classes: any;
4041
closeModalAndRefresh: () => void;
4142
selectedUser: User | null;
43+
selectedGroup: string | null;
4244
open: boolean;
4345
}
4446

@@ -54,6 +56,7 @@ const SetPolicy = ({
5456
classes,
5557
closeModalAndRefresh,
5658
selectedUser,
59+
selectedGroup,
5760
open,
5861
}: ISetPolicyProps) => {
5962
//Local States
@@ -79,15 +82,23 @@ const SetPolicy = ({
7982
};
8083

8184
const setPolicyAction = (policyName: string) => {
82-
if (selectedUser === null) {
83-
return;
85+
let entity = "user";
86+
let value = null;
87+
if (selectedGroup !== null) {
88+
entity = "group";
89+
value = selectedGroup;
90+
} else {
91+
if (selectedUser !== null) {
92+
value = selectedUser.accessKey;
93+
}
8494
}
95+
8596
setLoading(true);
8697

8798
api
8899
.invoke("PUT", `/api/v1/set-policy/${policyName}`, {
89-
entityName: selectedUser!.accessKey,
90-
entityType: "user",
100+
entityName: value,
101+
entityType: entity,
91102
})
92103
.then((res: any) => {
93104
setLoading(false);
@@ -102,11 +113,9 @@ const SetPolicy = ({
102113

103114
useEffect(() => {
104115
if (open) {
105-
console.log("im open");
106-
console.log(selectedUser);
107116
fetchRecords();
108117
}
109-
}, []);
118+
}, [open]);
110119

111120
return (
112121
<ModalWrapper

portal-ui/src/screens/Console/Users/Users.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,6 @@ class Users extends React.Component<IUsersProps, IUsersState> {
249249
};
250250

251251
const setPolicyAction = (selectionElement: any): void => {
252-
console.log("click");
253252
this.setState({
254253
setPolicyOpen: true,
255254
selectedUser: selectionElement,
@@ -284,6 +283,7 @@ class Users extends React.Component<IUsersProps, IUsersState> {
284283
<SetPolicy
285284
open={setPolicyOpen}
286285
selectedUser={selectedUser}
286+
selectedGroup={null}
287287
closeModalAndRefresh={() => {
288288
this.setState({ setPolicyOpen: false });
289289
}}

0 commit comments

Comments
 (0)