-
- Downloads
An error occurred while fetching merge requests data.
Merge branch 'jej-note-search-uses-finder' into 'security'
Fix missing Note access checks in by moving Note#search to updated NoteFinder Split from !2024 to partially solve https://gitlab.com/gitlab-org/gitlab-ce/issues/23867 ## Which fixes are in this MR?- Potentially untested - No test coverage - Test coverage of some sort exists (a test failed when error raised) - Test coverage of return value (a test failed when nil used) - Permissions check tested ### Note lookup without access check - [x] app/finders/notes_finder.rb:13 :download_code check - [x] app/finders/notes_finder.rb:19 `SnippetsFinder` - [x] app/models/note.rb:121 [`Issue#visible_to_user`] - [x] lib/gitlab/project_search_results.rb:113 - This is the only use of `app/models/note.rb:121` above, but importantly has no access checks at all. This means it leaks MR comments and snippets when those features are `team-only` in addition to the issue comments which would be fixed by `app/models/note.rb:121`. - It is only called from SearchController where `can?(current_user, :download_code, @Project)` is checked, so commit comments are not leaked. ### Previous discussions - [x] https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2024/diffs#b915c5267a63628b0bafd23d37792ae73ceae272_13_13 `: download_code` check on commit - [x] https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2024/diffs#b915c5267a63628b0bafd23d37792ae73ceae272_19_19 `SnippetsFinder` should be used - `SnippetsFinder` should check if the snippets feature is enabled -> https://gitlab.com/gitlab-org/gitlab-ce/issues/25223 ### Acceptance criteria met? - [x] Tests added for new code - [x] TODO comments removed - [x] Squashed and removed skipped tests - [x] Changelog entry - [ ] State Gitlab versions affected and issue severity in description - [ ] Create technical debt issue for NotesFinder. - Either split into `NotesFinder::ForTarget` and `NotesFinder::Search` or consider object per notable type such as `NotesFinder::OnIssue`. For the first option could create `NotesFinder::Base` which is either inherited from or which can be included in the other two. - Avoid case statement anti-pattern in this finder with use of `NotesFinder::OnCommit` etc. Consider something on the finder for this? `Model.finder(user, project)` - Move `inc_author` to the controller, and implement `related_notes` to replace `non_diff_notes`/`mr_and_commit_notes` See merge request !2035
Showing
- app/controllers/projects/notes_controller.rb 1 addition, 1 deletionapp/controllers/projects/notes_controller.rb
- app/finders/notes_finder.rb 94 additions, 19 deletionsapp/finders/notes_finder.rb
- app/models/merge_request.rb 2 additions, 2 deletionsapp/models/merge_request.rb
- app/models/note.rb 0 additions, 17 deletionsapp/models/note.rb
- app/views/projects/merge_requests/_merge_request.html.haml 1 addition, 1 deletionapp/views/projects/merge_requests/_merge_request.html.haml
- app/views/projects/merge_requests/_show.html.haml 1 addition, 1 deletionapp/views/projects/merge_requests/_show.html.haml
- changelogs/unreleased/jej-note-search-uses-finder.yml 4 additions, 0 deletionschangelogs/unreleased/jej-note-search-uses-finder.yml
- lib/gitlab/project_search_results.rb 1 addition, 1 deletionlib/gitlab/project_search_results.rb
- lib/gitlab/sql/union.rb 1 addition, 3 deletionslib/gitlab/sql/union.rb
- spec/controllers/search_controller_spec.rb 61 additions, 0 deletionsspec/controllers/search_controller_spec.rb
- spec/factories/notes.rb 1 addition, 1 deletionspec/factories/notes.rb
- spec/finders/notes_finder_spec.rb 172 additions, 28 deletionsspec/finders/notes_finder_spec.rb
- spec/lib/gitlab/project_search_results_spec.rb 29 additions, 0 deletionsspec/lib/gitlab/project_search_results_spec.rb
- spec/lib/gitlab/sql/union_spec.rb 16 additions, 6 deletionsspec/lib/gitlab/sql/union_spec.rb
- spec/models/merge_request_spec.rb 3 additions, 3 deletionsspec/models/merge_request_spec.rb
- spec/models/note_spec.rb 0 additions, 38 deletionsspec/models/note_spec.rb
Loading
Please register or sign in to comment