diff --git a/app/controllers/front_controller.rb b/app/controllers/front_controller.rb index 631e559c..e43cf7b7 100755 --- a/app/controllers/front_controller.rb +++ b/app/controllers/front_controller.rb @@ -1,17 +1,14 @@ # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later class FrontController < ApplicationController - - - def index - flash.keep - if current_role?([:nonprofit_admin,:nonprofit_associate]) + if !Nonprofit.any? + redirect_to onboard_path + elsif current_role?([:nonprofit_admin,:nonprofit_associate]) redirect_to NonprofitPath.dashboard(administered_nonprofit) elsif current_user redirect_to '/profiles/' + current_user.profile.id.to_s else - respond_to { |format| format.html } + redirect_to new_user_session_path end end - end diff --git a/spec/controllers/front_spec.rb b/spec/controllers/front_spec.rb new file mode 100644 index 00000000..b64291c6 --- /dev/null +++ b/spec/controllers/front_spec.rb @@ -0,0 +1,42 @@ +# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later +require 'rails_helper' +require 'controllers/support/shared_user_context' + +describe FrontController, :type => :controller do + describe 'authorization' do + include_context :shared_user_context + describe 'accept all' do + describe 'index' do + include_context :open_to_all, :get, :index + end + end + end + + it 'index redirects to onboard with no non-profits' do + get( :index) + expect(response).to redirect_to onboard_url + end + + describe 'have nonprofit info' do + include_context :shared_user_context + it 'redirect to nonprofit admin' do + sign_in user_as_np_admin + get(:index) + expect(response).to redirect_to NonprofitPath.dashboard(nonprofit) + end + it 'redirect to nonprofit admin' do + sign_in user_as_np_associate + get(:index) + expect(response).to redirect_to NonprofitPath.dashboard(nonprofit) + end + + it 'redirect to general user' do + nonprofit + unauth_user.create_profile + sign_in unauth_user + get(:index) + expect(response).to redirect_to profile_url(unauth_user.profile.id) + end + + end +end \ No newline at end of file diff --git a/spec/controllers/support/shared_user_context.rb b/spec/controllers/support/shared_user_context.rb index 1ce177e3..7517f4a1 100644 --- a/spec/controllers/support/shared_user_context.rb +++ b/spec/controllers/support/shared_user_context.rb @@ -105,6 +105,8 @@ RSpec.shared_context :shared_user_context do expect(response.status).to eq 302 end + alias_method :redirects_to, :reject + def fix_args( *args) replacements = { __our_np: nonprofit.id,