Changeset 1056

Show
Ignore:
Timestamp:
11/29/07 17:47:40 (1 year ago)
Author:
e.@brainspl.at
Message:

updating cookie session store. fixed failing spec for now non existant method. check at server boot time rather than at runtime if the session_secret_key was set or not. Bail out if its not their and or if the size of the secret is less than 16 chars

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/merb/controller.rb

    r1047 r1056  
    4040  class Controller < AbstractController 
    4141    class_inheritable_accessor :_session_id_key, :_session_expiry 
    42     cattr_accessor :_subclasses 
     42    cattr_accessor :_subclasses, :session_secret_key 
    4343    self._subclasses = [] 
    44      
     44    self.session_secret_key = nil 
    4545    self._session_id_key = '_session_id' 
    4646    self._session_expiry = Time.now + Merb::Const::WEEK * 2 
  • trunk/lib/merb/server.rb

    r1054 r1056  
    225225            puts "Not Using Sessions" 
    226226          elsif reg = types[session_store] 
     227            if session_store == "cookie"  
     228              unless @@merb_opts[:session_secret_key] && (@@merb_opts[:session_secret_key].length >= 16) 
     229                puts("You must specify a session_secret_key in your merb.yml, and it must be at least 16 characters\nbailing out...") 
     230                exit!  
     231              end 
     232              Merb::Controller.session_secret_key = @@merb_opts[:session_secret_key] 
     233            end 
    227234            require reg[:file] 
    228235            include ::Merb::SessionMixin 
     
    231238            puts "Session store not found, '#{Merb::Server.config[:session_store]}'." 
    232239            puts "Defaulting to CookieStore Sessions" 
     240            unless @@merb_opts[:session_secret_key] && (@@merb_opts[:session_secret_key].length >= 16) 
     241              puts("You must specify a session_secret_key in your merb.yml, and it must be at least 16 characters\nbailing out...") 
     242              exit!  
     243            end             
     244            Merb::Controller.session_secret_key = @@merb_opts[:session_secret_key] 
    233245            require types['cookie'][:file] 
    234246            include ::Merb::SessionMixin 
  • trunk/lib/merb/session/cookie_store.rb

    r1053 r1056  
    88  module SessionMixin #:nodoc: 
    99    def setup_session 
    10       MERB_LOGGER.info("Setting Cookie Store Sessions") 
    11       unless secret = Merb::Server.config[:session_secret_key] 
    12         raise 'You must set :session_secret_key in config/merb.yml for cookie sessions' 
    13       end 
    14       request.session = Merb::CookieStore.new(cookies[_session_id_key], secret) 
     10      MERB_LOGGER.info("Setting Up Cookie Store Sessions") 
     11      request.session = Merb::CookieStore.new(cookies[_session_id_key], session_secret_key) 
    1512      @original_session = request.session.read_cookie 
    1613    end 
  • trunk/spec/merb/cookie_store_spec.rb

    r1010 r1056  
    7474      raise_error(Merb::CookieStore::CookieOverflow) 
    7575  end 
    76    
    77   it "should close and marshal cookie data" do  
    78     session =  Merb::CookieStore.new(cookie_value(:typical), @secret) 
    79     session.modified?.should == false 
    80     session['flash'] = {} 
    81     session.modified?.should == true 
    82     session.read_cookie.should == cookie_value(:flashed) 
    83   end 
     76 
    8477   
    8578  it "should delete entries in the session" do 
  • trunk/spec/spec_helper.rb

    r795 r1056  
    3737  Merb::MemorySessionContainer.setup 
    3838  include ::Merb::SessionMixin 
     39  self.session_secret_key = "footo the bar to the baz" 
    3940end 
    4041