From f4265d015af6a04732a22d61cef66218ea247376 Mon Sep 17 00:00:00 2001 From: Gucheng Wang Date: Sun, 12 Dec 2021 19:59:55 +0800 Subject: [PATCH] Improve user error handling. --- controllers/account.go | 7 +++++-- controllers/auth.go | 6 +++++- controllers/user.go | 2 +- object/token.go | 2 +- object/user.go | 4 ++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/controllers/account.go b/controllers/account.go index b9260252..0fb51cd4 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -162,10 +162,13 @@ func (c *ApiController) Signup() { } affected := object.AddUser(user) - if affected { - original.AddUserToOriginalDatabase(user) + if !affected { + c.ResponseError(fmt.Sprintf("Failed to create user, user information is invalid: %s", util.StructToJson(user))) + return } + original.AddUserToOriginalDatabase(user) + if application.HasPromptPage() { // The prompt page needs the user to be signed in c.SetSessionUsername(user.GetId()) diff --git a/controllers/auth.go b/controllers/auth.go index 223fd268..2934483e 100644 --- a/controllers/auth.go +++ b/controllers/auth.go @@ -300,7 +300,11 @@ func (c *ApiController) Login() { // sync info from 3rd-party if possible object.SetUserOAuthProperties(organization, user, provider.Type, userInfo) - object.AddUser(user) + affected := object.AddUser(user) + if !affected { + c.ResponseError(fmt.Sprintf("Failed to create user, user information is invalid: %s", util.StructToJson(user))) + return + } object.LinkUserAccount(user, provider.Type, userInfo.Id) diff --git a/controllers/user.go b/controllers/user.go index b4936422..44dc489d 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -228,7 +228,7 @@ func (c *ApiController) SetPassword() { userId := fmt.Sprintf("%s/%s", userOwner, userName) targetUser := object.GetUser(userId) if targetUser == nil { - c.ResponseError("Invalid user id.") + c.ResponseError(fmt.Sprintf("The user: %s doesn't exist", userId)) return } diff --git a/object/token.go b/object/token.go index e6337c11..fc68dc9e 100644 --- a/object/token.go +++ b/object/token.go @@ -179,7 +179,7 @@ func GetOAuthCode(userId string, clientId string, responseType string, redirectU user := GetUser(userId) if user == nil { return &Code{ - Message: "Invalid user_id", + Message: fmt.Sprintf("The user: %s doesn't exist", userId), Code: "", } } diff --git a/object/user.go b/object/user.go index 36671e9b..67bf1009 100644 --- a/object/user.go +++ b/object/user.go @@ -313,6 +313,10 @@ func AddUser(user *User) bool { user.Id = util.GenerateId() } + if user.Owner == "" || user.Name == "" { + return false + } + organization := GetOrganizationByUser(user) user.UpdateUserPassword(organization)