Commit a1e9a84903d733877a1a1016423709d9e92c20c8
1 parent
6a0c7fc6
Exists in
staging
and in
2 other branches
Workaround for empty sessions with active record session store
Showing
2 changed files
with
13 additions
and
3 deletions
Show diff stats
app/models/session.rb
| 1 | class Session < ActiveRecord::SessionStore::Session | 1 | class Session < ActiveRecord::SessionStore::Session |
| 2 | 2 | ||
| 3 | - # removed and redefined on super class | ||
| 4 | - def self.find_by_session_id session_id | ||
| 5 | - super | 3 | + def self.find_by_session_id(session_id) |
| 4 | + where(session_id: session_id).first | ||
| 6 | end | 5 | end |
| 7 | 6 | ||
| 8 | belongs_to :user | 7 | belongs_to :user |
lib/authenticated_system.rb
| @@ -23,6 +23,17 @@ module AuthenticatedSystem | @@ -23,6 +23,17 @@ module AuthenticatedSystem | ||
| 23 | def current_user | 23 | def current_user |
| 24 | @current_user ||= begin | 24 | @current_user ||= begin |
| 25 | id = session[:user] | 25 | id = session[:user] |
| 26 | + | ||
| 27 | + session_id = cookies[:_noosfero_session] | ||
| 28 | + if id.blank? && session_id.present? | ||
| 29 | + Session.connection.clear_query_cache | ||
| 30 | + session_obj = Session.where(session_id: session_id).first | ||
| 31 | + if session_obj.present? | ||
| 32 | + session = session_obj.data | ||
| 33 | + id = session_obj.user_id | ||
| 34 | + end | ||
| 35 | + end | ||
| 36 | + | ||
| 26 | user = User.where(id: id).first if id | 37 | user = User.where(id: id).first if id |
| 27 | user.session = session if user | 38 | user.session = session if user |
| 28 | User.current = user | 39 | User.current = user |