Browse Source

webhook: match email with real user in database for test delivery (#3652)

Unknwon 8 years ago
parent
commit
279e475b89
1 changed files with 29 additions and 4 deletions
  1. 29 4
      routers/repo/webhook.go

+ 29 - 4
routers/repo/webhook.go

@@ -347,6 +347,8 @@ func SlackHooksEditPost(ctx *context.Context, form auth.NewSlackHookForm) {
 }
 
 func TestWebhook(ctx *context.Context) {
+	var authorUsername, committerUsername string
+
 	// Grab latest commit or fake one if it's empty repository.
 	commit := ctx.Repo.Commit
 	if commit == nil {
@@ -357,6 +359,27 @@ func TestWebhook(ctx *context.Context) {
 			Committer:     ghost.NewGitSig(),
 			CommitMessage: "This is a fake commit",
 		}
+		authorUsername = ghost.Name
+		committerUsername = ghost.Name
+	} else {
+		// Try to match email with a real user.
+		author, err := models.GetUserByEmail(commit.Author.Email)
+		if err == nil {
+			authorUsername = author.Name
+		} else if !models.IsErrUserNotExist(err) {
+			ctx.Flash.Error(fmt.Sprintf("GetUserByEmail.(author) [%s]: %v", commit.Author.Email, err))
+			ctx.Status(500)
+			return
+		}
+
+		committer, err := models.GetUserByEmail(commit.Committer.Email)
+		if err == nil {
+			committerUsername = committer.Name
+		} else if !models.IsErrUserNotExist(err) {
+			ctx.Flash.Error(fmt.Sprintf("GetUserByEmail.(committer) [%s]: %v", commit.Committer.Email, err))
+			ctx.Status(500)
+			return
+		}
 	}
 
 	apiUser := ctx.User.APIFormat()
@@ -370,12 +393,14 @@ func TestWebhook(ctx *context.Context) {
 				Message: commit.Message(),
 				URL:     ctx.Repo.Repository.HTMLURL() + "/commit/" + commit.ID.String(),
 				Author: &api.PayloadUser{
-					Name:  commit.Author.Name,
-					Email: commit.Author.Email,
+					Name:     commit.Author.Name,
+					Email:    commit.Author.Email,
+					UserName: authorUsername,
 				},
 				Committer: &api.PayloadUser{
-					Name:  commit.Committer.Name,
-					Email: commit.Committer.Email,
+					Name:     commit.Committer.Name,
+					Email:    commit.Committer.Email,
+					UserName: committerUsername,
 				},
 			},
 		},