# frozen_string_literal: true require 'booru/live_feed' class Posts::SourcesController < ApplicationController include RateLimitable before_action :filter_banned_users before_action :load_post before_action :check_auth before_action -> { ratelimit 1, 5.seconds, t('booru.errors.metadata_flooding', seconds: 5) }, unless: -> { current_user&.staff? } def update unless captcha_verified? @post.errors[:base] << t('posts.update_metadata.errors.captcha_unverified') render partial: 'posts/source', layout: false, locals: { post: @post } return end @post.with_lock do @post.source_url = params[:post][:source_url].strip if params[:post][:source_url].present? if @post.save if @post.previous_changes[:source_url] SourceChange.add_to_img(@post, current_user, request) Booru::LiveFeed.push_source_change(@post, current_user, @post.previous_changes[:source_url].first, @post.source_url) # SourceChangeLogger.log(@post, current_user, @post.previous_changes[:source_url].first) end else raise ActiveRecord::Rollback end end @post.update_index render partial: 'posts/source', layout: false, locals: { post: @post } end private def load_post @post = Post.find(params[:post_id]) end def check_auth authorize! :update_metadata, @post end end