44cbfeaba8
Pass user instance to Labels::FindOrCreateService or skip_authorization: true ## What does this MR do? It fixes a bug described in #23694 when `project.owner` was passed to `Labels::FindOrCreateService`. `Labels::FindOrCreateService` expected a user instance and `project.owner` may return a group as well. This MR makes sure that we either pass a user instance or `skip_authorization: true`. ## Are there points in the code the reviewer needs to double check? - places where we pass `skip_authorization: true` ## Does this MR meet the acceptance criteria? - Tests - [x] Added for this feature/bug - [ ] All builds are passing - [ ] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html) - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if it does - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) ## What are the relevant issue numbers? Fixes #23694 See merge request !7093
37 lines
700 B
Ruby
37 lines
700 B
Ruby
module Gitlab
|
|
module GithubImport
|
|
class LabelFormatter < BaseFormatter
|
|
def attributes
|
|
{
|
|
project: project,
|
|
title: title,
|
|
color: color
|
|
}
|
|
end
|
|
|
|
def project_association
|
|
:labels
|
|
end
|
|
|
|
def create!
|
|
params = attributes.except(:project)
|
|
service = ::Labels::FindOrCreateService.new(nil, project, params)
|
|
label = service.execute(skip_authorization: true)
|
|
|
|
raise ActiveRecord::RecordInvalid.new(label) unless label.persisted?
|
|
|
|
label
|
|
end
|
|
|
|
private
|
|
|
|
def color
|
|
"##{raw_data.color}"
|
|
end
|
|
|
|
def title
|
|
raw_data.name
|
|
end
|
|
end
|
|
end
|
|
end
|