Merge pull request #1597 from tomhughes/current-user
authorAndy Allan <github@gravitystorm.co.uk>
Fri, 28 Jul 2017 11:42:33 +0000 (12:42 +0100)
committerGitHub <noreply@github.com>
Fri, 28 Jul 2017 11:42:33 +0000 (12:42 +0100)
Complete @user to current_user transition

app/controllers/application_controller.rb
app/controllers/user_controller.rb
app/helpers/application_helper.rb
app/helpers/user_roles_helper.rb
app/views/user/account.html.erb
app/views/user/new.html.erb
test/helpers/application_helper_test.rb
test/helpers/user_roles_helper_test.rb

index a367a1b0a756ed257ea68905d98af50e6b4fe6a6..68fc4338ee7a90d66b28d280faeee3be9bd90208 100644 (file)
@@ -5,6 +5,7 @@ class ApplicationController < ActionController::Base
 
   before_action :fetch_body
 
+  attr_accessor :current_user
   helper_method :current_user
 
   def authorize_web
@@ -468,16 +469,6 @@ class ApplicationController < ActionController::Base
     [user, pass]
   end
 
-  # used to get the current logged in user
-  def current_user
-    @user
-  end
-
-  # used to set the current logged in user
-  def current_user=(user)
-    @user = user
-  end
-
   # override to stop oauth plugin sending errors
   def invalid_oauth_response; end
 end
index ea6e1a8d5d6fdbc5729f7e74e7f6d722f5b21e36..d3ed53c1bc040353d52d8b23884bf6decf13cd31 100644 (file)
@@ -220,6 +220,8 @@ class UserController < ApplicationController
       flash.now[:notice] = render_to_string :partial => "auth_association"
     else
       check_signup_allowed
+
+      self.current_user = User.new
     end
   end
 
index c5b08e515dcfd3279961607f9ff399e9acac963e..d27b47f275f815397cd7315d578bc9c960e51d9d 100644 (file)
@@ -21,12 +21,12 @@ module ApplicationHelper
     css = ""
 
     css << ".hidden { display: none !important }"
-    css << ".hide_unless_logged_in { display: none !important }" unless @user
-    css << ".hide_if_logged_in { display: none !important }" if @user
-    css << ".hide_if_user_#{@user.id} { display: none !important }" if @user
-    css << ".show_if_user_#{@user.id} { display: inline !important }" if @user
-    css << ".hide_unless_administrator { display: none !important }" unless @user && @user.administrator?
-    css << ".hide_unless_moderator { display: none !important }" unless @user && @user.moderator?
+    css << ".hide_unless_logged_in { display: none !important }" unless current_user
+    css << ".hide_if_logged_in { display: none !important }" if current_user
+    css << ".hide_if_user_#{current_user.id} { display: none !important }" if current_user
+    css << ".show_if_user_#{current_user.id} { display: inline !important }" if current_user
+    css << ".hide_unless_administrator { display: none !important }" unless current_user && current_user.administrator?
+    css << ".hide_unless_moderator { display: none !important }" unless current_user && current_user.moderator?
 
     content_tag(:style, css, :type => "text/css")
   end
@@ -107,11 +107,11 @@ module ApplicationHelper
       :preferred_editor => preferred_editor
     }
 
-    if @user
-      data[:user] = @user.id.to_json
+    if current_user
+      data[:user] = current_user.id.to_json
 
-      unless @user.home_lon.nil? || @user.home_lat.nil?
-        data[:user_home] = { :lat => @user.home_lat, :lon => @user.home_lon }
+      unless current_user.home_lon.nil? || current_user.home_lat.nil?
+        data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon }
       end
     end
 
index 7093a96b2b160dc9d4733d69ab58d74075813082..805abb58f38f323889cf2ebb3b1226d2a30234c2 100644 (file)
@@ -6,7 +6,7 @@ module UserRolesHelper
   end
 
   def role_icon(user, role)
-    if @user && @user.administrator?
+    if current_user && current_user.administrator?
       if user.has_role?(role)
         image = "roles/#{role}"
         alt = t("user.view.role.revoke.#{role}")
index ab74e378079e2078dd602b079a1dbc421c6044f4..2e7f68d9d4dc2409e699934c5c00795ed073f1fd 100644 (file)
@@ -10,8 +10,8 @@
   </ul>
 <% end %>
 
-<%= error_messages_for 'user' %>
-<%= form_for :user, :html => { :multipart => true, :id => 'accountForm', :class => 'standard-form', :autocomplete => :off } do |f| %>
+<%= error_messages_for current_user %>
+<%= form_for current_user, :html => { :multipart => true, :id => 'accountForm', :class => 'standard-form', :autocomplete => :off } do |f| %>
   <fieldset>
     <div class="form-row">
       <label class="standard-label"><%= t 'user.new.display name' %></label>
@@ -92,7 +92,7 @@
   <fieldset class="form-divider">
     <div class='form-row'>
       <label class="standard-label"><%= t 'user.account.profile description' %></label>
-      <%= richtext_area :user, :description, :cols => 80, :rows => 20 %>
+      <%= richtext_area :user, :description, :object => current_user, :cols => 80, :rows => 20 %>
     </div>
 
     <div class="form-row">
index fcd775a484eca5046710e344a2ecdc92dce5fe3c..5a207060eeaf101548c6400f4f5b4808caf09ec3 100644 (file)
@@ -8,7 +8,7 @@
   <div class='header-illustration new-user-arm'></div>
 <% end %>
 
-<%= form_for :user, :url => { :action => 'create' }, :html => { :class => 'standard-form fillL col6 inner22' } do %>
+<%= form_for current_user, :url => { :action => 'create' }, :html => { :class => 'standard-form fillL col6 inner22' } do |f| %>
   <%= hidden_field_tag('referer', h(@referer)) unless @referer.nil? %>
 
   <fieldset>
       <label for="email" class="standard-label">
         <%= t 'user.new.email address' %>
       </label>
-      <%= email_field(:user, :email, { :tabindex => 1 }) %>
-      <%= error_message_on(:user, :email) %>
+      <%= f.email_field(:email, { :tabindex => 1 }) %>
+      <%= f.error_message_on(:email) %>
     </div>
     <div class="form-row">
       <label for="email_confirmation" class="standard-label">
         <%= t 'user.new.confirm email address' %>
       </label>
-      <%= email_field(:user, :email_confirmation, { :tabindex => 2 }) %>
-      <%= error_message_on(:user, :email_confirmation) %>
+      <%= f.email_field(:email_confirmation, { :tabindex => 2 }) %>
+      <%= f.error_message_on(:email_confirmation) %>
     </div>
     <span class="form-help deemphasize"><%= raw(t 'user.new.not displayed publicly') %></span>
   </fieldset>
@@ -34,8 +34,8 @@
       <label for="display_name" class="standard-label">
         <%= t 'user.new.display name' %>
       </label>
-      <%= text_field(:user, :display_name, { :tabindex => 3 }) %>
-      <%= error_message_on(:user, :display_name) %>
+      <%= f.text_field(:display_name, { :tabindex => 3 }) %>
+      <%= f.error_message_on(:display_name) %>
     </div>
     <span class="form-help deemphasize"><%= t 'user.new.display name description' %></span>
   </fieldset>
@@ -45,9 +45,9 @@
       <label for="openid_url" class="standard-label">
         <%= raw t 'user.new.external auth' %>
       </label>
-      <%= select(:user, :auth_provider, Auth::PROVIDERS, { :default => "", :tabindex => 4 }) %>
-      <%= text_field(:user, :auth_uid, { :tabindex => 5 }) %>
-      <%= error_message_on(:user, :auth_uid) %>
+      <%= f.select(:auth_provider, Auth::PROVIDERS, { :default => "", :tabindex => 4 }) %>
+      <%= f.text_field(:auth_uid, { :tabindex => 5 }) %>
+      <%= f.error_message_on(:auth_uid) %>
     </div>
     <span class="form-help deemphasize"><%= t 'user.new.auth no password' %></span>
   </fieldset>
       <label for='user[pass_crypt]' class="standard-label">
         <%= t 'user.new.password' %>
       </label>
-      <%= password_field(:user, :pass_crypt, { :tabindex => 6 }) %>
-      <%= error_message_on(:user, :pass_crypt) %>
+      <%= f.password_field(:pass_crypt, { :tabindex => 6 }) %>
+      <%= f.error_message_on(:pass_crypt) %>
     </div>
     <div class="form-row">
       <label class="standard-label">
         <%= t 'user.new.confirm password' %>
       </label>
-      <%= password_field(:user, :pass_crypt_confirmation, { :tabindex => 7 }) %>
-      <%= error_message_on(:user, :pass_crypt_confirmation) %>
+      <%= f.password_field(:pass_crypt_confirmation, { :tabindex => 7 }) %>
+      <%= f.error_message_on(:pass_crypt_confirmation) %>
     </div>
   </fieldset>
 
index 720113e65d7310081febc35fcf182ba2e3163c64..d1c41d62c105cb905197cd53303c34bd5bc7be55 100644 (file)
@@ -1,6 +1,8 @@
 require "test_helper"
 
 class ApplicationHelperTest < ActionView::TestCase
+  attr_accessor :current_user
+
   def setup
     I18n.locale = "en"
   end
@@ -46,7 +48,7 @@ class ApplicationHelperTest < ActionView::TestCase
   end
 
   def test_style_rules
-    @user = nil
+    self.current_user = nil
 
     css = style_rules
     assert_match /\.hidden /, css
@@ -57,36 +59,36 @@ class ApplicationHelperTest < ActionView::TestCase
     assert_match /\.hide_unless_administrator /, css
     assert_match /\.hide_unless_moderator /, css
 
-    @user = create(:user)
+    self.current_user = create(:user)
 
     css = style_rules
     assert_match /\.hidden /, css
     assert_no_match /\.hide_unless_logged_in /, css
     assert_match /\.hide_if_logged_in /, css
-    assert_match /\.hide_if_user_#{@user.id} /, css
-    assert_match /\.show_if_user_#{@user.id} /, css
+    assert_match /\.hide_if_user_#{current_user.id} /, css
+    assert_match /\.show_if_user_#{current_user.id} /, css
     assert_match /\.hide_unless_administrator /, css
     assert_match /\.hide_unless_moderator /, css
 
-    @user = create(:moderator_user)
+    self.current_user = create(:moderator_user)
 
     css = style_rules
     assert_match /\.hidden /, css
     assert_no_match /\.hide_unless_logged_in /, css
     assert_match /\.hide_if_logged_in /, css
-    assert_match /\.hide_if_user_#{@user.id} /, css
-    assert_match /\.show_if_user_#{@user.id} /, css
+    assert_match /\.hide_if_user_#{current_user.id} /, css
+    assert_match /\.show_if_user_#{current_user.id} /, css
     assert_match /\.hide_unless_administrator /, css
     assert_no_match /\.hide_unless_moderator /, css
 
-    @user = create(:administrator_user)
+    self.current_user = create(:administrator_user)
 
     css = style_rules
     assert_match /\.hidden /, css
     assert_no_match /\.hide_unless_logged_in /, css
     assert_match /\.hide_if_logged_in /, css
-    assert_match /\.hide_if_user_#{@user.id} /, css
-    assert_match /\.show_if_user_#{@user.id} /, css
+    assert_match /\.hide_if_user_#{current_user.id} /, css
+    assert_match /\.show_if_user_#{current_user.id} /, css
     assert_no_match /\.hide_unless_administrator /, css
     assert_match /\.hide_unless_moderator /, css
   end
index 880c16e5909429305533498b096e9da00cca7a10..3ffc9fbff9b5937572cb0be9b4ba688649ba668e 100644 (file)
@@ -1,11 +1,12 @@
 require "test_helper"
 
 class UserRolesHelperTest < ActionView::TestCase
+  attr_accessor :current_user
+
   def test_role_icon_normal
-    user = create(:user)
-    @user = user
+    self.current_user = create(:user)
 
-    icon = role_icon(user, "moderator")
+    icon = role_icon(current_user, "moderator")
     assert_dom_equal "", icon
 
     icon = role_icon(create(:moderator_user), "moderator")
@@ -13,7 +14,7 @@ class UserRolesHelperTest < ActionView::TestCase
   end
 
   def test_role_icon_administrator
-    @user = create(:administrator_user)
+    self.current_user = create(:administrator_user)
 
     user = create(:user)
     icon = role_icon(user, "moderator")
@@ -25,10 +26,9 @@ class UserRolesHelperTest < ActionView::TestCase
   end
 
   def test_role_icons_normal
-    user = create(:user)
-    @user = user
+    self.current_user = create(:user)
 
-    icons = role_icons(user)
+    icons = role_icons(current_user)
     assert_dom_equal "  ", icons
 
     icons = role_icons(create(:moderator_user))
@@ -39,7 +39,7 @@ class UserRolesHelperTest < ActionView::TestCase
   end
 
   def test_role_icons_administrator
-    @user = create(:administrator_user)
+    self.current_user = create(:administrator_user)
 
     user = create(:user)
     icons = role_icons(user)