Skip to content

Commit

Permalink
Merge pull request #4905 from reasonerjt/fix-uaa-admin-1.4
Browse files Browse the repository at this point in the history
Sync user info after UAA user is logged in - cherrypick to 1.4 branch
  • Loading branch information
stone committed May 10, 2018
2 parents bfda7c9 + 35b354a commit f845ba1
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 13 deletions.
17 changes: 9 additions & 8 deletions src/ui/auth/uaa/uaa.go
Expand Up @@ -68,15 +68,19 @@ func (u *Auth) OnBoardUser(user *models.User) error {
if len(user.Password) == 0 {
user.Password = "1234567ab"
}
fillEmailRealName(user)
user.Comment = "From UAA"
return dao.OnBoardUser(user)
}

func fillEmailRealName(user *models.User) {
if len(user.Realname) == 0 {
user.Realname = user.Username
}
if len(user.Email) == 0 {
//TODO: handle the case when user.Username itself is an email address.
user.Email = user.Username + "@uaa.placeholder"
}
user.Comment = "From UAA"
return dao.OnBoardUser(user)
}

// PostAuthenticate will check if user exists in DB, if not on Board user, if he does, update the profile.
Expand All @@ -88,12 +92,9 @@ func (u *Auth) PostAuthenticate(user *models.User) error {
if dbUser == nil {
return u.OnBoardUser(user)
}
if user.Email != "" {
dbUser.Email = user.Email
}
if user.Realname != "" {
dbUser.Realname = user.Realname
}
user.UserID = dbUser.UserID
user.HasAdminRole = dbUser.HasAdminRole
fillEmailRealName(user)
if err2 := dao.ChangeUserProfile(*user, "Email", "Realname"); err2 != nil {
log.Warningf("Failed to update user profile, user: %s, error: %v", user.Username, err2)
}
Expand Down
24 changes: 19 additions & 5 deletions src/ui/auth/uaa/uaa_test.go
Expand Up @@ -166,19 +166,33 @@ func TestPostAuthenticate(t *testing.T) {
Username: "test",
}
err := auth.PostAuthenticate(um)
//need a new user model to simulate a login case...
um2 := &models.User{
Username: "test",
}
assert.Nil(err)
user, _ := dao.GetUser(models.User{Username: "test"})
assert.Equal("test@uaa.placeholder", user.Email)
um.Email = "newEmail@new.com"
um.Realname = "newName"
err2 := auth.PostAuthenticate(um)
um2.Email = "newEmail@new.com"
um2.Realname = "newName"
err2 := auth.PostAuthenticate(um2)
assert.Equal(user.UserID, um2.UserID)
assert.Nil(err2)
user2, _ := dao.GetUser(models.User{Username: "test"})
assert.Equal("newEmail@new.com", user2.Email)
assert.Equal("newName", user2.Realname)
err3 := dao.ClearTable(models.UserTable)
//need a new user model to simulate a login case...
um3 := &models.User{
Username: "test",
}
err3 := auth.PostAuthenticate(um3)
assert.Nil(err3)

user3, _ := dao.GetUser(models.User{Username: "test"})
assert.Equal(user3.UserID, um3.UserID)
assert.Equal("test@uaa.placeholder", user3.Email)
assert.Equal("test", user3.Realname)
err4 := dao.ClearTable(models.UserTable)
assert.Nil(err4)
}

func TestSearchUser(t *testing.T) {
Expand Down

0 comments on commit f845ba1

Please sign in to comment.