summaryrefslogtreecommitdiff
path: root/app/controllers/posts/uploaders_controller.rb
blob: 0bcdeffbb9e3c450cc8ea73235933c7905f25d3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# frozen_string_literal: true

class Posts::UploadersController < ApplicationController
  def update
    @post = Post.find(params[:post_id])

    authorize! :manage, @post

    new_name = params[:username].presence
    @post.anonymous = params[:anonymous]

    if new_name != @post.user&.name # only do anything if changing
      uploader_changed = true

      if new_name.blank?
        @post.user = nil
        @post.anonymous = true
      else
        new_user = User.find_by('name = ? OR name = ?', new_name, new_name.unicode_normalize(:nfd))

        if new_user
          @post.user = new_user
        else
          @error = t('posts.errors.nonexistent_user', user: new_name)
          uploader_changed = false
        end
      end

      if uploader_changed
        @post.ip = '127.0.1.1'
      end
    end

    @post.save!
    @post.update_index

    # HidableLogger.log(@post, 'Uploader changed', current_user.name)

    render partial: 'posts/uploader', layout: false
  end
end