Skip to content

Commit 7fdc02a

Browse files
authored
Returned multi user list in tenant created modal (#718)
Signed-off-by: Benjamin Perez <[email protected]>
1 parent 29e1af3 commit 7fdc02a

File tree

8 files changed

+203
-99
lines changed

8 files changed

+203
-99
lines changed

models/create_tenant_response.go

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

models/tenant_response_item.go

Lines changed: 63 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/Common/CredentialsPrompt/CredentialsPrompt.tsx

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ const styles = (theme: Theme) =>
3131
buttonContainer: {
3232
textAlign: "right",
3333
},
34+
credentialsPanel: {
35+
overflowY: "auto",
36+
maxHeight: 350,
37+
}
3438
});
3539

3640
interface ICredentialsPromptProps {
@@ -84,16 +88,31 @@ const CredentialsPrompt = ({
8488
A new {entity} has been created with the following details:
8589
{consoleCreds && (
8690
<React.Fragment>
87-
<Grid item xs={12}>
91+
<Grid item xs={12} className={classes.credentialsPanel}>
8892
<strong>Console Credentials</strong>
89-
<ul>
90-
<li>
91-
<b>Access Key:</b> {consoleCreds.accessKey}
92-
</li>
93-
<li>
94-
<b>Secret Key:</b> {consoleCreds.secretKey}
95-
</li>
96-
</ul>
93+
{Array.isArray(consoleCreds) &&
94+
consoleCreds.map((credentialsPair, index) => {
95+
return (
96+
<ul key={`creds-item-${index.toString()}`}>
97+
<li>
98+
<b>Access Key:</b> {credentialsPair.accessKey}
99+
</li>
100+
<li>
101+
<b>Secret Key:</b> {credentialsPair.secretKey}
102+
</li>
103+
</ul>
104+
);
105+
})}
106+
{!Array.isArray(consoleCreds) && (
107+
<ul>
108+
<li>
109+
<b>Access Key:</b> {consoleCreds.accessKey}
110+
</li>
111+
<li>
112+
<b>Secret Key:</b> {consoleCreds.secretKey}
113+
</li>
114+
</ul>
115+
)}
97116
</Grid>
98117
</React.Fragment>
99118
)}
@@ -112,12 +131,27 @@ const CredentialsPrompt = ({
112131
let consoleExtras = {};
113132

114133
if (consoleCreds) {
115-
consoleExtras = {
116-
console: {
117-
access_key: consoleCreds.accessKey,
118-
secret_key: consoleCreds.secretKey,
119-
},
120-
};
134+
if (!Array.isArray(consoleCreds)) {
135+
consoleExtras = {
136+
console: [
137+
{
138+
access_key: consoleCreds.accessKey,
139+
secret_key: consoleCreds.secretKey,
140+
},
141+
],
142+
};
143+
} else {
144+
const cCreds = consoleCreds.map((itemMap) => {
145+
return {
146+
access_key: itemMap.accessKey,
147+
secret_key: itemMap.secretKey,
148+
}
149+
});
150+
151+
consoleExtras = {
152+
console: [...cCreds],
153+
};
154+
}
121155
}
122156

123157
download(

portal-ui/src/screens/Console/Common/CredentialsPrompt/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
export interface NewServiceAccount {
18-
console?: ConsoleSA;
18+
console?: ConsoleSA | ConsoleSA[];
1919
accessKey?: string;
2020
secretKey?: string;
2121
}

portal-ui/src/screens/Console/Tenants/AddTenant/AddTenant.tsx

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
import React, { Fragment, useEffect, useState } from "react";
18+
import get from "lodash/get";
1819
import { connect } from "react-redux";
1920
import Grid from "@material-ui/core/Grid";
2021
import { LinearProgress } from "@material-ui/core";
@@ -512,13 +513,30 @@ const AddTenant = ({
512513
api
513514
.invoke("POST", `/api/v1/tenants`, dataSend)
514515
.then((res) => {
515-
const newSrvAcc: NewServiceAccount = {
516-
console: {
517-
accessKey: res.console.access_key,
518-
secretKey: res.console.secret_key,
519-
},
516+
const consoleSAList = get(res, "console", []);
517+
518+
let newSrvAcc: NewServiceAccount = {
519+
console: [],
520520
};
521521

522+
if (consoleSAList && Array.isArray(consoleSAList)) {
523+
const consoleItem = consoleSAList.map((consoleKey) => {
524+
return {
525+
accessKey: consoleKey.access_key,
526+
secretKey: consoleKey.secret_key,
527+
};
528+
});
529+
530+
newSrvAcc.console = consoleItem;
531+
} else {
532+
newSrvAcc = {
533+
console: {
534+
accessKey: res.console.access_key,
535+
secretKey: res.console.secret_key,
536+
},
537+
};
538+
}
539+
522540
setAddSending(false);
523541

524542
setShowNewCredentials(true);

restapi/admin_tenants.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,7 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create
767767
// optionals are set below
768768
var tenantUserAccessKey string
769769
var tenantUserSecretKey string
770+
keyElementEmpty := len(tenantReq.Idp.Keys) == 1 && (*tenantReq.Idp.Keys[0].AccessKey == "" && *tenantReq.Idp.Keys[0].SecretKey == "")
770771

771772
enableConsole := true
772773
if tenantReq.EnableConsole != nil && *tenantReq.EnableConsole {
@@ -775,7 +776,7 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create
775776

776777
if enableConsole {
777778
// provision initial user for tenant
778-
if !(len(tenantReq.Idp.Keys) > 0) {
779+
if len(tenantReq.Idp.Keys) == 0 || keyElementEmpty {
779780
tenantUserAccessKey = RandomCharString(16)
780781
tenantUserSecretKey = RandomCharString(32)
781782
consoleUserSecretName := fmt.Sprintf("%s-user-secret", tenantName)
@@ -1055,10 +1056,17 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create
10551056
response = &models.CreateTenantResponse{}
10561057
// Attach Console Credentials
10571058
if enableConsole {
1058-
response.Console = &models.CreateTenantResponseConsole{
1059-
AccessKey: tenantUserAccessKey,
1060-
SecretKey: tenantUserSecretKey,
1059+
var itemsToReturn []*models.TenantResponseItem
1060+
1061+
if len(tenantReq.Idp.Keys) == 0 || keyElementEmpty {
1062+
itemsToReturn = append(itemsToReturn, &models.TenantResponseItem{AccessKey: tenantUserAccessKey, SecretKey: tenantUserSecretKey})
1063+
} else { // IDP Keys
1064+
for _, item := range tenantReq.Idp.Keys {
1065+
itemsToReturn = append(itemsToReturn, &models.TenantResponseItem{AccessKey: *item.AccessKey, SecretKey: *item.SecretKey})
1066+
}
10611067
}
1068+
1069+
response.Console = itemsToReturn
10621070
}
10631071
return response, nil
10641072
}

0 commit comments

Comments
 (0)