diff --git a/routers/repo/webhook.go b/routers/repo/webhook.go index 06ea46d3c..6a870163f 100644 --- a/routers/repo/webhook.go +++ b/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, }, }, },