diff --git a/pkg/models/org_user.go b/pkg/models/org_user.go index f91c28f0b58..e08a9352ee3 100644 --- a/pkg/models/org_user.go +++ b/pkg/models/org_user.go @@ -1,9 +1,9 @@ package models import ( - "encoding/json" "errors" "fmt" + "strings" "time" ) @@ -61,18 +61,14 @@ func (r RoleType) Parents() []RoleType { } } -func (r *RoleType) UnmarshalJSON(data []byte) error { - var str string - err := json.Unmarshal(data, &str) - if err != nil { - return err - } +func (r *RoleType) UnmarshalText(data []byte) error { + // make sure "viewer" and "Viewer" are both correct + str := strings.Title(string(data)) *r = RoleType(str) - if !r.IsValid() { if (*r) != "" { - return fmt.Errorf("JSON validation error: invalid role value: %s", *r) + return fmt.Errorf("invalid role value: %s", *r) } *r = ROLE_VIEWER diff --git a/pkg/services/ldap/settings.go b/pkg/services/ldap/settings.go index 9ed021519ab..7ba504021dd 100644 --- a/pkg/services/ldap/settings.go +++ b/pkg/services/ldap/settings.go @@ -153,6 +153,10 @@ func readConfig(configFile string) (*Config, error) { } for _, groupMap := range server.Groups { + if groupMap.OrgRole == "" && groupMap.IsGrafanaAdmin == nil { + return nil, fmt.Errorf("LDAP group mapping: organization role or grafana admin status is required") + } + if groupMap.OrgId == 0 { groupMap.OrgId = 1 } diff --git a/public/app/features/admin/ldap/LdapUserGroups.tsx b/public/app/features/admin/ldap/LdapUserGroups.tsx index 0fa361acbb5..d2d0d80b08f 100644 --- a/public/app/features/admin/ldap/LdapUserGroups.tsx +++ b/public/app/features/admin/ldap/LdapUserGroups.tsx @@ -33,31 +33,21 @@ export const LdapUserGroups: FC = ({ groups, showAttributeMapping }) => { {items.map((group, index) => { return ( - {showAttributeMapping && ( - <> - {group.groupDN} - {!group.orgRole && ( - <> - - - - No match - - - - - - - - - )} - - )} - {group.orgName && ( - <> - {group.orgName} - {group.orgRole} - + {showAttributeMapping && {group.groupDN}} + {group.orgName && group.orgRole ? {group.orgName} : } + {group.orgRole ? ( + {group.orgRole} + ) : ( + + + No match + + + + + + + )} );