Merge remote-tracking branch 'upstream/release-5.0' into release-5.0-merge-to-master-20180615
Этот коммит содержится в:
15
app/oauth.go
15
app/oauth.go
@@ -8,6 +8,7 @@ import (
|
|||||||
b64 "encoding/base64"
|
b64 "encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -690,10 +691,13 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
|
|||||||
if resp, err := a.HTTPClient(true).Do(req); err != nil {
|
if resp, err := a.HTTPClient(true).Do(req); err != nil {
|
||||||
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, err.Error(), http.StatusInternalServerError)
|
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
} else {
|
} else {
|
||||||
|
bodyBytes, _ = ioutil.ReadAll(resp.Body)
|
||||||
|
resp.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
|
||||||
|
|
||||||
ar = model.AccessResponseFromJson(resp.Body)
|
ar = model.AccessResponseFromJson(resp.Body)
|
||||||
consumeAndClose(resp)
|
consumeAndClose(resp)
|
||||||
|
|
||||||
if ar == nil {
|
if ar == nil || resp.StatusCode != http.StatusOK {
|
||||||
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.bad_response.app_error", nil, "response_body="+string(bodyBytes), http.StatusInternalServerError)
|
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.bad_response.app_error", nil, "response_body="+string(bodyBytes), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -717,6 +721,15 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
|
|||||||
if resp, err := a.HTTPClient(true).Do(req); err != nil {
|
if resp, err := a.HTTPClient(true).Do(req); err != nil {
|
||||||
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]interface{}{"Service": service}, err.Error(), http.StatusInternalServerError)
|
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]interface{}{"Service": service}, err.Error(), http.StatusInternalServerError)
|
||||||
} else {
|
} else {
|
||||||
|
bodyBytes, _ = ioutil.ReadAll(resp.Body)
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
bodyString := string(bodyBytes)
|
||||||
|
mlog.Error("Error getting OAuth user: " + bodyString)
|
||||||
|
if service == model.SERVICE_GITLAB && resp.StatusCode == http.StatusForbidden && strings.Contains(bodyString, "Terms of Service") {
|
||||||
|
return nil, "", stateProps, model.NewAppError("AuthorizeOAuthUser", "oauth.gitlab.tos.error", nil, "", http.StatusBadRequest)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resp.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
|
||||||
return resp.Body, teamId, stateProps, nil
|
return resp.Body, teamId, stateProps, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2826,6 +2826,10 @@
|
|||||||
"id": "api.user.complete_switch_with_oauth.blank_email.app_error",
|
"id": "api.user.complete_switch_with_oauth.blank_email.app_error",
|
||||||
"translation": "Blank email"
|
"translation": "Blank email"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "oauth.gitlab.tos.error",
|
||||||
|
"translation": "GitLab's Terms of Service have updated. Please go to gitlab.com to accept them and then try logging into Mattermost again."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "api.user.complete_switch_with_oauth.parse.app_error",
|
"id": "api.user.complete_switch_with_oauth.parse.app_error",
|
||||||
"translation": "Could not parse auth data out of {{.Service}} user object"
|
"translation": "Could not parse auth data out of {{.Service}} user object"
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ func (s SqlTeamStore) GetAll() store.StoreChannel {
|
|||||||
func (s SqlTeamStore) GetAllPage(offset int, limit int) store.StoreChannel {
|
func (s SqlTeamStore) GetAllPage(offset int, limit int) store.StoreChannel {
|
||||||
return store.Do(func(result *store.StoreResult) {
|
return store.Do(func(result *store.StoreResult) {
|
||||||
var data []*model.Team
|
var data []*model.Team
|
||||||
if _, err := s.GetReplica().Select(&data, "SELECT * FROM Teams LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil {
|
if _, err := s.GetReplica().Select(&data, "SELECT * FROM Teams ORDER BY DisplayName LIMIT :Limit OFFSET :Offset", map[string]interface{}{"Offset": offset, "Limit": limit}); err != nil {
|
||||||
result.Err = model.NewAppError("SqlTeamStore.GetAllTeams", "store.sql_team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
|
result.Err = model.NewAppError("SqlTeamStore.GetAllTeams", "store.sql_team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user