synapses-cas 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +21 -0
 - data/README.md +5 -2
 - data/bin/cas_config.yml +9 -2
 - data/lib/casserver/server.rb +29 -7
 - data/lib/casserver/utils.rb +24 -0
 - data/lib/casserver/views/login.erb +3 -0
 - data/locales/en.yml +1 -0
 - data/locales/pt.yml +1 -0
 - data/synapses-cas.gemspec +6 -1
 - metadata +34 -2
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 0.1.2 :: 2012-05-15
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Button for password recovery has been added in login page.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                The password recovery url must be defined in configuration file.
         
     | 
| 
      
 6 
     | 
    
         
            +
                password_recovery_url: http://localhost:3000/users/password_recovery
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            * Whitelist for ensure that only allowed clients can connect to cas server
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                To use this feature, you have to set the "service_whitelist" in your config file:
         
     | 
| 
      
 11 
     | 
    
         
            +
                service_whitelist: http://localhost:3000,http://localhost:3001,http://localhost:3002
         
     | 
| 
      
 12 
     | 
    
         
            +
                A config file example is available on /bin/cas_config.yml
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            === 0.1.1 :: 2012-05-11
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            * Configuration default_locale parameter is used now.
         
     | 
| 
      
 17 
     | 
    
         
            +
            * You can switch between locales clicking on flags at login page. The locale is passed by parameters (?locale=pt) in URL.
         
     | 
| 
      
 18 
     | 
    
         
            +
            * The selected locale is saved in current session.
         
     | 
| 
      
 19 
     | 
    
         
            +
            * To start the cas server, you must type "synapses-cas" instead of "rubycas-server"
         
     | 
| 
      
 20 
     | 
    
         
            +
            * Default theme has been completely rewrite to use twitter bootstrap, including flash messages (error, success and info).
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       1 
22 
     | 
    
         
             
            === 0.1.0 :: 2012-05-10
         
     | 
| 
       2 
23 
     | 
    
         | 
| 
       3 
24 
     | 
    
         
             
            * First public release.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -8,11 +8,14 @@ Other portions are copyright of their respective authors. 
     | 
|
| 
       8 
8 
     | 
    
         
             
            ## Authors
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            * Tiago Machado (tiago@synapses.com.br)
         
     | 
| 
       11 
     | 
    
         
            -
            * João Lucas (joaolucas@synapses.com.br
         
     | 
| 
      
 11 
     | 
    
         
            +
            * João Lucas (joaolucas@synapses.com.br)
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            ## Differences between Synapses CAS and the original RubyCAS
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            See CHANGELOG.
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       16 
19 
     | 
    
         | 
| 
       17 
20 
     | 
    
         
             
            ## License
         
     | 
| 
       18 
21 
     | 
    
         | 
    
        data/bin/cas_config.yml
    CHANGED
    
    | 
         @@ -483,6 +483,8 @@ organization: Synapses 
     | 
|
| 
       483 
483 
     | 
    
         
             
            # if you prefer to have no extra text shown at the bottom of the login box.
         
     | 
| 
       484 
484 
     | 
    
         
             
            infoline: Powered by <a href="http://www.synapses.com.br/">Synapses</a>
         
     | 
| 
       485 
485 
     | 
    
         | 
| 
      
 486 
     | 
    
         
            +
            password_recovery_url: http://localhost:3000/users/password_recovery
         
     | 
| 
      
 487 
     | 
    
         
            +
             
     | 
| 
       486 
488 
     | 
    
         
             
            # Custom views directory. If set, this will be used instead of 'lib/casserver/views'.
         
     | 
| 
       487 
489 
     | 
    
         
             
            #custom_views: /path/to/custom/views
         
     | 
| 
       488 
490 
     | 
    
         | 
| 
         @@ -563,8 +565,13 @@ db_log: 
     | 
|
| 
       563 
565 
     | 
    
         
             
            # is planned for a future release.
         
     | 
| 
       564 
566 
     | 
    
         | 
| 
       565 
567 
     | 
    
         
             
            enable_single_sign_out: true
         
     | 
| 
       566 
     | 
    
         
            -
             
     | 
| 
       567 
     | 
    
         
            -
             
     | 
| 
      
 568 
     | 
    
         
            +
            ##### SERVICES #################################################################
         
     | 
| 
      
 569 
     | 
    
         
            +
            # You can restrict what services can authenticate against the CAS server.
         
     | 
| 
      
 570 
     | 
    
         
            +
            # By default any service can authenticate and a blank white list will also
         
     | 
| 
      
 571 
     | 
    
         
            +
            # allow any service to authenticate. Services are listed on a single line
         
     | 
| 
      
 572 
     | 
    
         
            +
            # separated by a comma.
         
     | 
| 
      
 573 
     | 
    
         
            +
            service_whitelist: http://localhost:3000,http://localhost:3001,http://localhost:3002
         
     | 
| 
      
 574 
     | 
    
         
            +
            #default_service: http://localhost:3000
         
     | 
| 
       568 
575 
     | 
    
         
             
            ##### OTHER ####################################################################
         
     | 
| 
       569 
576 
     | 
    
         | 
| 
       570 
577 
     | 
    
         
             
            # You can set various ticket expiry times (specify the value in seconds).
         
     | 
    
        data/lib/casserver/server.rb
    CHANGED
    
    | 
         @@ -298,12 +298,16 @@ module CASServer 
     | 
|
| 
       298 
298 
     | 
    
         
             
                  @infoline = settings.config[:infoline]
         
     | 
| 
       299 
299 
     | 
    
         
             
                  @custom_views = settings.config[:custom_views]
         
     | 
| 
       300 
300 
     | 
    
         
             
                  @default_locale = settings.config[:default_locale]
         
     | 
| 
      
 301 
     | 
    
         
            +
                  @password_recovery_url = settings.config[:password_recovery_url]
         
     | 
| 
       301 
302 
     | 
    
         
             
                  @template_engine = settings.config[:template_engine] || :erb
         
     | 
| 
       302 
303 
     | 
    
         
             
                  if @template_engine != :erb
         
     | 
| 
       303 
304 
     | 
    
         
             
                    require @template_engine
         
     | 
| 
       304 
305 
     | 
    
         
             
                    @template_engine = @template_engine.to_sym
         
     | 
| 
       305 
306 
     | 
    
         
             
                  end
         
     | 
| 
       306 
307 
     | 
    
         | 
| 
      
 308 
     | 
    
         
            +
                  # Synapses CAS 0.1.2 - Thanks to https://github.com/dyson/rubycas-server
         
     | 
| 
      
 309 
     | 
    
         
            +
                  @service_whitelist = CASServer::Utils::initialize_service_whitelist(settings.config[:service_whitelist])
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
       307 
311 
     | 
    
         
             
                  # Synapses CAS 0.1.1
         
     | 
| 
       308 
312 
     | 
    
         
             
                  session[:locale] = params[:locale] || session[:locale] ||  @default_locale
         
     | 
| 
       309 
313 
     | 
    
         | 
| 
         @@ -324,7 +328,10 @@ module CASServer 
     | 
|
| 
       324 
328 
     | 
    
         
             
                  headers['Expires'] = (Time.now - 1.year).rfc2822
         
     | 
| 
       325 
329 
     | 
    
         | 
| 
       326 
330 
     | 
    
         
             
                  # optional params
         
     | 
| 
       327 
     | 
    
         
            -
                   
     | 
| 
      
 331 
     | 
    
         
            +
                  #@service = clean_service_url(params['service']) || settings.config[:default_service]
         
     | 
| 
      
 332 
     | 
    
         
            +
             
     | 
| 
      
 333 
     | 
    
         
            +
                  # Synapses CAS 0.1.2 - Whitelist
         
     | 
| 
      
 334 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist) || settings.config[:default_service]
         
     | 
| 
       328 
335 
     | 
    
         
             
                  @renew = params['renew']
         
     | 
| 
       329 
336 
     | 
    
         
             
                  @gateway = params['gateway'] == 'true' || params['gateway'] == '1'
         
     | 
| 
       330 
337 
     | 
    
         | 
| 
         @@ -414,7 +421,9 @@ module CASServer 
     | 
|
| 
       414 
421 
     | 
    
         
             
                  Utils::log_controller_action(self.class, params)
         
     | 
| 
       415 
422 
     | 
    
         | 
| 
       416 
423 
     | 
    
         
             
                  # 2.2.1 (optional)
         
     | 
| 
       417 
     | 
    
         
            -
             
     | 
| 
      
 424 
     | 
    
         
            +
             
     | 
| 
      
 425 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 426 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist) || settings.config[:default_service]
         
     | 
| 
       418 
427 
     | 
    
         | 
| 
       419 
428 
     | 
    
         
             
                  # 2.2.2 (required)
         
     | 
| 
       420 
429 
     | 
    
         
             
                  @username = params['username']
         
     | 
| 
         @@ -530,7 +539,10 @@ module CASServer 
     | 
|
| 
       530 
539 
     | 
    
         
             
                  # "logout" page, we take the user back to the login page with a "you have been logged out"
         
     | 
| 
       531 
540 
     | 
    
         
             
                  # message, allowing for an opportunity to immediately log back in. This makes it
         
     | 
| 
       532 
541 
     | 
    
         
             
                  # easier for the user to log out and log in as someone else.
         
     | 
| 
       533 
     | 
    
         
            -
             
     | 
| 
      
 542 
     | 
    
         
            +
             
     | 
| 
      
 543 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 544 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist)
         
     | 
| 
      
 545 
     | 
    
         
            +
                  @destination = params['destination']
         
     | 
| 
       534 
546 
     | 
    
         
             
                  @continue_url = params['url']
         
     | 
| 
       535 
547 
     | 
    
         | 
| 
       536 
548 
     | 
    
         
             
                  @gateway = params['gateway'] == 'true' || params['gateway'] == '1'
         
     | 
| 
         @@ -573,7 +585,10 @@ module CASServer 
     | 
|
| 
       573 
585 
     | 
    
         | 
| 
       574 
586 
     | 
    
         
             
                  @lt = generate_login_ticket
         
     | 
| 
       575 
587 
     | 
    
         | 
| 
       576 
     | 
    
         
            -
                   
     | 
| 
      
 588 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 589 
     | 
    
         
            +
                  if @gateway && @destination
         
     | 
| 
      
 590 
     | 
    
         
            +
                    redirect @destination, 303
         
     | 
| 
      
 591 
     | 
    
         
            +
                  elsif @gateway && @service
         
     | 
| 
       577 
592 
     | 
    
         
             
                    redirect @service, 303
         
     | 
| 
       578 
593 
     | 
    
         
             
                  elsif @continue_url
         
     | 
| 
       579 
594 
     | 
    
         
             
                    render @template_engine, :logout
         
     | 
| 
         @@ -621,7 +636,10 @@ module CASServer 
     | 
|
| 
       621 
636 
     | 
    
         
             
            			CASServer::Utils::log_controller_action(self.class, params)
         
     | 
| 
       622 
637 
     | 
    
         | 
| 
       623 
638 
     | 
    
         
             
            			# required
         
     | 
| 
       624 
     | 
    
         
            -
            			 
     | 
| 
      
 639 
     | 
    
         
            +
            			#@service = clean_service_url(params['service'])
         
     | 
| 
      
 640 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 641 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist)
         
     | 
| 
      
 642 
     | 
    
         
            +
             
     | 
| 
       625 
643 
     | 
    
         
             
            			@ticket = params['ticket']
         
     | 
| 
       626 
644 
     | 
    
         
             
            			# optional
         
     | 
| 
       627 
645 
     | 
    
         
             
            			@renew = params['renew']
         
     | 
| 
         @@ -644,7 +662,9 @@ module CASServer 
     | 
|
| 
       644 
662 
     | 
    
         
             
            			CASServer::Utils::log_controller_action(self.class, params)
         
     | 
| 
       645 
663 
     | 
    
         | 
| 
       646 
664 
     | 
    
         
             
            			# required
         
     | 
| 
       647 
     | 
    
         
            -
            			 
     | 
| 
      
 665 
     | 
    
         
            +
            			#@service = clean_service_url(params['service'])
         
     | 
| 
      
 666 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 667 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist)
         
     | 
| 
       648 
668 
     | 
    
         
             
            			@ticket = params['ticket']
         
     | 
| 
       649 
669 
     | 
    
         
             
            			# optional
         
     | 
| 
       650 
670 
     | 
    
         
             
            			@pgt_url = params['pgtUrl']
         
     | 
| 
         @@ -675,7 +695,9 @@ module CASServer 
     | 
|
| 
       675 
695 
     | 
    
         
             
                  CASServer::Utils::log_controller_action(self.class, params)
         
     | 
| 
       676 
696 
     | 
    
         | 
| 
       677 
697 
     | 
    
         
             
                  # required
         
     | 
| 
       678 
     | 
    
         
            -
                   
     | 
| 
      
 698 
     | 
    
         
            +
                  #@service = clean_service_url(params['service'])
         
     | 
| 
      
 699 
     | 
    
         
            +
                  # Synapses CAS 0.1.2
         
     | 
| 
      
 700 
     | 
    
         
            +
                  @service = CASServer::Utils::validate_service(clean_service_url(params['service']), @service_whitelist)
         
     | 
| 
       679 
701 
     | 
    
         
             
                  @ticket = params['ticket']
         
     | 
| 
       680 
702 
     | 
    
         
             
                  # optional
         
     | 
| 
       681 
703 
     | 
    
         
             
                  @pgt_url = params['pgtUrl']
         
     | 
    
        data/lib/casserver/utils.rb
    CHANGED
    
    | 
         @@ -28,5 +28,29 @@ module CASServer 
     | 
|
| 
       28 
28 
     | 
    
         
             
                  $LOG.debug("Processing #{controller}::#{method} #{params2.inspect}")
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         
             
                module_function :log_controller_action
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # Synapses CAS 0.1.2 - Thanks to https://github.com/dyson/rubycas-server
         
     | 
| 
      
 33 
     | 
    
         
            +
                def initialize_service_whitelist(whitelist)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  $LOG.debug("Initializing Service Whitelist")
         
     | 
| 
      
 35 
     | 
    
         
            +
                  whitelist = whitelist || ''
         
     | 
| 
      
 36 
     | 
    
         
            +
                  whitelist.split(',')
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
                module_function :initialize_service_whitelist
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # Synapses CAS 0.1.2 - Thanks to https://github.com/dyson/rubycas-server
         
     | 
| 
      
 41 
     | 
    
         
            +
                def validate_service(service, whitelist)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  $LOG.debug("Validating service \"#{service}\"")
         
     | 
| 
      
 43 
     | 
    
         
            +
                  if !whitelist.empty?
         
     | 
| 
      
 44 
     | 
    
         
            +
                    whitelist.each do |domain|
         
     | 
| 
      
 45 
     | 
    
         
            +
                      return service if service.to_s[0, domain.length] == domain # starts with
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  else
         
     | 
| 
      
 48 
     | 
    
         
            +
                    return service if whitelist.empty?
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  $LOG.warn("Service \"#{service}\" is not in service whitelist")
         
     | 
| 
      
 51 
     | 
    
         
            +
                  return nil
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
                module_function :validate_service
         
     | 
| 
       31 
54 
     | 
    
         
             
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
       32 
56 
     | 
    
         
             
            end
         
     | 
| 
         @@ -24,6 +24,9 @@ 
     | 
|
| 
       24 
24 
     | 
    
         
             
                        <input type="hidden" id="lt" name="lt" value="<%= escape_html @lt %>" />
         
     | 
| 
       25 
25 
     | 
    
         
             
                        <input type="hidden" id="service" name="service" value="<%= escape_html @service %>" />
         
     | 
| 
       26 
26 
     | 
    
         
             
                        <input type="submit" accesskey="l" value="<%= t.button.login %>" tabindex="4" id="login-submit" class="btn btn-primary"/>
         
     | 
| 
      
 27 
     | 
    
         
            +
                        <% if !@password_recovery_url.blank? %>
         
     | 
| 
      
 28 
     | 
    
         
            +
                            <a href="<%= @password_recovery_url %>" class='btn btn-danger'><%= t.button.password_recovery %></a>
         
     | 
| 
      
 29 
     | 
    
         
            +
                        <% end %>
         
     | 
| 
       27 
30 
     | 
    
         
             
                      </fieldset>
         
     | 
| 
       28 
31 
     | 
    
         
             
                    </form>
         
     | 
| 
       29 
32 
     | 
    
         
             
                  </div>
         
     | 
    
        data/locales/en.yml
    CHANGED
    
    
    
        data/locales/pt.yml
    CHANGED
    
    
    
        data/synapses-cas.gemspec
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            $gemspec = Gem::Specification.new do |s|
         
     | 
| 
       2 
2 
     | 
    
         
             
              s.name     = 'synapses-cas'
         
     | 
| 
       3 
     | 
    
         
            -
              s.version  = '0.1. 
     | 
| 
      
 3 
     | 
    
         
            +
              s.version  = '0.1.2'
         
     | 
| 
       4 
4 
     | 
    
         
             
              s.authors  = ["Synapses Group"]
         
     | 
| 
       5 
5 
     | 
    
         
             
              s.email    = ["tiago@synapses.com.br"]
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.homepage = 'https://github.com/synapsesgroup/synapses-cas'
         
     | 
| 
         @@ -31,6 +31,9 @@ $gemspec = Gem::Specification.new do |s| 
     | 
|
| 
       31 
31 
     | 
    
         
             
              s.add_dependency("sinatra", "~> 1.0")
         
     | 
| 
       32 
32 
     | 
    
         
             
              s.add_dependency("sinatra-r18n")
         
     | 
| 
       33 
33 
     | 
    
         
             
              s.add_dependency("crypt-isaac", "~> 0.9.1")
         
     | 
| 
      
 34 
     | 
    
         
            +
              s.add_dependency("pg")
         
     | 
| 
      
 35 
     | 
    
         
            +
              s.add_dependency("bcrypt-ruby")
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
       34 
37 
     | 
    
         | 
| 
       35 
38 
     | 
    
         
             
              s.add_development_dependency("rack-test")
         
     | 
| 
       36 
39 
     | 
    
         
             
              s.add_development_dependency("capybara", '1.1.2')
         
     | 
| 
         @@ -39,6 +42,8 @@ $gemspec = Gem::Specification.new do |s| 
     | 
|
| 
       39 
42 
     | 
    
         
             
              s.add_development_dependency("rake", "0.8.7")
         
     | 
| 
       40 
43 
     | 
    
         
             
              s.add_development_dependency("sqlite3", "~> 1.3.1")
         
     | 
| 
       41 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       42 
47 
     | 
    
         
             
              # for authenticator specs
         
     | 
| 
       43 
48 
     | 
    
         
             
              s.add_development_dependency("net-ldap", "~> 0.1.1")
         
     | 
| 
       44 
49 
     | 
    
         
             
              s.add_development_dependency("activeresource", ">= 2.3.12", "< 3.1")
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: synapses-cas
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-05- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-05-15 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: activerecord
         
     | 
| 
         @@ -103,6 +103,38 @@ dependencies: 
     | 
|
| 
       103 
103 
     | 
    
         
             
                - - ~>
         
     | 
| 
       104 
104 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       105 
105 
     | 
    
         
             
                    version: 0.9.1
         
     | 
| 
      
 106 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 107 
     | 
    
         
            +
              name: pg
         
     | 
| 
      
 108 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 109 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 110 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 111 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 112 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 113 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 114 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 115 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 116 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 117 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 118 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 119 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 120 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 121 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 122 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 123 
     | 
    
         
            +
              name: bcrypt-ruby
         
     | 
| 
      
 124 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 125 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 126 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 127 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 128 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 129 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 130 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 131 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 132 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 133 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 134 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 135 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 136 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 137 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       106 
138 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       107 
139 
     | 
    
         
             
              name: rack-test
         
     | 
| 
       108 
140 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |