fix(ldap): fixed syncing of email and name from ldap, fixes #2765
This commit is contained in:
@@ -68,6 +68,10 @@ func (a *ldapAuther) login(query *LoginUserQuery) error {
|
|||||||
if grafanaUser, err := a.getGrafanaUserFor(ldapUser); err != nil {
|
if grafanaUser, err := a.getGrafanaUserFor(ldapUser); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
|
// sync user details
|
||||||
|
if err := a.syncUserInfo(grafanaUser, ldapUser); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
// sync org roles
|
// sync org roles
|
||||||
if err := a.syncOrgRoles(grafanaUser, ldapUser); err != nil {
|
if err := a.syncOrgRoles(grafanaUser, ldapUser); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -122,6 +126,21 @@ func (a *ldapAuther) createGrafanaUser(ldapUser *ldapUserInfo) (*m.User, error)
|
|||||||
return &cmd.Result, nil
|
return &cmd.Result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *ldapAuther) syncUserInfo(user *m.User, ldapUser *ldapUserInfo) error {
|
||||||
|
var name = fmt.Sprintf("%s %s", ldapUser.FirstName, ldapUser.LastName)
|
||||||
|
if user.Email == ldapUser.Email && user.Name == name {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Info("Ldap: Syncing user info %s", ldapUser.Username)
|
||||||
|
updateCmd := m.UpdateUserCommand{}
|
||||||
|
updateCmd.UserId = user.Id
|
||||||
|
updateCmd.Login = user.Login
|
||||||
|
updateCmd.Email = ldapUser.Email
|
||||||
|
updateCmd.Name = fmt.Sprintf("%s %s", ldapUser.FirstName, ldapUser.LastName)
|
||||||
|
return bus.Dispatch(&updateCmd)
|
||||||
|
}
|
||||||
|
|
||||||
func (a *ldapAuther) syncOrgRoles(user *m.User, ldapUser *ldapUserInfo) error {
|
func (a *ldapAuther) syncOrgRoles(user *m.User, ldapUser *ldapUserInfo) error {
|
||||||
if len(a.server.LdapGroups) == 0 {
|
if len(a.server.LdapGroups) == 0 {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user