Commit 3b1a5c6b authored by Benjamin Neff's avatar Benjamin Neff
Browse files

don't reduce number of invites when registration is open

otherwise the counter goes into negative ;)

also  reset all negative counters
parent e749bbef
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
#   the COPYRIGHT file.

class RegistrationsController < Devise::RegistrationsController
  before_action :check_registrations_open_or_valid_invite!, :check_valid_invite!
  before_action :check_registrations_open_or_valid_invite!

  layout -> { request.format == :mobile ? "application" : "with_header" }

@@ -28,20 +28,12 @@ class RegistrationsController < Devise::RegistrationsController

  private

  def check_valid_invite!
    return true if AppConfig.settings.enable_registrations? #this sucks
    return true if invite && invite.can_be_used?
    flash[:error] = t('registrations.invalid_invite')
    redirect_to new_user_session_path
  end

  def check_registrations_open_or_valid_invite!
    return true if invite.present?
    unless AppConfig.settings.enable_registrations?
      flash[:error] = t('registrations.closed')
    return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?)

    flash[:error] = params[:invite] ? t("registrations.invalid_invite") : t("registrations.closed")
    redirect_to new_user_session_path
  end
  end

  def invite
    @invite ||= InvitationCode.find_by_token(params[:invite][:token]) if params[:invite].present?
+1 −2
Original line number Diff line number Diff line
@@ -99,10 +99,9 @@ class User < ActiveRecord::Base

  def process_invite_acceptence(invite)
    self.invited_by = invite.user
    invite.use!
    invite.use! unless AppConfig.settings.enable_registrations?
  end


  def invitation_code
    InvitationCode.find_or_create_by(user_id: self.id)
  end
+1 −1
Original line number Diff line number Diff line
#paste_link
  = t('.paste_link')
  %span#codes_left
    = '(' + t('.codes_left', count: @invite_code.count) + ')'
    = "(" + t(".codes_left", count: @invite_code.count) + ")" unless AppConfig.settings.enable_registrations?
.form-horizontal
  .control-group
    = invite_link(@invite_code)
+9 −2
Original line number Diff line number Diff line
class CleanupInvitationColumnsFromUsers < ActiveRecord::Migration
  class InvitationCode < ActiveRecord::Base
  end

  class User < ActiveRecord::Base
  end

@@ -20,7 +23,7 @@ class CleanupInvitationColumnsFromUsers < ActiveRecord::Migration

    add_index :users, :email, name: :index_users_on_email, unique: true, length: 191

    drop_invitations_table
    cleanup_invitations
  end

  def username_not_null
@@ -36,10 +39,14 @@ class CleanupInvitationColumnsFromUsers < ActiveRecord::Migration
    end
  end

  def drop_invitations_table
  def cleanup_invitations
    reversible do |dir|
      dir.up do
        drop_table :invitations

        # reset negative invitation counters
        new_counter = AppConfig.settings.enable_registrations? ? AppConfig["settings.invitations.count"] : 0
        InvitationCode.where("count < 0").update_all(count: new_counter)
      end

      dir.down do
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ Given /^I have been invited by an admin$/ do
end

Given /^I have been invited by "([^\"]+)"$/ do |email|
  AppConfig.settings.enable_registrations = false
  @inviter = User.find_by_email(email)
  @inviter_invite_count = @inviter.invitation_code.count
  i = EmailInviter.new("new_invitee@example.com", @inviter)
Loading