diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7ab852745..6880d2f03 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -16,6 +16,14 @@ class ApplicationController < ActionController::Base rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized + def current_user + unless defined?(@current_user) + @current_user = session[:userinfo] + end + @current_user + end + helper_method :current_user + def user_not_authorized render(template: 'errors/error_403', status: 403, layout: 'application', content_type: 'text/html') end diff --git a/app/controllers/attendees_controller.rb b/app/controllers/attendees_controller.rb index 7625cb269..c117fc66f 100644 --- a/app/controllers/attendees_controller.rb +++ b/app/controllers/attendees_controller.rb @@ -3,9 +3,7 @@ class AttendeesController < ApplicationController before_action :set_profile, :set_speaker def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end def index diff --git a/app/controllers/concerns/secured.rb b/app/controllers/concerns/secured.rb index 95c1a281f..355e42c71 100644 --- a/app/controllers/concerns/secured.rb +++ b/app/controllers/concerns/secured.rb @@ -47,7 +47,7 @@ def logged_in? end def new_user? - logged_in? && !Profile.find_by(email: set_current_user[:info][:email], conference_id: set_conference.id) + logged_in? && !Profile.find_by(email: current_user[:info][:email], conference_id: set_conference.id) end def admin? @@ -71,7 +71,7 @@ def event_name end def set_current_user - @current_user ||= session[:userinfo] + current_user end private diff --git a/app/controllers/concerns/secured_admin.rb b/app/controllers/concerns/secured_admin.rb index c28a91f48..3e6b93ed9 100644 --- a/app/controllers/concerns/secured_admin.rb +++ b/app/controllers/concerns/secured_admin.rb @@ -35,7 +35,7 @@ def is_admin? end def set_current_user - @current_user ||= session[:userinfo] + current_user end def get_or_create_admin_profile diff --git a/app/controllers/concerns/secured_api.rb b/app/controllers/concerns/secured_api.rb index 011daa182..60310d732 100644 --- a/app/controllers/concerns/secured_api.rb +++ b/app/controllers/concerns/secured_api.rb @@ -20,6 +20,6 @@ def logged_in? end def set_current_user - @current_user ||= session[:userinfo] + current_user end end diff --git a/app/controllers/concerns/secured_beta.rb b/app/controllers/concerns/secured_beta.rb index 153188ff6..3d8ef88a4 100644 --- a/app/controllers/concerns/secured_beta.rb +++ b/app/controllers/concerns/secured_beta.rb @@ -14,7 +14,7 @@ def is_beta_user? end def set_current_user - @current_user ||= session[:userinfo] + current_user end def admin? diff --git a/app/controllers/concerns/secured_speaker.rb b/app/controllers/concerns/secured_speaker.rb index 0b91ea992..c8507e4a9 100644 --- a/app/controllers/concerns/secured_speaker.rb +++ b/app/controllers/concerns/secured_speaker.rb @@ -15,7 +15,7 @@ def logged_in_using_omniauth? end def set_current_user - @current_user = session[:userinfo] + current_user end def logged_in? diff --git a/app/controllers/concerns/secured_sponsor.rb b/app/controllers/concerns/secured_sponsor.rb index c9736a5a2..57dbf08ed 100644 --- a/app/controllers/concerns/secured_sponsor.rb +++ b/app/controllers/concerns/secured_sponsor.rb @@ -15,7 +15,7 @@ def logged_in_using_omniauth? end def set_current_user - @current_user = session[:userinfo] + current_user end def logged_in? diff --git a/app/controllers/contents_controller.rb b/app/controllers/contents_controller.rb index 45ecf5a44..da898f2d2 100644 --- a/app/controllers/contents_controller.rb +++ b/app/controllers/contents_controller.rb @@ -3,9 +3,7 @@ class ContentsController < ApplicationController before_action :set_profile, :set_speaker def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end def index diff --git a/app/controllers/event_controller.rb b/app/controllers/event_controller.rb index fb3949771..3a3171f8a 100644 --- a/app/controllers/event_controller.rb +++ b/app/controllers/event_controller.rb @@ -21,9 +21,7 @@ def show end def set_current_user - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end def privacy diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index 78bb11ef7..6fe3027d9 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -9,7 +9,7 @@ class ProfilesController < ApplicationController def new @profile = Profile.new @conference = Conference.find_by(abbr: params[:event]) - if set_current_user && Profile.find_by(conference_id: @conference.id, email: @current_user[:info][:email]) + if current_user && Profile.find_by(conference_id: @conference.id, email: @current_user[:info][:email]) redirect_to(dashboard_path) end @event = params[:event] diff --git a/app/controllers/speaker_dashboard/speakers_controller.rb b/app/controllers/speaker_dashboard/speakers_controller.rb index 7a8e966d2..0c66f96de 100644 --- a/app/controllers/speaker_dashboard/speakers_controller.rb +++ b/app/controllers/speaker_dashboard/speakers_controller.rb @@ -16,7 +16,7 @@ def new @conference = Conference.find_by(abbr: params[:event]) @sponsor = Sponsor.find(params[:sponsor_id]) if params[:sponsor_id] - if set_current_user + if current_user if Speaker.find_by(conference_id: @conference.id, email: @current_user[:info][:email]) redirect_to(speaker_dashboard_path) end diff --git a/app/controllers/speaker_dashboards_controller.rb b/app/controllers/speaker_dashboards_controller.rb index 3192ec2fb..ee8b7f98b 100644 --- a/app/controllers/speaker_dashboards_controller.rb +++ b/app/controllers/speaker_dashboards_controller.rb @@ -15,9 +15,7 @@ def sponsor? end def logged_in_using_omniauth? - if logged_in? - @current_user = session[:userinfo] - end + current_user end def set_speaker diff --git a/app/controllers/speakers_controller.rb b/app/controllers/speakers_controller.rb index c78ee1b87..bcf6e245e 100644 --- a/app/controllers/speakers_controller.rb +++ b/app/controllers/speakers_controller.rb @@ -5,9 +5,7 @@ class SpeakersController < ApplicationController before_action :set_profile def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end # GET /speakers diff --git a/app/controllers/sponsor_dashboards/speakers_controller.rb b/app/controllers/sponsor_dashboards/speakers_controller.rb index 10fee394c..2637f504a 100644 --- a/app/controllers/sponsor_dashboards/speakers_controller.rb +++ b/app/controllers/sponsor_dashboards/speakers_controller.rb @@ -8,7 +8,7 @@ def new @conference = Conference.find_by(abbr: params[:event]) @sponsor = Sponsor.find(params[:sponsor_id]) if params[:sponsor_id] - if set_current_user + if current_user if Speaker.find_by(conference_id: @conference.id, email: @current_user[:info][:email]) redirect_to(speaker_dashboard_path) end diff --git a/app/controllers/sponsor_dashboards/sponsor_dashboards_controller.rb b/app/controllers/sponsor_dashboards/sponsor_dashboards_controller.rb index 5e507da65..ea7a92501 100644 --- a/app/controllers/sponsor_dashboards/sponsor_dashboards_controller.rb +++ b/app/controllers/sponsor_dashboards/sponsor_dashboards_controller.rb @@ -34,9 +34,7 @@ def sponsor? end def logged_in_using_omniauth? - if logged_in? - @current_user = session[:userinfo] - end + current_user end def set_sponsor_profile diff --git a/app/controllers/sponsor_dashboards/sponsor_profiles_controller.rb b/app/controllers/sponsor_dashboards/sponsor_profiles_controller.rb index 70576a8b5..bbf31cf8e 100644 --- a/app/controllers/sponsor_dashboards/sponsor_profiles_controller.rb +++ b/app/controllers/sponsor_dashboards/sponsor_profiles_controller.rb @@ -11,7 +11,7 @@ def new unless logged_in? redirect_to(sponsor_dashboards_login_path) else - if set_current_user + if current_user if SponsorProfile.find_by(conference_id: @conference.id, email: @current_user[:info][:email]) redirect_to(sponsor_dashboards_path) end diff --git a/app/controllers/talks_controller.rb b/app/controllers/talks_controller.rb index 934e7a0f4..b5dadfe1b 100644 --- a/app/controllers/talks_controller.rb +++ b/app/controllers/talks_controller.rb @@ -4,9 +4,7 @@ class TalksController < ApplicationController helper_method :talk_start_to_end def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end # - プロポーザルの採択結果を表示する場合 diff --git a/app/controllers/teams_controller.rb b/app/controllers/teams_controller.rb index 325077b2e..be56ff383 100644 --- a/app/controllers/teams_controller.rb +++ b/app/controllers/teams_controller.rb @@ -3,9 +3,7 @@ class TeamsController < ApplicationController before_action :set_conference, :set_profile, :set_speaker def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end def show diff --git a/app/controllers/timetable_controller.rb b/app/controllers/timetable_controller.rb index c1d37b552..dc307a64b 100644 --- a/app/controllers/timetable_controller.rb +++ b/app/controllers/timetable_controller.rb @@ -3,9 +3,7 @@ class TimetableController < ApplicationController before_action :set_profile, :set_speaker def logged_in_using_omniauth? - if session[:userinfo].present? - @current_user = session[:userinfo] - end + current_user end def index diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 32a4ac528..fb829d676 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,9 +1,4 @@ module ApplicationHelper - def current_user - return unless session[:userinfo] - @current_user ||= session[:userinfo] - end - def logged_in? !!session[:userinfo] end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb new file mode 100644 index 000000000..b3b1f62b1 --- /dev/null +++ b/spec/controllers/application_controller_spec.rb @@ -0,0 +1,21 @@ +require 'rails_helper' + +RSpec.describe(ApplicationController, type: :controller) do + describe '#current_user' do + subject { controller.current_user } + context 'when omniauth session does not exist' do + it { is_expected.to(eq(nil)) } + end + + context 'when omniauth session exists' do + before do + @userinfo = { + info: { email: 'alice@example.com' }, + extra: { raw_info: { sub: 'mock', 'https://cloudnativedays.jp/roles' => '' } } + } + session[:userinfo] = @userinfo + end + it { is_expected.to(eq(@userinfo)) } + end + end +end