diff options
Diffstat (limited to 'app/controllers/snippets_controller.rb')
-rw-r--r-- | app/controllers/snippets_controller.rb | 92 |
1 files changed, 4 insertions, 88 deletions
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb index 425e0458b41..87d87390e57 100644 --- a/app/controllers/snippets_controller.rb +++ b/app/controllers/snippets_controller.rb @@ -1,19 +1,12 @@ # frozen_string_literal: true -class SnippetsController < ApplicationController - include RendersNotes - include ToggleAwardEmoji - include SpammableActions +class SnippetsController < Snippets::ApplicationController include SnippetsActions - include RendersBlob include PreviewMarkdown - include PaginatedCollection - include Gitlab::NoteableMetadata - - skip_before_action :verify_authenticity_token, - if: -> { action_name == 'show' && js_request? } + include ToggleAwardEmoji + include SpammableActions - before_action :snippet, only: [:show, :edit, :destroy, :update, :raw] + before_action :snippet, only: [:show, :edit, :destroy, :update, :raw, :toggle_award_emoji, :mark_as_spam] before_action :authorize_create_snippet!, only: [:new, :create] before_action :authorize_read_snippet!, only: [:show, :raw] @@ -23,7 +16,6 @@ class SnippetsController < ApplicationController skip_before_action :authenticate_user!, only: [:index, :show, :raw] layout 'snippets' - respond_to :html def index if params[:username].present? @@ -60,62 +52,8 @@ class SnippetsController < ApplicationController end end - def update - service_response = Snippets::UpdateService.new(nil, current_user, snippet_params).execute(@snippet) - @snippet = service_response.payload[:snippet] - - handle_repository_error(:edit) - end - - def show - conditionally_expand_blob(blob) - - respond_to do |format| - format.html do - @note = Note.new(noteable: @snippet) - @noteable = @snippet - - @discussions = @snippet.discussions - @notes = prepare_notes_for_rendering(@discussions.flat_map(&:notes), @noteable) - render 'show' - end - - format.json do - render_blob_json(blob) - end - - format.js do - if @snippet.embeddable? - render 'shared/snippets/show' - else - head :not_found - end - end - end - end - - def destroy - service_response = Snippets::DestroyService.new(current_user, @snippet).execute - - if service_response.success? - redirect_to dashboard_snippets_path, status: :found - elsif service_response.http_status == 403 - access_denied! - else - redirect_to snippet_path(@snippet), - status: :found, - alert: service_response.message - end - end - protected - # rubocop: disable CodeReuse/ActiveRecord - def snippet - @snippet ||= PersonalSnippet.inc_relations_for_view.find_by(id: params[:id]) - end - # rubocop: enable CodeReuse/ActiveRecord - alias_method :awardable, :snippet alias_method :spammable, :snippet @@ -123,28 +61,6 @@ class SnippetsController < ApplicationController snippet_path(@snippet) end - def authorize_read_snippet! - return if can?(current_user, :read_snippet, @snippet) - - if current_user - render_404 - else - authenticate_user! - end - end - - def authorize_update_snippet! - return render_404 unless can?(current_user, :update_snippet, @snippet) - end - - def authorize_admin_snippet! - return render_404 unless can?(current_user, :admin_snippet, @snippet) - end - - def authorize_create_snippet! - return render_404 unless can?(current_user, :create_snippet) - end - def snippet_params params.require(:personal_snippet).permit(:title, :content, :file_name, :private, :visibility_level, :description).merge(spammable_params) end |