diff --git a/pkg/user/user.go b/pkg/user/user.go index 5b9084f8f..a73d64cb9 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -265,6 +265,10 @@ func CreateUser(user *User) (newUser *User, err error) { Subject: newUser.Subject, } + if newUser.Issuer != "local" { + userToCheck.Email = "" + } + _, err = GetUser(userToCheck) if err != nil { if IsErrUserDoesNotExist(err) { @@ -273,7 +277,7 @@ func CreateUser(user *User) (newUser *User, err error) { return &User{}, err } } - if exists { + if exists && newUser.Issuer == "local" { return &User{}, ErrUserEmailExists{newUser.ID, newUser.Email} } diff --git a/pkg/user/user_test.go b/pkg/user/user_test.go index 17f5de48b..09aae3e12 100644 --- a/pkg/user/user_test.go +++ b/pkg/user/user_test.go @@ -108,22 +108,6 @@ func TestCreateUser(t *testing.T) { }) assert.NoError(t, err) }) - t.Run("existing user but changed email", func(t *testing.T) { - // User changed their email in third party service, should update here - db.LoadAndAssertFixtures(t) - n, err := CreateUser(&User{ - Username: "somenewuser", - Email: "somenewuser@example.com", - Issuer: "https://some.service.com", - Subject: "12345", - }) - assert.NoError(t, err) - - nu := &User{ID: n.ID} - _, err = x.Get(nu) - assert.NoError(t, err) - assert.Equal(t, "somenewuser@example.com", nu.Email) - }) } func TestGetUser(t *testing.T) {