|
|
|
@ -1,8 +1,6 @@ |
|
|
|
|
package login |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"fmt" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/bus" |
|
|
|
|
"github.com/grafana/grafana/pkg/log" |
|
|
|
|
m "github.com/grafana/grafana/pkg/models" |
|
|
|
@ -24,13 +22,13 @@ func UpsertUser(cmd *m.UpsertUserCommand) error { |
|
|
|
|
Login: extUser.Login, |
|
|
|
|
} |
|
|
|
|
err := bus.Dispatch(userQuery) |
|
|
|
|
if err != nil { |
|
|
|
|
if err != m.ErrUserNotFound { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
if err != m.ErrUserNotFound && err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
if !cmd.SignupAllowed { |
|
|
|
|
log.Warn(fmt.Sprintf("Not allowing %s login, user not found in internal user database and allow signup = false", extUser.AuthModule)) |
|
|
|
|
log.Warn("Not allowing %s login, user not found in internal user database and allow signup = false", extUser.AuthModule) |
|
|
|
|
return ErrInvalidCredentials |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -58,10 +56,10 @@ func UpsertUser(cmd *m.UpsertUserCommand) error { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
cmd.Result = userQuery.Result |
|
|
|
|
|
|
|
|
|
// sync user info
|
|
|
|
|
err = updateUser(cmd.Result, extUser) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
@ -90,33 +88,32 @@ func updateUser(user *m.User, extUser *m.ExternalUserInfo) error { |
|
|
|
|
updateCmd := &m.UpdateUserCommand{ |
|
|
|
|
UserId: user.Id, |
|
|
|
|
} |
|
|
|
|
needsUpdate := false |
|
|
|
|
|
|
|
|
|
needsUpdate := false |
|
|
|
|
if extUser.Login != "" && extUser.Login != user.Login { |
|
|
|
|
updateCmd.Login = extUser.Login |
|
|
|
|
user.Login = extUser.Login |
|
|
|
|
needsUpdate = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if extUser.Email != "" && extUser.Email != user.Email { |
|
|
|
|
updateCmd.Email = extUser.Email |
|
|
|
|
user.Email = extUser.Email |
|
|
|
|
needsUpdate = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if extUser.Name != "" && extUser.Name != user.Name { |
|
|
|
|
updateCmd.Name = extUser.Name |
|
|
|
|
user.Name = extUser.Name |
|
|
|
|
needsUpdate = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if needsUpdate { |
|
|
|
|
log.Debug("Syncing user info", "id", user.Id, "update", updateCmd) |
|
|
|
|
err := bus.Dispatch(updateCmd) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
if !needsUpdate { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
log.Debug("Syncing user info", "id", user.Id, "update", updateCmd) |
|
|
|
|
return bus.Dispatch(updateCmd) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func syncOrgRoles(user *m.User, extUser *m.ExternalUserInfo) error { |
|
|
|
@ -176,13 +173,11 @@ func syncOrgRoles(user *m.User, extUser *m.ExternalUserInfo) error { |
|
|
|
|
user.OrgId = orgId |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
err := bus.Dispatch(&m.SetUsingOrgCommand{ |
|
|
|
|
|
|
|
|
|
return bus.Dispatch(&m.SetUsingOrgCommand{ |
|
|
|
|
UserId: user.Id, |
|
|
|
|
OrgId: user.OrgId, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|