[MM-28125] einterface/oauthprovide: return parsing errors (#15426)
* einterface/oauthprovide: return parsing errors * Update app/oauth.go * reflect review comments * fix var name error Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
90738de75f
Коммит
c05ee81c9f
@@ -5,6 +5,7 @@ package oauthgitlab
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -55,15 +56,14 @@ func userFromGitLabUser(glu *GitLabUser) *model.User {
|
||||
return user
|
||||
}
|
||||
|
||||
func gitLabUserFromJson(data io.Reader) *GitLabUser {
|
||||
func gitLabUserFromJson(data io.Reader) (*GitLabUser, error) {
|
||||
decoder := json.NewDecoder(data)
|
||||
var glu GitLabUser
|
||||
err := decoder.Decode(&glu)
|
||||
if err == nil {
|
||||
return &glu
|
||||
} else {
|
||||
return nil
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &glu, nil
|
||||
}
|
||||
|
||||
func (glu *GitLabUser) ToJson() string {
|
||||
@@ -75,27 +75,30 @@ func (glu *GitLabUser) ToJson() string {
|
||||
}
|
||||
}
|
||||
|
||||
func (glu *GitLabUser) IsValid() bool {
|
||||
func (glu *GitLabUser) IsValid() error {
|
||||
if glu.Id == 0 {
|
||||
return false
|
||||
return errors.New("user id can't be 0")
|
||||
}
|
||||
|
||||
if len(glu.Email) == 0 {
|
||||
return false
|
||||
if glu.Email == "" {
|
||||
return errors.New("user e-mail should not be empty")
|
||||
}
|
||||
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (glu *GitLabUser) getAuthData() string {
|
||||
return strconv.FormatInt(glu.Id, 10)
|
||||
}
|
||||
|
||||
func (m *GitLabProvider) GetUserFromJson(data io.Reader) *model.User {
|
||||
glu := gitLabUserFromJson(data)
|
||||
if glu.IsValid() {
|
||||
return userFromGitLabUser(glu)
|
||||
func (m *GitLabProvider) GetUserFromJson(data io.Reader) (*model.User, error) {
|
||||
glu, err := gitLabUserFromJson(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = glu.IsValid(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.User{}
|
||||
return userFromGitLabUser(glu), nil
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user