Class: Users::RegistrationsController

Inherits:
Devise::RegistrationsController
  • Object
show all
Defined in:
/var/apps/qpixel/app/controllers/users/registrations_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File '/var/apps/qpixel/app/controllers/users/registrations_controller.rb', line 8

def create
  super do |user|
    unless user.errors.any?
      rate_limit = AppConfig.server_settings['registration_rate_limit']
      ip_list = [user., request.remote_ip].compact
      previous_ip_users = User.where(current_sign_in_ip: ip_list).or(User.where(last_sign_in_ip: ip_list))
                              .where(created_at: rate_limit.seconds.ago..DateTime.now)
                              .where.not(id: user.id)
      if previous_ip_users.empty?
        user.send_welcome_tour_message
        user.ensure_websites
      else
        user.delete
        flash[:danger] = 'You cannot create an account right now because of the volume of accounts originating ' \
                         'from your network. Try again later.'
      end
    end
  end
end

#deleteObject



28
29
30
# File '/var/apps/qpixel/app/controllers/users/registrations_controller.rb', line 28

def delete
  @user = current_user
end

#do_deleteObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File '/var/apps/qpixel/app/controllers/users/registrations_controller.rb', line 32

def do_delete
  @user = current_user
  if @user.admin?
    @user.errors.add(:base, I18n.t('users.errors.no_admin_self_delete'))
    render :delete
  elsif @user.moderator?
    @user.errors.add(:base, I18n.t('users.errors.no_mod_self_delete'))
    render :delete
  elsif @user.enabled_2fa
    @user.errors.add(:base, I18n.t('users.errors.no_2fa_self_delete'))
    render :delete
  elsif params[:username] != @user.username
    @user.errors.add(:base, I18n.t('users.errors.self_delete_wrong_username'))
    render :delete
  else
    UserMailer.with(user: @user, host: RequestContext.community.host, community: RequestContext.community)
              .deletion_confirmation.deliver_later
    @user.soft_delete(@user)
    flash[:info] = 'Sorry to see you go!'
    redirect_to root_path
  end
end