mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
feat: extend managed accounts for get-account api (#1068)
* feat: add get-extend-account api * feat: extend managed accounts for get-account api * fix go-linter err * Use GetApplicationsByOrganizationName
This commit is contained in:
parent
2394c8e2b4
commit
8da50b7893
@ -269,6 +269,11 @@ func (c *ApiController) GetAccount() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
managedAccounts := c.Input().Get("managedAccounts")
|
||||||
|
if managedAccounts == "1" {
|
||||||
|
user = object.ExtendManagedAccountsWithUser(user)
|
||||||
|
}
|
||||||
|
|
||||||
organization := object.GetMaskedOrganization(object.GetOrganizationByUser(user))
|
organization := object.GetMaskedOrganization(object.GetOrganizationByUser(user))
|
||||||
resp := Response{
|
resp := Response{
|
||||||
Status: "ok",
|
Status: "ok",
|
||||||
|
@ -362,3 +362,34 @@ func IsAllowOrigin(origin string) bool {
|
|||||||
|
|
||||||
return allowOrigin
|
return allowOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getApplicationMap(organization string) map[string]*Application {
|
||||||
|
applications := GetApplicationsByOrganizationName("admin", organization)
|
||||||
|
|
||||||
|
applicationMap := make(map[string]*Application)
|
||||||
|
for _, application := range applications {
|
||||||
|
applicationMap[application.Name] = application
|
||||||
|
}
|
||||||
|
|
||||||
|
return applicationMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExtendManagedAccountsWithUser(user *User) *User {
|
||||||
|
if user.ManagedAccounts == nil || len(user.ManagedAccounts) == 0 {
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
|
||||||
|
applicationMap := getApplicationMap(user.Owner)
|
||||||
|
|
||||||
|
var managedAccounts []ManagedAccount
|
||||||
|
for _, managedAccount := range user.ManagedAccounts {
|
||||||
|
application := applicationMap[managedAccount.Application]
|
||||||
|
if application != nil {
|
||||||
|
managedAccount.SigninUrl = application.SigninUrl
|
||||||
|
managedAccounts = append(managedAccounts, managedAccount)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
user.ManagedAccounts = managedAccounts
|
||||||
|
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
@ -38,7 +38,7 @@ class ManagedAccountTable extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addRow(table) {
|
addRow(table) {
|
||||||
const row = {application: "", username: "", password: "", signinUrl: ""};
|
const row = {application: "", username: "", password: ""};
|
||||||
if (table === undefined || table === null) {
|
if (table === undefined || table === null) {
|
||||||
table = [];
|
table = [];
|
||||||
}
|
}
|
||||||
@ -69,16 +69,11 @@ class ManagedAccountTable extends React.Component {
|
|||||||
key: "application",
|
key: "application",
|
||||||
render: (text, record, index) => {
|
render: (text, record, index) => {
|
||||||
const items = this.props.applications;
|
const items = this.props.applications;
|
||||||
const signinUrlMap = new Map();
|
|
||||||
for (const application of items) {
|
|
||||||
signinUrlMap.set(application.name, application.signinUrl);
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<Select virtual={false} style={{width: "100%"}}
|
<Select virtual={false} style={{width: "100%"}}
|
||||||
value={text}
|
value={text}
|
||||||
onChange={value => {
|
onChange={value => {
|
||||||
this.updateField(table, index, "application", value);
|
this.updateField(table, index, "application", value);
|
||||||
this.updateField(table, index, "signinUrl", signinUrlMap.get(value));
|
|
||||||
}} >
|
}} >
|
||||||
{
|
{
|
||||||
items.map((item, index) => <Option key={index} value={item.name}>{item.name}</Option>)
|
items.map((item, index) => <Option key={index} value={item.name}>{item.name}</Option>)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user