diff --git a/pkg/login/ldap.go b/pkg/login/ldap.go index 6305df6726c..1a779cc7017 100644 --- a/pkg/login/ldap.go +++ b/pkg/login/ldap.go @@ -68,6 +68,10 @@ func (a *ldapAuther) login(query *LoginUserQuery) error { if grafanaUser, err := a.getGrafanaUserFor(ldapUser); err != nil { return err } else { + // sync user details + if err := a.syncUserInfo(grafanaUser, ldapUser); err != nil { + return err + } // sync org roles if err := a.syncOrgRoles(grafanaUser, ldapUser); err != nil { return err @@ -122,6 +126,21 @@ func (a *ldapAuther) createGrafanaUser(ldapUser *ldapUserInfo) (*m.User, error) 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 { if len(a.server.LdapGroups) == 0 { return nil