]> source.dussan.org Git - gitea.git/commitdiff
[refactor] Unify the export of user data via API (#15144)
author6543 <6543@obermui.de>
Sat, 27 Mar 2021 16:45:26 +0000 (17:45 +0100)
committerGitHub <noreply@github.com>
Sat, 27 Mar 2021 16:45:26 +0000 (17:45 +0100)
* [refactor] unify how user data is exported via API

* test time via unix timestamp

26 files changed:
integrations/api_issue_reaction_test.go
integrations/api_team_user_test.go
modules/convert/git_commit.go
modules/convert/issue.go
modules/convert/issue_comment.go
modules/convert/pull.go
modules/convert/pull_review.go
modules/convert/release.go
modules/convert/repository.go
modules/convert/status.go
modules/convert/user.go
modules/convert/user_test.go
modules/notification/webhook/webhook.go
routers/api/v1/admin/user.go
routers/api/v1/org/member.go
routers/api/v1/org/team.go
routers/api/v1/repo/collaborators.go
routers/api/v1/repo/hook.go
routers/api/v1/repo/issue_reaction.go
routers/api/v1/repo/issue_subscription.go
routers/api/v1/repo/star.go
routers/api/v1/repo/subscriber.go
routers/api/v1/user/follower.go
routers/api/v1/user/key.go
routers/api/v1/user/user.go
routers/repo/webhook.go

index 20b83db2aab6929a6b39359b74daa35c1db2b726..ad4adc1eae750da7242d8f5126bfb454d7ac1484 100644 (file)
@@ -61,7 +61,7 @@ func TestAPIIssuesReactions(t *testing.T) {
        DecodeJSON(t, resp, &apiReactions)
        expectResponse := make(map[int]api.Reaction)
        expectResponse[0] = api.Reaction{
-               User:     convert.ToUser(user2, true, true),
+               User:     convert.ToUser(user2, user2),
                Reaction: "eyes",
                Created:  time.Unix(1573248003, 0),
        }
@@ -121,12 +121,12 @@ func TestAPICommentReactions(t *testing.T) {
        DecodeJSON(t, resp, &apiReactions)
        expectResponse := make(map[int]api.Reaction)
        expectResponse[0] = api.Reaction{
-               User:     convert.ToUser(user2, true, true),
+               User:     convert.ToUser(user2, user2),
                Reaction: "laugh",
                Created:  time.Unix(1573248004, 0),
        }
        expectResponse[1] = api.Reaction{
-               User:     convert.ToUser(user1, true, true),
+               User:     convert.ToUser(user1, user1),
                Reaction: "laugh",
                Created:  time.Unix(1573248005, 0),
        }
index eec8634cb0340290ecf6908fca48f188f4edae64..5a8fba512ff3b18f0e998f05d4f167ba257c667a 100644 (file)
@@ -31,5 +31,13 @@ func TestAPITeamUser(t *testing.T) {
        user2.Created = user2.Created.In(time.Local)
        user := models.AssertExistsAndLoadBean(t, &models.User{Name: "user2"}).(*models.User)
 
-       assert.Equal(t, convert.ToUser(user, true, false), user2)
+       expectedUser := convert.ToUser(user, user)
+
+       // test time via unix timestamp
+       assert.EqualValues(t, expectedUser.LastLogin.Unix(), user2.LastLogin.Unix())
+       assert.EqualValues(t, expectedUser.Created.Unix(), user2.Created.Unix())
+       expectedUser.LastLogin = user2.LastLogin
+       expectedUser.Created = user2.Created
+
+       assert.Equal(t, expectedUser, user2)
 }
index 4e30ec2c0b334f43567c4ee6c4a7ccc2892bdf8d..c647dd4e1843ed55d0f70b473e0835fdf5c7634d 100644 (file)
@@ -86,13 +86,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
        }
 
        if ok {
-               apiAuthor = ToUser(cacheAuthor, false, false)
+               apiAuthor = ToUser(cacheAuthor, nil)
        } else {
                author, err := models.GetUserByEmail(commit.Author.Email)
                if err != nil && !models.IsErrUserNotExist(err) {
                        return nil, err
                } else if err == nil {
-                       apiAuthor = ToUser(author, false, false)
+                       apiAuthor = ToUser(author, nil)
                        if userCache != nil {
                                userCache[commit.Author.Email] = author
                        }
@@ -108,13 +108,13 @@ func ToCommit(repo *models.Repository, commit *git.Commit, userCache map[string]
        }
 
        if ok {
-               apiCommitter = ToUser(cacheCommitter, false, false)
+               apiCommitter = ToUser(cacheCommitter, nil)
        } else {
                committer, err := models.GetUserByEmail(commit.Committer.Email)
                if err != nil && !models.IsErrUserNotExist(err) {
                        return nil, err
                } else if err == nil {
-                       apiCommitter = ToUser(committer, false, false)
+                       apiCommitter = ToUser(committer, nil)
                        if userCache != nil {
                                userCache[commit.Committer.Email] = committer
                        }
index b773e78a6b5ccaa4808f9753758bcf69ec2c4582..da09aeaca41ef14b82db4e3155e2a4c2b8b62f75 100644 (file)
@@ -31,7 +31,7 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
                URL:      issue.APIURL(),
                HTMLURL:  issue.HTMLURL(),
                Index:    issue.Index,
-               Poster:   ToUser(issue.Poster, false, false),
+               Poster:   ToUser(issue.Poster, nil),
                Title:    issue.Title,
                Body:     issue.Content,
                Ref:      issue.Ref,
@@ -66,9 +66,9 @@ func ToAPIIssue(issue *models.Issue) *api.Issue {
        }
        if len(issue.Assignees) > 0 {
                for _, assignee := range issue.Assignees {
-                       apiIssue.Assignees = append(apiIssue.Assignees, ToUser(assignee, false, false))
+                       apiIssue.Assignees = append(apiIssue.Assignees, ToUser(assignee, nil))
                }
-               apiIssue.Assignee = ToUser(issue.Assignees[0], false, false) // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
+               apiIssue.Assignee = ToUser(issue.Assignees[0], nil) // For compatibility, we're keeping the first assignee as `apiIssue.Assignee`
        }
        if issue.IsPull {
                if err := issue.LoadPullRequest(); err != nil {
index cf65c876d3d082aee27c237ec383bc79abd94c18..1610b9f0d88c2f75e57e271f7d6acfa8ccf3179f 100644 (file)
@@ -13,7 +13,7 @@ import (
 func ToComment(c *models.Comment) *api.Comment {
        return &api.Comment{
                ID:       c.ID,
-               Poster:   ToUser(c.Poster, false, false),
+               Poster:   ToUser(c.Poster, nil),
                HTMLURL:  c.HTMLURL(),
                IssueURL: c.IssueURL(),
                PRURL:    c.PRURL(),
index 3c24f4532f3cedb63983b8f40d8e321d9f68ba6d..8bdf17a049429c2a981a4568cf5de6f585265bf6 100644 (file)
@@ -159,7 +159,7 @@ func ToAPIPullRequest(pr *models.PullRequest) *api.PullRequest {
        if pr.HasMerged {
                apiPullRequest.Merged = pr.MergedUnix.AsTimePtr()
                apiPullRequest.MergedCommitID = &pr.MergedCommitID
-               apiPullRequest.MergedBy = ToUser(pr.Merger, false, false)
+               apiPullRequest.MergedBy = ToUser(pr.Merger, nil)
        }
 
        return apiPullRequest
index 418cb711dc5e9efb63028a77abe3b2dea39f5947..18c6c8e58c871c18dac01c7f4f18424a8457e6fe 100644 (file)
@@ -20,14 +20,9 @@ func ToPullReview(r *models.Review, doer *models.User) (*api.PullReview, error)
                r.Reviewer = models.NewGhostUser()
        }
 
-       auth := false
-       if doer != nil {
-               auth = doer.IsAdmin || doer.ID == r.ReviewerID
-       }
-
        result := &api.PullReview{
                ID:                r.ID,
-               Reviewer:          ToUser(r.Reviewer, doer != nil, auth),
+               Reviewer:          ToUser(r.Reviewer, doer),
                ReviewerTeam:      ToTeam(r.ReviewerTeam),
                State:             api.ReviewStateUnknown,
                Body:              r.Content,
@@ -88,14 +83,10 @@ func ToPullReviewCommentList(review *models.Review, doer *models.User) ([]*api.P
        for _, lines := range review.CodeComments {
                for _, comments := range lines {
                        for _, comment := range comments {
-                               auth := false
-                               if doer != nil {
-                                       auth = doer.IsAdmin || doer.ID == comment.Poster.ID
-                               }
                                apiComment := &api.PullReviewComment{
                                        ID:           comment.ID,
                                        Body:         comment.Content,
-                                       Reviewer:     ToUser(comment.Poster, doer != nil, auth),
+                                       Reviewer:     ToUser(comment.Poster, doer),
                                        ReviewID:     review.ID,
                                        Created:      comment.CreatedUnix.AsTime(),
                                        Updated:      comment.UpdatedUnix.AsTime(),
index d9def896378258ebca7e82946005bbd4ef8837e6..70f0d6e76405bdcd11d2c0f4c8d2dd3637f211d6 100644 (file)
@@ -29,7 +29,7 @@ func ToRelease(r *models.Release) *api.Release {
                IsPrerelease: r.IsPrerelease,
                CreatedAt:    r.CreatedUnix.AsTime(),
                PublishedAt:  r.CreatedUnix.AsTime(),
-               Publisher:    ToUser(r.Publisher, false, false),
+               Publisher:    ToUser(r.Publisher, nil),
                Attachments:  assets,
        }
 }
index 63a22bb04ead6c9e8b964f9a167a595376f1a7c0..9a4fbb97caec74e01dd46c72f7c2bb89d8387f52 100644 (file)
@@ -102,7 +102,7 @@ func innerToRepo(repo *models.Repository, mode models.AccessMode, isParent bool)
 
        return &api.Repository{
                ID:                        repo.ID,
-               Owner:                     ToUser(repo.Owner, mode != models.AccessModeNone, mode >= models.AccessModeAdmin),
+               Owner:                     ToUserWithAccessMode(repo.Owner, mode),
                Name:                      repo.Name,
                FullName:                  repo.FullName(),
                Description:               repo.Description,
index f972fc333c133d561845bd23b23e56146db39beb..bb2f964fe441d6bd520109c966f4bacf178bf7cc 100644 (file)
@@ -24,7 +24,7 @@ func ToCommitStatus(status *models.CommitStatus) *api.CommitStatus {
 
        if status.CreatorID != 0 {
                creator, _ := models.GetUserByID(status.CreatorID)
-               apiStatus.Creator = ToUser(creator, false, false)
+               apiStatus.Creator = ToUser(creator, nil)
        }
 
        return apiStatus
index f5d853fd4d10a7041abc1f657df440851d0d4ae8..f3a33aee411d145d2d4aef4ec4edce7c0ba69039 100644 (file)
@@ -11,11 +11,32 @@ import (
 )
 
 // ToUser convert models.User to api.User
-// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
-func ToUser(user *models.User, signed, authed bool) *api.User {
+// if doer is set, private information is added if the doer has the permission to see it
+func ToUser(user, doer *models.User) *api.User {
+       if user == nil {
+               return nil
+       }
+       authed := false
+       signed := false
+       if doer != nil {
+               signed = true
+               authed = doer.ID == user.ID || doer.IsAdmin
+       }
+       return toUser(user, signed, authed)
+}
+
+// ToUserWithAccessMode convert models.User to api.User
+// AccessMode is not none show add some more information
+func ToUserWithAccessMode(user *models.User, accessMode models.AccessMode) *api.User {
        if user == nil {
                return nil
        }
+       return toUser(user, accessMode != models.AccessModeNone, false)
+}
+
+// toUser convert models.User to api.User
+// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
+func toUser(user *models.User, signed, authed bool) *api.User {
        result := &api.User{
                ID:         user.ID,
                UserName:   user.Name,
index eff60d51830ebe7d3080a64f8a2c98ee177c205c..39396534410f536fa4eff5c13d1a71b7061b6de3 100644 (file)
@@ -15,14 +15,14 @@ func TestUser_ToUser(t *testing.T) {
 
        user1 := models.AssertExistsAndLoadBean(t, &models.User{ID: 1, IsAdmin: true}).(*models.User)
 
-       apiUser := ToUser(user1, true, true)
+       apiUser := toUser(user1, true, true)
        assert.True(t, apiUser.IsAdmin)
 
        user2 := models.AssertExistsAndLoadBean(t, &models.User{ID: 2, IsAdmin: false}).(*models.User)
 
-       apiUser = ToUser(user2, true, true)
+       apiUser = toUser(user2, true, true)
        assert.False(t, apiUser.IsAdmin)
 
-       apiUser = ToUser(user1, false, false)
+       apiUser = toUser(user1, false, false)
        assert.False(t, apiUser.IsAdmin)
 }
index a7357a51cab73a829fbb41899600baa9107fc6d1..90dc59021c5cc49ae9e5e83812823ddfce28401f 100644 (file)
@@ -53,7 +53,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                })
        } else {
                err = webhook_services.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
@@ -61,7 +61,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                })
        }
        if err != nil {
@@ -77,7 +77,7 @@ func (m *webhookNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo
        if err := webhook_services.PrepareWebhooks(oldRepo, models.HookEventFork, &api.ForkPayload{
                Forkee: convert.ToRepo(oldRepo, oldMode),
                Repo:   convert.ToRepo(repo, mode),
-               Sender: convert.ToUser(doer, false, false),
+               Sender: convert.ToUser(doer, nil),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", oldRepo.ID, err)
        }
@@ -89,8 +89,8 @@ func (m *webhookNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo
                if err := webhook_services.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                        Action:       api.HookRepoCreated,
                        Repository:   convert.ToRepo(repo, models.AccessModeOwner),
-                       Organization: convert.ToUser(u, false, false),
-                       Sender:       convert.ToUser(doer, false, false),
+                       Organization: convert.ToUser(u, nil),
+                       Sender:       convert.ToUser(doer, nil),
                }); err != nil {
                        log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
                }
@@ -102,8 +102,8 @@ func (m *webhookNotifier) NotifyCreateRepository(doer *models.User, u *models.Us
        if err := webhook_services.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                Action:       api.HookRepoCreated,
                Repository:   convert.ToRepo(repo, models.AccessModeOwner),
-               Organization: convert.ToUser(u, false, false),
-               Sender:       convert.ToUser(doer, false, false),
+               Organization: convert.ToUser(u, nil),
+               Sender:       convert.ToUser(doer, nil),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
        }
@@ -115,8 +115,8 @@ func (m *webhookNotifier) NotifyDeleteRepository(doer *models.User, repo *models
        if err := webhook_services.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                Action:       api.HookRepoDeleted,
                Repository:   convert.ToRepo(repo, models.AccessModeOwner),
-               Organization: convert.ToUser(u, false, false),
-               Sender:       convert.ToUser(doer, false, false),
+               Organization: convert.ToUser(u, nil),
+               Sender:       convert.ToUser(doer, nil),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
        }
@@ -127,8 +127,8 @@ func (m *webhookNotifier) NotifyMigrateRepository(doer *models.User, u *models.U
        if err := webhook_services.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
                Action:       api.HookRepoCreated,
                Repository:   convert.ToRepo(repo, models.AccessModeOwner),
-               Organization: convert.ToUser(u, false, false),
-               Sender:       convert.ToUser(doer, false, false),
+               Organization: convert.ToUser(u, nil),
+               Sender:       convert.ToUser(doer, nil),
        }); err != nil {
                log.Error("PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
        }
@@ -147,7 +147,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                }
                if removed {
                        apiPullRequest.Action = api.HookIssueUnassigned
@@ -165,7 +165,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                }
                if removed {
                        apiIssue.Action = api.HookIssueUnassigned
@@ -199,7 +199,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model
                        },
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                })
        } else {
                err = webhook_services.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
@@ -212,7 +212,7 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(doer *models.User, issue *model
                        },
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(issue.Poster, false, false),
+                       Sender:     convert.ToUser(issue.Poster, nil),
                })
        }
 
@@ -234,7 +234,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                }
                if isClosed {
                        apiPullRequest.Action = api.HookIssueClosed
@@ -247,7 +247,7 @@ func (m *webhookNotifier) NotifyIssueChangeStatus(doer *models.User, issue *mode
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                }
                if isClosed {
                        apiIssue.Action = api.HookIssueClosed
@@ -277,7 +277,7 @@ func (m *webhookNotifier) NotifyNewIssue(issue *models.Issue, mentions []*models
                Index:      issue.Index,
                Issue:      convert.ToAPIIssue(issue),
                Repository: convert.ToRepo(issue.Repo, mode),
-               Sender:     convert.ToUser(issue.Poster, false, false),
+               Sender:     convert.ToUser(issue.Poster, nil),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -303,7 +303,7 @@ func (m *webhookNotifier) NotifyNewPullRequest(pull *models.PullRequest, mention
                Index:       pull.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pull),
                Repository:  convert.ToRepo(pull.Issue.Repo, mode),
-               Sender:      convert.ToUser(pull.Issue.Poster, false, false),
+               Sender:      convert.ToUser(pull.Issue.Poster, nil),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -324,7 +324,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
                        },
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                })
        } else {
                err = webhook_services.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
@@ -337,7 +337,7 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
                        },
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                })
        }
        if err != nil {
@@ -374,7 +374,7 @@ func (m *webhookNotifier) NotifyUpdateComment(doer *models.User, c *models.Comme
                                },
                        },
                        Repository: convert.ToRepo(c.Issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     true,
                })
        } else {
@@ -388,7 +388,7 @@ func (m *webhookNotifier) NotifyUpdateComment(doer *models.User, c *models.Comme
                                },
                        },
                        Repository: convert.ToRepo(c.Issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     false,
                })
        }
@@ -409,7 +409,7 @@ func (m *webhookNotifier) NotifyCreateIssueComment(doer *models.User, repo *mode
                        Issue:      convert.ToAPIIssue(issue),
                        Comment:    convert.ToComment(comment),
                        Repository: convert.ToRepo(repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     true,
                })
        } else {
@@ -418,7 +418,7 @@ func (m *webhookNotifier) NotifyCreateIssueComment(doer *models.User, repo *mode
                        Issue:      convert.ToAPIIssue(issue),
                        Comment:    convert.ToComment(comment),
                        Repository: convert.ToRepo(repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     false,
                })
        }
@@ -453,7 +453,7 @@ func (m *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models
                        Issue:      convert.ToAPIIssue(comment.Issue),
                        Comment:    convert.ToComment(comment),
                        Repository: convert.ToRepo(comment.Issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     true,
                })
        } else {
@@ -462,7 +462,7 @@ func (m *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models
                        Issue:      convert.ToAPIIssue(comment.Issue),
                        Comment:    convert.ToComment(comment),
                        Repository: convert.ToRepo(comment.Issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                        IsPull:     false,
                })
        }
@@ -502,7 +502,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, models.AccessModeNone),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                })
        } else {
                err = webhook_services.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
@@ -510,7 +510,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                })
        }
        if err != nil {
@@ -544,7 +544,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
                        Index:       issue.Index,
                        PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                        Repository:  convert.ToRepo(issue.Repo, mode),
-                       Sender:      convert.ToUser(doer, false, false),
+                       Sender:      convert.ToUser(doer, nil),
                })
        } else {
                err = webhook_services.PrepareWebhooks(issue.Repo, models.HookEventIssueMilestone, &api.IssuePayload{
@@ -552,7 +552,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
                        Index:      issue.Index,
                        Issue:      convert.ToAPIIssue(issue),
                        Repository: convert.ToRepo(issue.Repo, mode),
-                       Sender:     convert.ToUser(doer, false, false),
+                       Sender:     convert.ToUser(doer, nil),
                })
        }
        if err != nil {
@@ -561,7 +561,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
 }
 
 func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
-       apiPusher := convert.ToUser(pusher, false, false)
+       apiPusher := convert.ToUser(pusher, nil)
        apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
        if err != nil {
                log.Error("commits.ToAPIPayloadCommits failed: %v", err)
@@ -610,7 +610,7 @@ func (*webhookNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mod
                Index:       pr.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  convert.ToRepo(pr.Issue.Repo, mode),
-               Sender:      convert.ToUser(doer, false, false),
+               Sender:      convert.ToUser(doer, nil),
                Action:      api.HookIssueClosed,
        }
 
@@ -643,7 +643,7 @@ func (m *webhookNotifier) NotifyPullRequestChangeTargetBranch(doer *models.User,
                },
                PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
                Repository:  convert.ToRepo(issue.Repo, mode),
-               Sender:      convert.ToUser(doer, false, false),
+               Sender:      convert.ToUser(doer, nil),
        })
 
        if err != nil {
@@ -682,7 +682,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
                Index:       review.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  convert.ToRepo(review.Issue.Repo, mode),
-               Sender:      convert.ToUser(review.Reviewer, false, false),
+               Sender:      convert.ToUser(review.Reviewer, nil),
                Review: &api.ReviewPayload{
                        Type:    string(reviewHookType),
                        Content: review.Content,
@@ -693,7 +693,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
 }
 
 func (m *webhookNotifier) NotifyCreateRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
-       apiPusher := convert.ToUser(pusher, false, false)
+       apiPusher := convert.ToUser(pusher, nil)
        apiRepo := convert.ToRepo(repo, models.AccessModeNone)
        refName := git.RefEndName(refFullName)
 
@@ -737,14 +737,14 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
                Index:       pr.Issue.Index,
                PullRequest: convert.ToAPIPullRequest(pr),
                Repository:  convert.ToRepo(pr.Issue.Repo, models.AccessModeNone),
-               Sender:      convert.ToUser(doer, false, false),
+               Sender:      convert.ToUser(doer, nil),
        }); err != nil {
                log.Error("PrepareWebhooks [pull_id: %v]: %v", pr.ID, err)
        }
 }
 
 func (m *webhookNotifier) NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refFullName string) {
-       apiPusher := convert.ToUser(pusher, false, false)
+       apiPusher := convert.ToUser(pusher, nil)
        apiRepo := convert.ToRepo(repo, models.AccessModeNone)
        refName := git.RefEndName(refFullName)
 
@@ -770,7 +770,7 @@ func sendReleaseHook(doer *models.User, rel *models.Release, action api.HookRele
                Action:     action,
                Release:    convert.ToRelease(rel),
                Repository: convert.ToRepo(rel.Repo, mode),
-               Sender:     convert.ToUser(rel.Publisher, false, false),
+               Sender:     convert.ToUser(rel.Publisher, nil),
        }); err != nil {
                log.Error("PrepareWebhooks: %v", err)
        }
@@ -789,7 +789,7 @@ func (m *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Rel
 }
 
 func (m *webhookNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
-       apiPusher := convert.ToUser(pusher, false, false)
+       apiPusher := convert.ToUser(pusher, nil)
        apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL())
        if err != nil {
                log.Error("commits.ToAPIPayloadCommits failed: %v", err)
index 116c622048d65f86a5ad90bde017788c9d5278dc..cbb9f6b21c4b388864f995fca1130ca3a49f6883 100644 (file)
@@ -116,7 +116,7 @@ func CreateUser(ctx *context.APIContext) {
        if form.SendNotify {
                mailer.SendRegisterNotifyMail(ctx.Locale, u)
        }
-       ctx.JSON(http.StatusCreated, convert.ToUser(u, ctx.IsSigned, ctx.User.IsAdmin))
+       ctx.JSON(http.StatusCreated, convert.ToUser(u, ctx.User))
 }
 
 // EditUser api for modifying a user's information
@@ -238,7 +238,7 @@ func EditUser(ctx *context.APIContext) {
        }
        log.Trace("Account profile updated by admin (%s): %s", ctx.User.Name, u.Name)
 
-       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.IsSigned, ctx.User.IsAdmin))
+       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.User))
 }
 
 // DeleteUser api for deleting a user
@@ -403,7 +403,7 @@ func GetAllUsers(ctx *context.APIContext) {
 
        results := make([]*api.User, len(users))
        for i := range users {
-               results[i] = convert.ToUser(users[i], ctx.IsSigned, ctx.User.IsAdmin)
+               results[i] = convert.ToUser(users[i], ctx.User)
        }
 
        ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
index 5f0e36386ef3043a89a6ac80015b3cfd0865d848..09abad25572d98f05af0e874d344df3e73e52cdc 100644 (file)
@@ -32,7 +32,7 @@ func listMembers(ctx *context.APIContext, publicOnly bool) {
 
        apiMembers := make([]*api.User, len(members))
        for i, member := range members {
-               apiMembers[i] = convert.ToUser(member, ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               apiMembers[i] = convert.ToUser(member, ctx.User)
        }
 
        ctx.JSON(http.StatusOK, apiMembers)
index c749751ac4dbf512b9ce3097c7f0f26c6781f26c..99bbd9eefeee070a21920250bbb7073aedd5ef8f 100644 (file)
@@ -337,7 +337,7 @@ func GetTeamMembers(ctx *context.APIContext) {
        }
        members := make([]*api.User, len(team.Members))
        for i, member := range team.Members {
-               members[i] = convert.ToUser(member, ctx.IsSigned, ctx.User.IsAdmin)
+               members[i] = convert.ToUser(member, ctx.User)
        }
        ctx.JSON(http.StatusOK, members)
 }
@@ -380,7 +380,7 @@ func GetTeamMember(ctx *context.APIContext) {
                ctx.NotFound()
                return
        }
-       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.IsSigned, ctx.User.IsAdmin))
+       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.User))
 }
 
 // AddTeamMember api for add a member to a team
index a4fc1d8f114a2ec067651019da6c1d41f37b5bd8..d0936019faddf7a3315e3663dc3c8e9a2a6aa236 100644 (file)
@@ -54,7 +54,7 @@ func ListCollaborators(ctx *context.APIContext) {
        }
        users := make([]*api.User, len(collaborators))
        for i, collaborator := range collaborators {
-               users[i] = convert.ToUser(collaborator.User, ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               users[i] = convert.ToUser(collaborator.User, ctx.User)
        }
        ctx.JSON(http.StatusOK, users)
 }
index 520a7a02027b18af1fbca14ea95f400bf04e205d..5a0911544a052a403e73ef30acbb938d664ec4b6 100644 (file)
@@ -148,8 +148,8 @@ func TestHook(ctx *context.APIContext) {
                        convert.ToPayloadCommit(ctx.Repo.Repository, ctx.Repo.Commit),
                },
                Repo:   convert.ToRepo(ctx.Repo.Repository, models.AccessModeNone),
-               Pusher: convert.ToUser(ctx.User, ctx.IsSigned, false),
-               Sender: convert.ToUser(ctx.User, ctx.IsSigned, false),
+               Pusher: convert.ToUserWithAccessMode(ctx.User, models.AccessModeNone),
+               Sender: convert.ToUserWithAccessMode(ctx.User, models.AccessModeNone),
        }); err != nil {
                ctx.Error(http.StatusInternalServerError, "PrepareWebhook: ", err)
                return
index 3994c6b9413496cd752d891ea3c320e57ac7303f..d0ba8dac65835dba7e01145bd231295afad9e0fc 100644 (file)
@@ -81,7 +81,7 @@ func GetIssueCommentReactions(ctx *context.APIContext) {
        var result []api.Reaction
        for _, r := range reactions {
                result = append(result, api.Reaction{
-                       User:     convert.ToUser(r.User, ctx.IsSigned, false),
+                       User:     convert.ToUser(r.User, ctx.User),
                        Reaction: r.Type,
                        Created:  r.CreatedUnix.AsTime(),
                })
@@ -203,7 +203,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
                                ctx.Error(http.StatusForbidden, err.Error(), err)
                        } else if models.IsErrReactionAlreadyExist(err) {
                                ctx.JSON(http.StatusOK, api.Reaction{
-                                       User:     convert.ToUser(ctx.User, true, true),
+                                       User:     convert.ToUser(ctx.User, ctx.User),
                                        Reaction: reaction.Type,
                                        Created:  reaction.CreatedUnix.AsTime(),
                                })
@@ -214,7 +214,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
                }
 
                ctx.JSON(http.StatusCreated, api.Reaction{
-                       User:     convert.ToUser(ctx.User, true, true),
+                       User:     convert.ToUser(ctx.User, ctx.User),
                        Reaction: reaction.Type,
                        Created:  reaction.CreatedUnix.AsTime(),
                })
@@ -299,7 +299,7 @@ func GetIssueReactions(ctx *context.APIContext) {
        var result []api.Reaction
        for _, r := range reactions {
                result = append(result, api.Reaction{
-                       User:     convert.ToUser(r.User, ctx.IsSigned, false),
+                       User:     convert.ToUser(r.User, ctx.User),
                        Reaction: r.Type,
                        Created:  r.CreatedUnix.AsTime(),
                })
@@ -412,7 +412,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
                                ctx.Error(http.StatusForbidden, err.Error(), err)
                        } else if models.IsErrReactionAlreadyExist(err) {
                                ctx.JSON(http.StatusOK, api.Reaction{
-                                       User:     convert.ToUser(ctx.User, true, true),
+                                       User:     convert.ToUser(ctx.User, ctx.User),
                                        Reaction: reaction.Type,
                                        Created:  reaction.CreatedUnix.AsTime(),
                                })
@@ -423,7 +423,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
                }
 
                ctx.JSON(http.StatusCreated, api.Reaction{
-                       User:     convert.ToUser(ctx.User, true, true),
+                       User:     convert.ToUser(ctx.User, ctx.User),
                        Reaction: reaction.Type,
                        Created:  reaction.CreatedUnix.AsTime(),
                })
index 2bbd72299ab59954412c8c4f76ee8511b0bae025..8acd378cc5e037344d730e3ee0763b3973d4f846 100644 (file)
@@ -279,7 +279,7 @@ func GetIssueSubscribers(ctx *context.APIContext) {
        }
        apiUsers := make([]*api.User, 0, len(users))
        for i := range users {
-               apiUsers[i] = convert.ToUser(users[i], ctx.IsSigned, false)
+               apiUsers[i] = convert.ToUser(users[i], ctx.User)
        }
 
        ctx.JSON(http.StatusOK, apiUsers)
index 774b326472abbd3a8bf26bd5bf289d3ca90a2d59..3af0a4ac125a345768d4eada1e3aad4c68cdc230 100644 (file)
@@ -50,7 +50,7 @@ func ListStargazers(ctx *context.APIContext) {
        }
        users := make([]*api.User, len(stargazers))
        for i, stargazer := range stargazers {
-               users[i] = convert.ToUser(stargazer, ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               users[i] = convert.ToUser(stargazer, ctx.User)
        }
        ctx.JSON(http.StatusOK, users)
 }
index ac61710bd2bdcd1531d2d6c0641d85c7f8d1e133..37bf3c29d466eea56bc3d3d8e92bc4832b18c2e0 100644 (file)
@@ -50,7 +50,7 @@ func ListSubscribers(ctx *context.APIContext) {
        }
        users := make([]*api.User, len(subscribers))
        for i, subscriber := range subscribers {
-               users[i] = convert.ToUser(subscriber, ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               users[i] = convert.ToUser(subscriber, ctx.User)
        }
        ctx.JSON(http.StatusOK, users)
 }
index 39f3c2092738e257ed997cb95c83facc9beb8614..4d316425cd096ae8be655ef2d5431d922112803c 100644 (file)
@@ -18,7 +18,7 @@ import (
 func responseAPIUsers(ctx *context.APIContext, users []*models.User) {
        apiUsers := make([]*api.User, len(users))
        for i := range users {
-               apiUsers[i] = convert.ToUser(users[i], ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               apiUsers[i] = convert.ToUser(users[i], ctx.User)
        }
        ctx.JSON(http.StatusOK, &apiUsers)
 }
index df8a11c61f1d1bc6d4abb9dd876a3fb1ebff7313..780cdf417c03fd866bef12d94c4718925cd20984 100644 (file)
@@ -25,13 +25,13 @@ func appendPrivateInformation(apiKey *api.PublicKey, key *models.PublicKey, defa
                apiKey.KeyType = "user"
 
                if defaultUser.ID == key.OwnerID {
-                       apiKey.Owner = convert.ToUser(defaultUser, true, true)
+                       apiKey.Owner = convert.ToUser(defaultUser, defaultUser)
                } else {
                        user, err := models.GetUserByID(key.OwnerID)
                        if err != nil {
                                return apiKey, err
                        }
-                       apiKey.Owner = convert.ToUser(user, true, true)
+                       apiKey.Owner = convert.ToUser(user, user)
                }
        } else {
                apiKey.KeyType = "unknown"
index ecc149fe52d324f82cd933c291136309d3aa71be..6e811bf0f8a4dde3d224261d891d80d068e1d6d8 100644 (file)
@@ -75,7 +75,7 @@ func Search(ctx *context.APIContext) {
 
        results := make([]*api.User, len(users))
        for i := range users {
-               results[i] = convert.ToUser(users[i], ctx.IsSigned, ctx.User != nil && ctx.User.IsAdmin)
+               results[i] = convert.ToUser(users[i], ctx.User)
        }
 
        ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
@@ -112,7 +112,7 @@ func GetInfo(ctx *context.APIContext) {
                return
        }
 
-       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.IsSigned, ctx.User != nil && (ctx.User.ID == u.ID || ctx.User.IsAdmin)))
+       ctx.JSON(http.StatusOK, convert.ToUser(u, ctx.User))
 }
 
 // GetAuthenticatedUser get current user's information
@@ -126,7 +126,7 @@ func GetAuthenticatedUser(ctx *context.APIContext) {
        //   "200":
        //     "$ref": "#/responses/User"
 
-       ctx.JSON(http.StatusOK, convert.ToUser(ctx.User, ctx.IsSigned, ctx.User != nil))
+       ctx.JSON(http.StatusOK, convert.ToUser(ctx.User, ctx.User))
 }
 
 // GetUserHeatmapData is the handler to get a users heatmap
index d1d4dc02082843b04b1824499a5474ca16271cce..1a5090a24ecbb8cdbef4136bf56510935cbe28f1 100644 (file)
@@ -1083,7 +1083,7 @@ func TestWebhook(ctx *context.Context) {
                }
        }
 
-       apiUser := convert.ToUser(ctx.User, true, true)
+       apiUser := convert.ToUserWithAccessMode(ctx.User, models.AccessModeNone)
        p := &api.PushPayload{
                Ref:    git.BranchPrefix + ctx.Repo.Repository.DefaultBranch,
                Before: commit.ID.String(),