diff options
author | Sean McGivern <sean@gitlab.com> | 2017-06-29 17:15:49 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2017-06-30 10:33:47 +0100 |
commit | cb30edfae5c3557686463ca22eca7ef572c3ac33 (patch) | |
tree | cb29170e9241ae5ed76645bbe20a5e9256a2e94c | |
parent | 0c6cdd07829668e04012219eb21cc60db8c1eabc (diff) | |
download | gitlab-ce-cb30edfae5c3557686463ca22eca7ef572c3ac33.tar.gz |
Clarify counter caching for users without project access
-rw-r--r-- | app/finders/issues_finder.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/app/finders/issues_finder.rb b/app/finders/issues_finder.rb index d20f4475a03..18f60f9a2b6 100644 --- a/app/finders/issues_finder.rb +++ b/app/finders/issues_finder.rb @@ -54,6 +54,21 @@ class IssuesFinder < IssuableFinder project.team.max_member_access(current_user.id) >= CONFIDENTIAL_ACCESS_LEVEL end + # Anonymous users can't see any confidential issues. + # + # Users without access to see _all_ confidential issues (as in + # `user_can_see_all_confidential_issues?`) are more complicated, because they + # can see confidential issues where: + # 1. They are an assignee. + # 2. The are an author. + # + # That's fine for most cases, but if we're just counting, we need to cache + # effectively. If we cached this accurately, we'd have a cache key for every + # authenticated user without sufficient access to the project. Instead, when + # we are counting, we treat them as if they can't see any confidential issues. + # + # This does mean the counts may be wrong for those users, but avoids an + # explosion in cache keys. def user_cannot_see_confidential_issues?(for_counting: false) return false if user_can_see_all_confidential_issues? |