diff --git a/api4/oauth_test.go b/api4/oauth_test.go index 8cf20ca5e3..6bbd99ccca 100644 --- a/api4/oauth_test.go +++ b/api4/oauth_test.go @@ -1127,15 +1127,8 @@ func closeBody(r *http.Response) { type MattermostTestProvider struct { } -func (m *MattermostTestProvider) GetIdentifier() string { - return model.SERVICE_GITLAB -} - func (m *MattermostTestProvider) GetUserFromJson(data io.Reader) *model.User { - return model.UserFromJson(data) -} - -func (m *MattermostTestProvider) GetAuthDataFromJson(data io.Reader) string { - authData := model.UserFromJson(data) - return authData.Email + user := model.UserFromJson(data) + user.AuthData = &user.Email + return user } diff --git a/app/oauth.go b/app/oauth.go index 477c0aeaf4..80fe4342e6 100644 --- a/app/oauth.go +++ b/app/oauth.go @@ -457,7 +457,13 @@ func (a *App) LoginByOAuth(service string, userData io.Reader, teamId string) (* return nil, model.NewAppError("LoginByOAuth", "api.user.login_by_oauth.not_available.app_error", map[string]interface{}{"Service": strings.Title(service)}, "", http.StatusNotImplemented) } else { - authData = provider.GetAuthDataFromJson(bytes.NewReader(buf.Bytes())) + authUser := provider.GetUserFromJson(bytes.NewReader(buf.Bytes())) + + if authUser.AuthData != nil { + authData = *authUser.AuthData + } else { + authData = "" + } } if len(authData) == 0 { diff --git a/einterfaces/oauthproviders.go b/einterfaces/oauthproviders.go index ed54a204a0..178c17c116 100644 --- a/einterfaces/oauthproviders.go +++ b/einterfaces/oauthproviders.go @@ -10,9 +10,7 @@ import ( ) type OauthProvider interface { - GetIdentifier() string GetUserFromJson(data io.Reader) *model.User - GetAuthDataFromJson(data io.Reader) string } var oauthProviders = make(map[string]OauthProvider) diff --git a/model/gitlab/gitlab.go b/model/gitlab/gitlab.go index 7e0cb10af1..f0a388b6a9 100644 --- a/model/gitlab/gitlab.go +++ b/model/gitlab/gitlab.go @@ -47,7 +47,7 @@ func userFromGitLabUser(glu *GitLabUser) *model.User { user.FirstName = glu.Name } user.Email = glu.Email - userId := strconv.FormatInt(glu.Id, 10) + userId := glu.getAuthData() user.AuthData = &userId user.AuthService = model.USER_AUTH_SERVICE_GITLAB @@ -90,10 +90,6 @@ func (glu *GitLabUser) getAuthData() string { return strconv.FormatInt(glu.Id, 10) } -func (m *GitLabProvider) GetIdentifier() string { - return model.USER_AUTH_SERVICE_GITLAB -} - func (m *GitLabProvider) GetUserFromJson(data io.Reader) *model.User { glu := gitLabUserFromJson(data) if glu.IsValid() { @@ -102,13 +98,3 @@ func (m *GitLabProvider) GetUserFromJson(data io.Reader) *model.User { return &model.User{} } - -func (m *GitLabProvider) GetAuthDataFromJson(data io.Reader) string { - glu := gitLabUserFromJson(data) - - if glu.IsValid() { - return glu.getAuthData() - } - - return "" -}