Skip to content

Commit 1d88bb4

Browse files
adfostdvaldiviaAdam Staffordbexsoft
authored
Disable create service account button if no policy (#1006)
* disable button if no policies * merge fix * finding group policies * fixing style Co-authored-by: Daniel Valdivia <[email protected]> Co-authored-by: Adam Stafford <[email protected]> Co-authored-by: Alex <[email protected]>
1 parent 13cf3e6 commit 1d88bb4

File tree

6 files changed

+43
-3
lines changed

6 files changed

+43
-3
lines changed

models/user.go

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

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ const UserDetails = ({ classes, match }: IUserDetailsProps) => {
151151
const [changeUserPasswordModalOpen, setChangeUserPasswordModalOpen] =
152152
useState<boolean>(false);
153153
const [deleteOpen, setDeleteOpen] = useState<boolean>(false);
154+
const [hasPolicy, setHasPolicy] = useState<boolean>(false);
154155

155156
const userName = match.params["userName"];
156157

@@ -188,6 +189,7 @@ const UserDetails = ({ classes, match }: IUserDetailsProps) => {
188189
}
189190
setCurrentPolicies(currentPolicies);
190191
setEnabled(res.status === "enabled");
192+
setHasPolicy(res.hasPolicy)
191193
setLoading(false);
192194
})
193195
.catch((err: ErrorResponseHandler) => {
@@ -382,7 +384,7 @@ const UserDetails = ({ classes, match }: IUserDetailsProps) => {
382384
/>
383385
</TabPanel>
384386
<TabPanel index={1} value={curTab}>
385-
<UserServiceAccountsPanel user={userName} classes={classes} />
387+
<UserServiceAccountsPanel user={userName} classes={classes} hasPolicy={hasPolicy} />
386388
</TabPanel>
387389
<TabPanel index={2} value={curTab}>
388390
<div className={classes.actionsTray}>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ interface IUserServiceAccountsProps {
3838
classes: any;
3939
user: string;
4040
setErrorSnackMessage: typeof setErrorSnackMessage;
41+
hasPolicy: boolean;
4142
}
4243

4344
const styles = (theme: Theme) =>
@@ -53,6 +54,7 @@ const UserServiceAccountsPanel = ({
5354
classes,
5455
user,
5556
setErrorSnackMessage,
57+
hasPolicy,
5658
}: IUserServiceAccountsProps) => {
5759
const [records, setRecords] = useState<string[]>([]);
5860
const [loading, setLoading] = useState<boolean>(false);
@@ -75,7 +77,6 @@ const UserServiceAccountsPanel = ({
7577
.invoke("GET", `/api/v1/user/${user}/service-accounts`)
7678
.then((res: string[]) => {
7779
const serviceAccounts = res.sort(stringSort);
78-
7980
setLoading(false);
8081
setRecords(serviceAccounts);
8182
})
@@ -169,6 +170,7 @@ const UserServiceAccountsPanel = ({
169170
setAddScreenOpen(true);
170171
setSelectedServiceAccount(null);
171172
}}
173+
disabled={!hasPolicy}
172174
>
173175
Create service account
174176
</Button>

restapi/admin_users.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,35 @@ func getUserInfoResponse(session *models.Principal, params admin_api.GetUserInfo
281281
return nil, prepareError(err)
282282
}
283283

284+
var policies []string
285+
if user.PolicyName == "" {
286+
policies = []string{}
287+
} else {
288+
policies = strings.Split(user.PolicyName, ",")
289+
}
290+
291+
hasPolicy := true
292+
293+
if len(policies) == 0 {
294+
hasPolicy = false
295+
for i := 0; i < len(user.MemberOf); i++ {
296+
group, err := adminClient.getGroupDescription(ctx, user.MemberOf[i])
297+
if err != nil {
298+
continue
299+
}
300+
if group.Policy != "" {
301+
hasPolicy = true
302+
break
303+
}
304+
}
305+
}
306+
284307
userInformation := &models.User{
285308
AccessKey: params.Name,
286309
MemberOf: user.MemberOf,
287-
Policy: strings.Split(user.PolicyName, ","),
310+
Policy: policies,
288311
Status: string(user.Status),
312+
HasPolicy: hasPolicy,
289313
}
290314

291315
return userInformation, nil

restapi/embedded_spec.go

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

swagger-console.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2485,6 +2485,9 @@ definitions:
24852485
type: string
24862486
status:
24872487
type: string
2488+
hasPolicy:
2489+
type: boolean
2490+
24882491
listUsersResponse:
24892492
type: object
24902493
properties:

0 commit comments

Comments
 (0)