diff --git a/models/action.go b/models/action.go index 295a61ccd..a6b22b161 100644 --- a/models/action.go +++ b/models/action.go @@ -243,15 +243,29 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string, if !strings.HasPrefix(oldCommitId, "0000000") { compareUrl = fmt.Sprintf("%s/compare/%s...%s", repoLink, oldCommitId, newCommitId) } + + pusher_email, pusher_name := "", "" + pusher, err := GetUserByName(userName) + if err == nil { + pusher_email = pusher.Email + pusher_name = pusher.GetFullNameFallback() + } + commits := make([]*PayloadCommit, len(commit.Commits)) for i, cmt := range commit.Commits { + author_username := "" + author, err := GetUserByEmail(cmt.AuthorEmail) + if err == nil { + author_username = author.Name + } commits[i] = &PayloadCommit{ Id: cmt.Sha1, Message: cmt.Message, Url: fmt.Sprintf("%s/commit/%s", repoLink, cmt.Sha1), Author: &PayloadAuthor{ - Name: cmt.AuthorName, - Email: cmt.AuthorEmail, + Name: cmt.AuthorName, + Email: cmt.AuthorEmail, + UserName: author_username, }, } } @@ -266,14 +280,16 @@ func CommitRepoAction(userId, repoUserId int64, userName, actEmail string, Website: repo.Website, Watchers: repo.NumWatches, Owner: &PayloadAuthor{ - Name: repoUserName, - Email: actEmail, + Name: repo.Owner.GetFullNameFallback(), + Email: repo.Owner.Email, + UserName: repo.Owner.Name, }, Private: repo.IsPrivate, }, Pusher: &PayloadAuthor{ - Name: repo.Owner.LowerName, - Email: repo.Owner.Email, + Name: pusher_name, + Email: pusher_email, + UserName: userName, }, Before: oldCommitId, After: newCommitId, diff --git a/models/user.go b/models/user.go index 96881ea35..b3ea81617 100644 --- a/models/user.go +++ b/models/user.go @@ -167,6 +167,14 @@ func (u *User) GetOrganizations() error { return nil } +// GetFullNameFallback returns Full Name if set, otherwise username +func (u *User) GetFullNameFallback() string { + if u.FullName == "" { + return u.Name + } + return u.FullName +} + // IsUserExist checks if given user name exist, // the user name should be noncased unique. func IsUserExist(name string) (bool, error) { diff --git a/models/webhook.go b/models/webhook.go index 3c07cc817..9508c98a5 100644 --- a/models/webhook.go +++ b/models/webhook.go @@ -154,8 +154,9 @@ const ( ) type PayloadAuthor struct { - Name string `json:"name"` - Email string `json:"email"` + Name string `json:"name"` + Email string `json:"email"` + UserName string `json:"username"` } type PayloadCommit struct { @@ -172,7 +173,7 @@ type PayloadRepo struct { Description string `json:"description"` Website string `json:"website"` Watchers int `json:"watchers"` - Owner *PayloadAuthor `json:"author"` + Owner *PayloadAuthor `json:"owner"` Private bool `json:"private"` }