diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 389ad4eb6..52bdf4cf6 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -28,6 +28,8 @@ class Users::OmniauthCallbacksController < ApplicationController # Call the appropriate logic send("create_or_sign_on_user_using_#{provider}", request.env["omniauth.auth"]) + @data[:awaiting_approval] = true if invite_only? + respond_to do |format| format.html format.json { render json: @data } @@ -316,4 +318,9 @@ class Users::OmniauthCallbacksController < ApplicationController end + private + + def invite_only? + SiteSetting.invite_only? && !@data[:authenticated] + end end diff --git a/spec/controllers/omniauth_callbacks_controller_spec.rb b/spec/controllers/omniauth_callbacks_controller_spec.rb index 37eb2959a..e1f74513c 100644 --- a/spec/controllers/omniauth_callbacks_controller_spec.rb +++ b/spec/controllers/omniauth_callbacks_controller_spec.rb @@ -32,6 +32,17 @@ describe Users::OmniauthCallbacksController do response.should be_success end + context "when 'invite only' site setting is enabled" do + before { SiteSetting.stubs(:invite_only?).returns(true) } + + it 'informs the user they are awaiting approval' do + xhr :get, :complete, provider: 'twitter', format: :json + + expect( + JSON.parse(response.body)['awaiting_approval'] + ).to be_true + end + end end describe 'facebook' do