Unverified Commit f845ba12 authored by stone's avatar stone Committed by GitHub
Browse files

Merge pull request #4905 from reasonerjt/fix-uaa-admin-1.4

Sync user info after UAA user is logged in - cherrypick to 1.4 branch
parents bfda7c99 35b354ab
Showing with 28 additions and 13 deletions
+28 -13
...@@ -68,6 +68,12 @@ func (u *Auth) OnBoardUser(user *models.User) error { ...@@ -68,6 +68,12 @@ func (u *Auth) OnBoardUser(user *models.User) error {
if len(user.Password) == 0 { if len(user.Password) == 0 {
user.Password = "1234567ab" user.Password = "1234567ab"
} }
fillEmailRealName(user)
user.Comment = "From UAA"
return dao.OnBoardUser(user)
}
func fillEmailRealName(user *models.User) {
if len(user.Realname) == 0 { if len(user.Realname) == 0 {
user.Realname = user.Username user.Realname = user.Username
} }
...@@ -75,8 +81,6 @@ func (u *Auth) OnBoardUser(user *models.User) error { ...@@ -75,8 +81,6 @@ func (u *Auth) OnBoardUser(user *models.User) error {
//TODO: handle the case when user.Username itself is an email address. //TODO: handle the case when user.Username itself is an email address.
user.Email = user.Username + "@uaa.placeholder" 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. // PostAuthenticate will check if user exists in DB, if not on Board user, if he does, update the profile.
...@@ -88,12 +92,9 @@ func (u *Auth) PostAuthenticate(user *models.User) error { ...@@ -88,12 +92,9 @@ func (u *Auth) PostAuthenticate(user *models.User) error {
if dbUser == nil { if dbUser == nil {
return u.OnBoardUser(user) return u.OnBoardUser(user)
} }
if user.Email != "" { user.UserID = dbUser.UserID
dbUser.Email = user.Email user.HasAdminRole = dbUser.HasAdminRole
} fillEmailRealName(user)
if user.Realname != "" {
dbUser.Realname = user.Realname
}
if err2 := dao.ChangeUserProfile(*user, "Email", "Realname"); err2 != nil { if err2 := dao.ChangeUserProfile(*user, "Email", "Realname"); err2 != nil {
log.Warningf("Failed to update user profile, user: %s, error: %v", user.Username, err2) log.Warningf("Failed to update user profile, user: %s, error: %v", user.Username, err2)
} }
......
...@@ -166,19 +166,33 @@ func TestPostAuthenticate(t *testing.T) { ...@@ -166,19 +166,33 @@ func TestPostAuthenticate(t *testing.T) {
Username: "test", Username: "test",
} }
err := auth.PostAuthenticate(um) err := auth.PostAuthenticate(um)
//need a new user model to simulate a login case...
um2 := &models.User{
Username: "test",
}
assert.Nil(err) assert.Nil(err)
user, _ := dao.GetUser(models.User{Username: "test"}) user, _ := dao.GetUser(models.User{Username: "test"})
assert.Equal("test@uaa.placeholder", user.Email) assert.Equal("test@uaa.placeholder", user.Email)
um.Email = "newEmail@new.com" um2.Email = "newEmail@new.com"
um.Realname = "newName" um2.Realname = "newName"
err2 := auth.PostAuthenticate(um) err2 := auth.PostAuthenticate(um2)
assert.Equal(user.UserID, um2.UserID)
assert.Nil(err2) assert.Nil(err2)
user2, _ := dao.GetUser(models.User{Username: "test"}) user2, _ := dao.GetUser(models.User{Username: "test"})
assert.Equal("newEmail@new.com", user2.Email) assert.Equal("newEmail@new.com", user2.Email)
assert.Equal("newName", user2.Realname) 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) 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) { func TestSearchUser(t *testing.T) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment