Browse Source

fix(ldap): fixed syncing of email and name from ldap, fixes #2765

Torkel Ödegaard 10 years ago
parent
commit
feae4c6c8b
1 changed files with 19 additions and 0 deletions
  1. 19 0
      pkg/login/ldap.go

+ 19 - 0
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