fixes #753 by adding a global option to enable secure cookies

you need to recreate your environment.rb from the tmpl for this change
This commit is contained in:
Reinier Balt 2008-08-18 14:11:27 +02:00
parent a4cb8fb113
commit 2a6b8f1cd9
6 changed files with 15 additions and 13 deletions

View file

@ -133,7 +133,7 @@ class ContextsController < ApplicationController
@active_contexts = @contexts.find(:all, { :conditions => ["hide = ?", false]})
@hidden_contexts = @contexts.find(:all, { :conditions => ["hide = ?", true]})
@down_count = @active_contexts.size + @hidden_contexts.size
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= {:value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
render :action => 'index_mobile'
end
end
@ -143,7 +143,7 @@ class ContextsController < ApplicationController
@page_title = "TRACKS::List actions in "+@context.name
@not_done = @not_done_todos.select {|t| t.context_id == @context.id }
@down_count = @not_done.size
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= {:value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
@mobile_from_context = @context.id
render :action => 'mobile_show_context'
end

View file

@ -20,10 +20,10 @@ class LoginController < ApplicationController
session['noexpiry'] = params['user_noexpiry']
msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire."
notify :notice, "Login successful: session #{msg}"
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year }
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => TRACKS_COOKIES_SECURE }
unless should_expire_sessions?
@user.remember_me
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at }
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => TRACKS_COOKIES_SECURE }
end
redirect_back_or_home
return
@ -94,12 +94,12 @@ class LoginController < ApplicationController
session['noexpiry'] = session['user_noexpiry']
msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire."
notify :notice, "You have successfully verified #{openid_url} as your identity. Login successful: session #{msg}"
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year }
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => TRACKS_COOKIES_SECURE }
unless should_expire_sessions?
@user.remember_me
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at }
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => TRACKS_COOKIES_SECURE }
end
cookies[:openid_url] = { :value => openid_url, :expires => Time.now + 1.year }
cookies[:openid_url] = { :value => openid_url, :expires => Time.now + 1.year, :secure => TRACKS_COOKIES_SECURE }
redirect_back_or_home
else
notify :warning, "You have successfully verified #{openid_url} as your identity, but you do not have a Tracks account. Please ask your administrator to sign you up."

View file

@ -204,7 +204,7 @@ class ProjectsController < ApplicationController
@hidden_projects = @projects.select{ |p| p.hidden? }
@completed_projects = @projects.select{ |p| p.completed? }
@down_count = @active_projects.size + @hidden_projects.size + @completed_projects.size
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= {:value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
render :action => 'index_mobile'
end
end
@ -217,7 +217,7 @@ class ProjectsController < ApplicationController
@project_default_context = "The default context for this project is "+
@project.default_context.name
end
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= {:value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
@mobile_from_project = @project.id
render :action => 'project_mobile'
end

View file

@ -229,7 +229,7 @@ class TodosController < ApplicationController
format.m do
if @saved
if cookies[:mobile_url]
cookies[:mobile_url] = nil
cookies[:mobile_url] = {:value => nil, :secure => TRACKS_COOKIES_SECURE}
redirect_to cookies[:mobile_url]
else
redirect_to formatted_todos_path(:m)
@ -370,7 +370,7 @@ class TodosController < ApplicationController
@default_project_context_name_map = build_default_project_context_name_map(@projects).to_json
}
format.m {
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= {:value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
render :action => "mobile_tag"
}
end
@ -608,7 +608,7 @@ class TodosController < ApplicationController
lambda do
@page_title = "All actions"
@home = true
cookies[:mobile_url]=request.request_uri
cookies[:mobile_url]= { :value => request.request_uri, :secure => TRACKS_COOKIES_SECURE}
determine_down_count
render :action => 'index'

View file

@ -93,6 +93,8 @@ if (AUTHENTICATION_SCHEMES.include? 'open_id')
#requires ruby-openid gem to be installed
end
# setting this to true will make the cookies only available over HTTPS
TRACKS_COOKIES_SECURE = false
MOBILE_CONTENT_TYPE = 'tracks/mobile'
Mime::Type.register(MOBILE_CONTENT_TYPE, :m)

View file

@ -48,7 +48,7 @@ module LoginSystem
session['user_id'] = user.id
set_current_user(user)
current_user.remember_me
cookies[:auth_token] = { :value => current_user.remember_token , :expires => current_user.remember_token_expires_at }
cookies[:auth_token] = { :value => current_user.remember_token , :expires => current_user.remember_token_expires_at, :secure => TRACKS_COOKIES_SECURE }
flash[:notice] = "Logged in successfully. Welcome back!"
end
end