From aa11f4de8013b4173dae79be60699757df00e5f3 Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Wed, 4 Mar 2015 15:23:01 +0100 Subject: [PATCH] Better authentication allowing non user model eg administrator model base --- app/controllers/cmtool/application_controller.rb | 8 +++++++- app/controllers/cmtool/users_controller.rb | 4 ---- app/views/cmtool/application/_menu.html.slim | 6 +++--- app/views/cmtool/application/_user_info.html.slim | 2 +- spec/dummy/app/controllers/application_controller.rb | 4 ++++ 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/controllers/cmtool/application_controller.rb b/app/controllers/cmtool/application_controller.rb index 2a84f74..1baeddf 100644 --- a/app/controllers/cmtool/application_controller.rb +++ b/app/controllers/cmtool/application_controller.rb @@ -1,6 +1,6 @@ module Cmtool class ApplicationController < ::ApplicationController - before_filter :authenticate_user!, :authorize_user, :check_environment, :set_locale + before_filter :authorize_user, :check_environment, :set_locale layout 'cmtool/application' private @@ -21,6 +21,12 @@ module Cmtool end end + unless method_defined? :cmtool_user + def cmtool_user + current_user + end + end + def check_environment @cmtool_warnings ||= [] @cmtool_warnings << 'no_host_specified' unless ( Rails.application.config.action_mailer.default_url_options[:host] rescue false) || diff --git a/app/controllers/cmtool/users_controller.rb b/app/controllers/cmtool/users_controller.rb index 839fc2a..5359f00 100644 --- a/app/controllers/cmtool/users_controller.rb +++ b/app/controllers/cmtool/users_controller.rb @@ -35,10 +35,6 @@ module Cmtool end @user = ::User.find(params[:id]) if @user.update_attributes(user) - if user['password'] - # Sign in after changing current logged in password - sign_in(@user, :bypass => true) if @user == current_user - end redirect_to cmtool.users_path, :notice => I18n.t('cmtool.action.update.successful', :model => ::User.model_name.human) else render :action => 'edit' diff --git a/app/views/cmtool/application/_menu.html.slim b/app/views/cmtool/application/_menu.html.slim index a229b24..0e09742 100644 --- a/app/views/cmtool/application/_menu.html.slim +++ b/app/views/cmtool/application/_menu.html.slim @@ -7,13 +7,13 @@ li.toggle-topbar.menu-icon a href="#" span Menu - - if user_signed_in? + - if cmtool_user.present? section.top-bar-section ul.right li.has-dropdown - a href="#" = current_user.email + a href="#" = cmtool_user.email ul.dropdown - li.log-out= link_to t('helpers.links.logout'), main_app.destroy_user_session_path, method: :delete + li.log-out= link_to t('helpers.links.logout'), main_app.root_path ul.left - Cmtool::Menu.items.each do |menu_item| - if menu_item.group? diff --git a/app/views/cmtool/application/_user_info.html.slim b/app/views/cmtool/application/_user_info.html.slim index d187e98..fcb6cf4 100644 --- a/app/views/cmtool/application/_user_info.html.slim +++ b/app/views/cmtool/application/_user_info.html.slim @@ -1,5 +1,5 @@ #user-info - #user-info-email= link_to current_user.email, cmtool.user_path(current_user) + #user-info-email= link_to cmtool_user.email, cmtool.user_path(current_user) #user-info-sign-in-out class: user_signed_in? ? 'signed-in' : 'signed-out' - if user_signed_in? = link_to t('devise.sessions.sign_out'), cmtool.destroy_user_session_path diff --git a/spec/dummy/app/controllers/application_controller.rb b/spec/dummy/app/controllers/application_controller.rb index f4fcdb2..03b4e89 100644 --- a/spec/dummy/app/controllers/application_controller.rb +++ b/spec/dummy/app/controllers/application_controller.rb @@ -6,4 +6,8 @@ private def authorize_cmtool redirect_to new_user_session_path unless current_user.present? end + + def cmtool_user + current_user + end end