[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>
Этот коммит содержится в:
Ibrahim Serdar Acikgoz
2020-10-19 18:07:20 +03:00
коммит произвёл GitHub
родитель 90738de75f
Коммит c05ee81c9f
5 изменённых файлов: 43 добавлений и 43 удалений

Просмотреть файл

@@ -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
}